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)
33 get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
34 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
35 set(CPACK_COMPONENTS_ALL MDC)
39 #--------------------------------------------------------------------------------#
41 #--------------------------------------------------------------------------------#
44 # ------------------------------
46 find_package(Subversion REQUIRED)
49 # ------------------------------
51 find_package(ROOT REQUIRED)
54 # ------------------------------
56 find_package(RuleChecker)
59 # ------------------------------
64 # ------------------------------
69 # ------------------------------
73 # AliRoot CPack configuration
74 #-------------------------------
79 #--------------------------------------------------------------------------------#
80 # Environment/Compiler Configuration #
81 #--------------------------------------------------------------------------------#
83 ALICE_CheckOutOfSourceBuild()
84 ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
85 ALICE_RootConfig(CMAKE_C_COMPILER --cc)
86 ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
87 ALICE_ConfigurePlatform()
88 ALICE_ConfigureCompiler()
91 #--------------------------------------------------------------------------------#
92 # AliRoot Path Settings #
93 #--------------------------------------------------------------------------------#
95 ALICE_DevFlagsOutput()
96 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
97 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
98 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
99 set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
100 file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
101 set(EXPORTDIRS "${ALICE_INSTALL}/include")
102 set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
105 #--------------------------------------------------------------------------------#
107 #--------------------------------------------------------------------------------#
109 # Exclude Module from all target
110 # ------------------------------
112 #set(EXCLUDEMODULES THydjet SHUTTLE)
116 # ------------------------------
117 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 )
120 list(APPEND ALIROOTMODULES THydjet)
124 list(APPEND ALIROOTMODULES SHUTTLE)
128 # ------------------------------
129 list(APPEND ALIROOTMODULES TUHKMgen EPOS)
132 # ------------------------------
133 ALICE_RootConfig(EVE --has-opengl)
134 if(NOT EVE STREQUAL "no")
135 list(APPEND ALIROOTMODULES EVE)
136 endif(NOT EVE STREQUAL "no")
139 # ------------------------------
140 set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
143 if(EXISTS ${ROOTINCDIR}/TPythia6.h)
145 list(APPEND CERNMODULES PYTHIA6 RALICE EVGEN)
147 message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
148 endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
150 # Set Final list of modules
151 set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
153 # Set Module directories
154 set(MODDIRS ${MODULES})
156 # Libraries for Linking
157 # ------------------------------
158 set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
159 set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
161 # Configure ARVerion.h
162 # ------------------------------
164 Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
165 set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
166 set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
167 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
168 message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
169 if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
170 file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
171 endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
172 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
173 endif(Subversion_FOUND)
175 #--------------------------------------------------------------------------------#
177 #--------------------------------------------------------------------------------#
180 # ------------------------------
187 # Top Level Build Targets
188 # ------------------------------
190 add_custom_target(alilibs-static)
191 add_custom_target(include-headers)
192 add_custom_target(DA-all)
193 add_custom_target(check-all)
194 add_custom_target(par-all)
195 add_custom_target(test-par-all)
198 # ------------------------------
199 foreach(MODULE ${MODDIRS})
201 configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
202 add_custom_target(${MODULE}-all ALL)
203 add_custom_target(${MODULE}-check-all)
204 add_custom_target(${MODULE}-par-all)
205 add_custom_target(test-${MODULE}-par-all)
206 add_dependencies(check-all "${MODULE}-check-all")
207 add_custom_target(${MODULE}-all-static)
208 add_dependencies(alilibs-static "${MODULE}-static")
209 add_subdirectory(${MODULE})
212 if(DATE_FOUND AND AMORE_FOUND)
214 endif(DATE_FOUND AND AMORE_FOUND)
216 #--------------------------------------------------------------------------------#
217 # Additional Targets #
218 #--------------------------------------------------------------------------------#
221 # ------------------------------
223 include (InstallRequiredSystemLibraries)