Update the mult corr histograms
[u/mrichter/AliRoot.git] / CMakeLists.txt
index 34be441..0c144f2 100644 (file)
-# -*- mode: cmake -*-
+# Top level CMakeList.txt file for the AliRoot Build System
+#
+# Author: Johny Jose (johny.jose@cern.ch)
+#         Port of previous Makefile build to cmake
 
-# Check if cmake has the required version
-cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
 
-# Set name of our project to AliRoot. To be done after check of cmake version
-project(AliRoot NONE)
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
 
-# Set AliRoot variables
-set(ALICE_ROOT $ENV{ALICE_ROOT})
-set(ALICE      $ENV{ALICE})
-set(ALICE_STATIC_BUILD OFF CACHE BOOL "Build also statics libs")
+#--------------------------------------------------------------------------------#
+# Set Basic CMake Configuration                                                  #
+#--------------------------------------------------------------------------------#
 
-message("ALICE_ROOT: ${ALICE_ROOT}")
-set(CMAKE_VERBOSE_MAKEFILE ON)
+project(AliRoot CXX C Fortran)
+set(ALICE_ROOT $ENV{ALICE_ROOT})
+set(ALICE $ENV{ALICE})
 
-# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ 
-set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
-set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
-set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules")
+if(NOT ALICE)
+  message(WARNING "Environment variable ALICE is not set")
+endif(NOT ALICE)
 
-# To fix a hack that has been introduced for the Mac
-if(APPLE)
-  set(CMAKE_INSTALL_NAME_TOOL CMAKE_INSTALL_NAME_TOOL-NOTFOUND)
-endif(APPLE)
+if(NOT ALICE_ROOT)
+  message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
+endif(NOT ALICE_ROOT)
 
-# Setup ROOT
-find_package(ROOT 5.0.0 REQUIRED)
+# Set AliRoot Installation directory 
+if(NOT ALICE_INSTALL)
+  message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You can specify a different location by setting ALICE_INSTALL environment variable")
+  set(ALICE_INSTALL ${ALICE_ROOT})
+else()
+  message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
+endif(NOT ALICE_INSTALL)
 
-set(CMAKE_C_COMPILER $ENV{CC})
-enable_language(C)
+get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
+set(CPACK_COMPONENTS_ALL MDC)
 
-set(CMAKE_CXX_COMPILER $ENV{CXX})
-enable_language(CXX)
+include(ALICE_CMake)
 
-set(CMAKE_Fortran_COMPILER $ENV{F77})
-enable_language(Fortran)
+#--------------------------------------------------------------------------------#
+# Find Packages                                                                  #
+#--------------------------------------------------------------------------------#
 
-# Load some basic macros which are needed later on
-#Include(WriteConfigFile)
-include(Dart)
-include(ALICEMacros)
+# Subversion
+# ------------------------------
 
-# Check if the user wants to build the project in the source directory
-Check_out_of_Source_Build()
+find_package(Subversion REQUIRED)
 
-# searches for needed packages
+# ROOT
+# ------------------------------
 
-Set(ALIROOT_INSTALL_DIR ${ALICE_INSTALL}/${ALICE_TARGET})
+find_package(ROOT REQUIRED)
 
-# Setup GEANT3
-find_package(GEANT3 REQUIRED)
+# IRST Rule Checker 
+# ------------------------------
 
-# Setup RuleChecker
 find_package(RuleChecker)
 
-# Check if DATE is installed
+# DATE
+# ------------------------------ 
+
 find_package(DATE)
 
