]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CMakeLists.txt
Reducing ZDC pedestal OCDB to 1 object
[u/mrichter/AliRoot.git] / CMakeLists.txt
index 85189bf8c9c9a1f038308afbaf97968f716080f7..63195d0287f5e34ff1632b1ebec9e301df05b615 100644 (file)
 # -*- mode: cmake -*-
 
 # Check if cmake has the required version
-Cmake_Minimum_Required(VERSION 2.6 FATAL_ERROR)
+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)
+project(AliRoot NONE)
 
 # Set AliRoot variables
-Set(ALICE_ROOT $ENV{ALICE_ROOT})
-Set(ALICE      $ENV{ALICE})
-Set(ALICE_STATIC_BUILD ON CACHE BOOL "Build also statics libs")
+set(CMAKE_VERBOSE_MAKEFILES OFF)
+#fix for MACOSX
+SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem")
+SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem") 
 
-#Set(CMAKE_VERBOSE_MAKEFILE ON)
+set(ALICE_INSTALL $ENV{ALICE_INSTALL})
+set(ALICE_ROOT $ENV{ALICE_ROOT})
+set(ALICE_STATIC_BUILD OFF CACHE BOOL "Build also statics libs")
+execute_process(COMMAND root-config --arch OUTPUT_VARIABLE ALICE_TARGET)
+string (REGEX REPLACE "\n" "" ALICE_TARGET ${ALICE_TARGET})
 
-# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ 
-Set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules")
+if(NOT ALICE_INSTALL)
+message(FATAL_ERROR "Please set environment variable ALICE_INSTALL to the AliRoot installation directory")
+endif(NOT ALICE_INSTALL)
+if(NOT ALICE_ROOT)
+message(FATAL_ERROR "Please set environment variable ALICE_ROOT to the AliRoot source directory")
+endif(NOT ALICE_ROOT)
 
-# 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)
 
+message("ALICE_ROOT: ${ALICE_ROOT}")
 
-# Setup ROOT
-Find_package(ROOT 5.0.0 REQUIRED)
 
-Set(CMAKE_C_COMPILER $ENV{CC})
-Enable_Language(C)
+# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ 
+set(PROJECT_BINARY_DIR ${ALICE_INSTALL})
+set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET})
+set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET})
+set(CMAKE_MODULE_PATH "${ALICE_ROOT}/cmake/modules")
 
-Set(CMAKE_CXX_COMPILER $ENV{CXX})
-Enable_Language(CXX)
+# 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)
 
-Set(CMAKE_Fortran_COMPILER $ENV{F77})
-Enable_Language(Fortran)
+# Setup ROOT and C, C++ , Fortran Compilers
+find_package(ROOT 5.0.0 REQUIRED)
+set(CMAKE_C_COMPILER $ENV{CC})
+enable_language(C)
+set(CMAKE_CXX_COMPILER $ENV{CXX})
+enable_language(CXX)
+set(CMAKE_Fortran_COMPILER $ENV{F77})
+enable_language(Fortran)
 
 # Load some basic macros which are needed later on
 #Include(WriteConfigFile)
-Include(Dart)
-Include(ALICEMacros)
+
+include (CTest)
+include(ALICEMacros)
 
 # Check if the user wants to build the project in the source directory
 Check_out_of_Source_Build()
 
 # searches for needed packages
 
-Set(ALIROOT_INSTALL_DIR ${ALICE_ROOT}/${ALICE_TARGET})
+Set(ALIROOT_INSTALL_DIR ${ALICE_INSTALL}/${ALICE_TARGET})
 
 # Setup GEANT3
-Find_package(GEANT3 REQUIRED)
+find_package(GEANT3)
 
 # Setup RuleChecker
-Find_Package(RuleChecker)
+find_package(RuleChecker)
 
 # Check if DATE is installed
-Find_Package(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}
+
+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
-Execute_process(COMMAND svn info $ENV{ALICE_ROOT} 
-  OUTPUT_VARIABLE _svn_out)
+find_program( READLINK_PROGRAM readlink)
 
