From 7211bdfa081e3ccbee0297bb9e17b873d879c1c5 Mon Sep 17 00:00:00 2001 From: Jan-Niklas Bohnensack Date: Thu, 12 Jun 2025 16:54:48 +0200 Subject: [PATCH] Changed relative paths to source to CMAKE_CURRENT_SOURCE_DIR/path Also added CRPROPA_EXTRA_INCLUDES as cache variable for subproject support --- CMakeLists.txt | 78 ++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa1e5dede..31eeb10bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(CRPropa Fortran C CXX) set(CRPROPA_RELEASE_VERSION 3.2.1+) # Update for new release set(CMAKE_CXX_STANDARD 11) -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) set(CRPROPA_EXTRA_SOURCES) set(CRPROPA_EXTRA_INCLUDES) @@ -88,8 +88,8 @@ list(APPEND CRPROPA_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/src/Version.cpp") # Why is it not recommended use a pre-compiled copy of Google Test?) option(ENABLE_TESTING "Build tests and enable test target" ON) if(ENABLE_TESTING) - include_directories(libs/gtest/include) - add_subdirectory(libs/gtest) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs/gtest/include) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/gtest) if(APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1") endif(APPLE) @@ -142,19 +142,19 @@ if(ENABLE_COVERAGE) endif(ENABLE_COVERAGE) # kiss (provided) -add_subdirectory(libs/kiss) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/kiss) list(APPEND CRPROPA_EXTRA_LIBRARIES kiss) -list(APPEND CRPROPA_EXTRA_INCLUDES libs/kiss/include) +list(APPEND CRPROPA_EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/libs/kiss/include) # HepID (provided) -add_subdirectory(libs/HepPID) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/HepPID) list(APPEND CRPROPA_EXTRA_LIBRARIES HepPID) -list(APPEND CRPROPA_EXTRA_INCLUDES libs/HepPID/include) +list(APPEND CRPROPA_EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/libs/HepPID/include) # SOPHIA (provided) -add_subdirectory(libs/sophia) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/sophia) list(APPEND CRPROPA_EXTRA_LIBRARIES sophia gfortran) -list(APPEND CRPROPA_EXTRA_INCLUDES libs/sophia) +list(APPEND CRPROPA_EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/libs/sophia) # Galactic magnetic lenses option(ENABLE_GALACTICMAGNETICLENS "Galactic Magnetic Lens" ON) @@ -171,24 +171,24 @@ if(ENABLE_GALACTICMAGNETICLENS) else(EIGEN_PATH) # Eigen redux (provided) message("Using provided EIGEN") - list(APPEND CRPROPA_EXTRA_INCLUDES libs/eigen3) + list(APPEND CRPROPA_EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/libs/eigen3) endif(EIGEN_PATH) if(INSTALL_EIGEN) - install(DIRECTORY libs/eigen3/ DESTINATION include) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/libs/eigen3/ DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/include) endif(INSTALL_EIGEN) # healpix redux (provided) - add_subdirectory(libs/healpix_base) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/healpix_base) list(APPEND CRPROPA_EXTRA_LIBRARIES healpix_base) - list(APPEND CRPROPA_EXTRA_INCLUDES libs/healpix_base/include) - install(DIRECTORY libs/healpix_base/include/ DESTINATION include FILES_MATCHING PATTERN "*.h") + list(APPEND CRPROPA_EXTRA_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/libs/healpix_base/include) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/libs/healpix_base/include/ DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/include FILES_MATCHING PATTERN "*.h") list(APPEND CRPROPA_SWIG_DEFINES -DWITH_GALACTIC_LENSES) - list(APPEND CRPROPA_EXTRA_SOURCES src/magneticLens/MagneticLens.cpp) - list(APPEND CRPROPA_EXTRA_SOURCES src/magneticLens/ModelMatrix.cpp) - list(APPEND CRPROPA_EXTRA_SOURCES src/magneticLens/Pixelization.cpp) - list(APPEND CRPROPA_EXTRA_SOURCES src/magneticLens/ParticleMapsContainer.cpp) + list(APPEND CRPROPA_EXTRA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/magneticLens/MagneticLens.cpp) + list(APPEND CRPROPA_EXTRA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/magneticLens/ModelMatrix.cpp) + list(APPEND CRPROPA_EXTRA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/magneticLens/Pixelization.cpp) + list(APPEND CRPROPA_EXTRA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/magneticLens/ParticleMapsContainer.cpp) endif(ENABLE_GALACTICMAGNETICLENS) # OpenMP (optional for shared memory multiprocessing) @@ -252,7 +252,7 @@ endif(MUPARSER_FOUND) find_package(ZLIB) if(ZLIB_FOUND) list(APPEND CRPROPA_EXTRA_INCLUDES ${ZLIB_INCLUDE_DIRS}) - list(APPEND CRPROPA_EXTRA_INCLUDES "libs/zstream-cpp") + list(APPEND CRPROPA_EXTRA_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/libs/zstream-cpp") list(APPEND CRPROPA_EXTRA_LIBRARIES ${ZLIB_LIBRARIES}) add_definitions (-DCRPROPA_HAVE_ZLIB) list(APPEND CRPROPA_SWIG_DEFINES -DCRPROPA_HAVE_ZLIB) @@ -289,7 +289,7 @@ if(APPLE OR USE_ABSOLUTE_RPATH) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(ABSOLUTE_RPATH "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}") if(NOT IS_ABSOLUTE ${ABSOLUTE_RPATH}) - set(ABSOLUTE_RPATH ${CMAKE_BINARY_DIR}/${ABSOLUTE_RPATH}) + set(ABSOLUTE_RPATH ${CMAKE_CURRENT_BINARY_DIR}/${ABSOLUTE_RPATH}) endif() list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${ABSOLUTE_RPATH}" isSystemDir) @@ -313,31 +313,33 @@ if(DOWNLOAD_DATA) message("-- Downloading data files from sciebo ~ 73 MB") file(DOWNLOAD https://ruhr-uni-bochum.sciebo.de/public.php/webdav/data-${CRPROPA_DATAFILE_VER}.tar.gz-CHECKSUM - ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz-CHECKSUM + ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz-CHECKSUM USERPWD "3juW9sntQX2IWBS") - file(STRINGS ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz-CHECKSUM DATA_CHECKSUM LIMIT_COUNT 1 LENGTH_MINIMUM 32 LENGTH_MAXIMUM 32) + file(STRINGS ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz-CHECKSUM DATA_CHECKSUM LIMIT_COUNT 1 LENGTH_MINIMUM 32 LENGTH_MAXIMUM 32) file(DOWNLOAD https://ruhr-uni-bochum.sciebo.de/public.php/webdav/data-${CRPROPA_DATAFILE_VER}.tar.gz - ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz + ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz USERPWD "3juW9sntQX2IWBS" EXPECTED_MD5 "${DATA_CHECKSUM}") message("-- Extracting data file") else() message("-- Downloading of data file disabled") endif(DOWNLOAD_DATA) -if(EXISTS ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}/data ${CMAKE_BINARY_DIR}/data/ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}/ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}/data ${CMAKE_CURRENT_BINARY_DIR}/data/ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}/ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) else() - message(WARNING "CRPropa data file not found at ${CMAKE_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz + message(WARNING "CRPropa data file not found at ${CMAKE_CURRENT_BINARY_DIR}/data-${CRPROPA_DATAFILE_VER}.tar.gz CRPropa should compile, but will likely not work properly! Please install data file manually, or use the automatic download which is enabled by default.") endif() # ---------------------------------------------------------------------------- # Library and Binary # ---------------------------------------------------------------------------- -file(GLOB_RECURSE CRPROPA_INCLUDES RELATIVE ${CMAKE_SOURCE_DIR} include/*.h) +file(GLOB_RECURSE CRPROPA_INCLUDES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} include/*.h) +# set CRPROPA_EXTRA_INCLUDES as cache variable to hand it over when used as subproject +set(CRPROPA_EXTRA_INCLUDES "${CRPROPA_EXTRA_INCLUDES}" CACHE STRING "The include paths of the extra libraries that are needed." FORCE) include_directories(include ${CRPROPA_EXTRA_INCLUDES}) add_library(crpropa SHARED @@ -428,7 +430,7 @@ if(BUILD_DOC) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/DoxygenLayout.xml ${CMAKE_CURRENT_BINARY_DIR}/DoxygenLayout.xml COPYONLY) add_custom_target(doxy ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM) - set_source_files_properties(${CMAKE_BINARY_DIR}/docstrings_from_doxy.i PROPERTIES GENERATED true ) + set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/docstrings_from_doxy.i PROPERTIES GENERATED true ) add_custom_target(docstrings_from_doxy COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/libs/doxy2swig/doxy2swig.py ${CMAKE_CURRENT_BINARY_DIR}/xml/index.xml -o ${CMAKE_CURRENT_BINARY_DIR}/docstrings_from_doxy.i DEPENDS doxy @@ -489,9 +491,9 @@ if(ENABLE_PYTHON AND Python_FOUND) list(APPEND CRPROPA_SWIG_DEFINES -doxygen) else() if(BUILD_DOC AND DOXYGEN_FOUND) - LIST(APPEND CRPROPA_SWIG_INPUTS ${CMAKE_BINARY_DIR}/docstrings_from_doxy.i) + LIST(APPEND CRPROPA_SWIG_INPUTS ${CMAKE_CURRENT_BINARY_DIR}/docstrings_from_doxy.i) list(APPEND CRPROPA_SWIG_DEFINES -DWITH_DOXYGEN) - list(APPEND SWIG_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}) + list(APPEND SWIG_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}) endif(BUILD_DOC AND DOXYGEN_FOUND) endif(SWIG_VERSION VERSION_GREATER 4.0) @@ -515,7 +517,7 @@ if(ENABLE_PYTHON AND Python_FOUND) file(GLOB_RECURSE CRPROPA_SWIG_INPUTS python/*.i) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/crpropa_wrap.cxx PROPERTIES GENERATED true) add_custom_target(crpropa-swig-wrapper - COMMAND swig ${BUILTIN} -c++ -python -I${CMAKE_SOURCE_DIR}/include -I${CMAKE_SOURCE_DIR}/libs/HepPID/include ${SWIG_INCLUDES} ${CRPROPA_SWIG_DEFINES} -dirprot -o ${CMAKE_CURRENT_BINARY_DIR}/crpropa_wrap.cxx -outdir ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/python/crpropa${BUILTIN}.i + COMMAND swig ${BUILTIN} -c++ -python -I${CMAKE_CURRENT_SOURCE_DIR}/include -I${CMAKE_CURRENT_SOURCE_DIR}/libs/HepPID/include ${SWIG_INCLUDES} ${CRPROPA_SWIG_DEFINES} -dirprot -o ${CMAKE_CURRENT_BINARY_DIR}/crpropa_wrap.cxx -outdir ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/python/crpropa${BUILTIN}.i DEPENDS ${CRPROPA_SWIG_INPUTS} ${CRPROPA_INCLUDES} ) if(BUILD_DOC AND DOXYGEN_FOUND) @@ -530,7 +532,7 @@ if(ENABLE_PYTHON AND Python_FOUND) target_link_libraries(crpropa-swig crpropa ${Python_LIBRARIES} ${Python_LIBRARY}) add_dependencies(crpropa-swig crpropa-swig-wrapper) - install(DIRECTORY "${CMAKE_SOURCE_DIR}/python/crpropa" DESTINATION "${Python_INSTALL_PACKAGE_DIR}") + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/python/crpropa" DESTINATION "${Python_INSTALL_PACKAGE_DIR}") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/crpropa.py" DESTINATION "${Python_INSTALL_PACKAGE_DIR}/crpropa") install(TARGETS crpropa-swig LIBRARY DESTINATION "${Python_INSTALL_PACKAGE_DIR}/crpropa") install(FILES ${CRPROPA_SWIG_INPUTS} DESTINATION share/crpropa/swig_interface) @@ -543,10 +545,10 @@ endif(ENABLE_PYTHON AND Python_FOUND) # ---------------------------------------------------------------------------- add_definitions(-DCRPROPA_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}") install(TARGETS crpropa DESTINATION lib) -install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h") -install(DIRECTORY ${CMAKE_BINARY_DIR}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h") -install(DIRECTORY ${CMAKE_BINARY_DIR}/data/ DESTINATION share/crpropa/ PATTERN ".git" EXCLUDE) -install(DIRECTORY libs/kiss/include/ DESTINATION include) +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h") +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h") +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data/ DESTINATION share/crpropa/ PATTERN ".git" EXCLUDE) +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/libs/kiss/include/ DESTINATION include) # ------------------------------------------------------------------ # Documentation