From 62097ee91843732636277aa677f768a1b38fbd36 Mon Sep 17 00:00:00 2001 From: ralfulrich <ralf.ulrich@kit.edu> Date: Fri, 29 Jan 2021 17:39:47 +0100 Subject: [PATCH] better structure of install area --- CMakeLists.txt | 32 +++++++------ ...Config.cmake.in => corsikaConfig.cmake.in} | 8 ++-- examples/CMakeLists.txt | 2 +- externals/cnpy/CMakeLists.txt | 8 ++-- modules/CMakeLists_PROPOSAL.txt | 17 +++---- modules/pythia8/CMakeLists.txt | 48 ++++++++++++------- modules/qgsjetII/CMakeLists.txt | 14 ++---- modules/sibyll/CMakeLists.txt | 10 ++-- modules/urqmd/CMakeLists.txt | 16 +++---- 9 files changed, 84 insertions(+), 71 deletions(-) rename cmake/{CORSIKA8Config.cmake.in => corsikaConfig.cmake.in} (81%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 127ec7074..45c0816ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ endif () # cmake path dir, and cmake config # set (CORSIKA8_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake") -set (CMAKE_MODULE_PATH "${CORSIKA8_CMAKE_DIR}" ${CMAKE_MODULE_PATH}) +set (CMAKE_MODULE_PATH "${CORSIKA8_CMAKE_DIR}" ${CMAKE_MODULE_PATH}) include (CorsikaUtilities) # extra cmake function set (CMAKE_VERBOSE_MAKEFILE OFF) # this can be done with `make VERBOSE=1` # ignore many irrelevant Up-to-date messages during install @@ -285,7 +285,7 @@ install ( install (DIRECTORY corsika DESTINATION include) write_basic_package_version_file ( - ${PROJECT_BINARY_DIR}/CORSIKA8ConfigVersion.cmake + ${PROJECT_BINARY_DIR}/corsikaConfigVersion.cmake VERSION ${c8_version} COMPATIBILITY SameMajorVersion ) @@ -293,50 +293,52 @@ write_basic_package_version_file ( # export targets in build tree export ( EXPORT CORSIKA8PublicTargets - FILE "${CMAKE_CURRENT_BINARY_DIR}/CORSIKA8Targets.cmake" + FILE "${CMAKE_CURRENT_BINARY_DIR}/corsikaTargets.cmake" NAMESPACE CORSIKA8:: ) # export targets in install tree install ( EXPORT CORSIKA8PublicTargets - FILE CORSIKA8Targets.cmake + FILE corsikaTargets.cmake NAMESPACE CORSIKA8:: - DESTINATION lib/cmake/CORSIKA8 + DESTINATION lib/cmake/corsika ) # config for build tree configure_package_config_file ( - cmake/CORSIKA8Config.cmake.in - ${PROJECT_BINARY_DIR}/CORSIKA8Config.cmake + cmake/corsikaConfig.cmake.in + ${PROJECT_BINARY_DIR}/corsikaConfig.cmake INSTALL_DESTINATION ${CMAKE_BINARY_DIR}/do_not_need_this ) # config for install tree -set (Pythia8_PREFIX ${Pythia8_PREFIX_INSTALL}) # overwrite with install location +# overwrite with install location (if it was build as part of corsika) +set (Pythia8_INCDIR ${Pythia8_INCDIR_INSTALL}) +set (Pythia8_LIBDIR ${Pythia8_LIBDIR_INSTALL}) configure_package_config_file ( - cmake/CORSIKA8Config.cmake.in - ${PROJECT_BINARY_DIR}/cmake/CORSIKA8Config.cmake + cmake/corsikaConfig.cmake.in + ${PROJECT_BINARY_DIR}/cmake/corsikaConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX} ) install (FILES ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake ${CMAKE_BINARY_DIR}/conaninfo.txt - ${CMAKE_BINARY_DIR}/CORSIKA8Config.cmake - ${CMAKE_BINARY_DIR}/CORSIKA8ConfigVersion.cmake - DESTINATION lib/cmake/CORSIKA8 + ${CMAKE_BINARY_DIR}/corsikaConfig.cmake + ${CMAKE_BINARY_DIR}/corsikaConfigVersion.cmake + DESTINATION lib/cmake/corsika ) # # examples # -install (DIRECTORY examples DESTINATION share/) +install (DIRECTORY examples DESTINATION share/corsika) # # tools # -install (DIRECTORY tools DESTINATION share/) +install (DIRECTORY tools DESTINATION share/corsika) diff --git a/cmake/CORSIKA8Config.cmake.in b/cmake/corsikaConfig.cmake.in similarity index 81% rename from cmake/CORSIKA8Config.cmake.in rename to cmake/corsikaConfig.cmake.in index 60afa1f63..4bf1338b2 100644 --- a/cmake/CORSIKA8Config.cmake.in +++ b/cmake/corsikaConfig.cmake.in @@ -24,9 +24,9 @@ conan_basic_setup (TARGETS) add_library (C8::ext::pythia8 STATIC IMPORTED GLOBAL) set_target_properties ( C8::ext::pythia8 PROPERTIES - IMPORTED_LOCATION @Pythia8_PREFIX@/lib/libpythia8.a + IMPORTED_LOCATION @Pythia8_LIBDIR@/libpythia8.a IMPORTED_LINK_INTERFACE_LIBRARIES dl - INTERFACE_INCLUDE_DIRECTORIES @Pythia8_PREFIX@/include + INTERFACE_INCLUDE_DIRECTORIES @Pythia8_INCDIR@ ) set (Pythia8_FOUND @Pythia8_FOUND@) message (STATUS "Pythia8 at: @Pythia8_PREFIX@") @@ -35,5 +35,5 @@ message (STATUS "Pythia8 at: @Pythia8_PREFIX@") #++++++++++++++++++++++++++++++ # import CORSIKA8 # -include ("${CMAKE_CURRENT_LIST_DIR}/CORSIKA8Targets.cmake") -check_required_components (CORSIKA8) +include ("${CMAKE_CURRENT_LIST_DIR}/corsikaTargets.cmake") +check_required_components (corsika) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 94b98ac46..4b9c6d55f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,7 +4,7 @@ project (CORSIKA8_examples) set (CMAKE_VERBOSE_MAKEFILE OFF) # this can be changed with `make VERBOSE=1` # this is enough to use CORSIKA8 -find_package (CORSIKA8 CONFIG REQUIRED) +find_package (corsika CONFIG REQUIRED) # this is only for CORSIKA_REGISTER_EXAMPLE include ("${CMAKE_CURRENT_SOURCE_DIR}/CMakeHelper.cmake") diff --git a/externals/cnpy/CMakeLists.txt b/externals/cnpy/CMakeLists.txt index 3dd8715fa..6e60f74d7 100644 --- a/externals/cnpy/CMakeLists.txt +++ b/externals/cnpy/CMakeLists.txt @@ -21,18 +21,18 @@ target_include_directories ( cnpy INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:external/cnpy/include> + $<INSTALL_INTERFACE:corsika_external/cnpy/include> ) install ( FILES cnpy.hpp - DESTINATION external/cnpy/include + DESTINATION corsika_external/cnpy/include ) install ( TARGETS cnpy EXPORT CORSIKA8PublicTargets - LIBRARY DESTINATION external/cnpy/lib - ARCHIVE DESTINATION external/cnpy/lib + LIBRARY DESTINATION corsika_external/cnpy/lib + ARCHIVE DESTINATION corsika_external/cnpy/lib ) diff --git a/modules/CMakeLists_PROPOSAL.txt b/modules/CMakeLists_PROPOSAL.txt index e31b59bbd..3c3670283 100644 --- a/modules/CMakeLists_PROPOSAL.txt +++ b/modules/CMakeLists_PROPOSAL.txt @@ -1,11 +1,12 @@ - -cmake_minimum_required(VERSION 3.8) - if(CMAKE_PROJECT_NAME STREQUAL corsika) message(STATUS "Including PROPOSAL as part of CORSIKA8") set (IN_CORSIKA8 ON) else(CMAKE_PROJECT_NAME STREQUAL corsika) set (IN_CORSIKA8 OFF) + + cmake_minimum_required(VERSION 3.8) + project(PROPOSAL VERSION 6.1.2 LANGUAGES CXX) + endif(CMAKE_PROJECT_NAME STREQUAL corsika) project(PROPOSAL VERSION 6.1.2 LANGUAGES CXX) @@ -74,8 +75,8 @@ else (NOT IN_CORSIKA8) install( TARGETS PROPOSAL EXPORT CORSIKA8PublicTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib/corsika + ARCHIVE DESTINATION lib/corsika ) endif (NOT IN_CORSIKA8) @@ -97,12 +98,12 @@ target_include_directories( else (NOT IN_CORSIKA8) install( FILES ${PROJECT_BINARY_DIR}/include/PROPOSAL/version.h - DESTINATION include/PROPOSAL + DESTINATION include/corsika_modules/PROPOSAL ) target_include_directories( PROPOSAL PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> - $<INSTALL_INTERFACE:include/> + $<INSTALL_INTERFACE:include/corsika_modules> ) endif (NOT IN_CORSIKA8) @@ -118,7 +119,7 @@ else (NOT IN_CORSIKA8) foreach(INC_FILE ${INC_FILES}) file(RELATIVE_PATH REL_FILE ${PROJECT_SOURCE_DIR}/include/ ${INC_FILE}) get_filename_component(DIR ${REL_FILE} DIRECTORY) - install(FILES include/${REL_FILE} DESTINATION include/${DIR}) + install(FILES include/${REL_FILE} DESTINATION include/corsika_modules/${DIR}) endforeach() endif (NOT IN_CORSIKA8) diff --git a/modules/pythia8/CMakeLists.txt b/modules/pythia8/CMakeLists.txt index ef4cb87af..1a9ae0261 100644 --- a/modules/pythia8/CMakeLists.txt +++ b/modules/pythia8/CMakeLists.txt @@ -38,8 +38,13 @@ if ("x_${USE_Pythia8_C8}" STREQUAL "x_SYSTEM") set (CORSIKA_Pythia8_LOCATION ${Pythia8_PREFIX}) # build and install location, pythia8 is external configure_file (Pythia8ConfigurationDirectory.hpp.in ${CORSIKA_Pythia8_MODULE_DIR}/Pythia8ConfigurationDirectory.hpp @ONLY) configure_file (Pythia8ConfigurationDirectory.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/Pythia8ConfigurationDirectory_install.hpp @ONLY) - - set (Pythia8_PREFIX_INSTALL ${Pythia8_PREFIX}) # install and build are both the same here + + # install and build are both the same here since it is external + set (Pythia8_PREFIX_INSTALL ${Pythia8_PREFIX}) + set (Pythia8_LIBDIR ${Pythia8_LIBRARY}) + set (Pythia8_LIBDIR_INSTALL ${Pythia8_LIBRARY}) + set (Pythia8_INCDIR ${Pythia8_INCLUDE_DIR}) + set (Pythia8_INCDIR_INSTALL ${Pythia8_INCLUDE_DIR}) message (STATUS "Pythia8 (system) at ${Pythia8_PREFIX}") @@ -48,46 +53,55 @@ else () set (_C8_Pythia8_VERSION "8245") message (STATUS "Building modules/pythia8 using pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2") message (STATUS "This will take a bit.....") - # this is not a full Pythia8 install, it is a bit simplified, e.g. no pythia8-config + # this is not a full Pythia8 install, it is a bit simplified, e.g. no pythia8-config, no examples + # and also, it is fitted into the normal CORSIKA8 install "include/corsika_modules/Pythia8, lib/corsika" ExternalProject_Add (pythia8 URL ${CMAKE_CURRENT_SOURCE_DIR}/pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2 URL_MD5 d3e951a2f101e8cfec26405cb61db83b SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/pythia8/source" INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/pythia8/install" CONFIGURE_COMMAND ./configure --cxx-common=\\"${CMAKE_CXX_FLAGS} -O2 -fPIC\\" --prefix=${CMAKE_CURRENT_BINARY_DIR}/pythia8/install - INSTALL_COMMAND make install COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/bin ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/share/Pythia8/examples + INSTALL_COMMAND make install + COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/bin + COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/share/Pythia8/examples + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/include/corsika_modules + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/lib/corsika + COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/include/corsika_modules/Pythia8 + COMMAND mv -f ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/include/Pythia8 ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/include/corsika_modules/ + COMMAND mv ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/lib/libpythia8.a ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install/lib/corsika/ BUILD_IN_SOURCE ON EXCLUDE_FROM_ALL TRUE - ) + ) set (Pythia8_FOUND 1 PARENT_SCOPE) - set (Pythia8_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/pythia8) - set (Pythia8_PREFIX_INSTALL ${Pythia8_INSTALL_DIR}) + set (Pythia8_PREFIX_INSTALL ${CMAKE_INSTALL_PREFIX}) # this is "make install" ExternalProject_Get_Property (pythia8 INSTALL_DIR) # this is "make" - set (Pythia8_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/externals/pythia8) # this is "make install" set (Pythia8_VERSION ${_C8_Pythia8_VERSION} CACHE STRING "Version of Pythia8") set (Pythia8_PREFIX ${INSTALL_DIR}) - set (Pythia8_INCLUDE_DIR ${Pythia8_PREFIX}/include) - set (Pythia8_LIBRARY ${Pythia8_PREFIX}/lib) + set (Pythia8_INCLUDE_DIR ${Pythia8_PREFIX}/include/corsika_modules) + set (Pythia8_LIBDIR ${Pythia8_PREFIX}/lib/corsika) + set (Pythia8_LIBDIR_INSTALL ${Pythia8_PREFIX_INSTALL}/lib/corsika) + set (Pythia8_INCDIR ${Pythia8_PREFIX}/include/corsika_modules) + set (Pythia8_INCDIR_INSTALL ${Pythia8_PREFIX_INSTALL}/include/corsika_modules) add_dependencies (C8::ext::pythia8 pythia8) set (CORSIKA_Pythia8_LOCATION ${Pythia8_PREFIX}) # build location configure_file (Pythia8ConfigurationDirectory.hpp.in ${CORSIKA_Pythia8_MODULE_DIR}/Pythia8ConfigurationDirectory.hpp @ONLY) - set (CORSIKA_Pythia8_LOCATION ${Pythia8_INSTALL_DIR}) # install location + set (CORSIKA_Pythia8_LOCATION ${Pythia8_PREFIX_INSTALL}) # install location configure_file (Pythia8ConfigurationDirectory.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/Pythia8ConfigurationDirectory_install.hpp @ONLY) - install (DIRECTORY ${INSTALL_DIR}/ DESTINATION ${Pythia8_INSTALL_DIR}) + install (DIRECTORY ${Pythia8_PREFIX}/ DESTINATION ${Pythia8_PREFIX_INSTALL}) set (Pythia8_INCLUDE_DIRS ${Pythia8_INCLUDE_DIR}) set_target_properties ( C8::ext::pythia8 PROPERTIES - IMPORTED_LOCATION ${Pythia8_LIBRARY}/libpythia8.a + IMPORTED_LOCATION ${Pythia8_LIBDIR}/libpythia8.a IMPORTED_LINK_INTERFACE_LIBRARIES dl INTERFACE_INCLUDE_DIRECTORIES "${Pythia8_INCLUDE_DIRS}" ) - message (STATUS "Pythia8 build at: ${INSTALL_DIR}, final install to: ${Pythia8_INSTALL_DIR}, include dirs: ${Pythia8_INCLUDE_DIRS}") + message (STATUS "Pythia8 build at: ${Pythia8_PREFIX}, final install to: ${Pythia8_PREFIX_INSTALL}") endif () # the install location of Pythia8 @@ -103,5 +117,7 @@ target_link_libraries (CORSIKA8 INTERFACE C8::ext::pythia8) # we need those for exporting targets and dependencies: set (Pythia8_FOUND 1 PARENT_SCOPE) -set (Pythia8_PREFIX ${Pythia8_PREFIX} PARENT_SCOPE) -set (Pythia8_PREFIX_INSTALL ${Pythia8_PREFIX_INSTALL} PARENT_SCOPE) +set (Pythia8_INCDIR ${Pythia8_INCDIR} PARENT_SCOPE) +set (Pythia8_INCDIR_INSTALL ${Pythia8_INCDIR_INSTALL} PARENT_SCOPE) +set (Pythia8_LIBDIR ${Pythia8_LIBDIR} PARENT_SCOPE) +set (Pythia8_LIBDIR_INSTALL ${Pythia8_LIBDIR_INSTALL} PARENT_SCOPE) diff --git a/modules/qgsjetII/CMakeLists.txt b/modules/qgsjetII/CMakeLists.txt index d9e2704fe..bef449e65 100644 --- a/modules/qgsjetII/CMakeLists.txt +++ b/modules/qgsjetII/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required (VERSION 3.1) - -project (libQGSJetII) - set ( MODEL_SOURCES qgsjet-II-04-mod1.f @@ -25,7 +21,7 @@ target_include_directories ( QGSJetII PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:include/qgsjetII> + $<INSTALL_INTERFACE:include/corsika_modules/qgsjetII> ) target_link_libraries (QGSJetII CorsikaData) @@ -40,26 +36,26 @@ target_include_directories ( QGSJetII_static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:include/qgsjetII> + $<INSTALL_INTERFACE:include/corsika_modules/qgsjetII> ) target_link_libraries (QGSJetII_static CorsikaData) install ( FILES ${MODEL_HEADERS} - DESTINATION include/qgsjetII + DESTINATION include/corsika_modules/qgsjetII ) install ( TARGETS QGSJetII EXPORT CORSIKA8PublicTargets - DESTINATION lib + DESTINATION lib/corsika ) install ( TARGETS QGSJetII_static EXPORT CORSIKA8PublicTargets - DESTINATION lib + DESTINATION lib/corsika ) # add qgsjetII to corsika8 build diff --git a/modules/sibyll/CMakeLists.txt b/modules/sibyll/CMakeLists.txt index a8f249a7d..c974237be 100644 --- a/modules/sibyll/CMakeLists.txt +++ b/modules/sibyll/CMakeLists.txt @@ -33,14 +33,14 @@ target_include_directories ( Sibyll PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:include/sibyll> + $<INSTALL_INTERFACE:include/corsika_modules/sibyll> ) target_include_directories ( Sibyll_static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:include/sibyll> + $<INSTALL_INTERFACE:include/corsika_modules/sibyll> ) target_link_libraries ( @@ -52,19 +52,19 @@ target_link_libraries ( install ( FILES ${MODEL_HEADERS} - DESTINATION include/sibyll + DESTINATION include/corsika_modules/sibyll ) install ( TARGETS Sibyll EXPORT CORSIKA8PublicTargets - LIBRARY DESTINATION lib + LIBRARY DESTINATION lib/corsika ) install ( TARGETS Sibyll_static EXPORT CORSIKA8PublicTargets - ARCHIVE DESTINATION lib + ARCHIVE DESTINATION lib/corsika ) # add sibyll to corsika8 build diff --git a/modules/urqmd/CMakeLists.txt b/modules/urqmd/CMakeLists.txt index 3d371bbb1..d5b921c45 100644 --- a/modules/urqmd/CMakeLists.txt +++ b/modules/urqmd/CMakeLists.txt @@ -47,7 +47,7 @@ enable_language (Fortran) add_library (UrQMD SHARED ${MODEL_SOURCES}) target_include_directories (UrQMD PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:include/urqmd> + $<INSTALL_INTERFACE:include/corsika_modules/urqmd> ) set_target_properties ( UrQMD @@ -58,7 +58,7 @@ set_target_properties ( add_library (UrQMD_static STATIC ${MODEL_SOURCES}) target_include_directories (UrQMD_static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:include/urqmd> + $<INSTALL_INTERFACE:include/corsika_modules/urqmd> ) set_target_properties ( UrQMD_static @@ -69,23 +69,21 @@ set_target_properties ( install ( FILES ${MODEL_HEADERS} - DESTINATION include/urqmd + DESTINATION include/corsika_modules/urqmd ) install ( TARGETS UrQMD EXPORT CORSIKA8PublicTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - INCLUDES DESTINATION include/urqmd + LIBRARY DESTINATION lib/corsika + INCLUDES DESTINATION include/corsika_modules/urqmd ) install ( TARGETS UrQMD_static EXPORT CORSIKA8PublicTargets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - INCLUDES DESTINATION include/urqmd + ARCHIVE DESTINATION lib/corsika + INCLUDES DESTINATION include/corsika_modules/urqmd ) # add UrQMD to CORSIKA8 build -- GitLab