mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
Support external builds of python bindings, gui, ctbgui and moench stuff (#440)
Use already installed version of the slsDetectorPackage. Assumes that the library has already been built and installed either on a system wide location or pointed to by CMAKE_PREFIX_PATH
This commit is contained in:
parent
afeee5501c
commit
fa12ab2858
158
CMakeLists.txt
158
CMakeLists.txt
@ -8,13 +8,8 @@ set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
|||||||
|
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
include(cmake/project_version.cmake)
|
include(cmake/project_version.cmake)
|
||||||
|
|
||||||
#functions to add compiler flags
|
|
||||||
include(cmake/SlsAddFlag.cmake)
|
include(cmake/SlsAddFlag.cmake)
|
||||||
|
|
||||||
include(cmake/SlsFindZeroMQ.cmake)
|
include(cmake/SlsFindZeroMQ.cmake)
|
||||||
|
|
||||||
# Include additional modules that are used unconditionally
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# If conda build, always set lib dir to 'lib'
|
# If conda build, always set lib dir to 'lib'
|
||||||
@ -28,7 +23,7 @@ string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
|
|||||||
|
|
||||||
# Set targets export name (used by slsDetectorPackage and dependencies)
|
# Set targets export name (used by slsDetectorPackage and dependencies)
|
||||||
set(TARGETS_EXPORT_NAME "${PROJECT_NAME_LOWER}-targets")
|
set(TARGETS_EXPORT_NAME "${PROJECT_NAME_LOWER}-targets")
|
||||||
#set(namespace "${PROJECT_NAME}::")
|
set(namespace "sls::")
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||||
|
|
||||||
@ -39,6 +34,8 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
|||||||
set(SLS_MASTER_PROJECT ON)
|
set(SLS_MASTER_PROJECT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
option(SLS_USE_HDF5 "HDF5 File format" OFF)
|
option(SLS_USE_HDF5 "HDF5 File format" OFF)
|
||||||
option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON)
|
option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON)
|
||||||
option(SLS_USE_TEXTCLIENT "Text Client" ON)
|
option(SLS_USE_TEXTCLIENT "Text Client" ON)
|
||||||
@ -71,6 +68,20 @@ if(SLS_BUILD_ONLY_MOENCH)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
option(SLS_EXT_BUILD "external build of part of the project" OFF)
|
||||||
|
if(SLS_EXT_BUILD)
|
||||||
|
message(STATUS "External build using already installed libraries")
|
||||||
|
set(SLS_BUILD_SHARED_LIBRARIES OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_TEXTCLIENT OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_DETECTOR OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER_BINARIES OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_MASTER_PROJECT OFF CACHE BOOL "No master proj in case of extbuild" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#Maybe have an option guarding this?
|
||||||
|
set(SLS_INTERNAL_RAPIDJSON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs/rapidjson)
|
||||||
|
|
||||||
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
||||||
"libs/"
|
"libs/"
|
||||||
"slsDetectorCalibration/"
|
"slsDetectorCalibration/"
|
||||||
@ -81,9 +92,6 @@ set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
|||||||
${CMAKE_BINARY_DIR})
|
${CMAKE_BINARY_DIR})
|
||||||
find_package(ClangFormat)
|
find_package(ClangFormat)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
@ -102,62 +110,68 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
#Add two fake libraries to manage options
|
if(SLS_EXT_BUILD)
|
||||||
add_library(slsProjectOptions INTERFACE)
|
# Find ourself in case of external build
|
||||||
add_library(slsProjectWarnings INTERFACE)
|
find_package(slsDetectorPackage ${PROJECT_VERSION} REQUIRED)
|
||||||
target_compile_features(slsProjectOptions INTERFACE cxx_std_11)
|
|
||||||
target_compile_options(slsProjectWarnings INTERFACE
|
|
||||||
-Wall
|
|
||||||
-Wextra
|
|
||||||
-Wno-unused-parameter
|
|
||||||
# -Wold-style-cast
|
|
||||||
-Wnon-virtual-dtor
|
|
||||||
-Woverloaded-virtual
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Wformat=2
|
|
||||||
-Wredundant-decls
|
|
||||||
# -Wconversion
|
|
||||||
-Wvla
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Werror=return-type
|
|
||||||
)
|
|
||||||
|
|
||||||
#Settings for C code
|
|
||||||
add_library(slsProjectCSettings INTERFACE)
|
|
||||||
target_compile_options(slsProjectCSettings INTERFACE
|
|
||||||
-std=gnu99 #fixed
|
|
||||||
-Wall
|
|
||||||
-Wextra
|
|
||||||
-Wno-unused-parameter
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Wformat=2
|
|
||||||
-Wredundant-decls
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Werror=return-type
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#Testing for minimum version for compilers
|
|
||||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.2)
|
|
||||||
message(FATAL_ERROR "Clang version must be at least 3.2!")
|
|
||||||
endif()
|
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
|
||||||
message(FATAL_ERROR "GCC version must be at least 4.8!")
|
|
||||||
endif()
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
|
|
||||||
target_compile_options(slsProjectWarnings INTERFACE
|
|
||||||
-Wno-missing-field-initializers)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Add or disable warnings depending on if the compiler supports them
|
|
||||||
# The function checks internally and sets HAS_warning-name
|
|
||||||
sls_enable_cxx_warning("-Wnull-dereference")
|
# slsProjectOptions and slsProjectWarnings are used
|
||||||
sls_enable_cxx_warning("-Wduplicated-cond")
|
# to control options for the libraries
|
||||||
sls_disable_cxx_warning("-Wclass-memaccess")
|
if(NOT TARGET slsProjectOptions)
|
||||||
sls_disable_c_warning("-Wstringop-truncation")
|
add_library(slsProjectOptions INTERFACE)
|
||||||
|
target_compile_features(slsProjectOptions INTERFACE cxx_std_11)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT TARGET slsProjectWarnings)
|
||||||
|
add_library(slsProjectWarnings INTERFACE)
|
||||||
|
target_compile_options(slsProjectWarnings INTERFACE
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter
|
||||||
|
# -Wold-style-cast
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wformat=2
|
||||||
|
-Wredundant-decls
|
||||||
|
# -Wconversion
|
||||||
|
-Wvla
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Werror=return-type
|
||||||
|
)
|
||||||
|
# Add or disable warnings depending on if the compiler supports them
|
||||||
|
# The function checks internally and sets HAS_warning-name
|
||||||
|
sls_enable_cxx_warning("-Wnull-dereference")
|
||||||
|
sls_enable_cxx_warning("-Wduplicated-cond")
|
||||||
|
sls_disable_cxx_warning("-Wclass-memaccess")
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
target_compile_options(slsProjectWarnings INTERFACE
|
||||||
|
-Wno-missing-field-initializers)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if (NOT TARGET slsProjectCSettings)
|
||||||
|
#Settings for C code
|
||||||
|
add_library(slsProjectCSettings INTERFACE)
|
||||||
|
target_compile_options(slsProjectCSettings INTERFACE
|
||||||
|
-std=gnu99 #fixed
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wformat=2
|
||||||
|
-Wredundant-decls
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Werror=return-type
|
||||||
|
)
|
||||||
|
sls_disable_c_warning("-Wstringop-truncation")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if(SLS_USE_SANITIZER)
|
if(SLS_USE_SANITIZER)
|
||||||
@ -172,19 +186,14 @@ if(SLS_TUNE_LOCAL)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
#rapidjson
|
if(SLS_MASTER_PROJECT)
|
||||||
add_library(rapidjson INTERFACE)
|
install(TARGETS slsProjectOptions slsProjectWarnings
|
||||||
target_include_directories(rapidjson INTERFACE
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libs/rapidjson>
|
|
||||||
)
|
|
||||||
|
|
||||||
# Install fake the libraries
|
|
||||||
install(TARGETS slsProjectOptions slsProjectWarnings rapidjson
|
|
||||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
set(CMAKE_INSTALL_RPATH $ORIGIN)
|
set(CMAKE_INSTALL_RPATH $ORIGIN)
|
||||||
@ -200,8 +209,9 @@ if (SLS_USE_TESTS)
|
|||||||
endif(SLS_USE_TESTS)
|
endif(SLS_USE_TESTS)
|
||||||
|
|
||||||
|
|
||||||
# Common functionallity to detector and receiver
|
if(NOT SLS_EXT_BUILD)
|
||||||
add_subdirectory(slsSupportLib)
|
add_subdirectory(slsSupportLib)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT)
|
if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT)
|
||||||
add_subdirectory(slsDetectorSoftware)
|
add_subdirectory(slsDetectorSoftware)
|
||||||
@ -225,7 +235,7 @@ endif (SLS_USE_INTEGRATION_TESTS)
|
|||||||
|
|
||||||
if (SLS_USE_PYTHON)
|
if (SLS_USE_PYTHON)
|
||||||
find_package (Python 3.6 COMPONENTS Interpreter Development)
|
find_package (Python 3.6 COMPONENTS Interpreter Development)
|
||||||
add_subdirectory(libs/pybind11)
|
add_subdirectory(libs/pybind11 ${CMAKE_BINARY_DIR}/bin/)
|
||||||
add_subdirectory(python)
|
add_subdirectory(python)
|
||||||
endif(SLS_USE_PYTHON)
|
endif(SLS_USE_PYTHON)
|
||||||
|
|
||||||
|
@ -19,4 +19,4 @@ cp build/install/bin/slsMultiReceiver $PREFIX/bin/.
|
|||||||
|
|
||||||
|
|
||||||
cp build/install/include/sls/* $PREFIX/include/sls
|
cp build/install/include/sls/* $PREFIX/include/sls
|
||||||
cp -r build/install/share/ $PREFIX/share
|
cp -rv build/install/share $PREFIX
|
||||||
|
@ -56,7 +56,8 @@ foreach(exe ${MOENCH_EXECUTABLES})
|
|||||||
../dataStructures
|
../dataStructures
|
||||||
../interpolations
|
../interpolations
|
||||||
../../slsReceiverSoftware/include/
|
../../slsReceiverSoftware/include/
|
||||||
../../slsSupportLib/include/
|
../../slsSupportLib/include/
|
||||||
|
${SLS_INTERNAL_RAPIDJSON_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(${exe}
|
target_link_libraries(${exe}
|
||||||
|
@ -17,6 +17,8 @@ add_library(slsDetectorObject OBJECT
|
|||||||
target_include_directories(slsDetectorObject PUBLIC
|
target_include_directories(slsDetectorObject PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
||||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||||
|
PRIVATE
|
||||||
|
${SLS_INTERNAL_RAPIDJSON_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(slsDetectorObject
|
target_link_libraries(slsDetectorObject
|
||||||
|
@ -40,6 +40,8 @@ add_library(slsReceiverObject OBJECT
|
|||||||
target_include_directories(slsReceiverObject PUBLIC
|
target_include_directories(slsReceiverObject PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
||||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||||
|
PRIVATE
|
||||||
|
${SLS_INTERNAL_RAPIDJSON_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(slsReceiverObject
|
target_link_libraries(slsReceiverObject
|
||||||
|
@ -34,6 +34,8 @@ set(PUBLICHEADERS
|
|||||||
if(SLS_DEVEL_HEADERS)
|
if(SLS_DEVEL_HEADERS)
|
||||||
set(PUBLICHEADERS
|
set(PUBLICHEADERS
|
||||||
${PUBLICHEADERS}
|
${PUBLICHEADERS}
|
||||||
|
include/sls/ansi.h
|
||||||
|
include/sls/logger.h
|
||||||
include/sls/file_utils.h
|
include/sls/file_utils.h
|
||||||
include/sls/sls_detector_funcs.h
|
include/sls/sls_detector_funcs.h
|
||||||
include/sls/ClientSocket.h
|
include/sls/ClientSocket.h
|
||||||
@ -46,7 +48,7 @@ if(SLS_DEVEL_HEADERS)
|
|||||||
include/sls/versionAPI.h
|
include/sls/versionAPI.h
|
||||||
include/sls/ZmqSocket.h
|
include/sls/ZmqSocket.h
|
||||||
include/sls/bit_utils.h
|
include/sls/bit_utils.h
|
||||||
include/sls/mdf5.h
|
include/sls/md5.h
|
||||||
include/sls/md5_helper.h
|
include/sls/md5_helper.h
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
@ -75,13 +77,16 @@ target_include_directories(slsSupportObject
|
|||||||
PUBLIC
|
PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
||||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||||
|
PRIVATE
|
||||||
|
${SLS_INTERNAL_RAPIDJSON_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
message(STATUS "RAPID: ${SLS_INTERNAL_RAPIDJSON_DIR}")
|
||||||
|
|
||||||
target_link_libraries(slsSupportObject
|
target_link_libraries(slsSupportObject
|
||||||
PUBLIC
|
PUBLIC
|
||||||
slsProjectOptions
|
slsProjectOptions
|
||||||
libzmq
|
libzmq
|
||||||
rapidjson
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
slsProjectWarnings
|
slsProjectWarnings
|
||||||
md5sls
|
md5sls
|
||||||
|
Loading…
x
Reference in New Issue
Block a user