-# Setup system dependent flags 
-SetupSystem()
-
-Include(CreateSubCMakeFiles)
-CreateSubCMakeFiles()
-
-
-# Set the library version in the main CMakeLists.txt
-
-set(ALIROOT_MAJOR_VERSION 0)
-set(ALIROOT_MINOR_VERSION 0)
-set(ALIROOT_PATCH_VERSION 0)
-set(ALIROOT_VERSION "${ALIROOT_MAJOR_VERSION}.${ALIROOT_MINOR_VERSION}.${ALIROOT_PATCH_VERSION}")
-
-set(ALIROOT_LIBRARY_PROPERTIES ${ALIROOT_LIBRARY_PROPERTIES}
-    VERSION "${ALIROOT_VERSION}"
-    SOVERSION "${ALIROOT_MAJOR_VERSION}"
-    SUFFIX ".so"
-)
-
-# Set version variables
-find_program( READLINK_PROGRAM readlink)
-
-if(READLINK_PROGRAM) 
-  execute_process(COMMAND readlink -f ${ALICE_ROOT} 
-    COMMAND xargs svn info
-    OUTPUT_VARIABLE _svn_out)
-else(READLINK_PROGRAM)
-  execute_process(COMMAND svn info ${ALICE_ROOT} 
-    OUTPUT_VARIABLE _svn_out)
-endif(READLINK_PROGRAM)
-
-string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" 
-  ALIROOT_SVN_REVISION ${_svn_out})
-string(REGEX REPLACE "^.*URL: ([^\n]*).*$" "\\1"
-  ALIROOT_SVN_BRANCH ${_svn_out})
-string(REGEX REPLACE "^.*AliRoot/([^\n]*)" "\\1" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
-
-
-# Additional targets
-add_custom_target(check-all COMMENT "Checking coding conventions")
-message(STATUS "REVISION: ${ALIROOT_SVN_REVISION}")
-message(STATUS "BRANCH: ${ALIROOT_SVN_BRANCH}")
-
-# Delete and recreate header ARVersion Header file 
-execute_process(COMMAND cmake -E remove "${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h")
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in ${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h @ONLY)
-
-# Get list of enabled root features
-execute_process(COMMAND root-config --features OUTPUT_VARIABLE FEATURES)
-string(REGEX MATCH "pythia6" PYTHIA6 ${FEATURES})
-string(REGEX MATCH "pythia8" PYTHIA8 ${FEATURES})
-if(PYTHIA6)
-  message(STATUS "Pythia6 enabled")
-endif(PYTHIA6)
-if(PYTHIA8)
-  message(STATUS "Pythia8 enabled")
-endif(PYTHIA8)
-
-# Recurse into the given subdirectories.  This does not actually
-# cause another cmake executable to run.  The same process will walk through
-# the project's entire directory structure.
-
-
-#Add_subdirectory(TFluka) 
-#Add_subdirectory(THydjet) 
-
-Add_subdirectory(ACORDE) 
-Add_subdirectory(ANALYSIS) 
-Add_subdirectory(BCM) 
-Add_subdirectory(CORRFW) 
-Add_subdirectory(DPMJET) 
-Add_subdirectory(EMCAL) 
-Add_subdirectory(EPOS) 
-Add_subdirectory(ESDCheck) 
-Add_subdirectory(EVE) 
-Add_subdirectory(EVGEN) 
-Add_subdirectory(FASTSIM) 
-Add_subdirectory(FMD)
-Add_subdirectory(HERWIG) 
-Add_subdirectory(HIJING) 
-Add_subdirectory(HLT) 
-Add_subdirectory(HMPID) 
-Add_subdirectory(ITS) 
-Add_subdirectory(JETAN)
-Add_subdirectory(LHAPDF) 
-Add_subdirectory(LHC) 
-Add_subdirectory(MICROCERN) 
-Add_subdirectory(MONITOR) 
-Add_subdirectory(MUON) 
-Add_subdirectory(PHOS) 
-Add_subdirectory(PMD) 
-Add_subdirectory(PWG0) 
-Add_subdirectory(PWG1) 
-Add_subdirectory(PWG2) 
-Add_subdirectory(PWG3) 
-Add_subdirectory(PWG4)
-if(PYTHIA6)
-Add_subdirectory(PYTHIA6)
-Add_subdirectory(RALICE) 
-Add_subdirectory(TPHIC) 
-endif(PYTHIA6)
-if(PYTHIA8)
-Add_subdirectory(PYTHIA8) 
-endif(PYTHIA8)
-Add_subdirectory(RAW) 
-Add_subdirectory(STAT) 
-Add_subdirectory(STEER)
-Add_subdirectory(STRUCT) 
-Add_subdirectory(T0) 
-Add_subdirectory(TDPMjet) 
-Add_subdirectory(TEPEMGEN) 
-Add_subdirectory(THbtp) 
-Add_subdirectory(THerwig) 
-Add_subdirectory(THijing)
-#Add_subdirectory(TIsajet) 
-Add_subdirectory(TOF) 
-Add_subdirectory(TPC)
-Add_subdirectory(TRD) 
-Add_subdirectory(TRIGGER) 
-Add_subdirectory(TTherminator) 
-Add_subdirectory(TUHKMgen) 
-Add_subdirectory(VZERO) 
-Add_subdirectory(ZDC) 
-Add_subdirectory(ALIROOT)
+# GEANT3
+# ------------------------------
+
+find_package(GEANT3)
+
+# AMORE
+# ------------------------------
+
+find_package(AMORE)
+
+# AliRoot CPack configuration                                                    
+#-------------------------------
+
+find_package(CPack)
+
+
+#--------------------------------------------------------------------------------#
+# Environment/Compiler Configuration                                             #
+#--------------------------------------------------------------------------------#
+
+ALICE_CheckOutOfSourceBuild()
+ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
+ALICE_RootConfig(CMAKE_C_COMPILER --cc)
+ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
+ALICE_ConfigurePlatform()
+ALICE_ConfigureCompiler()
+
+
+#--------------------------------------------------------------------------------#
+# AliRoot Path Settings                                                          #
+#--------------------------------------------------------------------------------#
+
+ALICE_DevFlagsOutput()
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
+set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
+file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
+set(EXPORTDIRS "${ALICE_INSTALL}/include")
+set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
+
+
+#--------------------------------------------------------------------------------#
+# AliRoot Modules                                                                #
+#--------------------------------------------------------------------------------#
+
+# Exclude Module from all target
+# ------------------------------
+
+#set(EXCLUDEMODULES THydjet SHUTTLE)
+
+
+# Standard Modules
+# ------------------------------
+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 )
+
+if(THydjet)
+  list(APPEND ALIROOTMODULES THydjet)
+endif(THydjet)
+
+if(SHUTTLE)
+  list(APPEND ALIROOTMODULES SHUTTLE)
+endif(SHUTTLE)
+
+# Additional Modules
+# ------------------------------
+list(APPEND ALIROOTMODULES TUHKMgen EPOS)
+
+# EVE
+# ------------------------------
+ALICE_RootConfig(EVE --has-opengl)
+if(NOT EVE STREQUAL "no")
+  list(APPEND ALIROOTMODULES EVE)
+endif(NOT EVE STREQUAL "no")
+
+# CERN Modules
+# ------------------------------
+set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
+
+# Check for Pythia 6
+if(EXISTS ${ROOTINCDIR}/TPythia6.h)
+  set(PYTHIA6 TRUE)
+  list(APPEND CERNMODULES PYTHIA6 RALICE EVGEN)
+elseif(NOT NOPYTHIA)
+  message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
+endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
+
+# Set Final list of modules 
+set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
+
+# Set Module directories
+set(MODDIRS ${MODULES})
+
+# Libraries for Linking
+# ------------------------------
+set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER)
+set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
+
+# Configure ARVerion.h
+# ------------------------------
+if(Subversion_FOUND)
+  Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
+  set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
+  set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
+  string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
+  message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
+  if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
+    file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
+  endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
+  configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
+endif(Subversion_FOUND)
+
+#--------------------------------------------------------------------------------#
+# Build Modules                                                                  #
+#--------------------------------------------------------------------------------#
+
+# Module Variables
+# ------------------------------
+set(ALLLIBS)
+set(ALLEXECS)
+set(INCLUDEFILES)
+set(BINLIBS)
+set(EXPORTFILES)
+
+# Top Level Build Targets
+# ------------------------------
+
+add_custom_target(alilibs-static)
+add_custom_target(include-headers)
+add_custom_target(DA-all)
+add_custom_target(check-all)
+add_custom_target(par-all)
+add_custom_target(test-par-all)
+
+# Add Modules
+# ------------------------------
+foreach(MODULE ${MODDIRS})
+  set(${MODULE}ALIBS)
+  configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
+  add_custom_target(${MODULE}-all ALL)
+  add_custom_target(${MODULE}-check-all)
+  add_custom_target(${MODULE}-par-all)
+  add_custom_target(test-${MODULE}-par-all)
+  add_dependencies(check-all "${MODULE}-check-all")
+  add_custom_target(${MODULE}-all-static)
+  add_dependencies(alilibs-static "${MODULE}-static")
+  add_subdirectory(${MODULE})
+endforeach(MODULE)
+
+if(DATE_FOUND AND AMORE_FOUND)
+  include (CMakeDA)
+endif(DATE_FOUND AND AMORE_FOUND)
+
+#--------------------------------------------------------------------------------#
+# Additional Targets                                                             #
+#--------------------------------------------------------------------------------#
+
+# AliMdc RPM
+# ------------------------------
+
+include (InstallRequiredSystemLibraries)
+include (CPack)