Correct value for ROOT_HAS*
[u/mrichter/AliRoot.git] / CMakeLists.txt
index c3e3ef4..8506864 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
-
-
-cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
-
-#--------------------------------------------------------------------------------#
-# Set Basic CMake Configuration                                                  #
-#--------------------------------------------------------------------------------#
-
-project(AliRoot CXX C Fortran)
-
-# 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 ALICE_ROOT to the AliRoot source directory")
-endif(NOT ALICE_ROOT)
-
-set(ALICE_INSTALL $ENV{ALICE_INSTALL})
-# 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)
-if(${ALICE_INSTALL} STREQUAL ${CMAKE_BINARY_DIR})
-  message(FATAL_ERROR "Install dir should be different from build dir")
-endif()
-set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL})
-
-# Environment for SHUTTLE
-set(DIMDIR $ENV{DIMDIR})
-set(ODIR $ENV{ODIR})
-
-get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
+# **************************************************************************
+# * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+# *                                                                        *
+# * Author: The ALICE Off-line Project.                                    *
+# * Contributors are mentioned in the code where appropriate.              *
+# *                                                                        *
+# * Permission to use, copy, modify and distribute this software and its   *
+# * documentation strictly for non-commercial purposes is hereby granted   *
+# * without fee, provided that the above copyright notice appears in all   *
+# * copies and that both the copyright notice and this permission notice   *
+# * appear in the supporting documentation. The authors make no claims     *
+# * about the suitability of this software for any purpose. It is          *
+# * provided "as is" without express or implied warranty.                  *
+# **************************************************************************
+
+#--------------------------------------------------------------------------#
+# Set Basic CMake Configuration                                            #
+#--------------------------------------------------------------------------#
+
+cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
+
+project(AliRoot CXX C)
+
+# Path to additonal modules
 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
-set(CPACK_COMPONENTS_ALL MDC)
-
-include(ALICE_CMake)
-
-#--------------------------------------------------------------------------------#
-# Find Packages                                                                  #
-#--------------------------------------------------------------------------------#
-
-# Subversion
-# ------------------------------
 
-find_package(Subversion REQUIRED)
+#       - CLANG_MAJOR.CLANG_MINOR or
+#       - GCC_MAJOR.GCC_MINOR.GCC_PATCH
+include(CheckCompiler)
 
-# ROOT
-# ------------------------------
+# ROOT dictionaries and maps
+include(CMakeALICE)
 
-find_package(ROOT REQUIRED)
-
-# IRST Rule Checker 
-# ------------------------------
-
-find_package(RuleChecker)
+# Checking first for DIM, DATE, AMORE and daqDA 
+# in case ROOT Extra static library needs to be enabled
 
 # DATE
-# ------------------------------ 
-
-find_package(DATE)
+if(DATE_CONFIG)
+    find_package(DATE)
+endif(DATE_CONFIG)
 
-# GEANT3
-# ------------------------------
-
-find_package(GEANT3)
+# daqDA
+if(daqDA)
+    find_package(daqDA)
+endif(daqDA)
 
 # AMORE
-# ------------------------------
-
-find_package(AMORE)
-
-# AliRoot CPack configuration                                                    
-#-------------------------------
-
-find_package(CPack)
-
-# ZeroMQ
-# ------------------------------
-find_package(ZeroMQ)
-
-#--------------------------------------------------------------------------------#
-# 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                                                          #
-#--------------------------------------------------------------------------------#
+if(AMORE_CONFIG)
+    find_package(AMORE)
+endif(AMORE_CONFIG)
+
+# DA is enabled
+if(DA)
+    if(NOT DIMDIR AND NOT ODIR)
+        set(DA FALSE)
+        message(FATAL_ERROR "Das enabled but no DIMDIR and ODIR set. Please set DIMDIR to DIM installation and ODIR to platform (default linux)")
+    endif()
+
+    if(NOT DATE_FOUND)
+        set(DA FALSE)
+        message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\" variable")
+    endif()
+
+    if(NOT daqDA_FOUND)
+        set(DA FALSE)
+        message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
+    endif()
+
+    if(NOT AMORE_FOUND)
+        set(DA FALSE)
+        message(FATAL_ERROR "DAs enabled but no AMORE support found. Please point to your AMORE installation using \"AMORE_CONFIG\" variable")
+    endif()
+    
+    # Enable static libraries
+    set(ALIROOT_STATIC TRUE)
+    message(STATUS "DAs enabled")
+endif(DA)
+
+# ROOT configuration mandatory
+if(ROOTSYS)
+    find_package(ROOT REQUIRED)
+
+    # ROOT must be build with XML2 support
+    if(NOT ROOT_HASXML)
+        message(FATAL_ERROR "ROOT was not build with xml2 support. Please reinstall or rebuild ROOT with xml2 support")
+    endif(ROOT_HASXML)
+else()
+    message(FATAL_ERROR "ROOT installation not found!\nPlease point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR")
+endif(ROOTSYS)
 
