aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2018-05-29 13:03:59 +0200
committerThomas White <taw@physics.org>2018-05-29 13:07:01 +0200
commitaec4f464f1914fa04eef384f6cb5fe84db4d43c8 (patch)
treea088dfefeea08491d74af6ee7817c841ba9e014e /libcrystfel
parent487cb42d6553295deaa5595a913ee9d9dedbb112 (diff)
Move libcrystfel-specific dependencies to libcrystfel folder
Diffstat (limited to 'libcrystfel')
-rw-r--r--libcrystfel/CMakeLists.txt29
-rw-r--r--libcrystfel/config.h.cmake.in19
2 files changed, 47 insertions, 1 deletions
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}"