From aec4f464f1914fa04eef384f6cb5fe84db4d43c8 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Tue, 29 May 2018 13:03:59 +0200 Subject: Move libcrystfel-specific dependencies to libcrystfel folder --- libcrystfel/CMakeLists.txt | 29 ++++++++++++++++++++++++++++- libcrystfel/config.h.cmake.in | 19 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 libcrystfel/config.h.cmake.in (limited to 'libcrystfel') diff --git a/libcrystfel/CMakeLists.txt b/libcrystfel/CMakeLists.txt index a6671d8c..83a561d1 100644 --- a/libcrystfel/CMakeLists.txt +++ b/libcrystfel/CMakeLists.txt @@ -1,4 +1,28 @@ -project(libcrystfel) +project(libcrystfel VERSION ${CRYSTFEL_VERSION} LANGUAGES C) + +find_package(Curses) +find_package(FFTW) +find_package(CBF) +find_package(XGANDALF) +find_package(PINKINDEXER) +find_package(NBP) +find_package(FDIP) + +set(HAVE_CURSES ${CURSES_FOUND}) +set(HAVE_FFTW ${FFTW_FOUND}) +set(HAVE_XGANDALF ${XGANDALF_FOUND}) +set(HAVE_FDIP ${FDIP_FOUND}) +set(HAVE_CBFLIB ${CBF_FOUND}) + +# Check for CPU affinity functions (Linux-specific) +set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") +check_symbol_exists(sched_setaffinity "sched.h" HAVE_CPU_AFFINITY) +unset(CMAKE_REQUIRED_DEFINITIONS) + +# Check for nice clock function +check_symbol_exists(clock_gettime "time.h" HAVE_CLOCK_GETTIME) + +configure_file(config.h.cmake.in config.h) set(LIBCRYSTFEL_SOURCES src/reflist.c @@ -83,6 +107,9 @@ set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${CRYSTFEL_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") target_include_directories(${PROJECT_NAME} INTERFACE ${PROJECT_SOURCE_DIR}/src) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) +add_definitions(-DHAVE_CONFIG_H) + target_include_directories(${PROJECT_NAME} PRIVATE ${HDF5_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} PUBLIC util ${HDF5_C_LIBRARIES}) diff --git a/libcrystfel/config.h.cmake.in b/libcrystfel/config.h.cmake.in new file mode 100644 index 00000000..36bbba60 --- /dev/null +++ b/libcrystfel/config.h.cmake.in @@ -0,0 +1,19 @@ +/* config.h for libcrystfel */ + +#cmakedefine HAVE_CLOCK_GETTIME +#cmakedefine HAVE_CPU_AFFINITY +#cmakedefine HAVE_FFTW +#cmakedefine HAVE_CL_CL_H +#cmakedefine HAVE_XGANDALF +#cmakedefine HAVE_FDIP +#cmakedefine HAVE_CURSES + +/* We avoid adding the full path to cbf.h, because CBFlib unhelpfully installs + * some conflicting HDF5 headers which we want to keep out of the include path. + * Unfortunately, sometimes CBFlib installs cbf/cbf.h, other times cbflib/cbf.h. + * These defines tell whether we have CBFlib at all, and if so, what to #include */ +#cmakedefine HAVE_CBFLIB +#cmakedefine HAVE_CBF_CBF_H +#cmakedefine HAVE_CBFLIB_CBF_H + +#define CRYSTFEL_VERSIONSTRING "${PROJECT_VERSION}+${GIT_SHA1}" -- cgit v1.2.3