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})
21 message(WARNING "Environment variable ALICE is not set")
25 message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
28 # Set AliRoot Installation directory
30 message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You can specify a different location by setting ALICE_INSTALL environment variable")
31 set(ALICE_INSTALL ${ALICE_ROOT})
33 message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
34 endif(NOT ALICE_INSTALL)
35 set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL})
37 get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
38 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
39 set(CPACK_COMPONENTS_ALL MDC)
43 #--------------------------------------------------------------------------------#
45 #--------------------------------------------------------------------------------#
48 # ------------------------------
50 find_package(Subversion REQUIRED)
53 # ------------------------------
55 find_package(ROOT REQUIRED)
58 # ------------------------------
60 find_package(RuleChecker)
63 # ------------------------------
68 # ------------------------------
73 # ------------------------------
77 # AliRoot CPack configuration
78 #-------------------------------
83 #--------------------------------------------------------------------------------#
84 # Environment/Compiler Configuration #
85 #--------------------------------------------------------------------------------#
87 ALICE_CheckOutOfSourceBuild()
88 ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
89 ALICE_RootConfig(CMAKE_C_COMPILER --cc)
90 ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
91 ALICE_ConfigurePlatform()
92 ALICE_ConfigureCompiler()
95 #--------------------------------------------------------------------------------#
96 # AliRoot Path Settings #
97 #--------------------------------------------------------------------------------#
99 ALICE_DevFlagsOutput()
100 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
101 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
102 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
103 set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
104 file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
105 set(EXPORTDIRS "${ALICE_INSTALL}/include")
106 set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
109 #--------------------------------------------------------------------------------#
111 #--------------------------------------------------------------------------------#
113 # Exclude Module from all target
114 # ------------------------------
116 #set(EXCLUDEMODULES THydjet SHUTTLE)
120 # ------------------------------
121 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 OADB )
124 list(APPEND ALIROOTMODULES THydjet)
128 list(APPEND ALIROOTMODULES SHUTTLE)
132 # ------------------------------
133 list(APPEND ALIROOTMODULES TUHKMgen EPOS)
136 # ------------------------------
137 ALICE_RootConfig(EVE --has-opengl)
138 if(NOT EVE STREQUAL "no")
139 list(APPEND ALIROOTMODULES EVE)
140 endif(NOT EVE STREQUAL "no")
143 # ------------------------------
144 set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
147 if(EXISTS ${ROOTINCDIR}/TPythia6.h)
149 list(APPEND CERNMODULES PYTHIA6 RALICE EVGEN)
151 message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
152 endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
154 # Set Final list of modules
155 set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
157 # Set Module directories
158 set(MODDIRS ${MODULES})
160 # Libraries for Linking
161 # ------------------------------
162 set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
163 set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
165 # Configure ARVerion.h
166 # ------------------------------
168 if(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
169 Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
170 set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
171 set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
172 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
174 elseif(EXISTS ${PROJECT_SOURCE_DIR}/.git/ )
175 execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git svn info OUTPUT_VARIABLE OUTPUTVAR)
176 string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
177 foreach(f ${OUTPUTVAR})
179 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${f})
180 elseif(${f} MATCHES Revision)
181 string(REGEX MATCH "[^: ]+$" ALIROOT_SVN_REVISION ${f})
182 endif(${f} MATCHES URL)
184 endif(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
186 message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
187 if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
188 file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
189 endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
190 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
191 endif(Subversion_FOUND)
193 #--------------------------------------------------------------------------------#
195 #--------------------------------------------------------------------------------#
198 # ------------------------------
205 # Top Level Build Targets
206 # ------------------------------
208 add_custom_target(alilibs-static)
209 add_custom_target(include-headers)
210 add_custom_target(DA-all)
211 add_custom_target(check-all)
212 add_custom_target(par-all)
213 add_custom_target(test-par-all)
216 # ------------------------------
217 foreach(MODULE ${MODDIRS})
219 configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
220 add_custom_target(${MODULE}-all ALL)
221 add_custom_target(${MODULE}-check-all)
222 add_custom_target(${MODULE}-par-all)
223 add_custom_target(test-${MODULE}-par-all)
224 add_dependencies(check-all "${MODULE}-check-all")
225 add_custom_target(${MODULE}-all-static)
226 add_dependencies(alilibs-static "${MODULE}-static")
227 add_subdirectory(${MODULE})
230 if(DATE_FOUND AND AMORE_FOUND)
232 endif(DATE_FOUND AND AMORE_FOUND)
234 #--------------------------------------------------------------------------------#
235 # Additional Targets #
236 #--------------------------------------------------------------------------------#
239 # ------------------------------
241 include (InstallRequiredSystemLibraries)