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")
38 #--------------------------------------------------------------------------------#
40 #--------------------------------------------------------------------------------#
43 # ------------------------------
45 find_package(Subversion REQUIRED)
48 # ------------------------------
50 find_package(ROOT REQUIRED)
53 # ------------------------------
55 find_package(RuleChecker)
58 # ------------------------------
63 # ------------------------------
68 # ------------------------------
72 #--------------------------------------------------------------------------------#
73 # Environment/Compiler Configuration #
74 #--------------------------------------------------------------------------------#
76 ALICE_CheckOutOfSourceBuild()
77 ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
78 ALICE_RootConfig(CMAKE_C_COMPILER --cc)
79 ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
80 ALICE_ConfigurePlatform()
81 ALICE_ConfigureCompiler()
84 #--------------------------------------------------------------------------------#
85 # AliRoot Path Settings #
86 #--------------------------------------------------------------------------------#
88 ALICE_DevFlagsOutput()
89 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
90 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
91 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
92 set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
93 file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
94 set(EXPORTDIRS "${ALICE_INSTALL}/include")
95 set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
97 #--------------------------------------------------------------------------------#
99 #--------------------------------------------------------------------------------#
101 # Exclude Module from all target
102 # ------------------------------
104 #set(EXCLUDEMODULES THydjet SHUTTLE)
107 # ------------------------------
108 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 )
111 list(APPEND ALIROOTMODULES THydjet)
115 list(APPEND ALIROOTMODULES SHUTTLE)
119 # ------------------------------
120 list(APPEND ALIROOTMODULES TUHKMgen EPOS)
123 # ------------------------------
124 ALICE_RootConfig(EVE --has-opengl)
125 if(NOT EVE STREQUAL "no")
126 list(APPEND ALIROOTMODULES EVE)
127 endif(NOT EVE STREQUAL "no")
130 # ------------------------------
131 set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
134 if(EXISTS ${ROOTINCDIR}/TPythia6.h)
136 list(APPEND CERNMODULES PYTHIA6 RALICE EVGEN)
138 message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
139 endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
141 # Set Final list of modules
142 set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
144 # Set Module directories
145 set(MODDIRS ${MODULES})
147 # Libraries for Linking
148 # ------------------------------
149 set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
150 set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
152 # Configure ARVerion.h
153 # ------------------------------
155 Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
156 set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
157 set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
158 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
159 message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
160 if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
161 file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
162 endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
163 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
164 endif(Subversion_FOUND)
166 #--------------------------------------------------------------------------------#
168 #--------------------------------------------------------------------------------#
171 # ------------------------------
178 # Top Level Build Targets
179 # ------------------------------
181 add_custom_target(alilibs-static)
182 add_custom_target(include-headers)
183 add_custom_target(DA-all)
187 # ------------------------------
188 foreach(MODULE ${MODDIRS})
190 configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
191 add_custom_target(${MODULE}-all ALL)
192 add_custom_target(${MODULE}-all-static)
193 add_dependencies(alilibs-static "${MODULE}-static")
194 add_subdirectory(${MODULE})
197 if(DATE_FOUND AND AMORE_FOUND)
199 endif(DATE_FOUND AND AMORE_FOUND)
201 #--------------------------------------------------------------------------------#
202 # Additional Targets #
203 #--------------------------------------------------------------------------------#
206 # ------------------------------
209 include (InstallRequiredSystemLibraries)