TENDER becomes Tender, removing .so
[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 if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}")
30     message(FATAL_ERROR "Please choose a different installation point than the source tree!")
31 endif()
32
33 # Path to additonal modules
34 set(CMAKE_MODULE_PATH "${AliRoot_SOURCE_DIR}/cmake")
35
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)
45
46 #       - CLANG_MAJOR.CLANG_MINOR or
47 #       - GCC_MAJOR.GCC_MINOR.GCC_PATCH
48 include(CheckCompiler)
49
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)
55
56 # ROOT dictionaries and maps
57 include(CMakeALICE)
58
59 # Checking first for DIM, DATE, AMORE and daqDA 
60 # in case ROOT Extra static library needs to be enabled
61
62 # DATE
63 # date-config needs DIMDIR and ODIR set
64 if(DATE_CONFIG)
65     if(DIMDIR AND ODIR)
66         find_package(DATE)
67     else()
68         message(FATAL_ERROR "DATE enabled but no DIMDIR and ODIR set. Please set DIMDIR and ODIR")
69     endif()
70 endif()
71
72 # daqDA
73 if(daqDA)
74     find_package(daqDA)
75 endif(daqDA)
76
77 # AMORE
78 if(AMORE_CONFIG)
79     if(ROOTSYS)
80         find_package(AMORE)
81     else()
82         message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined")
83     endif()
84 endif(AMORE_CONFIG)
85
86 # DA is enabled
87 if(DA)
88     if(NOT DIMDIR AND NOT ODIR)
89         set(DA FALSE)
90         message(FATAL_ERROR "Das enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)")
91     endif()
92
93     if(NOT DATE_FOUND)
94         set(DA FALSE)
95         message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable")
96     endif()
97
98     if(NOT daqDA_FOUND)
99         set(DA FALSE)
100         message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
101     endif()
102
103     if(NOT AMORE_FOUND)
104         set(DA FALSE)
105         message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable")
106     endif()
107     
108     # Enable static libraries
109     set(ALIROOT_STATIC TRUE)
110     message(STATUS "DAs enabled")
111 endif(DA)
112
113 # MDC rpm creation enables the static build
114 if(MDCRPM)
115     set(ALIROOT_STATIC TRUE)
116     message(STATUS "AliMDC RPM enabled. AliRoot static build enabled")
117 endif(MDCRPM)
118
119 # ROOT configuration mandatory
120 if(ROOTSYS)
121     find_package(ROOT REQUIRED)
122
123     # ROOT must be build with XML2 support
124     if(NOT ROOT_HASXML)
125         message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support")
126     endif(NOT ROOT_HASXML)
127 else()
128     message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
129 endif(ROOTSYS)
130
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)
135
136 if(ROOT_FORTRAN)
137     message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
138     set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
139 else()
140     message(STATUS "Using default system Fortran compiler")
141 endif(ROOT_FORTRAN)
142
143 check_language(Fortran)
144 if(CMAKE_Fortran_COMPILER)
145     enable_language(Fortran OPTIONAL)
146 else()
147     message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
148 endif()
149
150 # DATE
151 if(DATE_CONFIG)
152     find_package(DATE)
153 endif(DATE_CONFIG)
154
155 # daqDA
156 if(daqDA)
157     find_package(daqDA)
158 endif(daqDA)
159
160 # DA is enabled
161 if(DA)
162     if(NOT DATE_FOUND)
163         set(DA FALSE)
164         message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\"")
165     endif()
166     
167     if(NOT daqDA_FOUND)
168         set(DA FALSE)
169         message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
170     endif()
171     
172     # Enable static libraries
173     set(ALIROOT_STATIC TRUE)
174     message(STATUS "DAs enabled")
175 endif(DA)
176
177 # FastJet
178 find_package(FASTJET)
179
180 # ZEROMQ
181 find_package(ZeroMQ)
182
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)
186
187 # AliRoot base modules
188 add_subdirectory(STEER)
189 add_subdirectory(RAW)
190 add_subdirectory(ANALYSIS)
191
192 # Include Vc own cmake
193 include(Vc/Vc.cmake)
194 add_subdirectory(Vc)
195
196 # AliRoot modules
197 add_subdirectory(ACORDE)
198 add_subdirectory(AD)
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)
222 add_subdirectory(T0)
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)
233
234 # Fortran modules
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)
251
252 # PWG libraries
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)
260 # Depends on CF
261 add_subdirectory(PWGJE)
262 add_subdirectory(PWGLF)
263 add_subdirectory(PWGPP)
264 add_subdirectory(PWGUD)
265 add_subdirectory(data)
266
267 # Enable SHUTTLE compilation
268 # Check if DIMDIR and ODIR are set
269 if(SHUTTLE)
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")
272     endif()
273     
274     if(DIMDIR AND ODIR AND ALIEN)
275         add_subdirectory(SHUTTLE)
276     else()
277         message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN")
278     endif()
279 endif(SHUTTLE)
280
281 add_subdirectory(ALIROOT)