e969a926 |
1 | # -*- mode: cmake -*- |
e969a926 |
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 |
f7d3fd75 |
7 | Project(AliRoot NONE) |
e969a926 |
8 | |
9 | # Set AliRoot variables |
10 | Set(ALICE_ROOT $ENV{ALICE_ROOT}) |
11 | Set(ALICE $ENV{ALICE}) |
96c0c856 |
12 | Set(ALICE_STATIC_BUILD OFF CACHE BOOL "Build also statics libs") |
e969a926 |
13 | |
96c0c856 |
14 | MESSAGE("ALICE_ROOT: ${ALICE_ROOT}") |
15 | Set(CMAKE_VERBOSE_MAKEFILE ON) |
e969a926 |
16 | |
17 | # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ |
96c0c856 |
18 | SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) |
19 | SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) |
e969a926 |
20 | Set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules") |
21 | |
f7d3fd75 |
22 | # To fix a hack that has been introduced for the Mac |
23 | If(APPLE) |
24 | Set(CMAKE_INSTALL_NAME_TOOL CMAKE_INSTALL_NAME_TOOL-NOTFOUND) |
25 | Endif(APPLE) |
26 | |
f7d3fd75 |
27 | # Setup ROOT |
28 | Find_package(ROOT 5.0.0 REQUIRED) |
29 | |
30 | Set(CMAKE_C_COMPILER $ENV{CC}) |
31 | Enable_Language(C) |
32 | |
33 | Set(CMAKE_CXX_COMPILER $ENV{CXX}) |
34 | Enable_Language(CXX) |
35 | |
36 | Set(CMAKE_Fortran_COMPILER $ENV{F77}) |
37 | Enable_Language(Fortran) |
38 | |
e969a926 |
39 | # Load some basic macros which are needed later on |
40 | #Include(WriteConfigFile) |
41 | Include(Dart) |
42 | Include(ALICEMacros) |
43 | |
44 | # Check if the user wants to build the project in the source directory |
45 | Check_out_of_Source_Build() |
46 | |
47 | # searches for needed packages |
48 | |
e969a926 |
49 | Set(ALIROOT_INSTALL_DIR ${ALICE_ROOT}/${ALICE_TARGET}) |
50 | |
51 | # Setup GEANT3 |
52 | Find_package(GEANT3 REQUIRED) |
53 | |
54 | # Setup RuleChecker |
55 | Find_Package(RuleChecker) |
56 | |
57 | # Check if DATE is installed |
58 | Find_Package(DATE) |
59 | |
60 | # Setup system dependent flags |
61 | SetupSystem() |
62 | |
96c0c856 |
63 | |
64 | Option(GENERATE_FILES "Generate CMake input files from package files" OFF) |
65 | if(GENERATE_FILES) |
66 | Include(CreateSubCMakeFiles) |
67 | CreateSubCMakeFiles() |
68 | endif(GENERATE_FILES) |
69 | |
e969a926 |
70 | # Set the library version in the main CMakeLists.txt |
71 | SET(ALIROOT_MAJOR_VERSION 0) |
72 | SET(ALIROOT_MINOR_VERSION 0) |
73 | SET(ALIROOT_PATCH_VERSION 0) |
74 | SET(ALIROOT_VERSION "${ALIROOT_MAJOR_VERSION}.${ALIROOT_MINOR_VERSION}.${ALIROOT_PATCH_VERSION}") |
75 | SET(ALIROOT_LIBRARY_PROPERTIES ${ALIROOT_LIBRARY_PROPERTIES} |
76 | VERSION "${ALIROOT_VERSION}" |
77 | SOVERSION "${ALIROOT_MAJOR_VERSION}" |
78 | SUFFIX ".so" |
79 | ) |
80 | |
81 | # Set version variables |
6455495f |
82 | Find_program( READLINK_PROGRAM readlink) |
83 | |
84 | If(READLINK_PROGRAM) |
85 | Execute_process(COMMAND readlink -f ${ALICE_ROOT} |
86 | COMMAND xargs svn info |
87 | OUTPUT_VARIABLE _svn_out) |
88 | Else(READLINK_PROGRAM) |
89 | Execute_process(COMMAND svn info ${ALICE_ROOT} |
90 | OUTPUT_VARIABLE _svn_out) |
91 | Endif(READLINK_PROGRAM) |
e969a926 |
92 | |
93 | String(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" |
94 | ALIROOT_SVN_REVISION ${_svn_out}) |
95 | String(REGEX REPLACE "^.*URL: https://alisoft.cern.ch/AliRoot/([^\n]*).*$" "w \\1" |
96 | ALIROOT_SVN_BRANCH ${_svn_out}) |
249caf77 |
97 | String(REPLACE "/" "\\\\/" |
98 | ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH}) |
e969a926 |
99 | |
100 | # Additional targets |
101 | Add_Custom_Target(check-all COMMENT "Checking coding conventions") |
102 | |
103 | # Configure special include file |
96c0c856 |
104 | # Only if there is a change in the file |
e969a926 |
105 | If(UNIX) |
106 | Set(_in ${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in) |
107 | Set(_out ${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h) |
96c0c856 |
108 | If(NOT EXISTS ${_out}) |
109 | Add_custom_target(ARversion ALL |
110 | COMMAND sed < ${_in} |
111 | -e "s/\\@ALIROOT_SVN_REVISION\\@/${ALIROOT_SVN_REVISION}/" |
112 | -e "s/\\@ALIROOT_SVN_BRANCH\\@/${ALIROOT_SVN_BRANCH}/" |
113 | -e "s/\\@ALIROOT_VERSION\\@/${ALIROOT_VERSION}/" > ${_out}) |
114 | Install(FILES ${_out} DESTINATION ${ALIROOT_INSTALL_DIR}/include) |
115 | Else(NOT EXISTS ${_out}) |
116 | FILE(READ "${_out}" contents) |
117 | STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}") |
118 | STRING(REGEX REPLACE "\n" ";" contents "${contents}") |
119 | Foreach(line ${contents}) |
120 | If(line MATCHES "^.*ALIROOT_SVN_REVISION.*$") |
121 | STRING(REGEX REPLACE "^.*ALIROOT_SVN_REVISION[ ](.*)$" "\\1" _result_svn_rev "${line}") |
122 | EndIf(line MATCHES "^.*ALIROOT_SVN_REVISION.*$") |
123 | If(line MATCHES "^.*ALIROOT_SVN_BRANCH.*$") |
124 | STRING(REGEX REPLACE "^.*ALIROOT_SVN_BRANCH[ ]\"(.*)\"$" "\\1" _result_svn_branch "${line}") |
125 | EndIf(line MATCHES "^.*ALIROOT_SVN_BRANCH.*$") |
126 | If(line MATCHES "^.*ALIROOT_VERSION.*$") |
127 | STRING(REGEX REPLACE "^.*ALIROOT_VERSION[ ](.*)$" "\\1" _result_aliroot_version "${line}") |
128 | EndIf(line MATCHES "^.*ALIROOT_VERSION.*$") |
129 | EndForeach(line ${contents}) |
130 | If(_result_aliroot_version STREQUAL ${ALIROOT_VERSION} AND _result_svn_rev STREQUAL ${ALIROOT_SVN_REVISION} AND _result_svn_branch STREQUAL ${ALIROOT_SVN_BRANCH}) |
131 | # MESSAGE("VERSION: ${_result_aliroot_version}") |
132 | # MESSAGE("VERSION: ${ALIROOT_VERSION}") |
133 | # MESSAGE("REVISION: ${_result_svn_rev}") |
134 | # MESSAGE("REVISION: ${ALIROOT_SVN_REVISION}") |
135 | # MESSAGE("BRANCH: ${_result_svn_branch}") |
136 | # MESSAGE("BRANCH: ${ALIROOT_SVN_BRANCH}") |
137 | Else(_result_aliroot_version STREQUAL ${ALIROOT_VERSION} AND _result_svn_rev STREQUAL ${ALIROOT_SVN_REVISION} AND _result_svn_branch STREQUAL ${ALIROOT_SVN_BRANCH}) |
138 | Add_custom_target(ARversion ALL |
139 | COMMAND sed < ${_in} |
e969a926 |
140 | -e "s/\\@ALIROOT_SVN_REVISION\\@/${ALIROOT_SVN_REVISION}/" |
141 | -e "s/\\@ALIROOT_SVN_BRANCH\\@/${ALIROOT_SVN_BRANCH}/" |
142 | -e "s/\\@ALIROOT_VERSION\\@/${ALIROOT_VERSION}/" > ${_out}) |
96c0c856 |
143 | Install(FILES ${_out} DESTINATION ${ALIROOT_INSTALL_DIR}/include) |
144 | EndIf(_result_aliroot_version STREQUAL ${ALIROOT_VERSION} AND _result_svn_rev STREQUAL ${ALIROOT_SVN_REVISION} AND _result_svn_branch STREQUAL ${ALIROOT_SVN_BRANCH}) |
145 | EndIf(NOT EXISTS ${_out}) |
146 | |
e969a926 |
147 | Endif(UNIX) |
148 | |
149 | # This would work, but just once... we want this to happen at every make |
150 | # Configure_file(${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in |
151 | #${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h @ONLY) |
152 | |
153 | # Recurse into the given subdirectories. This does not actually |
154 | # cause another cmake executable to run. The same process will walk through |
155 | # the project's entire directory structure. |
156 | |
157 | #Add_subdirectory(PYTHIA8) |
158 | #Add_subdirectory(TFluka) |
159 | #Add_subdirectory(THydjet) |
160 | |
161 | Add_subdirectory(ACORDE) |
162 | Add_subdirectory(ANALYSIS) |
163 | Add_subdirectory(BCM) |
164 | Add_subdirectory(CORRFW) |
165 | Add_subdirectory(DPMJET) |
166 | Add_subdirectory(EMCAL) |
fe9fbf07 |
167 | Add_subdirectory(EPOS) |
e969a926 |
168 | Add_subdirectory(ESDCheck) |
169 | Add_subdirectory(EVE) |
170 | Add_subdirectory(EVGEN) |
171 | Add_subdirectory(FASTSIM) |
172 | Add_subdirectory(FMD) |
e969a926 |
173 | Add_subdirectory(HERWIG) |
174 | Add_subdirectory(HIJING) |
175 | Add_subdirectory(HLT) |
176 | Add_subdirectory(HMPID) |
177 | Add_subdirectory(ITS) |
178 | Add_subdirectory(JETAN) |
179 | Add_subdirectory(LHAPDF) |
180 | Add_subdirectory(LHC) |
181 | Add_subdirectory(MICROCERN) |
182 | Add_subdirectory(MONITOR) |
183 | Add_subdirectory(MUON) |
184 | Add_subdirectory(PHOS) |
185 | Add_subdirectory(PMD) |
186 | Add_subdirectory(PWG0) |
187 | Add_subdirectory(PWG1) |
188 | Add_subdirectory(PWG2) |
189 | Add_subdirectory(PWG3) |
190 | Add_subdirectory(PWG4) |
191 | Add_subdirectory(PYTHIA6) |
192 | Add_subdirectory(RALICE) |
193 | Add_subdirectory(RAW) |
194 | Add_subdirectory(STAT) |
195 | Add_subdirectory(STEER) |
196 | Add_subdirectory(STRUCT) |
197 | Add_subdirectory(T0) |
198 | Add_subdirectory(TDPMjet) |
199 | Add_subdirectory(TEPEMGEN) |
200 | Add_subdirectory(THbtp) |
201 | Add_subdirectory(THerwig) |
202 | Add_subdirectory(THijing) |
ddd9c299 |
203 | #Add_subdirectory(TIsajet) |
e969a926 |
204 | Add_subdirectory(TOF) |
205 | Add_subdirectory(TPC) |
206 | Add_subdirectory(TPHIC) |
207 | Add_subdirectory(TRD) |
96c0c856 |
208 | Add_subdirectory(TRIGGER) |
e969a926 |
209 | Add_subdirectory(TTherminator) |
fe9fbf07 |
210 | Add_subdirectory(TUHKMgen) |
e969a926 |
211 | Add_subdirectory(VZERO) |
212 | Add_subdirectory(ZDC) |
96c0c856 |
213 | # |
e969a926 |
214 | Add_subdirectory(ALIROOT) |
215 | |