]> git.uio.no Git - u/mrichter/AliRoot.git/blame - cmake/CMakeDA.cmake
Updates for unit testing software triggers.
[u/mrichter/AliRoot.git] / cmake / CMakeDA.cmake
CommitLineData
9372fe67 1cmake_minimum_required(VERSION 2.8.2 FATAL_ERROR)
6db31708 2
3# -----------Utilities--------------------
4
5#list of detectors
6set(ONLINEDETECTORS SPD SDD SSD TPC TRD TOF HMP PHS CPV PMD MCH MTR FMD T00 V00 ZDC ACO TRI EMC HLT TST GRP)
7
45526b5e 8function(expand output input)
9 string(REGEX MATCH "\\\${[^}]*}" m "${input}")
10 while(m)
11 string(REGEX REPLACE "\\\${(.*)}" "\\1" v "${m}")
12 string(REPLACE "\${${v}}" "${${v}}" input "${input}")
13 string(REGEX MATCH "\\\${[^}]*}" m "${input}")
14 endwhile()
15 set("${output}" "${input}" PARENT_SCOPE)
16endfunction()
17
6db31708 18#function to get module for detector
19function (detector_module _module detector)
20 #Map of online detectors to DA in pairs of ONLINEDETECTORNAME DAMODULE
21 set (DETECTORMODULEMAP SPD ITS SDD ITS SSD ITS HMP HMPID PHS PHOS CPV PHOS MCH MUON MTR MUON T00 T0 V00 VZERO ACO ACORDE EMC EMCAL)
22 list(FIND DETECTORMODULEMAP ${detector} _index)
23 if(_index STREQUAL "-1")
24 set(${_module} "${detector}" PARENT_SCOPE)
25 else()
26 math(EXPR _index "${_index}+1")
27 list(GET DETECTORMODULEMAP ${_index} _index)
28 set(${_module} ${_index} PARENT_SCOPE)
29 endif(_index STREQUAL "-1")
30endfunction()
31
32#function to get subDA for detector
33function (detector_subda _subda detector)
34 #Map of online detectors to SUBDAMODULE in pairs of ONLINEDETECTORNAME SUBDAMODULE
35 set (DETECTORSUBDAMAP SPD SPD SDD SDD SSD SSD CPV CPV MCH TRK MTR TRG)
36 list(FIND DETECTORSUBDAMAP ${detector} _index)
37 if(_index STREQUAL "-1")
38 set(${_subda} "" PARENT_SCOPE)
39 else()
40 math(EXPR _index "${_index}+1")
41 list(GET DETECTORSUBDAMAP ${_index} _index)
42 set(${_subda} ${_index} PARENT_SCOPE)
43 endif(_index STREQUAL "-1")
44endfunction()
45
46#function to extract info
47function (getinfo _info pattern file)
48 string(REGEX MATCH "${pattern}:[^\n]*" _match ${file})
49 if(_match)
50 string(REGEX REPLACE "${pattern}:[ ]*" "" _data ${_match})
51 endif(_match)
52 set(${_info} ${_data} PARENT_SCOPE)
53endfunction()
54
55# ----------Common stuff-------------------
56
57file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
9372fe67 58set(DAINSTALL "$ENV{ALICE_INSTALL}/DA")
6db31708 59
60file(MAKE_DIRECTORY ${DAINSTALL})
61
9372fe67 62string (REPLACE "-pedantic-errors" "" CXXFLAGS ${CXXFLAGS})
6db31708 63
6db31708 64find_program(XML2 xml2-config)
65
9372fe67 66if(AMORE_FOUND)
67 #Set compiler flags
68 set(CXXFLAGS "${CXXFLAGS} ${AMOREFLAGS}")
69 set(CFLAGS "${CFLAGS} ${AMOREFLAGS}")
70 set(CINTFLAGS "${CINTFLAGS} ${AMOREFLAGS}")
6db31708 71else()
72 set(AMORELIBS)
9372fe67 73endif(AMORE_FOUND)
6db31708 74
6db31708 75execute_process(COMMAND ${XML2} --libs OUTPUT_VARIABLE _xml2libs OUTPUT_STRIP_TRAILING_WHITESPACE)
9372fe67 76execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=noshift OUTPUT_VARIABLE MONITORLIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
6db31708 77
9372fe67 78separate_arguments(MONITORLIBS)
6db31708 79
6db31708 80set(SYSLIBS -ldl -lpthread ${_xml2libs})
9372fe67 81
e74cf56b 82
6db31708 83set(EXTRAROOTLIB "libRootExtra.a")
9372fe67 84
6db31708 85file(GLOB _extraroot "$ENV{ROOTSYS}/montercarlo/vmc/src/*.o" "$ENV{ROOTSYS}/tree/treeplayer/src/*.o" "$ENV{ROOTSYS}/io/xmlparser/src/*.o" "$ENV{ROOTSYS}/math/minuit2/src/*.o")
9372fe67 86
e74cf56b 87add_library(${EXTRAROOTLIB} STATIC ${_extraroot})
88set_target_properties(${EXTRAROOTLIB} PROPERTIES LINKER_LANGUAGE CXX)
89
9372fe67 90set(DAQDALIB_PATH $ENV{DAQDALIB_PATH})
91if(DAQDALIB_PATH)
92 set(DAQDADIR "${DAQDALIB_PATH}")
93else()
94 set(DAQDADIR "$ENV{ALICE}/daqDAlib")
95endif(DAQDALIB_PATH)
96set(DAQDALIB "${DAQDADIR}/libdaqDA.a")
97
45526b5e 98include_directories(${DAQDADIR} RAW include STEER)
9372fe67 99include_directories(SYSTEM ${ROOTINCDIR})
100
6db31708 101# ----------Create All Valid targets---------
102
103foreach(detector ${ONLINEDETECTORS} )
6db31708 104
105 set(ONLINEDETECTORNAME ${detector})
9372fe67 106
6db31708 107 detector_module(DAMODULE ${ONLINEDETECTORNAME})
9372fe67 108
6db31708 109 detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME})
45526b5e 110
111 #ALIROOTALIBS
9372fe67 112
45526b5e 113 set(ALIROOTALIBS)
114
115 list(APPEND ALIROOTALIBS RAWDatabase_a RAWDatarec_a RAWDatasim_a STEERBase_a STEER_a CDB_a ESD_a STAT_a AOD_a )
116
117 expand(ALIROOTALIBS2 "\${${DAMODULE}ALIBS}")
118 expand(DAINCDIRS "\${${DAMODULE}INC}")
119 list(APPEND ALIROOTALIBS ${ALIROOTALIBS2})
120
121 message("Listing sub directories for ${DAMODULE}")
122 message("${DAINCDIRS}")
123
124 include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS})
6db31708 125#Get detector algorithms for this detector
9372fe67 126
6db31708 127 foreach(dafile ${_dafiles})
9372fe67 128
6db31708 129 string(REGEX MATCH "$ENV{ALICE_ROOT}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
130#Found a valid target name
131 if(match)
132 string(REGEX REPLACE "$ENV{ALICE_ROOT}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile})
133#Check for default DA
134 if(DANAME)
135 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}-${DANAME}")
136 else()
137 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}")
138 endif(DANAME)
6db31708 139
140 set(DATARGETDIR "${DAINSTALL}/${DAMODULE}/tgt_$ENV{ALICE_TARGET}")
141 file(MAKE_DIRECTORY ${DATARGETDIR})
142
143 set(DASRC "${DAMODULE}/${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx")
144 set(DALIB "${DAMODULE}${SUBDAMODULE}${DANAME}DA")
45526b5e 145 set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe")
6db31708 146
147 # DAVERSION
148 execute_process(COMMAND svn info $ENV{ALICE_ROOT}/${DASRC} OUTPUT_VARIABLE _daversion OUTPUT_STRIP_TRAILING_WHITESPACE)
149 string(REGEX REPLACE ".*Last Changed Rev: ([^\n]+)\n.*" "\\1" DAVERSION ${_daversion})
150
151 # DAROOTRELEASE
152 execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE)
153 string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease})
154
155 # DAALIROOTRELEASE
156 string(REGEX REPLACE ".*URL: .*/(.+)/${DASRC}.*$" "\\1" DAALIROOTRELEASE ${_daversion})
157
158 set(DAARCNAME "${DATARGETNAME}")
159 set(DAARC "${DAARCNAME}-${DAVERSION}")
160 set(DATAR "${DATARGETDIR}/${DAARC}.src.tar.gz")
161 set(DASPECFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec")
162 set(DAMAKEFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.make")
6db31708 163
6db31708 164
45526b5e 165
6db31708 166 if(EXTRADAMODULE)
167 ##**set
168 endif(EXTRADAMODULE)
169
170 file(READ "$ENV{ALICE_ROOT}/${DASRC}" _dasrc)
171 getinfo(DACONTACT "Contact" ${_dasrc})
172 getinfo(DALINKPAGE "Link" ${_dasrc})
173 getinfo(DAREFRUN "Reference Run" ${_dasrc})
174 getinfo(DARUNTYPE "Run Type" ${_dasrc})
175 getinfo(DATYPE "DA Type" ${_dasrc})
176 getinfo(DANUMBEROFEVENTS "Number of events needed" ${_dasrc})
177 getinfo(DAINPUTFILES "Input Files" ${_dasrc})
178 getinfo(DAOUTPUTFILES "Output Files" ${_dasrc})
179 getinfo(DATRIGGERTYPE "Trigger types used" ${_dasrc})
180
181 if(NOT _dasrc)
182 message(FATAL_ERROR "SRC FILE MISSING")
183 endif(NOT _dasrc)
184
6db31708 185#----------- Targets ----------------------
186
45526b5e 187 set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
188 set(CMAKE_C_FLAGS "${CFLAGS}")
9372fe67 189 set(CMAKE_Fortran_FLAGS ${FFLAGS})
6db31708 190 set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS})
191 set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS})
192
6db31708 193 set(ZIP)
45526b5e 194 message("${DAEXE}- ${DAMODULE} - ${ALIROOTALIBS}")
6db31708 195 foreach(_lib ${ALIROOTALIBS})
196 string(REGEX REPLACE "-all" "_a" _lib ${_lib})
197 list(APPEND ZIP && ar x "../lib${_lib}.a")
198 endforeach(_lib)
45526b5e 199 list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
200
201 add_custom_target( ${DALIB} COMMAND rm -rf junk && mkdir -p junk
6db31708 202 COMMAND cd junk ${ZIP}
203 COMMAND cd ../ && rm -rf junk
204 DEPENDS ${ALIROOTALIBS}
205 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
206
45526b5e 207 add_custom_target(${DATARGETNAME})
208 add_executable(${DAEXE} ${DASRC})
6db31708 209 set_property(TARGET ${DAEXE} PROPERTY EXCLUDE_FROM_ALL TRUE)
45526b5e 210 add_dependencies(${DAEXE} ${DALIB})
211 add_dependencies(DA-all ${DATARGETNAME})
212 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})
213 add_dependencies(${DATARGETNAME} ${DAEXE})
e74cf56b 214
45526b5e 215
6db31708 216 endif(match)
217 endforeach(dafile)
218endforeach(detector)