]> git.uio.no Git - u/mrichter/AliRoot.git/blob - CMakeLists.txt
Use STREQUAL for strings
[u/mrichter/AliRoot.git] / CMakeLists.txt
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 #--------------------------------------------------------------------------#
19
20 cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
21
22 project(AliRoot CXX C)
23
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}")
28
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}")
35
36
37 if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}")
38     message(FATAL_ERROR "Please choose a different installation point than the source tree!")
39 endif()
40
41 # Path to additonal modules
42 set(CMAKE_MODULE_PATH "${AliRoot_SOURCE_DIR}/cmake")
43
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)
53
54 #       - CLANG_MAJOR.CLANG_MINOR or
55 #       - GCC_MAJOR.GCC_MINOR.GCC_PATCH
56 include(CheckCompiler)
57
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)
62
63 # ROOT dictionaries and maps
64 include(CMakeALICE)
65
66 # Checking first for DIM, DATE, AMORE and daqDA 
67 # in case ROOT Extra static library needs to be enabled
68
69 # DATE
70 # date-config needs DIMDIR and ODIR set
71 if(DATE_CONFIG)
72     if(DIMDIR AND ODIR)
73         find_package(DATE)
74     else()
75         message(FATAL_ERROR "DATE enabled but no DIMDIR and ODIR set. Please set DIMDIR and ODIR")
76     endif()
77 endif()
78
79 # daqDA
80 if(daqDA)
81     find_package(daqDA)
82 endif(daqDA)
83
84 # AMORE
85 if(AMORE_CONFIG)
86     if(ROOTSYS)
87         find_package(AMORE)
88     else()
89         message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined")
90     endif()
91 endif(AMORE_CONFIG)
92
93 # DA is enabled
94 if(DA)
95     if(NOT DIMDIR AND NOT ODIR)
96         set(DA FALSE)
97         message(FATAL_ERROR "Das enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)")
98     endif()
99
100     if(NOT DATE_FOUND)
101         set(DA FALSE)
102         message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable")
103     endif()
104
105     if(NOT daqDA_FOUND)
106         set(DA FALSE)
107         message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
108     endif()
109
110     if(NOT AMORE_FOUND)
111         set(DA FALSE)
112         message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable")
113     endif()
114     
115     # Enable static libraries
116     set(ALIROOT_STATIC TRUE)
117     message(STATUS "DAs enabled")
118 endif(DA)
119
120 # MDC rpm creation enables the static build
121 if(MDCRPM)
122     set(ALIROOT_STATIC TRUE)
123     message(STATUS "AliMDC RPM enabled. AliRoot static build enabled")
124 endif(MDCRPM)
125
126 # ROOT configuration mandatory
127 if(ROOTSYS)
128     find_package(ROOT REQUIRED)
129
130     # ROOT must be build with XML2 support
131     if(NOT ROOT_HASXML)
132         message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support")
133     endif(NOT ROOT_HASXML)
134 else()
135     message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
136 endif(ROOTSYS)
137
138 # If no Fortran, i.e on Windows
139 # We need to specify ROOT fortran
140 # (f95 comes before gfortran in default module)
141 include(CheckLanguage)
142
143 if(ROOT_FORTRAN)
144     message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
145     set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
146 else()
147     message(STATUS "Using default system Fortran compiler")
148 endif(ROOT_FORTRAN)
149
150 check_language(Fortran)
151 if(CMAKE_Fortran_COMPILER)
152     enable_language(Fortran OPTIONAL)
153 else()
154     message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
155 endif()
156
157 # DATE
158 if(DATE_CONFIG)
159     find_package(DATE)
160 endif(DATE_CONFIG)
161
162 # daqDA
163 if(daqDA)
164     find_package(daqDA)
165 endif(daqDA)
166
167 # DA is enabled
168 if(DA)
169     if(NOT DATE_FOUND)
170         set(DA FALSE)
171         message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\"")
172     endif()
173     
174     if(NOT daqDA_FOUND)
175         set(DA FALSE)
176         message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
177     endif()
178     
179     # Enable static libraries
180     set(ALIROOT_STATIC TRUE)
181     message(STATUS "DAs enabled")
182 endif(DA)
183
184 # FastJet
185 find_package(FASTJET)
186
187 # ZEROMQ
188 find_package(ZeroMQ)
189
190 # General flags -> Should be moved into a configuration file
191 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
192 set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE)
193
194 # AliRoot base modules
195 add_subdirectory(STEER)
196 add_subdirectory(RAW)
197 add_subdirectory(ANALYSIS)
198
199 # Include Vc own cmake
200 include(Vc/Vc.cmake)
201 add_subdirectory(Vc)
202
203 # AliRoot modules
204 add_subdirectory(ACORDE)
205 add_subdirectory(AD)
206 add_subdirectory(BCM)
207 add_subdirectory(CORRFW)
208 add_subdirectory(EMCAL)
209 add_subdirectory(EPOS)
210 add_subdirectory(EVE)
211 add_subdirectory(EVGEN)
212 add_subdirectory(FASTSIM)
213 add_subdirectory(FIT)
214 add_subdirectory(FMD)
215 add_subdirectory(HLT)
216 add_subdirectory(HMPID)
217 add_subdirectory(ITS)
218 add_subdirectory(JETAN)
219 add_subdirectory(MFT)
220 add_subdirectory(MONITOR)
221 add_subdirectory(MUON)
222 add_subdirectory(OADB)
223 add_subdirectory(PHOS)
224 add_subdirectory(PMD)
225 add_subdirectory(PYTHIA8)
226 add_subdirectory(STARLIGHT)
227 add_subdirectory(STAT)
228 add_subdirectory(STRUCT)
229 add_subdirectory(T0)
230 add_subdirectory(TDPMjet)
231 add_subdirectory(TEvtGen)
232 add_subdirectory(THerwig)
233 add_subdirectory(TOF)
234 add_subdirectory(TPC)
235 add_subdirectory(TRD)
236 add_subdirectory(TRIGGER)
237 add_subdirectory(TTherminator)
238 add_subdirectory(VZERO)
239 add_subdirectory(ZDC)
240
241 # Fortran modules
242 if(CMAKE_Fortran_COMPILER)
243   add_subdirectory(DIME)
244   add_subdirectory(DPMJET)
245   add_subdirectory(HERWIG)
246   add_subdirectory(HIJING)
247   add_subdirectory(LHAPDF)
248   add_subdirectory(MICROCERN)
249   add_subdirectory(PYTHIA6)
250   add_subdirectory(TEPEMGEN)
251   add_subdirectory(THbtp)
252   add_subdirectory(THijing)
253   add_subdirectory(THydjet)
254   add_subdirectory(TPHIC)
255   add_subdirectory(TUHKMgen)
256   add_subdirectory(TAmpt)
257 endif(CMAKE_Fortran_COMPILER)
258
259 # PWG libraries
260 add_subdirectory(PWG)
261 add_subdirectory(PWGCF)
262 # Depends on PWGCF - To fix dependencies
263 add_subdirectory(PWGGA)
264 # Depends on CF  - To fix the dependencies
265 add_subdirectory(PWGDQ)
266 add_subdirectory(PWGHF)
267 # Depends on CF
268 add_subdirectory(PWGJE)
269 add_subdirectory(PWGLF)
270 add_subdirectory(PWGPP)
271 add_subdirectory(PWGUD)
272 add_subdirectory(data)
273
274 # Enable SHUTTLE compilation
275 # Check if DIMDIR and ODIR are set
276 if(SHUTTLE)
277     if(ROOT_HASALIEN STREQUAL "no")
278         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")
279     endif()
280     
281     if(DIMDIR AND ODIR AND ALIEN)
282         add_subdirectory(SHUTTLE)
283     else()
284         message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN")
285     endif()
286 endif(SHUTTLE)
287
288 add_subdirectory(ALIROOT)