X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=CMakeLists.txt;h=63195d0287f5e34ff1632b1ebec9e301df05b615;hp=210b959ddfeeeaf705e16ea0522d694a1326e206;hb=ed0f0166e5a728cdec2f4ab29609f4c2ee3ebd9e;hpb=7dd2cbe4f183e78c83c59e4a366a72cd04a7f660 diff --git a/CMakeLists.txt b/CMakeLists.txt index 210b959ddfe..63195d0287f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,169 +1,274 @@ # -*- 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 -Find_program( READLINK_PROGRAM readlink) +find_program( READLINK_PROGRAM readlink) -If(READLINK_PROGRAM) - Execute_process(COMMAND readlink -f ${ALICE_ROOT} +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} +else(READLINK_PROGRAM) + execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out) -Endif(READLINK_PROGRAM) +endif(READLINK_PROGRAM) -String(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" +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(REPLACE "/" "\\\\/" - ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH}) +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(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)