Ensure vacuum inside the beam pipe for upgrade (Mario)
[u/mrichter/AliRoot.git] / CMakeLists.txt
index 63195d0..be1159d 100644 (file)
-# -*- mode: cmake -*-
+# -*- mode: cmake -*-/usr/share/applications/thunderbird.desktop 
 
-# Check if cmake has the required version
-cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
+# Top level CMakeList.txt file for the AliRoot Build System
+#
+# Author: Johny Jose (johny.jose@cern.ch)
+#         Port of previous Makefile build to cmake
 
-# Set name of our project to AliRoot. To be done after check of cmake version
-project(AliRoot NONE)
 
-# Set AliRoot variables
-set(CMAKE_VERBOSE_MAKEFILES OFF)
-#fix for MACOSX
-SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem")
-SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem") 
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
 
-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})
+#--------------------------------------------------------------------------------#
+# Set Basic CMake Configuration                                                  #
+#--------------------------------------------------------------------------------#
+
+project(AliRoot CXX C Fortran)
 
-if(NOT ALICE_INSTALL)
-message(FATAL_ERROR "Please set environment variable ALICE_INSTALL to the AliRoot installation directory")
-endif(NOT ALICE_INSTALL)
+# Environment variables
+set(ALICE $ENV{ALICE})
+if(NOT ALICE)
+  message(WARNING "Environment variable ALICE is not set")
+endif(NOT ALICE)
+
+set(ALICE_ROOT $ENV{ALICE_ROOT})
 if(NOT ALICE_ROOT)
-message(FATAL_ERROR "Please set environment variable ALICE_ROOT to the AliRoot source directory")
+  message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
 endif(NOT ALICE_ROOT)
 
-
-message("ALICE_ROOT: ${ALICE_ROOT}")
+set(ALICE_INSTALL $ENV{ALICE_INSTALL})
+# Set AliRoot Installation directory 
+# If CMAKE_INSTALL_PREFIX was not set, then we set it to ALICE_INSTALL. 
+# If ALICE_INSTALL was not defined, then it will default to the source directory
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+    if(ALICE_INSTALL)
+       message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
+    else()
+       message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You
+       can specify a different location by passing -DCMAKE_INSTALL_PREFIX or
+       by setting ALICE_INSTALL environment variable")
+       set(ALICE_INSTALL ${ALICE_ROOT})
+       if(${ALICE_INSTALL} STREQUAL ${CMAKE_BINARY_DIR})
+           message(FATAL_ERROR "The install directory must differ from the
+           build directory")
+       endif()
+    endif()
+    set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL} CACHE STRING "Install dir" FORCE)
+endif()
 
 
-# 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")
+# Environment for SHUTTLE
+set(DIMDIR $ENV{DIMDIR})
+set(ODIR $ENV{ODIR})
 
-# 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)
+get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
+set(CPACK_COMPONENTS_ALL MDC)
 
-# 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)
+include(ALICE_CMake)
 
-# Load some basic macros which are needed later on
-#Include(WriteConfigFile)
+#--------------------------------------------------------------------------------#
+# Find Packages                                                                  #
+#--------------------------------------------------------------------------------#
 
-include (CTest)
-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)
+# IRST Rule Checker 
+# ------------------------------
 
-# Setup RuleChecker
 find_package(RuleChecker)
 
-# Check if DATE is installed
+# DATE
+# ------------------------------ 
+
 find_package(DATE)
 
-# Setup system dependent flags 
-SetupSystem()
+# GEANT3
+# ------------------------------
 
-Include(CreateSubCMakeFiles)
-CreateSubCMakeFiles()
+find_package(GEANT3)
 
+# AMORE
+# ------------------------------
 
-# Set the library version in the main CMakeLists.txt
+find_package(AMORE)
 
-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}")
+# AliRoot CPack configuration                                                    
+#-------------------------------
+
+find_package(CPack)
+
+# ZeroMQ
+# ------------------------------
+find_package(ZeroMQ)
+
+# fastjet
+# ------------------------------
+find_package(FASTJET)
+
+#--------------------------------------------------------------------------------#
+# 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}")
 
