-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
136 lines (106 loc) · 4.51 KB
/
CMakeLists.txt
File metadata and controls
136 lines (106 loc) · 4.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
cmake_minimum_required(VERSION 3.14)
project(PFSimple CXX)
set(PROJECT_VERSION 1.0)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if(NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()
include(ExternalProject)
macro(add_target_property _target _prop _value)
get_target_property(_oldprop "${_target}" ${_prop})
if(NOT _oldprop)
set_target_properties("${_target}" PROPERTIES ${_prop} "${_value}")
else(NOT _oldprop)
set_target_properties("${_target}" PROPERTIES ${_prop} "${_oldprop} ${_value}")
endif(NOT _oldprop)
endmacro(add_target_property)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
message(STATUS "Using C++${CMAKE_CXX_STANDARD}")
# by default build optimized code with debug symbols
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE RELEASE)
endif ()
set(PFSimple_BUNDLED_AT OFF CACHE BOOL "Get and build AnalysisTree from official repo")
set(PFSimple_BUNDLED_AT_VERSION "v2.4.0" CACHE STRING "Version of AnalysisTree to build")
set(PFSimple_BUNDLED_AT_URL "https://github.com/HeavyIonAnalysis/AnalysisTree.git" CACHE STRING "URL of AnalysisTree to build")
set(PFSimple_BUNDLED_AT_GIT_SHALLOW ON CACHE BOOL "Use CMake GIT_SHALLOW option")
set(PFSimple_BUILD_TESTS ON CACHE BOOL "Build tests for the PFSimple")
# in DEBUG mode make verbose Makefile
if (CMAKE_BUILD_TYPE MATCHES DEBUG)
set(CMAKE_VERBOSE_MAKEFILE ON)
endif ()
# set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -DDEBUG -D__DEBUG -Wall")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -ggdb")
# set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -ftree-vectorize -ffast-math -DNODEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -ffast-math -DNODEBUG")
message(STATUS "Using CXX flags for ${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
set(FIXTARGET TRUE CACHE BOOL "Compile for fix target geometry.")
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(KFParticle_FOUND)
Message("KFParticle found")
find_package(Vc REQUIRED)
include_directories(${KFParticle_INCLUDE_DIR} ${Vc_INCLUDE_DIR})
else()
Message("KFParticle is not found. It will be installed as external package")
include(KFParticle)
include_directories(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIRS} ${PROJECT_INCLUDE_DIRECTORIES} ${Vc_INCLUDE_DIR})
endIf()
message(STATUS "PROJECT_INCLUDE_DIRECTORIES ${PROJECT_INCLUDE_DIRECTORIES}")
message(STATUS "Using ROOT: ${ROOT_VERSION} <${ROOT_CONFIG}>")
include_directories(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIRS})
include(${ROOT_USE_FILE})
include(AnalysisTree)
add_subdirectory(at_interface)
add_subdirectory(src)
add_subdirectory(src/interface)
include(TestsSetupPFSimple)
if(PFSimple_BUNDLED_AT)
set(AT_INSTALL_BIN "${CMAKE_INSTALL_PREFIX}/bin")
else()
set(AT_INSTALL_BIN "${AnalysisTree_BINARY_DIR}")
endif()
configure_file(cmake/PFSimpleConfig.sh.in ${CMAKE_BINARY_DIR}/PFSimpleConfig.sh)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/KFParticleSimple/KFParticleSimpleConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
export(EXPORT KFParticleSimpleTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/KFParticleSimple/KFParticleSimpleTargets.cmake")
message(STATUS "KFParticleSimpleTargets: ${KFParticleSimpleTargets}")
set(ConfigPackageLocation lib/cmake/KFParticleSimple)
set(KFParticleSimple_INCLUDE_DIR "include")
set(KFParticleSimple_LIBRARY_DIR "lib")
configure_package_config_file(
KFParticleSimpleConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/KFParticleSimple/KFParticleSimpleConfig.cmake
INSTALL_DESTINATION ${ConfigPackageLocation}
PATH_VARS KFParticleSimple_INCLUDE_DIR KFParticleSimple_LIBRARY_DIR
)
install(EXPORT KFParticleSimpleTargets
FILE
KFParticleSimpleTargets.cmake
DESTINATION
${ConfigPackageLocation}
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/KFParticleSimple/KFParticleSimpleConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/KFParticleSimple/KFParticleSimpleConfigVersion.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel
)
install(FILES
${CMAKE_BINARY_DIR}/PFSimpleConfig.sh
DESTINATION
bin
COMPONENT
Devel
)