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