]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - CMakeLists.txt
Library suffix .so on Linux and Mac, move the settings of the build type to one place
[u/mrichter/AliRoot.git] / CMakeLists.txt
... / ...
CommitLineData
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
20cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
21
22project(AliRoot CXX C)
23
24message(STATUS "CMake platform: ${CMAKE_SYSTEM}")
25message(STATUS "Build folder: ${AliRoot_BINARY_DIR}")
26message(STATUS "Source folder: ${AliRoot_SOURCE_DIR}")
27message(STATUS "Installation folder: ${CMAKE_INSTALL_PREFIX}")
28
29# You can change the build type using
30# cmake -DCMAKE_BUILD_TYPE=DEBUG | RELEASE | RELWITHDEBINFO | MINSIZEREL ...
31if (NOT CMAKE_BUILD_TYPE)
32 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
33endif(NOT CMAKE_BUILD_TYPE)
34message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
35
36
37if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}")
38 message(FATAL_ERROR "Please choose a different installation point than the source tree!")
39endif()
40
41# Path to additonal modules
42set(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
52include(CheckGitVersion)
53
54# - CLANG_MAJOR.CLANG_MINOR or
55# - GCC_MAJOR.GCC_MINOR.GCC_PATCH
56include(CheckCompiler)
57
58# Shared library suffix
59if (NOT CMAKE_SYSTEM_NAME EQUAL Windows)
60 set(CMAKE_SHARED_LIBRARY_SUFFIX .so)
61endif (NOT CMAKE_SYSTEM_NAME EQUAL Windows)
62
63# ROOT dictionaries and maps
64include(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
71if(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()
77endif()
78
79# daqDA
80if(daqDA)
81 find_package(daqDA)
82endif(daqDA)
83
84# AMORE
85if(AMORE_CONFIG)
86 if(ROOTSYS)
87 find_package(AMORE)
88 else()
89 message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined")
90 endif()
91endif(AMORE_CONFIG)
92
93# DA is enabled
94if(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")
118endif(DA)
119
120# MDC rpm creation enables the static build
121if(MDCRPM)
122 set(ALIROOT_STATIC TRUE)
123 message(STATUS "AliMDC RPM enabled. AliRoot static build enabled")
124endif(MDCRPM)
125
126# ROOT configuration mandatory
127if(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)
134else()
135 message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
136endif(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)
141include(CheckLanguage)
142
143if(ROOT_FORTRAN)
144 message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
145 set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
146else()
147 message(STATUS "Using default system Fortran compiler")
148endif(ROOT_FORTRAN)
149
150check_language(Fortran)
151if(CMAKE_Fortran_COMPILER)
152 enable_language(Fortran OPTIONAL)
153else()
154 message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
155endif()
156
157# DATE
158if(DATE_CONFIG)
159 find_package(DATE)
160endif(DATE_CONFIG)
161
162# daqDA
163if(daqDA)
164 find_package(daqDA)
165endif(daqDA)
166
167# DA is enabled
168if(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")
182endif(DA)
183
184# FastJet
185find_package(FASTJET)
186
187# ZEROMQ
188find_package(ZeroMQ)
189
190# General flags -> Should be moved into a configuration file
191set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
192set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE)
193
194# AliRoot base modules
195add_subdirectory(STEER)
196add_subdirectory(RAW)
197add_subdirectory(ANALYSIS)
198
199# Include Vc own cmake
200include(Vc/Vc.cmake)
201add_subdirectory(Vc)
202
203# AliRoot modules
204add_subdirectory(ACORDE)
205add_subdirectory(AD)
206add_subdirectory(BCM)
207add_subdirectory(CORRFW)
208add_subdirectory(EMCAL)
209add_subdirectory(EPOS)
210add_subdirectory(EVE)
211add_subdirectory(EVGEN)
212add_subdirectory(FASTSIM)
213add_subdirectory(FIT)
214add_subdirectory(FMD)
215add_subdirectory(HLT)
216add_subdirectory(HMPID)
217add_subdirectory(ITS)
218add_subdirectory(JETAN)
219add_subdirectory(MFT)
220add_subdirectory(MONITOR)
221add_subdirectory(MUON)
222add_subdirectory(OADB)
223add_subdirectory(PHOS)
224add_subdirectory(PMD)
225add_subdirectory(PYTHIA8)
226add_subdirectory(STARLIGHT)
227add_subdirectory(STAT)
228add_subdirectory(STRUCT)
229add_subdirectory(T0)
230add_subdirectory(TDPMjet)
231add_subdirectory(TEvtGen)
232add_subdirectory(THerwig)
233add_subdirectory(TOF)
234add_subdirectory(TPC)
235add_subdirectory(TRD)
236add_subdirectory(TRIGGER)
237add_subdirectory(TTherminator)
238add_subdirectory(VZERO)
239add_subdirectory(ZDC)
240
241# Fortran modules
242if(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)
257endif(CMAKE_Fortran_COMPILER)
258
259# PWG libraries
260add_subdirectory(PWG)
261add_subdirectory(PWGCF)
262# Depends on PWGCF - To fix dependencies
263add_subdirectory(PWGGA)
264# Depends on CF - To fix the dependencies
265add_subdirectory(PWGDQ)
266add_subdirectory(PWGHF)
267# Depends on CF
268add_subdirectory(PWGJE)
269add_subdirectory(PWGLF)
270add_subdirectory(PWGPP)
271add_subdirectory(PWGUD)
272add_subdirectory(data)
273
274# Enable SHUTTLE compilation
275# Check if DIMDIR and ODIR are set
276if(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()
286endif(SHUTTLE)
287
288add_subdirectory(ALIROOT)