]> git.uio.no Git - u/mrichter/AliRoot.git/blob - CMakeLists.txt
Forgot to increase class version
[u/mrichter/AliRoot.git] / CMakeLists.txt
1 # -*- mode: cmake -*-
2
3 # Check if cmake has the required version
4 cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
5
6 # Set name of our project to AliRoot. To be done after check of cmake version
7 project(AliRoot NONE)
8
9 # Set AliRoot variables
10 set(CMAKE_VERBOSE_MAKEFILES OFF)
11 #fix for MACOSX
12 SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem")
13 SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem") 
14
15 set(ALICE_INSTALL $ENV{ALICE_INSTALL})
16 set(ALICE_ROOT $ENV{ALICE_ROOT})
17 set(ALICE_STATIC_BUILD OFF CACHE BOOL "Build also statics libs")
18 execute_process(COMMAND root-config --arch OUTPUT_VARIABLE ALICE_TARGET)
19 string (REGEX REPLACE "\n" "" ALICE_TARGET ${ALICE_TARGET})
20
21 if(NOT ALICE_INSTALL)
22 message(FATAL_ERROR "Please set environment variable ALICE_INSTALL to the AliRoot installation directory")
23 endif(NOT ALICE_INSTALL)
24 if(NOT ALICE_ROOT)
25 message(FATAL_ERROR "Please set environment variable ALICE_ROOT to the AliRoot source directory")
26 endif(NOT ALICE_ROOT)
27
28
29 message("ALICE_ROOT: ${ALICE_ROOT}")
30
31
32 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ 
33 #set(PROJECT_BINARY_DIR ${ALICE_INSTALL})
34 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET})
35 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET})
36 set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules")
37
38 # To fix a hack that has been introduced for the Mac
39 if(APPLE)
40   set(CMAKE_INSTALL_NAME_TOOL CMAKE_INSTALL_NAME_TOOL-NOTFOUND)
41 endif(APPLE)
42
43 # Setup ROOT and C, C++ , Fortran Compilers
44 find_package(ROOT 5.0.0 REQUIRED)
45 set(CMAKE_C_COMPILER $ENV{CC})
46 enable_language(C)
47 set(CMAKE_CXX_COMPILER $ENV{CXX})
48 enable_language(CXX)
49 set(CMAKE_Fortran_COMPILER $ENV{F77})
50 enable_language(Fortran)
51
52 # Load some basic macros which are needed later on
53 #Include(WriteConfigFile)
54
55 include (CTest)
56 include(ALICEMacros)
57
58 # Check if the user wants to build the project in the source directory
59 Check_out_of_Source_Build()
60
61 # searches for needed packages
62
63
64 # Setup GEANT3
65 find_package(GEANT3)
66
67 # Setup RuleChecker
68 find_package(RuleChecker)
69
70 # Check if DATE is installed
71 find_package(DATE)
72
73 # Setup system dependent flags 
74 SetupSystem()
75
76 Include(CreateSubCMakeFiles)
77 CreateSubCMakeFiles()
78
79
80
81
82 # Set the library version in the main CMakeLists.txt
83 set(ALIROOT_MAJOR_VERSION 0)
84 set(ALIROOT_MINOR_VERSION 0)
85 set(ALIROOT_PATCH_VERSION 0)
86 set(ALIROOT_VERSION "${ALIROOT_MAJOR_VERSION}.${ALIROOT_MINOR_VERSION}.${ALIROOT_PATCH_VERSION}")
87
88 set(ALIROOT_LIBRARY_PROPERTIES ${ALIROOT_LIBRARY_PROPERTIES}
89     VERSION "${ALIROOT_VERSION}"
90     SOVERSION "${ALIROOT_MAJOR_VERSION}"
91     SUFFIX ".so"
92 )
93
94 # Set version variables
95 find_program( READLINK_PROGRAM readlink)
96
97 if(READLINK_PROGRAM) 
98   execute_process(COMMAND readlink -f ${ALICE_ROOT} 
99     COMMAND xargs svn info
100     OUTPUT_VARIABLE _svn_out)
101 else(READLINK_PROGRAM)
102   execute_process(COMMAND svn info ${ALICE_ROOT} 
103     OUTPUT_VARIABLE _svn_out)
104 endif(READLINK_PROGRAM)
105
106 string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" 
107   ALIROOT_SVN_REVISION ${_svn_out})
108 string(REGEX REPLACE "^.*URL: ([^\n]*).*$" "\\1"
109   ALIROOT_SVN_BRANCH ${_svn_out})
110 string(REGEX REPLACE "^.*AliRoot/([^\n]*)" "\\1" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
111
112
113 # Additional targets
114 add_custom_target(check-all COMMENT "Checking coding conventions")
115 message(STATUS "REVISION: ${ALIROOT_SVN_REVISION}")
116 message(STATUS "BRANCH: ${ALIROOT_SVN_BRANCH}")
117
118 # Delete and recreate header ARVersion Header file 
119 execute_process(COMMAND cmake -E remove "${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h")
120 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in ${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h @ONLY)
121
122 # Get list of enabled root features
123 execute_process(COMMAND root-config --features OUTPUT_VARIABLE FEATURES)
124 string(REGEX MATCH "pythia6" PYTHIA6 ${FEATURES})
125 string(REGEX MATCH "pythia8" PYTHIA8 ${FEATURES})
126 string(REGEX MATCH "opengl" OPENGL ${FEATURES})
127 if(PYTHIA6)
128   message(STATUS "Pythia6 enabled")
129 endif(PYTHIA6)
130 if(PYTHIA8)
131   message(STATUS "Pythia8 enabled")
132 endif(PYTHIA8)
133 if(OPENGL)
134   message(STATUS "OpenGL enabled")      
135 endif(OPENGL)   
136 option (TFLUKA "Build TFluka" OFF)
137 option (THYDJET "Build THydjet" OFF)
138 option (SHUTTLE "Build SHUTTLE" OFF)
139
140
141 add_custom_target(STEER-all)
142 add_custom_target(PHOS-all)     
143 add_custom_target(TRD-all) 
144 add_custom_target(TPC-all)
145 add_custom_target(ZDC-all) 
146 add_custom_target(MUON-all) 
147 add_custom_target(PMD-all) 
148 add_custom_target(FMD-all)
149 add_custom_target(TOF-all) 
150 add_custom_target(ITS-all) 
151 add_custom_target(ACORDE-all) 
152 add_custom_target(HMPID-all) 
153 add_custom_target(T0-all) 
154 add_custom_target(BCM-all) 
155 add_custom_target(STRUCT-all) 
156 add_custom_target(EVGEN-all) 
157 add_custom_target(RALICE-all) 
158 add_custom_target(VZERO-all) 
159 add_custom_target(THijing-all)
160 add_custom_target(THbtp-all) 
161 add_custom_target(EMCAL-all) 
162 add_custom_target(THerwig-all) 
163 add_custom_target(TEPEMGEN-all) 
164 add_custom_target(FASTSIM-all) 
165 add_custom_target(TPHIC-all) 
166 add_custom_target(RAW-all) 
167 add_custom_target(MONITOR-all) 
168 add_custom_target(ANALYSIS-all) 
169 add_custom_target(JETAN-all)
170 add_custom_target(HLT-all) 
171 add_custom_target(LHC-all) 
172 add_custom_target(ESDCheck-all) 
173 add_custom_target(STAT-all) 
174 add_custom_target(TTherminator-all) 
175 add_custom_target(CORRFW-all) 
176 add_custom_target(DPMJET-all) 
177 add_custom_target(TDPMjet-all) 
178 add_custom_target(PWG0-all) 
179 add_custom_target(PWG1-all) 
180 add_custom_target(PWG2-all) 
181 add_custom_target(PWG3-all) 
182 add_custom_target(PWG4-all)
183 add_custom_target(TRIGGER-all) 
184 add_custom_target(TUHKMgen-all) 
185 add_custom_target(EPOS-all) 
186 add_custom_target(PYTHIA8-all) 
187 add_custom_target(EVE-all) 
188 add_custom_target(TFluka-all)
189 add_custom_target(THydjet-all)
190 add_custom_target(SHUTTLE-all)
191 add_custom_target(LHAPDF-all) 
192 add_custom_target(HIJING-all) 
193 add_custom_target(MICROCERN-all) 
194 add_custom_target(HERWIG-all) 
195 add_custom_target(PYTHIA6-all)
196 add_custom_target(ALIROOT-all)
197
198 set(MODULES STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS ACORDE HMPID T0 BCM STRUCT EVGEN RALICE VZERO THijing THbtp EMCAL THerwig TEPEMGEN FASTSIM TPHIC RAW MONITOR ANALYSIS JETAN HLT LHC ESDCheck STAT TTherminator CORRFW DPMJET TDPMjet PWG0 PWG1 PWG2 PWG3 PWG4 TRIGGER TUHKMgen EPOS)
199
200 # Recurse into the given subdirectories.  This does not actually
201 # cause another cmake executable to run.  The same process will walk through
202 # the project's entire directory structure.
203 Add_subdirectory(STEER)
204 Add_subdirectory(PHOS) 
205 Add_subdirectory(TRD) 
206 Add_subdirectory(TPC)
207 Add_subdirectory(ZDC) 
208 Add_subdirectory(MUON) 
209 Add_subdirectory(PMD) 
210 Add_subdirectory(FMD)
211 Add_subdirectory(TOF) 
212 Add_subdirectory(ITS) 
213 Add_subdirectory(ACORDE) 
214 Add_subdirectory(HMPID) 
215 Add_subdirectory(T0) 
216 Add_subdirectory(BCM) 
217 Add_subdirectory(STRUCT) 
218 Add_subdirectory(EVGEN) 
219 Add_subdirectory(RALICE) 
220 Add_subdirectory(VZERO) 
221 Add_subdirectory(THijing)
222 Add_subdirectory(THbtp) 
223 Add_subdirectory(EMCAL) 
224 Add_subdirectory(THerwig) 
225 Add_subdirectory(TEPEMGEN) 
226 Add_subdirectory(FASTSIM) 
227 Add_subdirectory(TPHIC) 
228 Add_subdirectory(RAW) 
229 Add_subdirectory(MONITOR) 
230 Add_subdirectory(ANALYSIS) 
231 Add_subdirectory(JETAN)
232 Add_subdirectory(HLT) 
233 Add_subdirectory(LHC) 
234 Add_subdirectory(ESDCheck) 
235 Add_subdirectory(STAT) 
236 Add_subdirectory(TTherminator) 
237 Add_subdirectory(CORRFW) 
238 Add_subdirectory(DPMJET) 
239 Add_subdirectory(TDPMjet) 
240 Add_subdirectory(PWG0) 
241 Add_subdirectory(PWG1) 
242 Add_subdirectory(PWG2) 
243 Add_subdirectory(PWG3) 
244 Add_subdirectory(PWG4)
245 Add_subdirectory(TRIGGER) 
246 Add_subdirectory(TUHKMgen) 
247 Add_subdirectory(EPOS) 
248 if(PYTHIA8)
249 Add_subdirectory(PYTHIA8) 
250 list(APPEND MODULES PYTHIA8)
251 endif(PYTHIA8)
252 if(OPENGL)
253 Add_subdirectory(EVE) 
254 list(APPEND MODULES EVE)
255 endif(OPENGL)
256 if(TFLUKA)
257 Add_subdirectory(TFluka)
258 list(APPEND MODULES TFluka)
259 endif(TFLUKA)
260 if(THYDJET)     
261 Add_subdirectory(THydjet)
262 list(APPEND MODULES THydjet)
263 endif(THYDJET)
264 if(SHUTTLE)
265 Add_subdirectory(SHUTTLE)
266 list(APPEND MODULES SHUTTLE)
267 endif(SHUTTLE)  
268 Add_subdirectory(LHAPDF) 
269 Add_subdirectory(HIJING) 
270 Add_subdirectory(MICROCERN) 
271 Add_subdirectory(HERWIG) 
272 list(APPEND MODULES LHAPDF HIJING MICROCERN HERWIG)
273 if(PYTHIA6)
274 Add_subdirectory(PYTHIA6)
275 list(APPEND MODULES PYTHIA6)
276 endif(PYTHIA6)
277 Add_subdirectory(ALIROOT)
278 add_subdirectory(test)
279 add_test ("Aliroot_executable" aliroot -q) 
280 #copy testing files
281 configure_file("CTestCustom.ctest" "${PROJECT_BINARY_DIRECTORY}" COPYONLY)
282
283 if(DA)
284 include(cmakeDA)
285 endif(DA)