-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})
-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(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(HMPID) 
-Add_subdirectory(T0) 
-Add_subdirectory(BCM) 
-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(TPHIC) 
-Add_subdirectory(RAW) 
-Add_subdirectory(MONITOR) 
-Add_subdirectory(ANALYSIS) 
-Add_subdirectory(JETAN)
-Add_subdirectory(HLT) 
-Add_subdirectory(LHC) 
-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)
+#--------------------------------------------------------------------------------#
+# 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 AD ACORDE HMPID T0 BCM STRUCT VZERO THijing THbtp EMCAL THerwig TEPEMGEN FASTSIM TPHIC RAW MONITOR ANALYSIS JETAN HLT STAT TTherminator CORRFW DPMJET TDPMjet STARLIGHT PWGPP PWG PWGCF PWGGA PWGHF PWGDQ PWGJE PWGLF PWGUD TRIGGER PYTHIA8 TAmpt OADB MFT TEvtGen FIT)
+
+if(THydjet)
+  list(APPEND ALIROOTMODULES 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)
-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)
+  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 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 AD ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER MFT)
+set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
+
+# Configure ARVerion.h
+# ------------------------------
+# If the sources were taken from Git
+# Sets 3 git variables
+#  - GIT_REFSPEC - complete name of the current reference
+#  - ALIROOT_BRANCH - name of the branch or tag extracted from the current reference
+#  - GIT_SHA1 - current hash in the long format
+#  - GIT_SHORT_SHA1 - current hash in the short format
+if(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
+ include(GetGitRevisionDescription)
+ find_package(Git)
+ if(GIT_FOUND)
+  get_git_head_revision(GIT_REFSPEC GIT_SHA1)
+
+  # GIT_REFSPEC is empty for detached mode = tags in detached mode or checkout to specific hash
+
+  # returns the closest reference to the current hash
+  # name of the current tag or heads/branch in the case of branches
+  git_describe(ALIROOT_GIT_TAG "--all" "--abbrev=0")
+
+  STRING(REGEX REPLACE "^(.+/)(.+)/(.*)$" "\\2" BRANCH_TYPE "${GIT_REFSPEC}" )
+
+  # the revision is not set in the case of a branch, it means we are doing development
+  # and the revision will trigger a reconfiguration
+  if(BRANCH_TYPE STREQUAL "heads")
+   set(ALIROOT_REVISION "ThisIsaBranchNoRevisionProvided")
+   STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" )
+  else()
+   set(SHORT_BRANCH ${ALIROOT_GIT_TAG})
+   set(ALIROOT_REVISION ${GIT_SHA1})
+  endif()
+
+  set(ALIROOT_BRANCH ${SHORT_BRANCH})
+  
+  # generate the short version of the revision hash
+  execute_process(COMMAND git rev-parse --short ${GIT_SHA1} 
+                          WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 
+                          OUTPUT_STRIP_TRAILING_WHITESPACE 
+                          RESULT_VARIABLE res
+                          OUTPUT_VARIABLE GIT_SHORT_SHA1)
+
+  # if the rev-parse fails we set the short sha to the long initial one
+  if(NOT res EQUAL 0)
+    set(GIT_SHORT_SHA1 ${GIT_SHA1})
+  endif()
+  
+  message(STATUS "Aliroot branch/tag: \"${ALIROOT_BRANCH}\" - Revision:  \"${GIT_SHORT_SHA1}\" ")
+
+ else()
+  message("Git not installed. I can't tell you which revision you are using!")
+  endif(GIT_FOUND)
+else()
+ message("AliRoot sources not downloaded from a Version Control System. I can't tell which revision you are using!")
+endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
+
+configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/FromTemplate/ARVersion.h @ONLY)
+
+string (REPLACE "-" "." ALIROOT_BRANCH_SPEC "${ALIROOT_BRANCH}")
+
+#--------------------------------------------------------------------------------#
+# 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 ALL)
+add_custom_target(DA-all)
+add_custom_target(check-all) 
+add_custom_target(check-hxml)
+add_custom_target(smell-all) 
+add_custom_target(htmldoc) 
+add_custom_target(par-all)
+add_custom_target(test-par-all)
+
+#NY file(GLOB CFILES_LIST ${CMAKE_SOURCE_DIR}/macros/*.C)
+
+add_custom_command(TARGET htmldoc
+                  PRE_BUILD
+                  COMMAND mkdir -p html
+                  COMMAND rm -rf html/roothtml
+                  COMMAND rm -f html/picts
+                  COMMAND cd html && aliroot -q -b mkhtml.C\\\(0,1\\\)
+                  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+
+# Include Vc, which provides the static libVc and the relevant CMake macros
+include(Vc/Vc.cmake)
+add_subdirectory(Vc)
+
+# Add Modules  
+# ------------------------------
+foreach(MODULE ${MODDIRS})
+  set(${MODULE}ALIBS)
+#RS  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}-par-all)
+  add_custom_target(test-${MODULE}-par-all)
+  add_custom_target(${MODULE}-all-static)
+  add_dependencies(alilibs-static "${MODULE}-static")
+  add_subdirectory(${MODULE})
+  
+#NY  set(dir "${CMAKE_SOURCE_DIR}/${MODULE}")
+#NY  if (EXISTS "${dir}")
+#NY      file(GLOB CFILES_MOD ${dir}/*.C)
+#NY      list(LENGTH CFILES_MOD len)
+#NY      if (${len} GREATER 0)
+#NY        list(APPEND CFILES_LIST "${CFILES_MOD}")
+#NY      endif (${len} GREATER 0)
+#NY  endif(EXISTS "${dir}")
+endforeach(MODULE)
+
+#NY foreach(cfile ${CFILES_LIST})
+#NY     add_custom_command(TARGET htmldoc
+#NY                   PRE_BUILD
+#NY                   COMMAND cd html && 
+#NY                           aliroot -b -q \"mkhtml.C(\"${cfile}\")\" > /dev/null
+#NY                   WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+#NY endforeach(cfile)
+
+if(DATE_FOUND)
+  include (CMakeDA)
+endif(DATE_FOUND)
+
+if(RULECHECKER_FOUND)
+    add_custom_target(factfile DEPENDS ${FACTFILE})
+    add_custom_command( OUTPUT ${FACTFILE}
+                        COMMAND ${CMAKE_COMMAND} -E echo "Re-generating factfile"
+                        COMMAND ${JAVA_RUNTIME}  -Xmx1024M -jar ${FACTEXTRACTOR_JAR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}                   
+                       DEPENDS check-hxml ${CMAKE_BINARY_DIR}/check-hxml-touchfile ${_factfile_deps} 
+                        WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
+endif(RULECHECKER_FOUND)
+
+#--------------------------------------------------------------------------------#
+# Additional Targets                                                             #
+#--------------------------------------------------------------------------------#
+
+# AliMdc RPM
+# ------------------------------
+
+execute_process(
+COMMAND root-config --libdir 
+OUTPUT_VARIABLE ROOTALIBDIR)
+string(REPLACE "\n" "" ROOTALIBDIR ${ROOTALIBDIR}) 
+
+execute_process(
+COMMAND root-config --arch 
+OUTPUT_VARIABLE ARCHITECTURE)
+
+
+set(AEXT a)
+set(LIBPATH ${CMAKE_BINARY_DIR}/lib/tgt_${ALICE_TARGET})
+set(BINPATH ${CMAKE_BINARY_DIR}/bin/tgt_${ALICE_TARGET})
+set(EXPORTDIR ${ALICE_ROOT}/include)
+set(BINLIBDIRS -L${ALICE_ROOT}/${LIBPATH})
+set(RAWDIRO ${CMAKE_BINARY_DIR}/RAW)
+set(ALIMDCSPECFILE ${RAWDIRO}/alimdc.spec)
+set(RAWDatabaseALIB ${LIBPATH}/libRAWDatabase.${AEXT})
+set(ESDALIB ${LIBPATH}/libESD.${AEXT})
+set(STEERBaseALIB ${LIBPATH}/libSTEERBase.${AEXT})
+set(MDCALIB ${LIBPATH}/libMDC.${AEXT})
+set(MODDIRO RAW/tgt_${ALICE_TARGET})
+
+
+if( ${ARCHITECTURE} MATCHES "linuxx8664gcc" )
+set(ALIMDCARCHDIR x86_64)
+elseif( ${ARCHITECTURE} MATCHES "linux" )
+set(ALIMDCARCHDIR i386)
+elseif( ${ARCHITECTURE} MATCHES "linuxia64gcc" )
+set(ALIMDCARCHDIR ia64)
+elseif(NOT DEFINED ${ARCHITECTURE})
+message("alimdc-rpm: Unknown architecture" )
+else( ${ARCHITECTURE} MATCHES "linuxx8664gcc" )
+message("alimdc-rpm: Unknown architecture" )
+endif( ${ARCHITECTURE} MATCHES "linuxx8664gcc" )
+
+
+# Module version will be written in the generated header
+configure_file ("RAW/alimdc.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/RAW/alimdc.spec" @ONLY)
+
+add_custom_target( alimdc-rpm
+DEPENDS alimdc-static
+)
+
+add_custom_command(
+TARGET alimdc-rpm
+POST_BUILD 
+COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root
+COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/include
+COMMAND cp ${ALICE_ROOT}/RAW/mdc.h ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/include
+COMMAND cp ${LIBPATH}/libAliMDC.a ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND cp ${ROOTALIBDIR}/libRoot.a ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND cp ${ROOTALIBDIR}/liblzma.a ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND cp ${ROOTALIBDIR}/libpcre.a ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND cp ${ROOTALIBDIR}/libfreetype.a ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND cp ${ROOTALIBDIR}/libpcre.a ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root/opt/alimdc/lib
+COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/RPMS
+COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/RPMS/${ALIMDCARCHDIR}/
+COMMAND rpmbuild --verbose --define "_topdir ${CMAKE_CURRENT_BINARY_DIR}" --define "%buildroot ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root" -bb ${ALIMDCSPECFILE} 
+COMMAND cp -p ${CMAKE_CURRENT_BINARY_DIR}/RPMS/${ALIMDCARCHDIR}/alimdc-*.rpm .
+COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/alimdc-root
+COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/RPMS
+COMMAND echo "***** alimdc RPM created and put in ${CMAKE_BINARY_DIR} folder *****"
+)
+
+add_custom_command(
+TARGET ${RAWDIRO}
+COMMAND mkdir-p ${RAWDIRO}
+)
+
+
+add_custom_target( alimdc-static
+DEPENDS ${LIBPATH} ${BINPATH} RAW-all-static STEER-all-static )
+
+add_custom_command( 
+TARGET alimdc-static
+POST_BUILD
+COMMAND ar r ${LIBPATH}/alimdccxxo.a ${CMAKE_BINARY_DIR}/RAW/CMakeFiles/alimdc.dir/alimdc_main.cxx.o
+COMMAND rm -rf ${LIBPATH}/libAliMDC.a
+COMMAND ar x ${RAWDatabaseALIB}
+COMMAND ar x ${MDCALIB}
+COMMAND ar x ${ESDALIB}
+COMMAND ar x ${STEERBaseALIB}
+COMMAND ar r ${LIBPATH}/libAliMDC.a *.o
+COMMAND ar t ${RAWDatabaseALIB} | xargs rm 
+COMMAND ar t ${MDCALIB} | xargs rm 
+COMMAND ar t ${ESDALIB} | xargs rm 
+COMMAND ar t ${STEERBaseALIB} | xargs rm 
+COMMAND ${CMAKE_CXX_COMPILER} ${LDFLAGS} -o ${BINPATH}/alimdca ${LIBPATH}/alimdccxxo.a ${LIBPATH}/libAliMDC.a ${ROOTALIBDIR}/libRoot.a ${ROOTALIBDIR}/libfreetype.a ${ROOTALIBDIR}/libpcre.a ${ROOTALIBDIR}/liblzma.a -pthread -lssl -ldl -lz
+COMMAND @echo "Target alimdc-static made"
+)
+
+add_custom_command(
+TARGET ${LIBPATH}
+COMMAND mkdir -p ${LIBPATH}
+)
+
+
+#include (MakefileDA) 
+include (InstallRequiredSystemLibraries)
+include (CPack)
+
+# Install data
+# ------------------------------
+install ( DIRECTORY data 
+          DESTINATION . )
+install ( DIRECTORY OCDB 
+         DESTINATION . 
+         PATTERN ".svn" EXCLUDE)
+install ( DIRECTORY QAref 
+         DESTINATION . 
+         PATTERN ".svn" EXCLUDE)
+install ( DIRECTORY GRP 
+         DESTINATION . 
+         PATTERN ".svn" EXCLUDE)
+
+#
+# EOF
+#
+