-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
152 lines (131 loc) · 4.19 KB
/
CMakeLists.txt
File metadata and controls
152 lines (131 loc) · 4.19 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#------------------------------------------------------------------------------
# Top Level CMakeLists.txt for CLHEP
# cmake [-DCMAKE_INSTALL_PREFIX=/install/path]
# [-DCMAKE_BUILD_TYPE=Debug|Release|RelWithDebInfo|MinSizeRel]
# [-DCMAKE_C_COMPILER=...] [-DCMAKE_CXX_COMPILER=...]
# [-DCMAKE_CXX_FLAGS=...]
# [-DCLHEP_BUILD_CXXSTD="-std=c++NN"] (use specified c++ extension)
# [-DCLHEP_SINGLE_THREAD=ON] (disable multi threading)
# [-DCLHEP_DEBUG_MESSAGES=ON] (see more verbose output)
# [-DCLHEP_BUILD_DOCS=ON]
# [-DLIB_SUFFIX=64]
# /path/to/source
# make
# make test
# make install
#
# mac i386: -DCMAKE_CXX_FLAGS="-m32" -DCMAKE_OSX_ARCHITECTURES="i386"
# mac x86_64: -DCMAKE_CXX_FLAGS="-m64" -DCMAKE_OSX_ARCHITECTURES="x86_64"
#
# Use -DLIB_SUFFIX=64 to install the libraries in a lib64 subdirectory
# instead of the default lib subdirectory.
#
# The default CLHEP build type is CMAKE_BUILD_TYPE=RelWithDebInfo,
# which matches the default CLHEP autoconf flags
#------------------------------------------------------------------------------
# Ensure out of source build before anything else
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/ClhepOutOfSourceBuild.cmake)
clhep_ensure_out_of_source_build()
# use cmake 3.2 or later
cmake_minimum_required(VERSION 3.2)
# Project setup
project(CLHEP VERSION 2.4.5.1)
# - needed for (temporary) back compatibility
set(VERSION ${PROJECT_VERSION})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules
${CMAKE_MODULE_PATH}
)
# enable use of LIB_SUFFIX
include(ClhepVariables)
clhep_lib_suffix()
# CLHEP custom modules
include(ClhepCopyHeaders)
include(ClhepBuildTest)
include(ClhepBuildLibrary)
include(CheckFunctionExists)
include(ClhepToolchain)
ENABLE_TESTING()
# include search path
include_directories ("${PROJECT_BINARY_DIR}")
# add CLHEP/Random to search path so we find gaussTables.cdat
include_directories ("${PROJECT_SOURCE_DIR}/Random")
# Put all library build products in standard locations under build tree
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
# set our preferred compiler flags
clhep_set_compiler_flags()
# the main CLHEP config script
clhep_config()
# check for required functions
CHECK_FUNCTION_EXISTS(drand48 found_drand48)
# all the packages
set( CLHEP_subdirs
Units
Utility
Vector
Evaluator
GenericFunctions
Geometry
Random
Matrix
RandomObjects
Cast
RefCount
Exceptions
)
# The Units and Utility packages are just headers.
set( CLHEP_libraries
Vector
Evaluator
GenericFunctions
Geometry
Random
Matrix
RandomObjects
Cast
RefCount
Exceptions
)
clhep_copy_headers( ${CLHEP_subdirs} )
add_subdirectory(Units)
add_subdirectory(Utility)
add_subdirectory(Vector)
add_subdirectory(Evaluator)
add_subdirectory(GenericFunctions)
add_subdirectory(Geometry)
add_subdirectory(Random)
add_subdirectory(Matrix)
add_subdirectory(RandomObjects)
add_subdirectory(Cast)
add_subdirectory(RefCount)
add_subdirectory(Exceptions)
# libCLHEP.a and libCLHEP.so
clhep_build_libclhep( ${CLHEP_libraries} )
# provide tools for other packages to include CLHEP easily
clhep_toolchain()
# - Build docucumentation if required
if(CLHEP_BUILD_DOCS)
message(STATUS "Enabled build and install of documents")
# Build Doxygen
# Require 1.8.8 or better to allow use of MD file as mainpage
find_package(Doxygen 1.8.8 REQUIRED)
configure_file(doxygen.conf.in "${PROJECT_BINARY_DIR}/doxygen.conf" @ONLY)
add_custom_command(
OUTPUT "${PROJECT_BINARY_DIR}/Doxygen/html/index.html"
COMMAND ${DOXYGEN_EXECUTABLE} "${PROJECT_BINARY_DIR}/doxygen.conf"
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
DEPENDS
"${PROJECT_BINARY_DIR}/doxygen.conf"
CLHEP
"${PROJECT_SOURCE_DIR}/README.md"
COMMENT "Generating Doxygen docs for CLHEP"
)
add_custom_target(doc ALL DEPENDS "${PROJECT_BINARY_DIR}/Doxygen/html/index.html")
install(DIRECTORY ${PROJECT_BINARY_DIR}/Doxygen
DESTINATION "share/doc/CLHEP"
)
endif()
# Custom Packaging
include(ClhepPackaging)