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 if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}")
30 message(FATAL_ERROR "Please choose a different installation point than the source tree!")
33 # Path to additonal modules
34 set(CMAKE_MODULE_PATH "${AliRoot_SOURCE_DIR}/cmake")
36 # AliRoot version extracted from Git repository
37 # Sets 4 git variables
38 # - GIT_REFSPEC - complete name of the current reference
39 # - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference
40 # - GIT_SHA1 - current hash in the long format
41 # - GIT_SHORT_SHA1 - current hash in the short format
42 # - ALIROOT_VERSION = ALIROOT_BRANCH
43 # - ALIROOT_REVISION = GIT_SHORT_SHA1
44 include(CheckGitVersion)
46 # - CLANG_MAJOR.CLANG_MINOR or
47 # - GCC_MAJOR.GCC_MINOR.GCC_PATCH
48 include(CheckCompiler)
50 # You can change the build type using
51 # cmake -DCMAKE_BUILD_TYPE=DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL...
52 if (NOT CMAKE_BUILD_TYPE)
53 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
54 endif(NOT CMAKE_BUILD_TYPE)
56 # ROOT dictionaries and maps
59 # Checking first for DIM, DATE, AMORE and daqDA
60 # in case ROOT Extra static library needs to be enabled
63 # date-config needs DIMDIR and ODIR set
68 message(FATAL_ERROR "DATE enabled but no DIMDIR and ODIR set. Please set DIMDIR and ODIR")
82 message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined")
88 if(NOT DIMDIR AND NOT ODIR)
90 message(FATAL_ERROR "Das enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)")
95 message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable")
100 message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
105 message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable")
108 # Enable static libraries
109 set(ALIROOT_STATIC TRUE)
110 message(STATUS "DAs enabled")
113 # MDC rpm creation enables the static build
115 set(ALIROOT_STATIC TRUE)
116 message(STATUS "AliMDC RPM enabled. AliRoot static build enabled")
119 # ROOT configuration mandatory
121 find_package(ROOT REQUIRED)
123 # ROOT must be build with XML2 support
125 message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support")
126 endif(NOT ROOT_HASXML)
128 message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
131 # If no Fortran, i.e on Windows
132 # We need to specify ROOT fortran
133 # (f95 comes before gfortran in default module)
134 include(CheckLanguage)
137 message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
138 set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
140 message(STATUS "Using default system Fortran compiler")
143 check_language(Fortran)
144 if(CMAKE_Fortran_COMPILER)
145 enable_language(Fortran OPTIONAL)
147 message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
164 message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\"")
169 message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
172 # Enable static libraries
173 set(ALIROOT_STATIC TRUE)
174 message(STATUS "DAs enabled")
178 find_package(FASTJET)
183 # General flags -> Should be moved into a configuration file
184 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
185 set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE)
187 # AliRoot base modules
188 add_subdirectory(STEER)
189 add_subdirectory(RAW)
190 add_subdirectory(ANALYSIS)
192 # Include Vc own cmake
197 add_subdirectory(ACORDE)
199 add_subdirectory(BCM)
200 add_subdirectory(CORRFW)
201 add_subdirectory(EMCAL)
202 add_subdirectory(EPOS)
203 add_subdirectory(EVE)
204 add_subdirectory(EVGEN)
205 add_subdirectory(FASTSIM)
206 add_subdirectory(FIT)
207 add_subdirectory(FMD)
208 add_subdirectory(HLT)
209 add_subdirectory(HMPID)
210 add_subdirectory(ITS)
211 add_subdirectory(JETAN)
212 add_subdirectory(MFT)
213 add_subdirectory(MONITOR)
214 add_subdirectory(MUON)
215 add_subdirectory(OADB)
216 add_subdirectory(PHOS)
217 add_subdirectory(PMD)
218 add_subdirectory(PYTHIA8)
219 add_subdirectory(STARLIGHT)
220 add_subdirectory(STAT)
221 add_subdirectory(STRUCT)
223 add_subdirectory(TDPMjet)
224 add_subdirectory(TEvtGen)
225 add_subdirectory(THerwig)
226 add_subdirectory(TOF)
227 add_subdirectory(TPC)
228 add_subdirectory(TRD)
229 add_subdirectory(TRIGGER)
230 add_subdirectory(TTherminator)
231 add_subdirectory(VZERO)
232 add_subdirectory(ZDC)
235 if(CMAKE_Fortran_COMPILER)
236 add_subdirectory(DIME)
237 add_subdirectory(DPMJET)
238 add_subdirectory(HERWIG)
239 add_subdirectory(HIJING)
240 add_subdirectory(LHAPDF)
241 add_subdirectory(MICROCERN)
242 add_subdirectory(PYTHIA6)
243 add_subdirectory(TEPEMGEN)
244 add_subdirectory(THbtp)
245 add_subdirectory(THijing)
246 add_subdirectory(THydjet)
247 add_subdirectory(TPHIC)
248 add_subdirectory(TUHKMgen)
249 add_subdirectory(TAmpt)
250 endif(CMAKE_Fortran_COMPILER)
253 add_subdirectory(PWG)
254 add_subdirectory(PWGCF)
255 # Depends on PWGCF - To fix dependencies
256 add_subdirectory(PWGGA)
257 # Depends on CF - To fix the dependencies
258 add_subdirectory(PWGDQ)
259 add_subdirectory(PWGHF)
261 add_subdirectory(PWGJE)
262 add_subdirectory(PWGLF)
263 add_subdirectory(PWGPP)
264 add_subdirectory(PWGUD)
265 add_subdirectory(data)
267 # Enable SHUTTLE compilation
268 # Check if DIMDIR and ODIR are set
270 if(ROOT_HASALIEN STREQUAL "no")
271 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")
274 if(DIMDIR AND ODIR AND ALIEN)
275 add_subdirectory(SHUTTLE)
277 message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN")
281 add_subdirectory(ALIROOT)