-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}")
+# If no Fortran, i.e on Windows
+# We need to specify ROOT fortran
+# (f95 comes before gfortran in default module)
+include(CheckLanguage)
 
+if(ROOT_FORTRAN)
+    message(STATUS "Using the Fortran compiler defined by ROOT configuration: ${ROOT_FORTRAN}")
+    set(CMAKE_Fortran_COMPILER ${ROOT_FORTRAN})
+else()
+    message(STATUS "Using default system Fortran compiler")
+endif(ROOT_FORTRAN)
 
-#--------------------------------------------------------------------------------#
-# AliRoot Modules                                                                #
-#--------------------------------------------------------------------------------#
+check_language(Fortran)
+if(CMAKE_Fortran_COMPILER)
+    enable_language(Fortran OPTIONAL)
+else()
+    message(STATUS "No Fortran support. Disabling LHAPDF, PHYTIA6, MICROCERN, etc.")
+endif()
 
-# Exclude Module from all target
-# ------------------------------
 
-#set(EXCLUDEMODULES THydjet SHUTTLE)
+# DATE
+if(DATE_CONFIG)
+    find_package(DATE)
+endif(DATE_CONFIG)
+
+# daqDA
+if(daqDA)
+    find_package(daqDA)
+endif(daqDA)
+
+# DA is enabled
+if(DA)
+    if(NOT DATE_FOUND)
+        set(DA FALSE)
+        message(FATAL_ERROR "DAs enabled but no DATE support found. Please point to your date installation using \"DATE_CONFIG\"")
+    endif()
+    
+    if(NOT daqDA_FOUND)
+        set(DA FALSE)
+        message(FATAL_ERROR "DAs enabled but no daqDA support found. Please point to your daqDA installation using \"daqDA\" variable")
+    endif()
+    
+    # Enable static libraries
+    set(ALIROOT_STATIC TRUE)
+    message(STATUS "DAs enabled")
+endif(DA)
+
+# FastJet
+find_package(FASTJET)
+
+# ZEROMQ
+find_package(ZeroMQ)
 
+# AliRoot version extracted from Git repository
+# Sets 4 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
+include(CheckGitVersion)
 
-# 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 STAT TTherminator CORRFW DPMJET TDPMjet STARLIGHT PWGPP PWG PWGCF PWGGA PWGHF PWGDQ PWGJE PWGLF PWGUD TRIGGER PYTHIA8 TAmpt OADB MFT TEvtGen)
+message(STATUS "CMake platform: ${CMAKE_SYSTEM}")
+message(STATUS "Build folder: ${AliRoot_BINARY_DIR}")
+message(STATUS "Source folder: ${AliRoot_SOURCE_DIR}")
+message(STATUS "Installation folder: ${CMAKE_INSTALL_PREFIX}")
 
-if(THydjet)
-  list(APPEND ALIROOTMODULES THydjet)
-endif(THydjet)
+# General flags -> Should be moved into a configuration file
+set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
 
-if(SHUTTLE)
-  list(APPEND ALIROOTMODULES SHUTTLE)
-endif(SHUTTLE)
+# AliRoot base modules
+add_subdirectory(STEER)
+add_subdirectory(RAW)
+add_subdirectory(ANALYSIS)
 
