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