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