]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - CMakeLists.txt
Requested CMake version >= 2.8.4
[u/mrichter/AliRoot.git] / CMakeLists.txt
... / ...
CommitLineData
1# -*- mode: cmake -*-
2
3# Top level CMakeList.txt file for the AliRoot Build System
4#
5# Author: Johny Jose (johny.jose@cern.ch)
6# Port of previous Makefile build to cmake
7
8
9cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
10
11#--------------------------------------------------------------------------------#
12# Set Basic CMake Configuration #
13#--------------------------------------------------------------------------------#
14
15project(AliRoot CXX C Fortran)
16
17# Environment variables
18set(ALICE_ROOT $ENV{ALICE_ROOT})
19set(ALICE $ENV{ALICE})
20set(ALICE_INSTALL $ENV{ALICE_INSTALL})
21# Environment for SHUTTLE
22set(DIMDIR $ENV{DIMDIR})
23set(ODIR $ENV{ODIR})
24
25if(NOT ALICE)
26 message(WARNING "Environment variable ALICE is not set")
27endif(NOT ALICE)
28
29if(NOT ALICE_ROOT)
30 message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
31endif(NOT ALICE_ROOT)
32
33# Set AliRoot Installation directory
34if(NOT ALICE_INSTALL)
35 message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You can specify a different location by setting ALICE_INSTALL environment variable")
36 set(ALICE_INSTALL ${ALICE_ROOT})
37else()
38 message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
39endif(NOT ALICE_INSTALL)
40set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL})
41
42get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
43set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
44set(CPACK_COMPONENTS_ALL MDC)
45
46include(ALICE_CMake)
47
48#--------------------------------------------------------------------------------#
49# Find Packages #
50#--------------------------------------------------------------------------------#
51
52# Subversion
53# ------------------------------
54
55find_package(Subversion REQUIRED)
56
57# ROOT
58# ------------------------------
59
60find_package(ROOT REQUIRED)
61
62# IRST Rule Checker
63# ------------------------------
64
65find_package(RuleChecker)
66
67# DATE
68# ------------------------------
69
70find_package(DATE)
71
72# GEANT3
73# ------------------------------
74
75find_package(GEANT3)
76
77# AMORE
78# ------------------------------
79
80find_package(AMORE)
81
82# AliRoot CPack configuration
83#-------------------------------
84
85find_package(CPack)
86
87
88#--------------------------------------------------------------------------------#
89# Environment/Compiler Configuration #
90#--------------------------------------------------------------------------------#
91
92ALICE_CheckOutOfSourceBuild()
93ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
94ALICE_RootConfig(CMAKE_C_COMPILER --cc)
95ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
96ALICE_ConfigurePlatform()
97ALICE_ConfigureCompiler()
98
99
100#--------------------------------------------------------------------------------#
101# AliRoot Path Settings #
102#--------------------------------------------------------------------------------#
103
104ALICE_DevFlagsOutput()
105set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
106set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
107set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
108set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
109file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
110set(EXPORTDIRS "${ALICE_INSTALL}/include")
111set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
112
113
114#--------------------------------------------------------------------------------#
115# AliRoot Modules #
116#--------------------------------------------------------------------------------#
117
118# Exclude Module from all target
119# ------------------------------
120
121#set(EXCLUDEMODULES THydjet SHUTTLE)
122
123
124# Standard Modules
125# ------------------------------
126set(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
128if(THydjet)
129 list(APPEND ALIROOTMODULES THydjet)
130endif(THydjet)
131
132if(SHUTTLE)
133 list(APPEND ALIROOTMODULES SHUTTLE)
134endif(SHUTTLE)
135
136# Additional Modules
137# ------------------------------
138list(APPEND ALIROOTMODULES TUHKMgen EPOS)
139
140# EVE
141# ------------------------------
142ALICE_RootConfig(EVE --has-opengl)
143if(NOT EVE STREQUAL "no")
144 list(APPEND ALIROOTMODULES EVE)
145endif(NOT EVE STREQUAL "no")
146
147# CERN Modules
148# ------------------------------
149set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
150
151# Check for Pythia 6
152if(EXISTS ${ROOTINCDIR}/TPythia6.h)
153 set(PYTHIA6 TRUE)
154 list(APPEND CERNMODULES PYTHIA6 EVGEN)
155elseif(NOT NOPYTHIA)
156 message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
157endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
158
159# Set Final list of modules
160set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
161
162# Set Module directories
163set(MODDIRS ${MODULES})
164
165# Libraries for Linking
166# ------------------------------
167set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
168set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
169
170# Configure ARVerion.h
171# ------------------------------
172if(Subversion_FOUND)
173 if(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
174 Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
175 set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
176 set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
177 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
178
179 elseif(EXISTS ${PROJECT_SOURCE_DIR}/.git/ )
180 execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git svn info OUTPUT_VARIABLE OUTPUTVAR)
181 string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
182 foreach(f ${OUTPUTVAR})
183 if(${f} MATCHES URL)
184 string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${f})
185 elseif(${f} MATCHES Revision)
186 string(REGEX MATCH "[^: ]+$" ALIROOT_SVN_REVISION ${f})
187 endif(${f} MATCHES URL)
188 endforeach()
189 endif(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
190
191 message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
192 if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
193 file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
194 endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
195 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
196endif(Subversion_FOUND)
197
198#--------------------------------------------------------------------------------#
199# Build Modules #
200#--------------------------------------------------------------------------------#
201
202# Module Variables
203# ------------------------------
204set(ALLLIBS)
205set(ALLEXECS)
206set(INCLUDEFILES)
207set(BINLIBS)
208set(EXPORTFILES)
209
210# Top Level Build Targets
211# ------------------------------
212
213add_custom_target(alilibs-static)
214add_custom_target(include-headers ALL)
215add_custom_target(DA-all)
216add_custom_target(check-all)
217add_custom_target(check-hxml)
218add_custom_target(smell-all)
219add_custom_target(par-all)
220add_custom_target(test-par-all)
221
222# Add Modules
223# ------------------------------
224foreach(MODULE ${MODDIRS})
225 set(${MODULE}ALIBS)
226 configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
227 add_custom_target(${MODULE}-all ALL)
228 add_custom_target(${MODULE}-par-all)
229 add_custom_target(test-${MODULE}-par-all)
230 add_custom_target(${MODULE}-all-static)
231 add_dependencies(alilibs-static "${MODULE}-static")
232 add_subdirectory(${MODULE})
233endforeach(MODULE)
234
235if(DATE_FOUND AND AMORE_FOUND)
236 include (CMakeDA)
237endif(DATE_FOUND AND AMORE_FOUND)
238
239if(RULECHECKER_FOUND)
240 add_custom_target(factfile DEPENDS ${FACTFILE})
241 add_custom_command( OUTPUT ${FACTFILE}
242 COMMAND ${CMAKE_COMMAND} -E echo "Re-generating factfile"
243 COMMAND ${JAVA_RUNTIME} -Xmx1024M -jar ${FACTEXTRACTOR_JAR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
244 DEPENDS check-hxml ${CMAKE_BINARY_DIR}/check-hxml-touchfile ${_factfile_deps}
245 WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
246endif(RULECHECKER_FOUND)
247
248#--------------------------------------------------------------------------------#
249# Additional Targets #
250#--------------------------------------------------------------------------------#
251
252# AliMdc RPM
253# ------------------------------
254
255include (InstallRequiredSystemLibraries)
256include (CPack)
257