1 # **************************************************************************
2 # * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
4 # * Author: The ALICE Off-line Project. *
5 # * Contributors are mentioned in the code where appropriate. *
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 # **************************************************************************
16 #--------------------------------------------------------------------------#
17 # Set Basic CMake Configuration #
18 #--------------------------------------------------------------------------#
20 cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
22 project(AliRoot CXX C)
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}")
29 # You can change the build type using
30 # cmake -DCMAKE_BUILD_TYPE=DEBUG | RELEASE | RELWITHDEBINFO | MINSIZEREL ...
31 if (NOT CMAKE_BUILD_TYPE)
32 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
33 endif(NOT CMAKE_BUILD_TYPE)
34 message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
37 if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}")
38 message(FATAL_ERROR "Please choose a different installation point than the source tree!")
41 # Path to additonal modules
42 set(CMAKE_MODULE_PATH "${AliRoot_SOURCE_DIR}/cmake")
44 # AliRoot version extracted from Git repository
45 # Sets 4 git variables
46 # - GIT_REFSPEC - complete name of the current reference
47 # - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference
48 # - GIT_SHA1 - current hash in the long format
49 # - GIT_SHORT_SHA1 - current hash in the short format
50 # - ALIROOT_VERSION = ALIROOT_BRANCH
51 # - ALIROOT_REVISION = GIT_SHORT_SHA1
52 include(CheckGitVersion)
54 # - CLANG_MAJOR.CLANG_MINOR or
55 # - GCC_MAJOR.GCC_MINOR.GCC_PATCH
56 include(CheckCompiler)
58 # Shared library suffix
59 if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
60 set(CMAKE_SHARED_LIBRARY_SUFFIX .so)
61 endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
63 # ROOT dictionaries and maps
66 # Checking first for DIM, DATE, AMORE and daqDA
67 # in case ROOT Extra static library needs to be enabled
70 # date-config needs DIMDIR and ODIR set
75 message(FATAL_ERROR "DATE enabled but no DIMDIR and ODIR set. Please set DIMDIR and ODIR")
89 message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined")
93 # id DARPM we enable DA if it is not set
102 if(NOT DIMDIR AND NOT ODIR)
104 message(FATAL_ERROR "Das enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)")
109 message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable")
114 message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
119 message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable")
122 # Enable static libraries
123 set(ALIROOT_STATIC TRUE)
124 message(STATUS "DAs enabled")
127 # MDC rpm creation enables the static build
129 set(ALIROOT_STATIC TRUE)
130 message(STATUS "AliMDC RPM enabled. AliRoot static build enabled")
133 # ROOT configuration mandatory
135 find_package(ROOT REQUIRED)
137 # ROOT must be build with XML2 support
139 message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support")
140 endif(NOT ROOT_HASXML)
142 message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
145 # If no Fortran, i.e on Windows
146 # We need to specify ROOT fortran
147 # (f95 comes before gfortran in default module)
148 include(CheckLanguage)
151 message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
152 set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
154 message(STATUS "Using default system Fortran compiler")
157 check_language(Fortran)
158 if(CMAKE_Fortran_COMPILER)
159 enable_language(Fortran OPTIONAL)
161 message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
164 # Optional: Doxygen for reference doc generation
165 find_package(Doxygen)
166 if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
167 message(STATUS "Doxygen ${DOXYGEN_VERSION} and Graphviz found: ${DOXYGEN_EXECUTABLE}, ${DOXYGEN_DOT_EXECUTABLE}")
168 set(CAN_GENERATE_DOC TRUE)
170 message(STATUS "Doxygen and Graphviz not found. Disabling support for documentation generation")
171 endif(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
187 message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\"")
192 message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
195 # Enable static libraries
196 set(ALIROOT_STATIC TRUE)
197 message(STATUS "DAs enabled")
201 find_package(FASTJET)
206 # General flags -> Should be moved into a configuration file
207 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
208 set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE)
210 # AliRoot base modules
211 add_subdirectory(STEER)
212 add_subdirectory(RAW)
213 add_subdirectory(ANALYSIS)
215 # Include Vc own cmake
219 # AliRoot common macros
220 add_subdirectory(macros)
223 add_subdirectory(ACORDE)
225 add_subdirectory(BCM)
226 add_subdirectory(CORRFW)
227 add_subdirectory(EMCAL)
228 add_subdirectory(EPOS)
229 add_subdirectory(EVE)
230 add_subdirectory(EVGEN)
231 add_subdirectory(FASTSIM)
232 add_subdirectory(FIT)
233 add_subdirectory(FMD)
234 add_subdirectory(HLT)
235 add_subdirectory(HMPID)
236 add_subdirectory(ITS)
237 add_subdirectory(JETAN)
238 add_subdirectory(MFT)
239 add_subdirectory(MONITOR)
240 add_subdirectory(MUON)
241 add_subdirectory(OADB)
242 add_subdirectory(PHOS)
243 add_subdirectory(PMD)
244 add_subdirectory(PYTHIA8)
245 add_subdirectory(STARLIGHT)
246 add_subdirectory(STAT)
247 add_subdirectory(STRUCT)
249 add_subdirectory(TDPMjet)
250 add_subdirectory(TEvtGen)
251 add_subdirectory(THerwig)
252 add_subdirectory(TOF)
253 add_subdirectory(TPC)
254 add_subdirectory(TRD)
255 add_subdirectory(TRIGGER)
256 add_subdirectory(TTherminator)
257 add_subdirectory(VZERO)
258 add_subdirectory(ZDC)
259 add_subdirectory(doxygen)
262 if(CMAKE_Fortran_COMPILER)
263 add_subdirectory(DIME)
264 add_subdirectory(DPMJET)
265 add_subdirectory(HERWIG)
266 add_subdirectory(HIJING)
267 add_subdirectory(LHAPDF)
268 add_subdirectory(MICROCERN)
269 add_subdirectory(PYTHIA6)
270 add_subdirectory(TEPEMGEN)
271 add_subdirectory(THbtp)
272 add_subdirectory(THijing)
273 add_subdirectory(THydjet)
274 add_subdirectory(TPHIC)
275 add_subdirectory(TUHKMgen)
276 add_subdirectory(TAmpt)
277 endif(CMAKE_Fortran_COMPILER)
280 add_subdirectory(PWG)
281 add_subdirectory(PWGCF)
282 # Depends on PWGCF - To fix dependencies
283 add_subdirectory(PWGGA)
284 # Depends on CF - To fix the dependencies
285 add_subdirectory(PWGDQ)
286 add_subdirectory(PWGHF)
288 add_subdirectory(PWGJE)
289 add_subdirectory(PWGLF)
290 add_subdirectory(PWGPP)
291 add_subdirectory(PWGUD)
292 add_subdirectory(data)
293 add_subdirectory(GRP)
294 add_subdirectory(OCDB)
295 add_subdirectory(QAref)
297 # Enable SHUTTLE compilation
298 # Check if DIMDIR and ODIR are set
300 if(ROOT_HASALIEN STREQUAL "no")
301 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")
304 if(DIMDIR AND ODIR AND ALIEN)
305 add_subdirectory(SHUTTLE)
307 message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN")
311 add_subdirectory(ALIROOT)