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