@@ -24,18 +24,64 @@ option(SPARK_DSG_BUILD_EXAMPLES "Build examples" ON)
2424option (SPARK_DSG_BUILD_PYTHON "Build python bindings" OFF )
2525option (SPARK_DSG_BUILD_ZMQ "Build zmq message interface" ON )
2626
27- find_package (nlohmann_json REQUIRED)
28- find_package (Eigen3 REQUIRED)
29- find_package (Threads REQUIRED)
27+ set (SPARK_DSG_INSTALL_PREFIX "" )
28+ set (FIND_MODE REQUIRED)
29+ if (DEFINED SKBUILD AND "${SKBUILD} " GREATER 0)
30+ # nest headers, cmake and built lib under spark_dsg to make installation into sitepackages / wheel work correctly
31+ set (SPARK_DSG_INSTALL_PREFIX "${PROJECT_NAME} /" )
32+ set (SPARK_DSG_BUILD_ZMQ OFF )
33+ set (FIND_MODE QUIET )
34+ endif ()
3035
31- find_package (PkgConfig REQUIRED)
32- pkg_check_modules(zmq libzmq)
33- if (SPARK_DSG_BUILD_ZMQ AND zmq_FOUND)
34- set (SPARK_DSG_USE_ZMQ 1)
35- else ()
36- message (WARNING "ZMQ not found! Disabling ZMQ interface" )
37- set (SPARK_DSG_USE_ZMQ 0)
36+ include (FetchContent)
37+
38+ find_package (nlohmann_json ${FIND_MODE} )
39+ if (NOT ${nlohmann_json_FOUND} )
40+ FetchContent_Declare(
41+ json
42+ GIT_REPOSITORY https://github.com/nlohmann/json.git
43+ GIT_TAG v3.11.3
44+ GIT_SHALLOW TRUE
45+ )
46+
47+ FetchContent_GetProperties(json)
48+ if (NOT json_POPULATED)
49+ FetchContent_Populate(json)
50+ endif ()
51+
52+ add_library (nlohmann_json::nlohmann_json INTERFACE IMPORTED )
53+ target_include_directories (nlohmann_json::nlohmann_json INTERFACE ${json_SOURCE_DIR} /single_include)
54+ endif ()
55+
56+ find_package (Eigen3 ${FIND_MODE} )
57+ if (NOT ${Eigen3_FOUND} )
58+ FetchContent_Declare(
59+ eigen
60+ URL https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
61+ URL_HASH MD5=a83cb9a2cbba2dd52c137ac62d33d847
62+ DOWNLOAD_EXTRACT_TIMESTAMP TRUE
63+ )
64+
65+ FetchContent_GetProperties(eigen)
66+ if (NOT eigen_POPULATED)
67+ FetchContent_Populate(eigen)
68+ endif ()
69+
70+ add_library (Eigen3::Eigen INTERFACE IMPORTED )
71+ target_include_directories (Eigen3::Eigen INTERFACE "${eigen_SOURCE_DIR} " )
72+ endif ()
73+
74+ set (SPARK_DSG_USE_ZMQ 0)
75+ if (SPARK_DSG_BUILD_ZMQ)
76+ find_package (PkgConfig REQUIRED)
77+ pkg_check_modules(zmq libzmq)
78+ if (zmq_FOUND)
79+ set (SPARK_DSG_USE_ZMQ 1)
80+ else ()
81+ message (WARNING "ZMQ not found! Disabling ZMQ interface" )
82+ endif ()
3883endif ()
84+
3985configure_file (cmake/spark_dsg_version.h.in include /spark_dsg_version.h)
4086
4187add_library (
@@ -73,19 +119,18 @@ add_library(
73119)
74120
75121target_include_directories (
76- ${PROJECT_NAME}
77- PUBLIC $<INSTALL_INTERFACE:include > $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
122+ ${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include > $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
78123 PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /include >
79124)
80- target_link_libraries (
81- ${PROJECT_NAME} PUBLIC Eigen3::Eigen nlohmann_json::nlohmann_json
82- PRIVATE Threads::Threads
83- )
125+ target_link_libraries (${PROJECT_NAME} PUBLIC Eigen3::Eigen nlohmann_json::nlohmann_json)
126+
84127if (NOT BUILD_SHARED_LIBS )
85128 set_property (TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE 1)
86129endif ()
130+
87131if (SPARK_DSG_BUILD_ZMQ AND zmq_FOUND)
88- target_link_libraries (${PROJECT_NAME} PRIVATE ${zmq_LIBRARIES} )
132+ find_package (Threads REQUIRED)
133+ target_link_libraries (${PROJECT_NAME} PRIVATE ${zmq_LIBRARIES} Threads::Threads)
89134 target_include_directories (${PROJECT_NAME} PRIVATE ${zmq_INCLUDE_DIRS} )
90135endif ()
91136
@@ -109,20 +154,11 @@ include(GNUInstallDirs)
109154include (CMakePackageConfigHelpers)
110155
111156write_basic_package_version_file(
112- ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfigVersion.cmake VERSION ${PROJECT_VERSION}
113- COMPATIBILITY AnyNewerVersion
157+ ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion
114158)
115159
116- set (SPARK_DSG_INSTALL_PREFIX "" )
117- if (SPARK_DSG_BUILDING_PYTHON_PACKAGE)
118- # nest headers, cmake and built lib under spark_dsg to make installation
119- # into sitepackages / wheel work correctly
120- set (SPARK_DSG_INSTALL_PREFIX "${PROJECT_NAME} /" )
121- endif ()
122-
123160configure_package_config_file(
124- ${CMAKE_CURRENT_LIST_DIR} /cmake/spark_dsgConfig.cmake.in
125- ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfig.cmake
161+ ${CMAKE_CURRENT_LIST_DIR} /cmake/spark_dsgConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfig.cmake
126162 INSTALL_DESTINATION "${SPARK_DSG_INSTALL_PREFIX}${CMAKE_INSTALL_LIBDIR} /cmake/spark_dsg"
127163)
128164
@@ -142,8 +178,6 @@ install(
142178 DESTINATION "${SPARK_DSG_INSTALL_PREFIX}${CMAKE_INSTALL_LIBDIR} /cmake/spark_dsg"
143179)
144180
145- install (
146- FILES ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfig.cmake
147- ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfigVersion.cmake
148- DESTINATION "${SPARK_DSG_INSTALL_PREFIX}${CMAKE_INSTALL_LIBDIR} /cmake/spark_dsg"
181+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfig.cmake ${CMAKE_CURRENT_BINARY_DIR} /spark_dsgConfigVersion.cmake
182+ DESTINATION "${SPARK_DSG_INSTALL_PREFIX}${CMAKE_INSTALL_LIBDIR} /cmake/spark_dsg"
149183)
0 commit comments