1 # Top level CMakeList.txt file for the AliRoot Build System
3 # Author: Johny Jose (johny.jose@cern.ch)
4 # Port of previous Makefile build to cmake
7 cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
9 #--------------------------------------------------------------------------------#
10 # Set Basic CMake Configuration #
11 #--------------------------------------------------------------------------------#
13 project(AliRoot CXX C Fortran)
15 # Environment variables
16 set(ALICE_ROOT $ENV{ALICE_ROOT})
17 set(ALICE $ENV{ALICE})
18 set(ALICE_INSTALL $ENV{ALICE_INSTALL})
19 # Environment for SHUTTLE
20 set(DIMDIR $ENV{DIMDIR})
24 message(WARNING "Environment variable ALICE is not set")
28 message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
31 # Set AliRoot Installation directory
33 message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You can specify a different location by setting ALICE_INSTALL environment variable")
34 set(ALICE_INSTALL ${ALICE_ROOT})
36 message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
37 endif(NOT ALICE_INSTALL)
38 set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL})
40 get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
41 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
42 set(CPACK_COMPONENTS_ALL MDC)
46 #--------------------------------------------------------------------------------#
48 #--------------------------------------------------------------------------------#
51 # ------------------------------
53 find_package(Subversion REQUIRED)
56 # ------------------------------
58 find_package(ROOT REQUIRED)
61 # ------------------------------
63 find_package(RuleChecker)
66 # ------------------------------
71 # ------------------------------
76 # ------------------------------
80 # AliRoot CPack configuration
81 #-------------------------------
86 #--------------------------------------------------------------------------------#
87 # Environment/Compiler Configuration #
88 #--------------------------------------------------------------------------------#
90 ALICE_CheckOutOfSourceBuild()
91 ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
92 ALICE_RootConfig(CMAKE_C_COMPILER --cc)
93 ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
94 ALICE_ConfigurePlatform()
95 ALICE_ConfigureCompiler()
98 #--------------------------------------------------------------------------------#
99 # AliRoot Path Settings #
100 #--------------------------------------------------------------------------------#
102 ALICE_DevFlagsOutput()
103 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
104 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
105 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
106 set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
107 file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
108 set(EXPORTDIRS "${ALICE_INSTALL}/include")
109 set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
112 #--------------------------------------------------------------------------------#
114 #--------------------------------------------------------------------------------#
116 # Exclude Module from all target
117 # ------------------------------
119 #set(EXCLUDEMODULES THydjet SHUTTLE)
123 # ------------------------------
124 set(ALIROOTMODULES STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS ACORDE HMPID T0 BCM STRUCT VZERO THijing THbtp EMCAL THerwig TEPEMGEN FASTSIM TPHIC RAW MONITOR ANALYSIS JETAN HLT LHC STAT TTherminator CORRFW DPMJET TDPMjet PWG0 PWG1 PWG2 PWG3 PWG4 TRIGGER PYTHIA8 TAmpt OADB )
127 list(APPEND ALIROOTMODULES THydjet)
131 list(APPEND ALIROOTMODULES SHUTTLE)
135 # ------------------------------
136 list(APPEND ALIROOTMODULES TUHKMgen EPOS)
139 # ------------------------------
140 ALICE_RootConfig(EVE --has-opengl)
141 if(NOT EVE STREQUAL "no")
142 list(APPEND ALIROOTMODULES EVE)
143 endif(NOT EVE STREQUAL "no")
146 # ------------------------------
147 set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
150 if(EXISTS ${ROOTINCDIR}/TPythia6.h)
152 list(APPEND CERNMODULES PYTHIA6 EVGEN)
154 message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
155 endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
157 # Set Final list of modules
158 set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
160 # Set Module directories
161 set(MODDIRS ${MODULES})
163 # Libraries for Linking
164 # ------------------------------
165 set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
166 set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
168 # Configure ARVerion.h
169 # ------------------------------
171 if(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
172 Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
173 set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
174 set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
175 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
177 elseif(EXISTS ${PROJECT_SOURCE_DIR}/.git/ )
178 execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git svn info OUTPUT_VARIABLE OUTPUTVAR)
179 string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
180 foreach(f ${OUTPUTVAR})
182 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${f})
183 elseif(${f} MATCHES Revision)
184 string(REGEX MATCH "[^: ]+$" ALIROOT_SVN_REVISION ${f})
185 endif(${f} MATCHES URL)
187 endif(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
189 message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
190 if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
191 file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
192 endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
193 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
194 endif(Subversion_FOUND)
196 #--------------------------------------------------------------------------------#
198 #--------------------------------------------------------------------------------#
201 # ------------------------------
208 # Top Level Build Targets
209 # ------------------------------
211 add_custom_target(alilibs-static)
212 add_custom_target(include-headers)
213 add_custom_target(DA-all)
214 add_custom_target(check-all)
215 add_custom_target(par-all)
216 add_custom_target(test-par-all)
219 # ------------------------------
220 foreach(MODULE ${MODDIRS})
222 configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
223 add_custom_target(${MODULE}-all ALL)
224 add_custom_target(${MODULE}-check-all)
225 add_custom_target(${MODULE}-par-all)
226 add_custom_target(test-${MODULE}-par-all)
227 add_dependencies(check-all "${MODULE}-check-all")
228 add_custom_target(${MODULE}-all-static)
229 add_dependencies(alilibs-static "${MODULE}-static")
230 add_subdirectory(${MODULE})
233 if(DATE_FOUND AND AMORE_FOUND)
235 endif(DATE_FOUND AND AMORE_FOUND)
237 #--------------------------------------------------------------------------------#
238 # Additional Targets #
239 #--------------------------------------------------------------------------------#
242 # ------------------------------
244 include (InstallRequiredSystemLibraries)