Updated cmake readme file
[u/mrichter/AliRoot.git] / CMakeLists.txt
CommitLineData
e969a926 1# -*- mode: cmake -*-
e969a926 2
3# Check if cmake has the required version
7f40fabf 4cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
e969a926 5
6# Set name of our project to AliRoot. To be done after check of cmake version
7f40fabf 7project(AliRoot NONE)
e969a926 8
9# Set AliRoot variables
3ea0d710 10
11set(ALICE_INSTALL $ENV{ALICE_INSTALL})
7f40fabf 12set(ALICE_ROOT $ENV{ALICE_ROOT})
7f40fabf 13set(ALICE_STATIC_BUILD OFF CACHE BOOL "Build also statics libs")
3ea0d710 14execute_process(COMMAND root-config --arch OUTPUT_VARIABLE ALICE_TARGET)
15string (REGEX REPLACE "\n" "" ALICE_TARGET ${ALICE_TARGET})
16
17if(NOT ALICE_INSTALL)
18message(FATAL_ERROR "Please set environment variable ALICE_INSTALL to the AliRoot installation directory")
19endif(NOT ALICE_INSTALL)
20if(NOT ALICE_ROOT)
21message(FATAL_ERROR "Please set environment variable ALICE_ROOT to the AliRoot source directory")
22endif(NOT ALICE_ROOT)
23
e969a926 24
7f40fabf 25message("ALICE_ROOT: ${ALICE_ROOT}")
26set(CMAKE_VERBOSE_MAKEFILE ON)
e969a926 27
28# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/
3ea0d710 29set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET})
30set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET})
7f40fabf 31set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules")
e969a926 32
f7d3fd75 33# To fix a hack that has been introduced for the Mac
7f40fabf 34if(APPLE)
35 set(CMAKE_INSTALL_NAME_TOOL CMAKE_INSTALL_NAME_TOOL-NOTFOUND)
36endif(APPLE)
f7d3fd75 37
3ea0d710 38# Setup ROOT and C, C++ , Fortran Compilers
7f40fabf 39find_package(ROOT 5.0.0 REQUIRED)
7f40fabf 40set(CMAKE_C_COMPILER $ENV{CC})
41enable_language(C)
7f40fabf 42set(CMAKE_CXX_COMPILER $ENV{CXX})
43enable_language(CXX)
7f40fabf 44set(CMAKE_Fortran_COMPILER $ENV{F77})
45enable_language(Fortran)
f7d3fd75 46
e969a926 47# Load some basic macros which are needed later on
48#Include(WriteConfigFile)
3ea0d710 49
50include (CTest)
7f40fabf 51include(ALICEMacros)
e969a926 52
53# Check if the user wants to build the project in the source directory
54Check_out_of_Source_Build()
55
56# searches for needed packages
57
7f40fabf 58Set(ALIROOT_INSTALL_DIR ${ALICE_INSTALL}/${ALICE_TARGET})
e969a926 59
60# Setup GEANT3
7c786cf9 61find_package(GEANT3)
e969a926 62
63# Setup RuleChecker
7f40fabf 64find_package(RuleChecker)
e969a926 65
66# Check if DATE is installed
7f40fabf 67find_package(DATE)
e969a926 68
69# Setup system dependent flags
70SetupSystem()
71
7f40fabf 72Include(CreateSubCMakeFiles)
73CreateSubCMakeFiles()
96c0c856 74
96c0c856 75
e969a926 76# Set the library version in the main CMakeLists.txt
7f40fabf 77
78set(ALIROOT_MAJOR_VERSION 0)
79set(ALIROOT_MINOR_VERSION 0)
80set(ALIROOT_PATCH_VERSION 0)
81set(ALIROOT_VERSION "${ALIROOT_MAJOR_VERSION}.${ALIROOT_MINOR_VERSION}.${ALIROOT_PATCH_VERSION}")
82
83set(ALIROOT_LIBRARY_PROPERTIES ${ALIROOT_LIBRARY_PROPERTIES}
e969a926 84 VERSION "${ALIROOT_VERSION}"
85 SOVERSION "${ALIROOT_MAJOR_VERSION}"
86 SUFFIX ".so"
87)
88
89# Set version variables
7f40fabf 90find_program( READLINK_PROGRAM readlink)
6455495f 91
7f40fabf 92if(READLINK_PROGRAM)
93 execute_process(COMMAND readlink -f ${ALICE_ROOT}
6455495f 94 COMMAND xargs svn info
95 OUTPUT_VARIABLE _svn_out)
7f40fabf 96else(READLINK_PROGRAM)
97 execute_process(COMMAND svn info ${ALICE_ROOT}
6455495f 98 OUTPUT_VARIABLE _svn_out)
7f40fabf 99endif(READLINK_PROGRAM)
e969a926 100
7f40fabf 101string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1"
e969a926 102 ALIROOT_SVN_REVISION ${_svn_out})
7f40fabf 103string(REGEX REPLACE "^.*URL: ([^\n]*).*$" "\\1"
e969a926 104 ALIROOT_SVN_BRANCH ${_svn_out})
7f40fabf 105string(REGEX REPLACE "^.*AliRoot/([^\n]*)" "\\1" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
106
e969a926 107
108# Additional targets
7f40fabf 109add_custom_target(check-all COMMENT "Checking coding conventions")
110message(STATUS "REVISION: ${ALIROOT_SVN_REVISION}")
111message(STATUS "BRANCH: ${ALIROOT_SVN_BRANCH}")
112
113# Delete and recreate header ARVersion Header file
114execute_process(COMMAND cmake -E remove "${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h")
115configure_file(${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in ${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h @ONLY)
116
117# Get list of enabled root features
118execute_process(COMMAND root-config --features OUTPUT_VARIABLE FEATURES)
119string(REGEX MATCH "pythia6" PYTHIA6 ${FEATURES})
120string(REGEX MATCH "pythia8" PYTHIA8 ${FEATURES})
7c786cf9 121string(REGEX MATCH "opengl" OPENGL ${FEATURES})
7f40fabf 122if(PYTHIA6)
123 message(STATUS "Pythia6 enabled")
124endif(PYTHIA6)
125if(PYTHIA8)
126 message(STATUS "Pythia8 enabled")
127endif(PYTHIA8)
7c786cf9 128if(OPENGL)
129 message(STATUS "OpenGL enabled")
130endif(OPENGL)
131option (TFLUKA "Build TFluka" OFF)
132option (THYDJET "Build THydjet" OFF)
133option (SHUTTLE "Build SHUTTLE" OFF)
134
135
e969a926 136# Recurse into the given subdirectories. This does not actually
137# cause another cmake executable to run. The same process will walk through
138# the project's entire directory structure.
e969a926 139Add_subdirectory(ACORDE)
140Add_subdirectory(ANALYSIS)
141Add_subdirectory(BCM)
142Add_subdirectory(CORRFW)
143Add_subdirectory(DPMJET)
144Add_subdirectory(EMCAL)
fe9fbf07 145Add_subdirectory(EPOS)
e969a926 146Add_subdirectory(ESDCheck)
7c786cf9 147if(OPENGL)
e969a926 148Add_subdirectory(EVE)
7c786cf9 149endif(OPENGL)
e969a926 150Add_subdirectory(EVGEN)
151Add_subdirectory(FASTSIM)
152Add_subdirectory(FMD)
e969a926 153Add_subdirectory(HERWIG)
154Add_subdirectory(HIJING)
155Add_subdirectory(HLT)
156Add_subdirectory(HMPID)
157Add_subdirectory(ITS)
158Add_subdirectory(JETAN)
159Add_subdirectory(LHAPDF)
160Add_subdirectory(LHC)
161Add_subdirectory(MICROCERN)
162Add_subdirectory(MONITOR)
163Add_subdirectory(MUON)
164Add_subdirectory(PHOS)
165Add_subdirectory(PMD)
166Add_subdirectory(PWG0)
167Add_subdirectory(PWG1)
168Add_subdirectory(PWG2)
169Add_subdirectory(PWG3)
170Add_subdirectory(PWG4)
7f40fabf 171if(PYTHIA6)
e969a926 172Add_subdirectory(PYTHIA6)
173Add_subdirectory(RALICE)
7f40fabf 174Add_subdirectory(TPHIC)
175endif(PYTHIA6)
176if(PYTHIA8)
177Add_subdirectory(PYTHIA8)
178endif(PYTHIA8)
e969a926 179Add_subdirectory(RAW)
7c786cf9 180if(SHUTTLE)
7c786cf9 181Add_subdirectory(SHUTTLE)
182endif(SHUTTLE)
e969a926 183Add_subdirectory(STAT)
184Add_subdirectory(STEER)
185Add_subdirectory(STRUCT)
186Add_subdirectory(T0)
187Add_subdirectory(TDPMjet)
188Add_subdirectory(TEPEMGEN)
189Add_subdirectory(THbtp)
190Add_subdirectory(THerwig)
191Add_subdirectory(THijing)
7c786cf9 192if(TFLUKA)
193Add_subdirectory(TFluka)
194endif(TFLUKA)
195if(THYDJET)
196Add_subdirectory(THydjet)
197endif(THYDJET)
e969a926 198Add_subdirectory(TOF)
199Add_subdirectory(TPC)
e969a926 200Add_subdirectory(TRD)
96c0c856 201Add_subdirectory(TRIGGER)
e969a926 202Add_subdirectory(TTherminator)
fe9fbf07 203Add_subdirectory(TUHKMgen)
e969a926 204Add_subdirectory(VZERO)
205Add_subdirectory(ZDC)
e969a926 206Add_subdirectory(ALIROOT)
3ea0d710 207add_subdirectory(test)
eee962e6 208add_test ("Aliroot_executable" aliroot -q)
209#copy testing files
210execute_process(COMMAND "cmake" "-E" "copy_directory" "${ALICE_ROOT}/test" "${ALICE_INSTALL}/test")
e969a926 211
7c786cf9 212message("Note : In order for the warnings test to execute successfully you need to log your make build output to make.log in the ALICE_INSTALL Directory using this command \n make -k > make.log 2>&1")