CMake: FindROOT returns etcdir
[u/mrichter/AliRoot.git] / CMakeLists.txt
CommitLineData
d50827fc 1# **************************************************************************
2# * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
3# * *
4# * Author: The ALICE Off-line Project. *
5# * Contributors are mentioned in the code where appropriate. *
6# * *
7# * Permission to use, copy, modify and distribute this software and its *
8# * documentation strictly for non-commercial purposes is hereby granted *
9# * without fee, provided that the above copyright notice appears in all *
10# * copies and that both the copyright notice and this permission notice *
11# * appear in the supporting documentation. The authors make no claims *
12# * about the suitability of this software for any purpose. It is *
13# * provided "as is" without express or implied warranty. *
14# **************************************************************************
15
16#--------------------------------------------------------------------------#
17# Set Basic CMake Configuration #
18#--------------------------------------------------------------------------#
e969a926 19
139cbc46 20cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
e969a926 21
d50827fc 22project(AliRoot CXX C)
bf4c2121 23
04484146 24message(STATUS "CMake platform: ${CMAKE_SYSTEM}")
25message(STATUS "Build folder: ${AliRoot_BINARY_DIR}")
26message(STATUS "Source folder: ${AliRoot_SOURCE_DIR}")
27message(STATUS "Installation folder: ${CMAKE_INSTALL_PREFIX}")
34ab4e08 28
29# You can change the build type using
30# cmake -DCMAKE_BUILD_TYPE=DEBUG | RELEASE | RELWITHDEBINFO | MINSIZEREL ...
31if (NOT CMAKE_BUILD_TYPE)
32 set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
33endif(NOT CMAKE_BUILD_TYPE)
34message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
35
04484146 36
37if(CMAKE_INSTALL_PREFIX STREQUAL "${AliRoot_SOURCE_DIR}")
38 message(FATAL_ERROR "Please choose a different installation point than the source tree!")
39endif()
40
d50827fc 41# Path to additonal modules
c2f9135f 42set(CMAKE_MODULE_PATH "${AliRoot_SOURCE_DIR}/cmake")
43
44# AliRoot version extracted from Git repository
45# Sets 4 git variables
46# - GIT_REFSPEC - complete name of the current reference
47# - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference
48# - GIT_SHA1 - current hash in the long format
49# - GIT_SHORT_SHA1 - current hash in the short format
50# - ALIROOT_VERSION = ALIROOT_BRANCH
51# - ALIROOT_REVISION = GIT_SHORT_SHA1
52include(CheckGitVersion)
b22a7396 53
54# - CLANG_MAJOR.CLANG_MINOR or
55# - GCC_MAJOR.GCC_MINOR.GCC_PATCH
56include(CheckCompiler)
57
34ab4e08 58# Shared library suffix
0e5d2ccd 59if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
34ab4e08 60 set(CMAKE_SHARED_LIBRARY_SUFFIX .so)
0e5d2ccd 61endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
c4faffc2 62
f82bfa66 63# Checking first for DIM, DATE, AMORE and daqDA
64# in case ROOT Extra static library needs to be enabled
65
66# DATE
ec8c8ea6 67# date-config needs DIMDIR and ODIR set
f82bfa66 68if(DATE_CONFIG)
ec8c8ea6 69 if(DIMDIR AND ODIR)
70 find_package(DATE)
71 else()
72 message(FATAL_ERROR "DATE enabled but no DIMDIR and ODIR set. Please set DIMDIR and ODIR")
73 endif()
74endif()
f82bfa66 75
76# daqDA
77if(daqDA)
78 find_package(daqDA)
79endif(daqDA)
80
81# AMORE
82if(AMORE_CONFIG)
ec8c8ea6 83 if(ROOTSYS)
84 find_package(AMORE)
85 else()
86 message(FATAL_ERROR "AMORE enabled but no ROOTSYS defined")
87 endif()
f82bfa66 88endif(AMORE_CONFIG)
89
168930f9 90# id DARPM we enable DA if it is not set
91if(DARPM)
92 if(NOT DA)
93 set(DA ON)
94 endif(NOT DA)
95endif(DARPM)
96
f82bfa66 97# DA is enabled
98if(DA)
99 if(NOT DIMDIR AND NOT ODIR)
100 set(DA FALSE)
101 message(FATAL_ERROR "Das enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)")
102 endif()
103
104 if(NOT DATE_FOUND)
105 set(DA FALSE)
106 message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable")
107 endif()
108
109 if(NOT daqDA_FOUND)
110 set(DA FALSE)
111 message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
112 endif()
113
114 if(NOT AMORE_FOUND)
115 set(DA FALSE)
116 message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable")
117 endif()
118
119 # Enable static libraries
120 set(ALIROOT_STATIC TRUE)
121 message(STATUS "DAs enabled")
122endif(DA)
123
fae85bcc 124# MDC rpm creation enables the static build
125if(MDCRPM)
126 set(ALIROOT_STATIC TRUE)
127 message(STATUS "AliMDC RPM enabled. AliRoot static build enabled")
128endif(MDCRPM)
129
7c325e0b 130# ROOT configuration mandatory
131# FindRoot has to be after the enabling of DA due to libRootExtra
132# Do not put it above DA
133if(ROOTSYS)
134 find_package(ROOT REQUIRED)
135
136 # ROOT must be build with XML2 support
137 if(NOT ROOT_HASXML)
138 message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support")
139 endif(NOT ROOT_HASXML)
140else()
141 message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
142endif(ROOTSYS)
143
144# ROOT dictionaries and maps
145include(CMakeALICE)
146
147
1dbe1076 148# If no Fortran, i.e on Windows
149# We need to specify ROOT fortran
150# (f95 comes before gfortran in default module)
151include(CheckLanguage)
152
153if(ROOT_FORTRAN)
154 message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
155 set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
156else()
157 message(STATUS "Using default system Fortran compiler")
158endif(ROOT_FORTRAN)
159
160check_language(Fortran)
161if(CMAKE_Fortran_COMPILER)
162 enable_language(Fortran OPTIONAL)
163else()
f82bfa66 164 message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
1dbe1076 165endif()
166
a2a27b4c 167# Optional: Doxygen for reference doc generation
168find_package(Doxygen)
169if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
170 message(STATUS "Doxygen ${DOXYGEN_VERSION} and Graphviz found: ${DOXYGEN_EXECUTABLE}, ${DOXYGEN_DOT_EXECUTABLE}")
171 set(CAN_GENERATE_DOC TRUE)
172else()
173 message(STATUS "Doxygen and Graphviz not found. Disabling support for documentation generation")
174endif(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
175
b5576c4e 176# FastJet
177find_package(FASTJET)
178
3c77e1ef 179# ZEROMQ
180find_package(ZeroMQ)
181
fb0ae393 182# Generating the AliRoot-config.cmake file
183configure_file(${PROJECT_SOURCE_DIR}/cmake/AliRoot-config.cmake.in ${CMAKE_BINARY_DIR}/version/AliRoot-config.cmake @ONLY)
7187fc7f 184install(FILES ${PROJECT_BINARY_DIR}/version/AliRoot-config.cmake DESTINATION etc)
fb0ae393 185
4d31eb1c 186# General flags -> Should be moved into a configuration file
187set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
139cbc46 188set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE)
d50827fc 189
63697604 190# AliRoot base modules
17f9c1f8 191add_subdirectory(STEER)
17f9c1f8 192add_subdirectory(RAW)
63697604 193add_subdirectory(ANALYSIS)
194
195# Include Vc own cmake
196include(Vc/Vc.cmake)
197add_subdirectory(Vc)
198
9815baac 199# AliRoot common macros
200add_subdirectory(macros)
201
63697604 202# AliRoot modules
203add_subdirectory(ACORDE)
204add_subdirectory(AD)
205add_subdirectory(BCM)
63697604 206add_subdirectory(EMCAL)
9d62600c 207add_subdirectory(EPOS)
63697604 208add_subdirectory(EVE)
209add_subdirectory(EVGEN)
210add_subdirectory(FASTSIM)
211add_subdirectory(FIT)
212add_subdirectory(FMD)
213add_subdirectory(HLT)
214add_subdirectory(HMPID)
17f9c1f8 215add_subdirectory(ITS)
80afaccc 216add_subdirectory(MFT)
63697604 217add_subdirectory(MONITOR)
218add_subdirectory(MUON)
63697604 219add_subdirectory(PHOS)
220add_subdirectory(PMD)
a31c2f7d 221add_subdirectory(PYTHIA8)
63697604 222add_subdirectory(STARLIGHT)
223add_subdirectory(STAT)
224add_subdirectory(STRUCT)
97e8d2a8 225add_subdirectory(T0)
72017ac8 226add_subdirectory(TDPMjet)
e706c082 227add_subdirectory(TEvtGen)
16765dcc 228add_subdirectory(THerwig)
97e8d2a8 229add_subdirectory(TOF)
63697604 230add_subdirectory(TPC)
97e8d2a8 231add_subdirectory(TRD)
25f88fb9 232add_subdirectory(TRIGGER)
63697604 233add_subdirectory(TTherminator)
234add_subdirectory(VZERO)
235add_subdirectory(ZDC)
a2a27b4c 236add_subdirectory(doxygen)
67018bf4 237
63697604 238# Fortran modules
1dbe1076 239if(CMAKE_Fortran_COMPILER)
c462af85 240 add_subdirectory(DIME)
241 add_subdirectory(DPMJET)
64609fcd 242 add_subdirectory(HERWIG)
63697604 243 add_subdirectory(HIJING)
116e4267 244 add_subdirectory(LHAPDF)
116e4267 245 add_subdirectory(MICROCERN)
63697604 246 add_subdirectory(PYTHIA6)
ba812042 247 add_subdirectory(TEPEMGEN)
27b08c46 248 add_subdirectory(THbtp)
a95d9137 249 add_subdirectory(THijing)
63697604 250 add_subdirectory(THydjet)
251 add_subdirectory(TPHIC)
252 add_subdirectory(TUHKMgen)
9b863d49 253 add_subdirectory(TAmpt)
1dbe1076 254endif(CMAKE_Fortran_COMPILER)
67018bf4 255
7c29eb0f 256add_subdirectory(data)
71f72706 257add_subdirectory(GRP)
807153f0 258add_subdirectory(OCDB)
259add_subdirectory(QAref)
808c7763 260
67018bf4 261# Enable SHUTTLE compilation
262# Check if DIMDIR and ODIR are set
263if(SHUTTLE)
101cc341 264 if(ROOT_HASALIEN STREQUAL "no")
265 message(FATAL_ERROR "Shuttle needs ROOT build with AliEn support. Please build ROOT with AliEn support. Do not forget to set ALIEN to your AliEn installation")
266 endif()
267
67018bf4 268 if(DIMDIR AND ODIR AND ALIEN)
269 add_subdirectory(SHUTTLE)
270 else()
271 message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN")
272 endif()
273endif(SHUTTLE)
034aa4b3 274
34ab4e08 275add_subdirectory(ALIROOT)