# Exclude Module from all target
# ------------------------------
-set(EXCLUDEMODULES THydjet SHUTTLE)
+#set(EXCLUDEMODULES THydjet SHUTTLE)
# 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 LHC ESDCheck STAT TTherminator CORRFW DPMJET TDPMjet PWG0 PWG1 PWG2 PWG3 PWG4 TRIGGER THydjet PYTHIA8)
+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 LHC ESDCheck STAT TTherminator CORRFW DPMJET TDPMjet PWG0 PWG1 PWG2 PWG3 PWG4 TRIGGER PYTHIA8 )
+
+if(THydjet)
+ list(APPEND ALIROOTMODULES THydjet)
+endif(THydjet)
+
+if(SHUTTLE)
+ list(APPEND ALIROOTMODULES SHUTTLE)
+endif(SHUTTLE)
# Additional Modules
# ------------------------------
set(PYTHIA6 TRUE)
list(APPEND CERNMODULES PYTHIA6 RALICE EVGEN)
else()
- message(FATAL_ERROR "Pythia6 is required !")
+ message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
# Set Final list of modules
add_custom_target(alilibs-static)
add_custom_target(include-headers)
-
+add_custom_target(DA-all)
# Add Modules
# ------------------------------
foreach(MODULE ${MODDIRS})
+ set(${MODULE}ALIBS)
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}-static)
add_dependencies(alilibs-static "${MODULE}-static")
add_subdirectory(${MODULE})
-
endforeach(MODULE)
if(DATE_FOUND AND AMORE_FOUND)
// turn off annoying warning messages
// NB: Should not be handled here
- AliLog logger = AliLog::GetRootLogger();
+ AliLog* logger = AliLog::GetRootLogger();
logger->SetGlobalDebugLevel(-20);
// ********* STEP 0: Get configuration files from db (if there are any) , then read parameters*********
// turn off annoying warning messages
// NB: Should not be handled here
- AliLog logger = AliLog::GetRootLogger();
+ AliLog* logger = AliLog::GetRootLogger();
logger->SetGlobalDebugLevel(-20);
// ********* STEP 0: Get configuration files from db (if there are any) , then read parameters*********
// turn off annoying warning messages
// NB: Should not be handled here
- AliLog logger = AliLog::GetRootLogger();
+ AliLog* logger = AliLog::GetRootLogger();
logger->SetGlobalDebugLevel(-20);
// calib scan types
+
+Note: The CMake build of AliRoot builds out-of-source
+
Steps to Build AliRoot with CMake :
-1. Define environment variable ALICE_INSTALL
- export ALICE_INSTALL=$ALICE/AliRootInstall
+1. Check out Aliroot source into any folder
+
+ svn co http://alisoft.cern.ch/AliRoot/trunk ~/trunk
-2. Set Path to point to binaries and libraries that will be built in ALICE_INSTALL
- export PATH=$PATH:$ALICE_INSTALL/bin/tgt_${ALICE_TARGET}
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ALICE_INSTALL/lib/tgt_${ALICE_TARGET}
+2. Create a new folder and set the environment variable ALICE_ROOT to point to it
+
+ mkdir AliRoot
+ cd AliRoot
+ export ALICE_ROOT=`pwd`
3. Execute the following commands to build AliRoot
- cd $ALICE_INSTALL
- cmake <path_to_source>
+
+ cmake ~/trunk
make
-4. In order to build addtional targets like TFluka, THydjet and SHUTTLE add the following options to the cmake command
- cmake -DTFLUKA=ON -DTHYDJET=ON -DSHUTTLE=ON <path_to_source>
+4. In order to build addtional targets like THydjet and SHUTTLE add the following options to the cmake command
+
+ cmake -DTHydjet=ON -DSHUTTLE=ON <path_to_source>
+
-!IMPORTANT! : Make sure you delete all the files in your ALICE_INSTALL directory before you generate the Makefile again to clear the CMakeCache or the generated build system may not function properly.
+!IMPORTANT! - Make sure your source folder is clean. If you used the old make system to build aliroot run make clean in the source directory before you run cmake
endif(CINTAUTOLINK)
if(lib)
- list(APPEND ${MODULE}LIBS ${PACKAGE})
+ list(APPEND PMLIBS ${PACKAGE})
list(APPEND ALLLIBS ${PACKAGE})
- list(APPEND ${MODULE}ALIBS ${PACKAGE}_a)
+ list(APPEND PMALIBS ${PACKAGE}_a)
list(APPEND ALLALIBS ${PACKAGE}_a)
list(APPEND BINLIBS ${PACKAGE})
else()
list(APPEND ALLEXECS ${PACKAGE})
endif(lib)
-
+ set(${MODULE}ALIBS "${PMALIBS}" PARENT_SCOPE)
+ set(${MODULE}LIBS "${PMLIBS}" PARENT_SCOPE)
+ set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE)
list(APPEND INCLUDEFILES ${PEXPORTDEST})
ALICE_CopyHeaders()
if(WITHDICT)
#list of detectors
set(ONLINEDETECTORS SPD SDD SSD TPC TRD TOF HMP PHS CPV PMD MCH MTR FMD T00 V00 ZDC ACO TRI EMC HLT TST GRP)
+function(expand output input)
+ string(REGEX MATCH "\\\${[^}]*}" m "${input}")
+ while(m)
+ string(REGEX REPLACE "\\\${(.*)}" "\\1" v "${m}")
+ string(REPLACE "\${${v}}" "${${v}}" input "${input}")
+ string(REGEX MATCH "\\\${[^}]*}" m "${input}")
+ endwhile()
+ set("${output}" "${input}" PARENT_SCOPE)
+endfunction()
+
#function to get module for detector
function (detector_module _module detector)
#Map of online detectors to DA in pairs of ONLINEDETECTORNAME DAMODULE
endif(DAQDALIB_PATH)
set(DAQDALIB "${DAQDADIR}/libdaqDA.a")
-include_directories(${DAQDADIR} RAW include)
+include_directories(${DAQDADIR} RAW include STEER)
include_directories(SYSTEM ${ROOTINCDIR})
# ----------Create All Valid targets---------
foreach(detector ${ONLINEDETECTORS} )
-
- #ALIROOTALIBS
-
- set(ALIROOTALIBS)
-
- list(APPEND ALIROOTALIBS RAWDatabase_a RAWDatarec_a RAWDatasim_a STEERBase_a STEER_a CDB_a ESD_a STAT_a AOD_a )
set(ONLINEDETECTORNAME ${detector})
detector_module(DAMODULE ${ONLINEDETECTORNAME})
detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME})
+
+ #ALIROOTALIBS
+ set(ALIROOTALIBS)
+
+ list(APPEND ALIROOTALIBS RAWDatabase_a RAWDatarec_a RAWDatasim_a STEERBase_a STEER_a CDB_a ESD_a STAT_a AOD_a )
+
+ expand(ALIROOTALIBS2 "\${${DAMODULE}ALIBS}")
+ expand(DAINCDIRS "\${${DAMODULE}INC}")
+ list(APPEND ALIROOTALIBS ${ALIROOTALIBS2})
+
+ message("Listing sub directories for ${DAMODULE}")
+ message("${DAINCDIRS}")
+
+ include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS})
#Get detector algorithms for this detector
foreach(dafile ${_dafiles})
set(DASRC "${DAMODULE}/${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx")
set(DALIB "${DAMODULE}${SUBDAMODULE}${DANAME}DA")
- set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da")
+ set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe")
# DAVERSION
execute_process(COMMAND svn info $ENV{ALICE_ROOT}/${DASRC} OUTPUT_VARIABLE _daversion OUTPUT_STRIP_TRAILING_WHITESPACE)
set(DAMAKEFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.make")
-# Super Duper Hack :D
- file(GLOB _damodule "$ENV{ALICE_ROOT}/${DAMODULE}/lib${DAMODULE}*.pkg" )
-
- foreach(_submodule ${_damodule})
- string(REGEX REPLACE ".*lib(${DAMODULE}.*)" "\\1" _submodule ${_submodule})
- string(REGEX REPLACE "\\.pkg" "_a" _submodule ${_submodule})
- list(APPEND ALIROOTALIBS "${_submodule}")
- endforeach(_submodule)
-
- list(REMOVE_DUPLICATES ALIROOTALIBS)
+
if(EXTRADAMODULE)
##**set
endif(EXTRADAMODULE)
#----------- Targets ----------------------
- set(CMAKE_CXX_FLAGS ${CXXFLAGS})
- set(CMAKE_C_FLAGS ${CFLAGS})
+ set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
+ set(CMAKE_C_FLAGS "${CFLAGS}")
set(CMAKE_Fortran_FLAGS ${FFLAGS})
set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS})
set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS})
set(ZIP)
+ message("${DAEXE}- ${DAMODULE} - ${ALIROOTALIBS}")
foreach(_lib ${ALIROOTALIBS})
string(REGEX REPLACE "-all" "_a" _lib ${_lib})
list(APPEND ZIP && ar x "../lib${_lib}.a")
endforeach(_lib)
- list (APPEND ZIP && ar r "../${DALIB}.a" "*.o")
-
- add_custom_target("${DALIB}_x" rm -rf junk && mkdir -p junk
+ list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
+
+ add_custom_target( ${DALIB} COMMAND rm -rf junk && mkdir -p junk
COMMAND cd junk ${ZIP}
COMMAND cd ../ && rm -rf junk
DEPENDS ${ALIROOTALIBS}
WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
- add_custom_target(${DATARGETNAME} DEPENDS ${DAEXE} )
- add_executable(${DAEXE} ${DASRC} )
+ add_custom_target(${DATARGETNAME})
+ add_executable(${DAEXE} ${DASRC})
set_property(TARGET ${DAEXE} PROPERTY EXCLUDE_FROM_ALL TRUE)
- add_dependencies(${DAEXE} ${DALIB}_x)
- target_link_libraries(${DAEXE} "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DALIB}.a" ${EXTRAROOTLIB} "${ROOTLIBDIR}/libRoot.a" "${ROOTLIBDIR}/libfreetype.a" "${ROOTLIBDIR}/libpcre.a" ${SYSLIBS} ${DAQDALIB} ${MONITORLIBS} ${AMOREDALIBS})
+ add_dependencies(${DAEXE} ${DALIB})
+ add_dependencies(DA-all ${DATARGETNAME})
+ target_link_libraries(${DAEXE} "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${DALIB}.a" ${EXTRAROOTLIB} "${ROOTLIBDIR}/libRoot.a" "${ROOTLIBDIR}/libfreetype.a" "${ROOTLIBDIR}/libpcre.a" ${SYSLIBS} ${DAQDALIB} ${MONITORLIBS} ${AMOREDALIBS})
+ add_dependencies(${DATARGETNAME} ${DAEXE})
-# add_custom_command(TARGET ${DAEXE}
-# PRE_LINK
-# COMMAND ${CMAKE_AR} r ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${EXTRAROOTLIB} ${_extraroot})
+
endif(match)
endforeach(dafile)
endforeach(detector)
set(AMORE_FOUND TRUE)
set(AMOREDEFINITIONS "-DALI_AMORE")
execute_process(COMMAND ${AMORE_CONFIG} --cflags --includes OUTPUT_VARIABLE AMOREFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
- execute_process(COMMAND ${AMORE_CONFIG} --ldflags-da-static OUTPUT_VARIABLE _lddaflags OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${AMORE_CONFIG} --ldflags --ldflags-da-static --libs OUTPUT_VARIABLE _lddaflags OUTPUT_STRIP_TRAILING_WHITESPACE)
ALICE_CleanOutput(_lddaflags "${_lddaflags}")
if(DATE_FOUND)
execute_process(COMMAND ${DATE_CONFIG} --rcproxylibs OUTPUT_VARIABLE _rcproxylib OUTPUT_STRIP_TRAILING_WHITESPACE)