]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CMakeLists.txt
added gun, ppbench tests, and warnings and coding covention violation checking.
[u/mrichter/AliRoot.git] / CMakeLists.txt
index 942e2c7ea9ebe83b40c7d0a38e3f70ea95e13a2f..4734391e96e92b97e0c8b7674ee9e226e8a550f7 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_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")
-
-# 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_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)
 
 
-# Setup ROOT
-Find_package(ROOT 5.0.0 REQUIRED)
+message("ALICE_ROOT: ${ALICE_ROOT}")
+set(CMAKE_VERBOSE_MAKEFILE ON)
 
-Set(CMAKE_C_COMPILER $ENV{CC})
-Enable_Language(C)
-
-Set(CMAKE_CXX_COMPILER $ENV{CXX})
-Enable_Language(CXX)
+# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ 
+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_Fortran_COMPILER $ENV{F77})
-Enable_Language(Fortran)
+# 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)
+
+# 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 REQUIRED)
 
 # 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 readlink -f ${ALICE_ROOT} 
-  COMMAND xargs svn info
-  OUTPUT_VARIABLE _svn_out)
-
-String(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" 
+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: 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})
+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(PYTHIA8) 
+
 #Add_subdirectory(TFluka) 
 #Add_subdirectory(THydjet) 
 
@@ -112,12 +139,12 @@ 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(HBTAN)
 Add_subdirectory(HERWIG) 
 Add_subdirectory(HIJING) 
 Add_subdirectory(HLT) 
@@ -136,8 +163,14 @@ 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)
@@ -148,14 +181,19 @@ Add_subdirectory(TEPEMGEN)
 Add_subdirectory(THbtp) 
 Add_subdirectory(THerwig) 
 Add_subdirectory(THijing)
-Add_subdirectory(TIsajet) 
+#Add_subdirectory(TIsajet) 
 Add_subdirectory(TOF) 
 Add_subdirectory(TPC)
-Add_subdirectory(TPHIC) 
 Add_subdirectory(TRD) 
+Add_subdirectory(TRIGGER) 
 Add_subdirectory(TTherminator) 
+Add_subdirectory(TUHKMgen) 
 Add_subdirectory(VZERO) 
 Add_subdirectory(ZDC) 
-
 Add_subdirectory(ALIROOT)
+add_subdirectory(test)
+add_test ("Aliroot_executable" aliroot -q) 
+#copy testing files
+execute_process(COMMAND "cmake" "-E" "copy_directory" "${ALICE_ROOT}/test" "${ALICE_INSTALL}/test")
 
+message("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")
\ No newline at end of file