-# 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 ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER MFT)
-set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
-
-# Configure ARVerion.h
-# ------------------------------
-if(Subversion_FOUND)
-  if(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
-  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})
-
-  elseif(EXISTS ${PROJECT_SOURCE_DIR}/.git/ )
-    if(EXISTS ${PROJECT_SOURCE_DIR}/.git/svn/refs )
-    execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git svn info OUTPUT_VARIABLE OUTPUTVAR)
-    string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
-    foreach(f ${OUTPUTVAR})
-      if(${f} MATCHES URL)
-       string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${f})
-      elseif(${f} MATCHES Revision)
-       string(REGEX MATCH "[^: ]+$" ALIROOT_SVN_REVISION ${f})
-      endif(${f} MATCHES URL)   
-    endforeach()
-    else()
-      execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git log -1 OUTPUT_VARIABLE OUTPUTVAR)
-      string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
-      foreach(f ${OUTPUTVAR})
-        if(${f} MATCHES "^[ ]*git-svn-id:")
-          string(REGEX REPLACE "^.*/(.*)[@].*$" "\\1" ALIROOT_SVN_BRANCH "${f}" )
-          string(REGEX REPLACE "^.*/.*[@](.*) .*$" "\\1" ALIROOT_SVN_REVISION "${f}" )
-        endif(${f} MATCHES "^[ ]*git-svn-id:")
-      endforeach()
-      if(${ALIROOT_SVN_BRANCH}x STREQUAL "x")
-        set(ALIROOT_SVN_BRANCH "git clone")
-        set(ALIROOT_SVN_REVISION "-1")
-      endif(${ALIROOT_SVN_BRANCH}x STREQUAL "x")
-    endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/svn/refs )
-  endif(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
-
-  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)
-string (REPLACE "-" "." ALIROOT_SVN_BRANCH_SPEC "${ALIROOT_SVN_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 own cmake
 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" )
-
-
-add_custom_target( alimdc-rpm
-DEPENDS alimdc-static alimdc-specfile
-)
-
-add_custom_command(
-TARGET alimdc-rpm
-POST_BUILD 
-COMMAND rm -rf ${ALICE_ROOT}/alimdc-root
-COMMAND mkdir -p ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND mkdir -p ${ALICE_ROOT}/alimdc-root/opt/alimdc/include
-COMMAND cp ${ALICE_ROOT}/RAW/mdc.h ${ALICE_ROOT}/alimdc-root/opt/alimdc/include
-COMMAND cp ${LIBPATH}/libAliMDC.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND cp ${ROOTALIBDIR}/libRoot.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND cp ${ROOTALIBDIR}/liblzma.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND cp ${ROOTALIBDIR}/libpcre.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND cp ${ROOTALIBDIR}/libfreetype.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND cp ${ROOTALIBDIR}/libpcre.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
-COMMAND rm -rf ${ALICE_ROOT}/RPMS
-COMMAND mkdir -p ${ALICE_ROOT}/RPMS/${ALIMDCARCHDIR}/
-COMMAND rpmbuild --verbose --define "_topdir ${ALICE_ROOT}" --define "_tmppath ${ALICE_ROOT}" -bb ${ALIMDCSPECFILE} 
-COMMAND cp -p ${ALICE_ROOT}/RPMS/${ALIMDCARCHDIR}/alimdc-*.rpm .
-COMMAND rm -rf ${ALICE_ROOT}/alimdc-root
-COMMAND rm -rf ${ALICE_ROOT}/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-specfile
-DEPENDS ${RAWDIRO}
-)
-
-add_custom_command( 
-TARGET alimdc-specfile
-POST_BUILD
-COMMAND rm -rf ${ALIMDCSPECFILE}
-COMMAND @echo "***** Making alimdc RPM spec-file ${ALIMDCSPECFILE} *****"
-COMMAND @echo '\# RPM specfile for alimdc static libs' >> ${ALIMDCSPECFILE} 
-COMMAND @echo '\# Package contains both ROOT and AliRoot' >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# static libs needed by mStreamRecorder' >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# in order to ROOT-ify the incoming raw' >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# data' >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# Example how-to build alimdc RPM:' >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# cd ${ALICE_ROOT}' >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# make alimdc-rpm' >> ${ALIMDCSPECFILE}
-COMMAND @echo "" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Summary: AliMDC static libraries" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Name: alimdc" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Version:  ${ALIROOT_SVN_BRANCH_SPEC}" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Release: ${ALIROOT_SVN_REVISION}" >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# Copyright: CERN Alice Off-line' >> ${ALIMDCSPECFILE}
-COMMAND @echo "License: CERN Alice Off-line" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Vendor: ALICE Core Off-line Group" >> ${ALIMDCSPECFILE}
-COMMAND @echo "URL: http://aliceinfo.cern.ch" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Group: Applications/Alice" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Prefix: /opt/%{name}" >> ${ALIMDCSPECFILE}
-COMMAND @echo "BuildRoot: %{_tmppath}/%{name}-root" >> ${ALIMDCSPECFILE}
-COMMAND @echo "" >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# automatic dependencies' >> ${ALIMDCSPECFILE}
-COMMAND @echo "AutoReqProv: yes" >> ${ALIMDCSPECFILE}
-COMMAND @echo "" >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# list here required RPM packages for runtime' >> ${ALIMDCSPECFILE}
-COMMAND @echo "Requires: glibc" >> ${ALIMDCSPECFILE}
-COMMAND @echo "" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Provides: alimdc" >> ${ALIMDCSPECFILE}
-COMMAND @echo "" >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# description of the package' >> ${ALIMDCSPECFILE}
-COMMAND @echo "%description" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Package contains both ROOT and AliRoot" >> ${ALIMDCSPECFILE}
-COMMAND @echo "static libs needed by mStreamRecorder" >> ${ALIMDCSPECFILE}
-COMMAND @echo "in order to ROOT-ify the incoming raw" >> ${ALIMDCSPECFILE}
-COMMAND @echo "data. The package version correspond to" >> ${ALIMDCSPECFILE}
-COMMAND @echo "the AliRoot one." >> ${ALIMDCSPECFILE}
-COMMAND @echo "" >> ${ALIMDCSPECFILE}
-COMMAND @echo '\# list of files to be installed' >> ${ALIMDCSPECFILE}
-COMMAND @echo "%files" >> ${ALIMDCSPECFILE}
-COMMAND @echo '%defattr (-,root,root)' >> ${ALIMDCSPECFILE}
-COMMAND @echo "%{prefix}/lib/libAliMDC.a" >> ${ALIMDCSPECFILE}
-COMMAND @echo "%{prefix}/lib/libRoot.a" >> ${ALIMDCSPECFILE}
-COMMAND @echo "%{prefix}/lib/libpcre.a" >> ${ALIMDCSPECFILE}
-COMMAND @echo "%{prefix}/lib/liblzma.a" >> ${ALIMDCSPECFILE}
-COMMAND @echo "%{prefix}/lib/libfreetype.a" >> ${ALIMDCSPECFILE}
-COMMAND @echo "%{prefix}/include/mdc.h" >> ${ALIMDCSPECFILE}
-)
-
-
-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 -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
-#
+# AliRoot modules
+add_subdirectory(ACORDE)
+add_subdirectory(AD)
+add_subdirectory(BCM)
+add_subdirectory(CORRFW)
+add_subdirectory(EMCAL)
+add_subdirectory(EPOS)
+add_subdirectory(EVE)
+add_subdirectory(EVGEN)
+add_subdirectory(FASTSIM)
+add_subdirectory(FIT)
+add_subdirectory(FMD)
+add_subdirectory(HLT)
+add_subdirectory(HMPID)
+add_subdirectory(ITS)
+add_subdirectory(JETAN)
+add_subdirectory(MFT)
+add_subdirectory(MONITOR)
+add_subdirectory(MUON)
+add_subdirectory(OADB)
+add_subdirectory(PHOS)
+add_subdirectory(PMD)
+add_subdirectory(PYTHIA8)
+add_subdirectory(STARLIGHT)
+add_subdirectory(STAT)
+add_subdirectory(STRUCT)
+add_subdirectory(T0)
+add_subdirectory(TDPMjet)
+add_subdirectory(TEvtGen)
+add_subdirectory(THerwig)
+add_subdirectory(TOF)
+add_subdirectory(TPC)
+add_subdirectory(TRD)
+add_subdirectory(TRIGGER)
+add_subdirectory(TTherminator)
+add_subdirectory(VZERO)
+add_subdirectory(ZDC)
+
+# Fortran modules
+if(CMAKE_Fortran_COMPILER)
+  add_subdirectory(DIME)
+  add_subdirectory(DPMJET)
+  add_subdirectory(HERWIG)
+  add_subdirectory(HIJING)
+  add_subdirectory(LHAPDF)
+  add_subdirectory(MICROCERN)
+  add_subdirectory(PYTHIA6)
+  add_subdirectory(TEPEMGEN)
+  add_subdirectory(THbtp)
+  add_subdirectory(THijing)
+  add_subdirectory(THydjet)
+  add_subdirectory(TPHIC)
+  add_subdirectory(TUHKMgen)
+  add_subdirectory(TAmpt)
+endif(CMAKE_Fortran_COMPILER)
+
+# Enable SHUTTLE compilation
+# Check if DIMDIR and ODIR are set
+if(SHUTTLE)
+    if(DIMDIR AND ODIR AND ALIEN)
+        add_subdirectory(SHUTTLE)
+    else()
+        message(FATAL_ERROR "SHUTTLE enabled! Please specify DIMDIR, ODIR and ALIEN")
+    endif()
+endif(SHUTTLE)
 
+add_subdirectory(ALIROOT)