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)
14 set(ALICE_ROOT $ENV{ALICE_ROOT})
15 set(ALICE $ENV{ALICE})
18 message(WARNING "Environment variable ALICE is not set")
22 message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
25 # Set AliRoot Installation directory
27 message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You can specify a different location by setting ALICE_INSTALL environment variable")
28 set(ALICE_INSTALL ${ALICE_ROOT})
30 message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
31 endif(NOT ALICE_INSTALL)
32 set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL})
34 get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
35 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
36 set(CPACK_COMPONENTS_ALL MDC)
40 #--------------------------------------------------------------------------------#
42 #--------------------------------------------------------------------------------#
45 # ------------------------------
47 find_package(Subversion REQUIRED)
50 # ------------------------------
52 find_package(ROOT REQUIRED)
55 # ------------------------------
57 find_package(RuleChecker)
60 # ------------------------------
65 # ------------------------------
70 # ------------------------------
74 # AliRoot CPack configuration
75 #-------------------------------
80 #--------------------------------------------------------------------------------#
81 # Environment/Compiler Configuration #
82 #--------------------------------------------------------------------------------#
84 ALICE_CheckOutOfSourceBuild()
85 ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
86 ALICE_RootConfig(CMAKE_C_COMPILER --cc)
87 ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
88 ALICE_ConfigurePlatform()
89 ALICE_ConfigureCompiler()
92 #--------------------------------------------------------------------------------#
93 # AliRoot Path Settings #
94 #--------------------------------------------------------------------------------#
96 ALICE_DevFlagsOutput()
97 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
98 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
99 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
100 set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
101 file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
102 set(EXPORTDIRS "${ALICE_INSTALL}/include")
103 set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
106 #--------------------------------------------------------------------------------#
108 #--------------------------------------------------------------------------------#
110 # Exclude Module from all target
111 # ------------------------------
113 #set(EXCLUDEMODULES THydjet SHUTTLE)
117 # ------------------------------
118 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 ESDCheck STAT TTherminator CORRFW DPMJET TDPMjet PWG0 PWG1 PWG2 PWG3 PWG4 TRIGGER PYTHIA8 TAmpt )
121 list(APPEND ALIROOTMODULES THydjet)
125 list(APPEND ALIROOTMODULES SHUTTLE)
129 # ------------------------------
130 list(APPEND ALIROOTMODULES TUHKMgen EPOS)
133 # ------------------------------
134 ALICE_RootConfig(EVE --has-opengl)
135 if(NOT EVE STREQUAL "no")
136 list(APPEND ALIROOTMODULES EVE)
137 endif(NOT EVE STREQUAL "no")
140 # ------------------------------
141 set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
144 if(EXISTS ${ROOTINCDIR}/TPythia6.h)
146 list(APPEND CERNMODULES PYTHIA6 RALICE EVGEN)
148 message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
149 endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
151 # Set Final list of modules
152 set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
154 # Set Module directories
155 set(MODDIRS ${MODULES})
157 # Libraries for Linking
158 # ------------------------------
159 set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
160 set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
162 # Configure ARVerion.h
163 # ------------------------------
165 Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
166 set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
167 set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
168 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
169 message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
170 if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
171 file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
172 endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
173 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
174 endif(Subversion_FOUND)
176 #--------------------------------------------------------------------------------#
178 #--------------------------------------------------------------------------------#
181 # ------------------------------
188 # Top Level Build Targets
189 # ------------------------------
191 add_custom_target(alilibs-static)
192 add_custom_target(include-headers)
193 add_custom_target(DA-all)
194 add_custom_target(check-all)
195 add_custom_target(par-all)
196 add_custom_target(test-par-all)
199 # ------------------------------
200 foreach(MODULE ${MODDIRS})
202 configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
203 add_custom_target(${MODULE}-all ALL)
204 add_custom_target(${MODULE}-check-all)
205 add_custom_target(${MODULE}-par-all)
206 add_custom_target(test-${MODULE}-par-all)
207 add_dependencies(check-all "${MODULE}-check-all")
208 add_custom_target(${MODULE}-all-static)
209 add_dependencies(alilibs-static "${MODULE}-static")
210 add_subdirectory(${MODULE})
213 if(DATE_FOUND AND AMORE_FOUND)
215 endif(DATE_FOUND AND AMORE_FOUND)
217 #--------------------------------------------------------------------------------#
218 # Additional Targets #
219 #--------------------------------------------------------------------------------#
222 # ------------------------------
224 include (InstallRequiredSystemLibraries)