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