3 # Check if cmake has the required version
4 Cmake_Minimum_Required(VERSION 2.6 FATAL_ERROR)
6 # Set name of our project to AliRoot. To be done after check of cmake version
9 # Set AliRoot variables
10 Set(ALICE_ROOT $ENV{ALICE_ROOT})
11 Set(ALICE $ENV{ALICE})
12 Set(ALICE_STATIC_BUILD OFF CACHE BOOL "Build also statics libs")
14 MESSAGE("ALICE_ROOT: ${ALICE_ROOT}")
15 Set(CMAKE_VERBOSE_MAKEFILE ON)
17 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/
18 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
19 SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
20 Set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules")
22 # To fix a hack that has been introduced for the Mac
24 Set(CMAKE_INSTALL_NAME_TOOL CMAKE_INSTALL_NAME_TOOL-NOTFOUND)
28 Find_package(ROOT 5.0.0 REQUIRED)
30 Set(CMAKE_C_COMPILER $ENV{CC})
33 Set(CMAKE_CXX_COMPILER $ENV{CXX})
36 Set(CMAKE_Fortran_COMPILER $ENV{F77})
37 Enable_Language(Fortran)
39 # Load some basic macros which are needed later on
40 #Include(WriteConfigFile)
44 # Check if the user wants to build the project in the source directory
45 Check_out_of_Source_Build()
47 # searches for needed packages
49 Set(ALIROOT_INSTALL_DIR ${ALICE_ROOT}/${ALICE_TARGET})
52 Find_package(GEANT3 REQUIRED)
55 Find_Package(RuleChecker)
57 # Check if DATE is installed
60 # Setup system dependent flags
64 Option(GENERATE_FILES "Generate CMake input files from package files" OFF)
66 Include(CreateSubCMakeFiles)
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}"
81 # Set version variables
82 Find_program( READLINK_PROGRAM readlink)
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)
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})
97 String(REPLACE "/" "\\\\/"
98 ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
101 Add_Custom_Target(check-all COMMENT "Checking coding conventions")
103 # Configure special include file
104 # Only if there is a change in the file
106 Set(_in ${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in)
107 Set(_out ${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h)
108 If(NOT EXISTS ${_out})
109 Add_custom_target(ARversion ALL
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
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})
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})
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)
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.
157 #Add_subdirectory(PYTHIA8)
158 #Add_subdirectory(TFluka)
159 #Add_subdirectory(THydjet)
161 Add_subdirectory(ACORDE)
162 Add_subdirectory(ANALYSIS)
163 Add_subdirectory(BCM)
164 Add_subdirectory(CORRFW)
165 Add_subdirectory(DPMJET)
166 Add_subdirectory(EMCAL)
167 Add_subdirectory(EPOS)
168 Add_subdirectory(ESDCheck)
169 Add_subdirectory(EVE)
170 Add_subdirectory(EVGEN)
171 Add_subdirectory(FASTSIM)
172 Add_subdirectory(FMD)
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)
198 Add_subdirectory(TDPMjet)
199 Add_subdirectory(TEPEMGEN)
200 Add_subdirectory(THbtp)
201 Add_subdirectory(THerwig)
202 Add_subdirectory(THijing)
203 #Add_subdirectory(TIsajet)
204 Add_subdirectory(TOF)
205 Add_subdirectory(TPC)
206 Add_subdirectory(TPHIC)
207 Add_subdirectory(TRD)
208 Add_subdirectory(TRIGGER)
209 Add_subdirectory(TTherminator)
210 Add_subdirectory(TUHKMgen)
211 Add_subdirectory(VZERO)
212 Add_subdirectory(ZDC)
214 Add_subdirectory(ALIROOT)