From c5c8161da2b744f5f75d4beaebd8ee7eb8724aee Mon Sep 17 00:00:00 2001 From: Viktor Date: Wed, 10 Jun 2020 10:29:39 +0200 Subject: [PATCH 1/2] add externals --- CMakeLists.txt | 23 +++++++++++++++++++++-- Interface/CMakeLists.txt | 2 ++ KFSimple/CMakeLists.txt | 3 ++- cmake_modules/KFParticle.cmake | 20 ++++++++++++++++++++ cmake_modules/Vc.cmake | 21 +++++++++++++++++++++ 5 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 cmake_modules/KFParticle.cmake create mode 100644 cmake_modules/Vc.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index b667022..92ccf4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,8 @@ project(KFParticleSimple CXX) set(CMAKE_CXX_STANDARD 11) set(PROJECT_VERSION 1.0) +include(ExternalProject) + macro(add_target_property _target _prop _value) get_target_property(_oldprop "${_target}" ${_prop}) if(NOT _oldprop) @@ -34,9 +36,26 @@ list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}) set(FIXTARGET TRUE CACHE BOOL "Compile for fix target geometry.") -find_package(KFParticle REQUIRED) -find_package(Vc REQUIRED) find_package(ROOT REQUIRED RIO) +find_package(KFParticle QUIET) +find_package(Vc QUIET) + +set(EXTERNAL_DIR ${CMAKE_BINARY_DIR}/external) +set(EXTERNAL_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/external) + +if(Vc_FOUND) + Message("Vc found") +Else() + Message("Vc is not found. It will be installed as external package") + include(cmake_modules/Vc.cmake) +EndIf() + +if(KFParticle_FOUND) + Message("KFParticle found") +Else() + Message("KFParticle is not found. It will be installed as external package") + include(cmake_modules/KFParticle.cmake) +EndIf() if (ROOT_FOUND) message(STATUS "Using ROOT: ${ROOT_VERSION} <${ROOT_CONFIG}>") diff --git a/Interface/CMakeLists.txt b/Interface/CMakeLists.txt index 6349fa7..0a856ed 100644 --- a/Interface/CMakeLists.txt +++ b/Interface/CMakeLists.txt @@ -6,11 +6,13 @@ set(SOURCES string(REPLACE ".cxx" ".h" HEADERS "${SOURCES}") include_directories(${CMAKE_SOURCE_DIR}/Interface ) +link_directories(${PROJECT_LINK_DIRECTORIES}) add_library(KFParticleInterface SHARED ${SOURCES} G__KFParticleInterface.cxx) if(ROOT_FOUND) ROOT_GENERATE_DICTIONARY(G__KFParticleInterface ${HEADERS} LINKDEF KFParticleInterfaceLinkDef.h OPTIONS "-DDO_TPCCATRACKER_EFF_PERFORMANCE" "-DNonhomogeneousField" "-DCBM" "-DUSE_TIMERS") + add_dependencies(KFParticleInterface ${PROJECT_DEPENDENCIES}) target_link_libraries(KFParticleInterface ${ROOT_LIBRARIES} KFParticle ${Vc_LIBRARIES}) endif(ROOT_FOUND) diff --git a/KFSimple/CMakeLists.txt b/KFSimple/CMakeLists.txt index 81e98ad..f89a245 100644 --- a/KFSimple/CMakeLists.txt +++ b/KFSimple/CMakeLists.txt @@ -5,7 +5,8 @@ set(SOURCES string(REPLACE ".cxx" ".h" HEADERS "${SOURCES}") list(APPEND HEADERS "Constants.h") -include_directories(${CMAKE_SOURCE_DIR}/Interface ${CMAKE_SOURCE_DIR}/KFSimple) +include_directories(${CMAKE_SOURCE_DIR}/Interface ${CMAKE_SOURCE_DIR}/KFSimple ${PROJECT_INCLUDE_DIRECTORIES} ) +link_directories(${PROJECT_LINK_DIRECTORIES}) add_library(KFParticleSimple SHARED ${SOURCES} G__KFParticleSimple.cxx) diff --git a/cmake_modules/KFParticle.cmake b/cmake_modules/KFParticle.cmake new file mode 100644 index 0000000..ae4dc04 --- /dev/null +++ b/cmake_modules/KFParticle.cmake @@ -0,0 +1,20 @@ +set(KFParticle_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}) +set(KFParticle_INCLUDE_DIR ${KFParticle_INSTALL_DIR}/include) +set(KFParticle_LIBRARY_DIR ${KFParticle_INSTALL_DIR}/lib) + +ExternalProject_Add(KFParticle_Ext + GIT_REPOSITORY "https://git.cbm.gsi.de/pwg-c2f/analysis/KFParticle.git" + GIT_TAG "cmake" + UPDATE_DISCONNECTED ${UPDATE_DISCONNECTED} + SOURCE_DIR "${EXTERNAL_DIR}/KFParticle_src" + BINARY_DIR "${EXTERNAL_DIR}/KFParticle_build" + INSTALL_DIR "${KFParticle_INSTALL_DIR}" + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=${KFParticle_INSTALL_DIR}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" + ) + +list(APPEND PROJECT_DEPENDENCIES KFParticle_Ext) +list(APPEND PROJECT_LINK_DIRECTORIES ${KFParticle_LIBRARY_DIR}) +list(APPEND PROJECT_INCLUDE_DIRECTORIES ${KFParticle_INCLUDE_DIR}) \ No newline at end of file diff --git a/cmake_modules/Vc.cmake b/cmake_modules/Vc.cmake new file mode 100644 index 0000000..0e74b70 --- /dev/null +++ b/cmake_modules/Vc.cmake @@ -0,0 +1,21 @@ +set(Vc_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}) +set(Vc_INCLUDE_DIR ${Vc_INSTALL_DIR}/include) +set(Vc_LIBRARY_DIR ${Vc_INSTALL_DIR}/lib) + +ExternalProject_Add(Vc_Ext + GIT_REPOSITORY "https://github.com/VcDevel/Vc" + GIT_TAG "1.4.1" + UPDATE_DISCONNECTED ${UPDATE_DISCONNECTED} + SOURCE_DIR "${EXTERNAL_DIR}/Vc_src" + BINARY_DIR "${EXTERNAL_DIR}/Vc_build" + INSTALL_DIR "${Vc_INSTALL_DIR}" + CMAKE_ARGS + "-DCMAKE_INSTALL_PREFIX=${Vc_INSTALL_DIR}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" + "-DBUILD_TESTING=OFF" + ) + +list(APPEND PROJECT_DEPENDENCIES Vc_Ext) +list(APPEND PROJECT_LINK_DIRECTORIES ${Vc_LIBRARY_DIR}) +list(APPEND PROJECT_INCLUDE_DIRECTORIES ${Vc_INCLUDE_DIR}) \ No newline at end of file -- GitLab From 01df3c858060f3052c4795bffe71a600487d0344 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Thu, 11 Jun 2020 00:07:05 +0200 Subject: [PATCH 2/2] no add_dependencies needed --- Interface/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/Interface/CMakeLists.txt b/Interface/CMakeLists.txt index 0a856ed..d00b47e 100644 --- a/Interface/CMakeLists.txt +++ b/Interface/CMakeLists.txt @@ -12,7 +12,6 @@ add_library(KFParticleInterface SHARED ${SOURCES} G__KFParticleInterface.cxx) if(ROOT_FOUND) ROOT_GENERATE_DICTIONARY(G__KFParticleInterface ${HEADERS} LINKDEF KFParticleInterfaceLinkDef.h OPTIONS "-DDO_TPCCATRACKER_EFF_PERFORMANCE" "-DNonhomogeneousField" "-DCBM" "-DUSE_TIMERS") - add_dependencies(KFParticleInterface ${PROJECT_DEPENDENCIES}) target_link_libraries(KFParticleInterface ${ROOT_LIBRARIES} KFParticle ${Vc_LIBRARIES}) endif(ROOT_FOUND) -- GitLab