]>
Commit | Line | Data |
---|---|---|
d50827fc | 1 | # ************************************************************************** |
2 | # * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. * | |
3 | # * * | |
4 | # * Author: The ALICE Off-line Project. * | |
5 | # * Contributors are mentioned in the code where appropriate. * | |
6 | # * * | |
7 | # * Permission to use, copy, modify and distribute this software and its * | |
8 | # * documentation strictly for non-commercial purposes is hereby granted * | |
9 | # * without fee, provided that the above copyright notice appears in all * | |
10 | # * copies and that both the copyright notice and this permission notice * | |
11 | # * appear in the supporting documentation. The authors make no claims * | |
12 | # * about the suitability of this software for any purpose. It is * | |
13 | # * provided "as is" without express or implied warranty. * | |
14 | # ************************************************************************** | |
15 | ||
16 | #--------------------------------------------------------------------------# | |
17 | # Set Basic CMake Configuration # | |
18 | #--------------------------------------------------------------------------# | |
e969a926 | 19 | |
139cbc46 | 20 | cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR) |
e969a926 | 21 | |
d50827fc | 22 | project(AliRoot CXX C) |
bf4c2121 | 23 | |
04484146 | 24 | message(STATUS "CMake platform: ${CMAKE_SYSTEM}") |
25 | message(STATUS "Build folder: ${AliRoot_BINARY_DIR}") | |
26 | message(STATUS "Source folder: ${AliRoot_SOURCE_DIR}") | |
27 | message(STATUS "Installation folder: ${CMAKE_INSTALL_PREFIX}") | |
34ab4e08 | 28 | |
ac6fcf94 | 29 | # CMake supports different build types by default. We want the DEBUG build type |
30 | # to have "-g -O0" flags: by default it only has "-g" | |
31 | set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") | |
32 | set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") | |
33 | ||
34 | # You can change the build type using | |
34ab4e08 | 35 | # cmake -DCMAKE_BUILD_TYPE=DEBUG | RELEASE | RELWITHDEBINFO | MINSIZEREL ... |
36 | if (NOT CMAKE_BUILD_TYPE) | |
37 | set(CMAKE_BUILD_TYPE RELWITHDEBINFO) | |
38 | endif(NOT CMAKE_BUILD_TYPE) | |
ac6fcf94 | 39 | message(STATUS "Build type: ${CMAKE_BUILD_TYPE} (${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}})") |
04484146 | 40 | |
41 | if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}") | |
42 | message(FATAL_ERROR "Please choose a different installation point than the source tree!") | |
43 | endif() | |
44 | ||
d50827fc | 45 | # Path to additonal modules |
c2f9135f | 46 | set(CMAKE_MODULE_PATH "${AliRoot_SOURCE_DIR}/cmake") |
47 | ||
48 | # AliRoot version extracted from Git repository | |
49 | # Sets 4 git variables | |
50 | # - GIT_REFSPEC - complete name of the current reference | |
51 | # - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference | |
52 | # - GIT_SHA1 - current hash in the long format | |
53 | # - GIT_SHORT_SHA1 - current hash in the short format | |
54 | # - ALIROOT_VERSION = ALIROOT_BRANCH | |
55 | # - ALIROOT_REVISION = GIT_SHORT_SHA1 | |
56 | include(CheckGitVersion) | |
b22a7396 | 57 | |
58 | # - CLANG_MAJOR.CLANG_MINOR or | |
59 | # - GCC_MAJOR.GCC_MINOR.GCC_PATCH | |
60 | include(CheckCompiler) | |
61 | ||
b24da1d3 | 62 | # Utility to generate PARfiles |
63 | include(cmake/GenParFile.cmake) | |
64 | ||
34ab4e08 | 65 | # Shared library suffix |
0e5d2ccd | 66 | if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows) |
34ab4e08 | 67 | set(CMAKE_SHARED_LIBRARY_SUFFIX .so) |
0e5d2ccd | 68 | endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows) |
c4faffc2 | 69 | |
f82bfa66 | 70 | # Checking first for DIM, DATE, AMORE and daqDA |
71 | # in case ROOT Extra static library needs to be enabled | |
72 | ||
73 | # DATE | |
ec8c8ea6 | 74 | # date-config needs DIMDIR and ODIR set |
9f4ff23c | 75 | # Setting variables in cache to be accesible by ccmake |
76 | set(DATE_CONFIG CACHE STRING "date-config script location") | |
77 | set(DIMDIT CACHE STRING "dim installation folder") | |
78 | set(ODIR CACHE STRING "dim plaform, usually \"linux\"") | |
f82bfa66 | 79 | if(DATE_CONFIG) |
ec8c8ea6 | 80 | if(DIMDIR AND ODIR) |
81 | find_package(DATE) | |
82 | else() | |
83 | message(FATAL_ERROR "DATE enabled but no DIMDIR and ODIR set. Please set DIMDIR and ODIR") | |
84 | endif() | |
85 | endif() | |
f82bfa66 | 86 | |
87 | # daqDA | |
9f4ff23c | 88 | # Setting variables in cache to be accesible by ccmake |
89 | set(daqDA CACHE STRING "daqDA library folder installation") | |
f82bfa66 | 90 | if(daqDA) |
91 | find_package(daqDA) | |
92 | endif(daqDA) | |
93 | ||
94 | # AMORE | |
9f4ff23c | 95 | # Setting variables in cache to be accesible by ccmake |
96 | set(AMORE_CONFIG CACHE STRING "amore-config script location") | |
f82bfa66 | 97 | if(AMORE_CONFIG) |
ec8c8ea6 | 98 | if(ROOTSYS) |
99 | find_package(AMORE) | |
100 | else() | |
101 | message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined") | |
102 | endif() | |
f82bfa66 | 103 | endif(AMORE_CONFIG) |
104 | ||
168930f9 | 105 | # id DARPM we enable DA if it is not set |
9f4ff23c | 106 | # Setting variables in cache to be accesible by ccmake |
107 | set(DARPM CACHE STRING "Enable DARPM: ON") | |
108 | set(DA CACHE STRING "Enable DA: ON") | |
168930f9 | 109 | if(DARPM) |
110 | if(NOT DA) | |
111 | set(DA ON) | |
112 | endif(NOT DA) | |
113 | endif(DARPM) | |
114 | ||
f82bfa66 | 115 | # DA is enabled |
9f4ff23c | 116 | # Setting variables in cache to be accesible by ccmake |
117 | set(ALIROOT_STATIC CACHE STRING "ENABLE static building of AliRoot: ON") | |
f82bfa66 | 118 | if(DA) |
119 | if(NOT DIMDIR AND NOT ODIR) | |
120 | set(DA FALSE) | |
a3c4bad6 | 121 | message(FATAL_ERROR "DAs enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)") |
f82bfa66 | 122 | endif() |
123 | ||
124 | if(NOT DATE_FOUND) | |
125 | set(DA FALSE) | |
126 | message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable") | |
127 | endif() | |
128 | ||
129 | if(NOT daqDA_FOUND) | |
130 | set(DA FALSE) | |
131 | message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable") | |
132 | endif() | |
133 | ||
134 | if(NOT AMORE_FOUND) | |
135 | set(DA FALSE) | |
136 | message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable") | |
137 | endif() | |
138 | ||
139 | # Enable static libraries | |
140 | set(ALIROOT_STATIC TRUE) | |
141 | message(STATUS "DAs enabled") | |
142 | endif(DA) | |
143 | ||
fae85bcc | 144 | # MDC rpm creation enables the static build |
9f4ff23c | 145 | # Setting variables in cache to be accesible by ccmake |
146 | set(MDCRPM CACHE STRING "Enable mdc rpm build") | |
fae85bcc | 147 | if(MDCRPM) |
148 | set(ALIROOT_STATIC TRUE) | |
149 | message(STATUS "AliMDC RPM enabled. AliRoot static build enabled") | |
150 | endif(MDCRPM) | |
151 | ||
7c325e0b | 152 | # ROOT configuration mandatory |
153 | # FindRoot has to be after the enabling of DA due to libRootExtra | |
154 | # Do not put it above DA | |
9f4ff23c | 155 | # Setting variables in cache to be accesible by ccmake |
156 | set(ROOTSYS CACHE STRING "ROOT installation folder") | |
7c325e0b | 157 | if(ROOTSYS) |
158 | find_package(ROOT REQUIRED) | |
159 | ||
160 | # ROOT must be build with XML2 support | |
161 | if(NOT ROOT_HASXML) | |
162 | message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support") | |
163 | endif(NOT ROOT_HASXML) | |
164 | else() | |
165 | message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR") | |
166 | endif(ROOTSYS) | |
167 | ||
168 | # ROOT dictionaries and maps | |
169 | include(CMakeALICE) | |
170 | ||
171 | ||
1dbe1076 | 172 | # If no Fortran, i.e on Windows |
173 | # We need to specify ROOT fortran | |
174 | # (f95 comes before gfortran in default module) | |
175 | include(CheckLanguage) | |
176 | ||
177 | if(ROOT_FORTRAN) | |
178 | message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}") | |
179 | set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN}) | |
180 | else() | |
181 | message(STATUS "Using default system Fortran compiler") | |
182 | endif(ROOT_FORTRAN) | |
183 | ||
184 | check_language(Fortran) | |
185 | if(CMAKE_Fortran_COMPILER) | |
186 | enable_language(Fortran OPTIONAL) | |
187 | else() | |
f82bfa66 | 188 | message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.") |
1dbe1076 | 189 | endif() |
190 | ||
a2a27b4c | 191 | # Optional: Doxygen for reference doc generation |
192 | find_package(Doxygen) | |
193 | if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND) | |
194 | message(STATUS "Doxygen ${DOXYGEN_VERSION} and Graphviz found: ${DOXYGEN_EXECUTABLE}, ${DOXYGEN_DOT_EXECUTABLE}") | |
195 | set(CAN_GENERATE_DOC TRUE) | |
196 | else() | |
197 | message(STATUS "Doxygen and Graphviz not found. Disabling support for documentation generation") | |
198 | endif(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND) | |
199 | ||
b5576c4e | 200 | # FastJet |
201 | find_package(FASTJET) | |
202 | ||
3c77e1ef | 203 | # ZEROMQ |
204 | find_package(ZeroMQ) | |
205 | ||
fb0ae393 | 206 | # Generating the AliRoot-config.cmake file |
207 | configure_file(${PROJECT_SOURCE_DIR}/cmake/AliRoot-config.cmake.in ${CMAKE_BINARY_DIR}/version/AliRoot-config.cmake @ONLY) | |
7187fc7f | 208 | install(FILES ${PROJECT_BINARY_DIR}/version/AliRoot-config.cmake DESTINATION etc) |
fb0ae393 | 209 | |
4d31eb1c | 210 | # General flags -> Should be moved into a configuration file |
211 | set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) | |
139cbc46 | 212 | set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE) |
d50827fc | 213 | |
9596d7e9 | 214 | # List of modules for which PARfiles are enabled -- use the cache as global scope and clean it |
215 | set(ALIPARFILES "" CACHE INTERNAL "ALIPARFILES" FORCE) | |
216 | ||
63697604 | 217 | # AliRoot base modules |
17f9c1f8 | 218 | add_subdirectory(STEER) |
17f9c1f8 | 219 | add_subdirectory(RAW) |
63697604 | 220 | add_subdirectory(ANALYSIS) |
221 | ||
222 | # Include Vc own cmake | |
223 | include(Vc/Vc.cmake) | |
224 | add_subdirectory(Vc) | |
225 | ||
9815baac | 226 | # AliRoot common macros |
227 | add_subdirectory(macros) | |
228 | ||
63697604 | 229 | # AliRoot modules |
230 | add_subdirectory(ACORDE) | |
231 | add_subdirectory(AD) | |
232 | add_subdirectory(BCM) | |
63697604 | 233 | add_subdirectory(EMCAL) |
9d62600c | 234 | add_subdirectory(EPOS) |
63697604 | 235 | add_subdirectory(EVE) |
236 | add_subdirectory(EVGEN) | |
237 | add_subdirectory(FASTSIM) | |
238 | add_subdirectory(FIT) | |
239 | add_subdirectory(FMD) | |
240 | add_subdirectory(HLT) | |
241 | add_subdirectory(HMPID) | |
17f9c1f8 | 242 | add_subdirectory(ITS) |
80afaccc | 243 | add_subdirectory(MFT) |
63697604 | 244 | add_subdirectory(MONITOR) |
245 | add_subdirectory(MUON) | |
63697604 | 246 | add_subdirectory(PHOS) |
247 | add_subdirectory(PMD) | |
a31c2f7d | 248 | add_subdirectory(PYTHIA8) |
63697604 | 249 | add_subdirectory(STARLIGHT) |
250 | add_subdirectory(STAT) | |
251 | add_subdirectory(STRUCT) | |
97e8d2a8 | 252 | add_subdirectory(T0) |
72017ac8 | 253 | add_subdirectory(TDPMjet) |
e706c082 | 254 | add_subdirectory(TEvtGen) |
16765dcc | 255 | add_subdirectory(THerwig) |
97e8d2a8 | 256 | add_subdirectory(TOF) |
63697604 | 257 | add_subdirectory(TPC) |
97e8d2a8 | 258 | add_subdirectory(TRD) |
25f88fb9 | 259 | add_subdirectory(TRIGGER) |
63697604 | 260 | add_subdirectory(TTherminator) |
261 | add_subdirectory(VZERO) | |
262 | add_subdirectory(ZDC) | |
a2a27b4c | 263 | add_subdirectory(doxygen) |
67018bf4 | 264 | |
63697604 | 265 | # Fortran modules |
1dbe1076 | 266 | if(CMAKE_Fortran_COMPILER) |
c462af85 | 267 | add_subdirectory(DIME) |
268 | add_subdirectory(DPMJET) | |
64609fcd | 269 | add_subdirectory(HERWIG) |
63697604 | 270 | add_subdirectory(HIJING) |
116e4267 | 271 | add_subdirectory(LHAPDF) |
116e4267 | 272 | add_subdirectory(MICROCERN) |
63697604 | 273 | add_subdirectory(PYTHIA6) |
ba812042 | 274 | add_subdirectory(TEPEMGEN) |
27b08c46 | 275 | add_subdirectory(THbtp) |
a95d9137 | 276 | add_subdirectory(THijing) |
63697604 | 277 | add_subdirectory(THydjet) |
278 | add_subdirectory(TPHIC) | |
279 | add_subdirectory(TUHKMgen) | |
9b863d49 | 280 | add_subdirectory(TAmpt) |
1dbe1076 | 281 | endif(CMAKE_Fortran_COMPILER) |
67018bf4 | 282 | |
7c29eb0f | 283 | add_subdirectory(data) |
71f72706 | 284 | add_subdirectory(GRP) |
807153f0 | 285 | add_subdirectory(OCDB) |
286 | add_subdirectory(QAref) | |
808c7763 | 287 | |
67018bf4 | 288 | # Enable SHUTTLE compilation |
289 | # Check if DIMDIR and ODIR are set | |
9f4ff23c | 290 | # # Setting variables in cache to be accesible by ccmake |
291 | set(SHUTTLE CACHE STRING "Enable SHUTTLE build : ON") | |
67018bf4 | 292 | if(SHUTTLE) |
101cc341 | 293 | if(ROOT_HASALIEN STREQUAL "no") |
294 | message(FATAL_ERROR "Shuttle needs ROOT build with AliEn support. Please build ROOT with AliEn support. Do not forget to set ALIEN to your AliEn installation") | |
295 | endif() | |
296 | ||
67018bf4 | 297 | if(DIMDIR AND ODIR AND ALIEN) |
298 | add_subdirectory(SHUTTLE) | |
299 | else() | |
300 | message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN") | |
301 | endif() | |
302 | endif(SHUTTLE) | |
034aa4b3 | 303 | |
34ab4e08 | 304 | add_subdirectory(ALIROOT) |
9596d7e9 | 305 | |
306 | # List modules with PARfiles | |
307 | string(REPLACE ";" " " ALIPARFILES_FLAT "${ALIPARFILES}") | |
308 | message(STATUS "PARfile target enabled for the following modules: ${ALIPARFILES_FLAT}") | |
9af5c6f6 | 309 | |
310 | # Install Find macros for common packages to be further used by AliPhysics | |
311 | install(FILES | |
312 | cmake/CMakeALICE.cmake | |
313 | cmake/FindROOT.cmake | |
314 | cmake/FindFASTJET.cmake | |
315 | cmake/FindZeroMQ.cmake | |
316 | cmake/GetGitRevisionDescription.cmake | |
317 | cmake/GetGitRevisionDescription.cmake.in | |
318 | DESTINATION cmake) |