-String(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" 
+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: https://alisoft.cern.ch/AliRoot/([^\n]*).*$" "w \\1"
+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")
-
-# Configure special include file
-If(UNIX)
-  Set(_in ${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in)
-  Set(_out ${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h)
-  Add_custom_target(ARversion ALL
-    COMMAND sed < ${_in}
-                -e "s/\\@ALIROOT_SVN_REVISION\\@/${ALIROOT_SVN_REVISION}/" 
-                -e "s/\\@ALIROOT_SVN_BRANCH\\@/${ALIROOT_SVN_BRANCH}/" 
-                -e "s/\\@ALIROOT_VERSION\\@/${ALIROOT_VERSION}/" >  ${_out})
-  Install(FILES ${_out} DESTINATION ${ALIROOT_INSTALL_DIR}/include)
-Endif(UNIX)
-
-# This would work, but just once... we want this to happen at every make
-#  Configure_file(${CMAKE_CURRENT_SOURCE_DIR}/STEER/ARVersion.h.in 
-#${CMAKE_CURRENT_BINARY_DIR}/STEER/ARVersion.h @ONLY)
+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})
+string(REGEX MATCH "opengl" OPENGL ${FEATURES})
+if(PYTHIA6)
+  message(STATUS "Pythia6 enabled")
+endif(PYTHIA6)
+if(PYTHIA8)
+  message(STATUS "Pythia8 enabled")
+endif(PYTHIA8)
+if(OPENGL)
+  message(STATUS "OpenGL enabled")     
+endif(OPENGL)  
+option (TFLUKA "Build TFluka" OFF)
+option (THYDJET "Build THydjet" OFF)
+option (SHUTTLE "Build SHUTTLE" OFF)
+
+
+add_custom_target(STEER-all)
+add_custom_target(PHOS-all)    
+add_custom_target(TRD-all) 
+add_custom_target(TPC-all)
+add_custom_target(ZDC-all) 
+add_custom_target(MUON-all) 
+add_custom_target(PMD-all) 
+add_custom_target(FMD-all)
+add_custom_target(TOF-all) 
+add_custom_target(ITS-all) 
+add_custom_target(ACORDE-all) 
+add_custom_target(HMPID-all) 
+add_custom_target(T0-all) 
+add_custom_target(BCM-all) 
+add_custom_target(STRUCT-all) 
+add_custom_target(EVGEN-all) 
+add_custom_target(RALICE-all) 
+add_custom_target(VZERO-all) 
+add_custom_target(THijing-all)
+add_custom_target(THbtp-all) 
+add_custom_target(EMCAL-all) 
+add_custom_target(THerwig-all) 
+add_custom_target(TEPEMGEN-all) 
+add_custom_target(FASTSIM-all) 
+add_custom_target(TPHIC-all) 
+add_custom_target(RAW-all) 
+add_custom_target(MONITOR-all) 
+add_custom_target(ANALYSIS-all) 
+add_custom_target(JETAN-all)
+add_custom_target(HLT-all) 
+add_custom_target(LHC-all) 
+add_custom_target(ESDCheck-all) 
+add_custom_target(STAT-all) 
+add_custom_target(TTherminator-all) 
+add_custom_target(CORRFW-all) 
+add_custom_target(DPMJET-all) 
+add_custom_target(TDPMjet-all) 
+add_custom_target(PWG0-all) 
+add_custom_target(PWG1-all) 
+add_custom_target(PWG2-all) 
+add_custom_target(PWG3-all) 
+add_custom_target(PWG4-all)
+add_custom_target(TRIGGER-all) 
+add_custom_target(TUHKMgen-all) 
+add_custom_target(EPOS-all) 
+add_custom_target(PYTHIA8-all) 
+add_custom_target(EVE-all) 
+add_custom_target(TFluka-all)
+add_custom_target(THydjet-all)
+add_custom_target(SHUTTLE-all)
+add_custom_target(LHAPDF-all) 
+add_custom_target(HIJING-all) 
+add_custom_target(MICROCERN-all) 
+add_custom_target(HERWIG-all) 
+add_custom_target(PYTHIA6-all)
+add_custom_target(ALIROOT-all)
+
+
 
 # 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(PYTHIA8) 
-#Add_subdirectory(TFluka) 
-#Add_subdirectory(THydjet) 
-
+Add_subdirectory(STEER)
+Add_subdirectory(PHOS) 
+Add_subdirectory(TRD) 
+Add_subdirectory(TPC)
+Add_subdirectory(ZDC) 
+Add_subdirectory(MUON) 
+Add_subdirectory(PMD) 
+Add_subdirectory(FMD)
+Add_subdirectory(TOF) 
+Add_subdirectory(ITS) 
 Add_subdirectory(ACORDE) 
-Add_subdirectory(ANALYSIS) 
+Add_subdirectory(HMPID) 
+Add_subdirectory(T0) 
 Add_subdirectory(BCM) 
-Add_subdirectory(CORRFW) 
-Add_subdirectory(DPMJET) 
-Add_subdirectory(EMCAL) 
-Add_subdirectory(ESDCheck) 
-Add_subdirectory(EVE) 
+Add_subdirectory(STRUCT) 
 Add_subdirectory(EVGEN) 
+Add_subdirectory(RALICE) 
+Add_subdirectory(VZERO) 
+Add_subdirectory(THijing)
+Add_subdirectory(THbtp) 
+Add_subdirectory(EMCAL) 
+Add_subdirectory(THerwig) 
+Add_subdirectory(TEPEMGEN) 
 Add_subdirectory(FASTSIM) 
-Add_subdirectory(FMD)
-Add_subdirectory(HBTAN)
-Add_subdirectory(HERWIG) 
-Add_subdirectory(HIJING) 
-Add_subdirectory(HLT) 
-Add_subdirectory(HMPID) 
-Add_subdirectory(ITS) 
+Add_subdirectory(TPHIC) 
+Add_subdirectory(RAW) 
+Add_subdirectory(MONITOR) 
+Add_subdirectory(ANALYSIS) 
 Add_subdirectory(JETAN)
-Add_subdirectory(LHAPDF
+Add_subdirectory(HLT
 Add_subdirectory(LHC) 
-Add_subdirectory(MICROCERN) 
-Add_subdirectory(MONITOR) 
-Add_subdirectory(MUON) 
-Add_subdirectory(PHOS) 
-Add_subdirectory(PMD) 
+Add_subdirectory(ESDCheck) 
+Add_subdirectory(STAT) 
+Add_subdirectory(TTherminator) 
+Add_subdirectory(CORRFW) 
+Add_subdirectory(DPMJET) 
+Add_subdirectory(TDPMjet) 
 Add_subdirectory(PWG0) 
 Add_subdirectory(PWG1) 
 Add_subdirectory(PWG2) 
 Add_subdirectory(PWG3) 
 Add_subdirectory(PWG4)
+Add_subdirectory(TRIGGER) 
+Add_subdirectory(TUHKMgen) 
+Add_subdirectory(EPOS) 
+if(PYTHIA8)
+Add_subdirectory(PYTHIA8) 
+endif(PYTHIA8)
+if(OPENGL)
+Add_subdirectory(EVE) 
+endif(OPENGL)
+if(TFLUKA)
+Add_subdirectory(TFluka)
+endif(TFLUKA)
+if(THYDJET)    
+Add_subdirectory(THydjet)
+endif(THYDJET)
+if(SHUTTLE)
+Add_subdirectory(SHUTTLE)
+endif(SHUTTLE) 
+Add_subdirectory(LHAPDF) 
+Add_subdirectory(HIJING) 
+Add_subdirectory(MICROCERN) 
+Add_subdirectory(HERWIG) 
+if(PYTHIA6)
 Add_subdirectory(PYTHIA6)
-Add_subdirectory(RALICE) 
-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(TPHIC) 
-Add_subdirectory(TRD) 
-Add_subdirectory(TTherminator) 
-Add_subdirectory(VZERO) 
-Add_subdirectory(ZDC) 
-
+endif(PYTHIA6)
 Add_subdirectory(ALIROOT)
-
+add_subdirectory(test)
+add_test ("Aliroot_executable" aliroot -q) 
+#copy testing files
+configure_file("CTestCustom.ctest" "${PROJECT_BINARY_DIRECTORY}" COPYONLY)