]>
Commit | Line | Data |
---|---|---|
0a8abcad | 1 | #-------------------------------------------------------------------- |
2 | # CMakeDA.cmake file for AliRoot Build System | |
3 | # | |
4 | # Author: Anshul Goel (anshul.goel@cern.ch) | |
5 | # Port of previous Makefile build to DAQ targets and RPM | |
6 | # | |
7 | ||
6b06712c | 8 | cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR) |
6db31708 | 9 | |
10 | # -----------Utilities-------------------- | |
11 | ||
12 | #list of detectors | |
d54ad8d4 | 13 | #set(ONLINEDETECTORS T00) |
121bb192 | 14 | set(ONLINEDETECTORS SPD SDD SSD ACO GRP TST HLT EMC TRI T00 PMD CPV PHS FMD TPC TRD ZDC V00 MTR MCH HMP TOF) |
45526b5e | 15 | function(expand output input) |
16 | string(REGEX MATCH "\\\${[^}]*}" m "${input}") | |
17 | while(m) | |
18 | string(REGEX REPLACE "\\\${(.*)}" "\\1" v "${m}") | |
19 | string(REPLACE "\${${v}}" "${${v}}" input "${input}") | |
20 | string(REGEX MATCH "\\\${[^}]*}" m "${input}") | |
21 | endwhile() | |
22 | set("${output}" "${input}" PARENT_SCOPE) | |
23 | endfunction() | |
24 | ||
6db31708 | 25 | #function to get module for detector |
26 | function (detector_module _module detector) | |
27 | #Map of online detectors to DA in pairs of ONLINEDETECTORNAME DAMODULE | |
121bb192 | 28 | 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) |
6db31708 | 29 | list(FIND DETECTORMODULEMAP ${detector} _index) |
30 | if(_index STREQUAL "-1") | |
31 | set(${_module} "${detector}" PARENT_SCOPE) | |
32 | else() | |
33 | math(EXPR _index "${_index}+1") | |
34 | list(GET DETECTORMODULEMAP ${_index} _index) | |
35 | set(${_module} ${_index} PARENT_SCOPE) | |
36 | endif(_index STREQUAL "-1") | |
37 | endfunction() | |
38 | ||
39 | #function to get subDA for detector | |
40 | function (detector_subda _subda detector) | |
41 | #Map of online detectors to SUBDAMODULE in pairs of ONLINEDETECTORNAME SUBDAMODULE | |
42 | set (DETECTORSUBDAMAP SPD SPD SDD SDD SSD SSD CPV CPV MCH TRK MTR TRG) | |
43 | list(FIND DETECTORSUBDAMAP ${detector} _index) | |
44 | if(_index STREQUAL "-1") | |
45 | set(${_subda} "" PARENT_SCOPE) | |
46 | else() | |
47 | math(EXPR _index "${_index}+1") | |
48 | list(GET DETECTORSUBDAMAP ${_index} _index) | |
49 | set(${_subda} ${_index} PARENT_SCOPE) | |
50 | endif(_index STREQUAL "-1") | |
51 | endfunction() | |
52 | ||
53 | #function to extract info | |
54 | function (getinfo _info pattern file) | |
55 | string(REGEX MATCH "${pattern}:[^\n]*" _match ${file}) | |
56 | if(_match) | |
57 | string(REGEX REPLACE "${pattern}:[ ]*" "" _data ${_match}) | |
6050a6e8 | 58 | string(REPLACE "(" "\\(" _data "${_data}") |
59 | string(REPLACE ")" "\\)" _data "${_data}") | |
60 | string(REPLACE "<" "\\<" _data "${_data}") | |
61 | string(REPLACE ">" "\\>" _data "${_data}") | |
6db31708 | 62 | endif(_match) |
63 | set(${_info} ${_data} PARENT_SCOPE) | |
64 | endfunction() | |
65 | ||
0a8abcad | 66 | |
67 | foreach(oldetect ${ONLINEDETECTORS}) | |
68 | detector_module(h_module ${oldetect}) | |
58a019bc | 69 | list(APPEND mod "-I${CMAKE_SOURCE_DIR}/${h_module}") |
0a8abcad | 70 | endforeach(oldetect ${ONLINEDETECTORS}) |
58a019bc | 71 | list(APPEND mod "-I${CMAKE_SOURCE_DIR}/include" "-I${CMAKE_SOURCE_DIR}/STEER" "-I${CMAKE_SOURCE_DIR}/ANALYSIS" "-I${CMAKE_SOURCE_DIR}/RAW" "-I${CMAKE_SOURCE_DIR}/STEER/STEER" "-I${CMAKE_SOURCE_DIR}/STEER/CDB" "-I${ROOTINCDIR}" "-I${CMAKE_SOURCE_DIR}/STEER/STEERBase" "-I${CMAKE_SOURCE_DIR}/STEER/AOD" "-I${CMAKE_SOURCE_DIR}/STEER/ESD" "-I${CMAKE_SOURCE_DIR}/MUON/mapping" "-I$ENV{AMORE}/include/amore") |
0a8abcad | 72 | |
6db31708 | 73 | # ----------Common stuff------------------- |
74 | ||
58a019bc | 75 | #file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx) |
76 | file(GLOB_RECURSE _dafiles ${CMAKE_SOURCE_DIR}/*da.cxx) | |
77 | ||
769f99cf | 78 | set (DAINSTALL "$ENV{ALICE_INSTALL}/DA") |
79 | if(DAINSTALL STREQUAL "/DA") | |
80 | set(DAINSTALL "$ENV{ALICE_ROOT}/DA") | |
81 | endif(DAINSTALL STREQUAL "/DA") | |
82 | ||
6db31708 | 83 | |
84 | file(MAKE_DIRECTORY ${DAINSTALL}) | |
85 | ||
9372fe67 | 86 | string (REPLACE "-pedantic-errors" "" CXXFLAGS ${CXXFLAGS}) |
6db31708 | 87 | |
6db31708 | 88 | find_program(XML2 xml2-config) |
89 | ||
9372fe67 | 90 | if(AMORE_FOUND) |
91 | #Set compiler flags | |
92 | set(CXXFLAGS "${CXXFLAGS} ${AMOREFLAGS}") | |
93 | set(CFLAGS "${CFLAGS} ${AMOREFLAGS}") | |
94 | set(CINTFLAGS "${CINTFLAGS} ${AMOREFLAGS}") | |
6db31708 | 95 | else() |
96 | set(AMORELIBS) | |
9372fe67 | 97 | endif(AMORE_FOUND) |
6db31708 | 98 | |
6db31708 | 99 | execute_process(COMMAND ${XML2} --libs OUTPUT_VARIABLE _xml2libs OUTPUT_STRIP_TRAILING_WHITESPACE) |
9372fe67 | 100 | execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=noshift OUTPUT_VARIABLE MONITORLIBS OUTPUT_STRIP_TRAILING_WHITESPACE) |
9d9b9d1e | 101 | execute_process(COMMAND $ENV{AMORE}/bin/amore-config --ldflags-da-static OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE) |
58a019bc | 102 | execute_process(COMMAND $ENV{AMORE}/bin/amore-config --auxlibs OUTPUT_VARIABLE _amore3 OUTPUT_STRIP_TRAILING_WHITESPACE) |
d54ad8d4 | 103 | execute_process(COMMAND date-config --rcproxylibs OUTPUT_VARIABLE _amore2 OUTPUT_STRIP_TRAILING_WHITESPACE) |
104 | execute_process(COMMAND date-config --monitorlibs=noshift OUTPUT_VARIABLE _monitor1 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
105 | string(REPLACE "\n" " " _amore1 "${_amore1}") | |
9d9b9d1e | 106 | set(AMOREDALIBS " ${_amore1} ${_amore2}") |
58a019bc | 107 | set(AMOREDADLIBS " ${_amore3} ${_amore2}") |
9d9b9d1e | 108 | set(MONITORLIBS "${_monitor1} -lssl") |
9372fe67 | 109 | separate_arguments(MONITORLIBS) |
d54ad8d4 | 110 | separate_arguments(AMOREDALIBS) |
58a019bc | 111 | separate_arguments(AMOREDADLIBS) |
6db31708 | 112 | set(SYSLIBS -ldl -lpthread ${_xml2libs}) |
58a019bc | 113 | set(DATE_CFLAGS "${DATEFLAGS}") |
114 | separate_arguments(DATE_CFLAGS) | |
115 | set(ROOTDLIBS "${ROOTCLIBS} -lRMySQL") | |
116 | separate_arguments(ROOTDLIBS) | |
e74cf56b | 117 | |
6db31708 | 118 | set(EXTRAROOTLIB "libRootExtra.a") |
d54ad8d4 | 119 | set(ROOTLIB "RootExtra") |
6db31708 | 120 | file(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 | 121 | |
d54ad8d4 | 122 | add_library(${ROOTLIB} STATIC ${_extraroot}) |
123 | set_target_properties(${ROOTLIB} PROPERTIES LINKER_LANGUAGE CXX) | |
e74cf56b | 124 | |
9372fe67 | 125 | set(DAQDALIB_PATH $ENV{DAQDALIB_PATH}) |
126 | if(DAQDALIB_PATH) | |
127 | set(DAQDADIR "${DAQDALIB_PATH}") | |
128 | else() | |
129 | set(DAQDADIR "$ENV{ALICE}/daqDAlib") | |
130 | endif(DAQDALIB_PATH) | |
131 | set(DAQDALIB "${DAQDADIR}/libdaqDA.a") | |
132 | ||
58a019bc | 133 | include_directories(${DAQDADIR} ${CMAKE_SOURCE_DIR}/RAW ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/STEER) |
9372fe67 | 134 | include_directories(SYSTEM ${ROOTINCDIR}) |
135 | ||
6db31708 | 136 | # ----------Create All Valid targets--------- |
137 | ||
138 | foreach(detector ${ONLINEDETECTORS} ) | |
6db31708 | 139 | |
140 | set(ONLINEDETECTORNAME ${detector}) | |
9372fe67 | 141 | |
6db31708 | 142 | detector_module(DAMODULE ${ONLINEDETECTORNAME}) |
9372fe67 | 143 | |
6db31708 | 144 | detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME}) |
45526b5e | 145 | |
146 | #ALIROOTALIBS | |
9372fe67 | 147 | |
45526b5e | 148 | set(ALIROOTALIBS) |
58a019bc | 149 | set(ALIROOTDLIBS) |
d54ad8d4 | 150 | set(BASIC_TARGET "daqDA-${ONLINEDETECTORNAME}-all") |
151 | add_custom_target(${BASIC_TARGET} | |
152 | WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
153 | ) | |
154 | set(BASIC_RPM "daqDA-${ONLINEDETECTORNAME}-all-rpm") | |
155 | add_custom_target(${BASIC_RPM} | |
156 | WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
157 | ) | |
158 | list(APPEND ALIROOTALIBS RAWDatabase-static RAWDatarec-static RAWDatasim-static STEERBase-static STEER-static CDB-static ESD-static STAT-static AOD-static ANALYSIS-static ANALYSISalice-static ) | |
58a019bc | 159 | list(APPEND ALIROOTDLIBS -lRAWDatabase -lRAWDatarec -lRAWDatasim -lSTEERBase -lSTEER -lCDB -lESD -lSTAT -lAOD -lANALYSIS -lANALYSISalice ) |
45526b5e | 160 | |
161 | expand(ALIROOTALIBS2 "\${${DAMODULE}ALIBS}") | |
58a019bc | 162 | expand(ALIROOTDLIBS2 "\${${DAMODULE}LIBS}") |
45526b5e | 163 | expand(DAINCDIRS "\${${DAMODULE}INC}") |
164 | list(APPEND ALIROOTALIBS ${ALIROOTALIBS2}) | |
58a019bc | 165 | foreach (detlib ${ALIROOTDLIBS2}) |
166 | list(APPEND ALIROOTDLIBS "-l${detlib}") | |
167 | endforeach(detlib ${ALIROOTDLIBS2}) | |
168 | # list(APPEND ALIROOTDLIBS ${ALIROOTDLIBS2}) | |
45526b5e | 169 | |
45526b5e | 170 | include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS}) |
6db31708 | 171 | #Get detector algorithms for this detector |
172 | foreach(dafile ${_dafiles}) | |
9372fe67 | 173 | |
58a019bc | 174 | string(REGEX MATCH "${CMAKE_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile}) |
6db31708 | 175 | #Found a valid target name |
176 | if(match) | |
58a019bc | 177 | string(REGEX REPLACE "${CMAKE_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile}) |
6db31708 | 178 | #Check for default DA |
179 | if(DANAME) | |
180 | set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}-${DANAME}") | |
d54ad8d4 | 181 | else() |
6db31708 | 182 | set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}") |
183 | endif(DANAME) | |
d54ad8d4 | 184 | add_dependencies(${BASIC_TARGET} ${DATARGETNAME}) |
185 | add_dependencies(${BASIC_RPM} ${DATARGETNAME}-rpm) | |
186 | set(DATARGETDIR "${DAINSTALL}/${DAMODULE}/tgt_$ENV{ALICE_TARGET}") | |
6db31708 | 187 | file(MAKE_DIRECTORY ${DATARGETDIR}) |
0a8abcad | 188 | set(DAOBJ "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.o") |
6db31708 | 189 | set(DASRC "${DAMODULE}/${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx") |
190 | set(DALIB "${DAMODULE}${SUBDAMODULE}${DANAME}DA") | |
45526b5e | 191 | set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe") |
0a8abcad | 192 | set(DADEP "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.d") |
58a019bc | 193 | |
6db31708 | 194 | # DAVERSION |
58a019bc | 195 | execute_process(COMMAND svn info ${CMAKE_SOURCE_DIR}/${DASRC} OUTPUT_VARIABLE _daversion OUTPUT_STRIP_TRAILING_WHITESPACE) |
6db31708 | 196 | string(REGEX REPLACE ".*Last Changed Rev: ([^\n]+)\n.*" "\\1" DAVERSION ${_daversion}) |
197 | ||
8c50ee13 | 198 | #DAREVISION |
199 | execute_process(COMMAND svn info ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE _darevision OUTPUT_STRIP_TRAILING_WHITESPACE) | |
200 | string(REGEX REPLACE ".*Revision: ([^\n]+)\n.*" "\\1" DAREVISION ${_darevision}) | |
6db31708 | 201 | # DAROOTRELEASE |
202 | execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE) | |
203 | string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease}) | |
204 | ||
205 | # DAALIROOTRELEASE | |
206 | string(REGEX REPLACE ".*URL: .*/(.+)/${DASRC}.*$" "\\1" DAALIROOTRELEASE ${_daversion}) | |
7251bfcc | 207 | string (REPLACE "-" "." DAALIROOTRELEASE "${DAALIROOTRELEASE}") |
6db31708 | 208 | |
209 | set(DAARCNAME "${DATARGETNAME}") | |
8c50ee13 | 210 | #string(REPLACE "-" "" DAARCNAME "${DAARCNAME}") |
6db31708 | 211 | set(DAARC "${DAARCNAME}-${DAVERSION}") |
212 | set(DATAR "${DATARGETDIR}/${DAARC}.src.tar.gz") | |
213 | set(DASPECFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec") | |
214 | set(DAMAKEFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.make") | |
6db31708 | 215 | |
0a8abcad | 216 | |
58a019bc | 217 | file(READ "${CMAKE_SOURCE_DIR}/${DASRC}" _dasrc) |
6db31708 | 218 | getinfo(DACONTACT "Contact" ${_dasrc}) |
219 | getinfo(DALINKPAGE "Link" ${_dasrc}) | |
220 | getinfo(DAREFRUN "Reference Run" ${_dasrc}) | |
221 | getinfo(DARUNTYPE "Run Type" ${_dasrc}) | |
222 | getinfo(DATYPE "DA Type" ${_dasrc}) | |
223 | getinfo(DANUMBEROFEVENTS "Number of events needed" ${_dasrc}) | |
224 | getinfo(DAINPUTFILES "Input Files" ${_dasrc}) | |
225 | getinfo(DAOUTPUTFILES "Output Files" ${_dasrc}) | |
226 | getinfo(DATRIGGERTYPE "Trigger types used" ${_dasrc}) | |
227 | ||
228 | if(NOT _dasrc) | |
229 | message(FATAL_ERROR "SRC FILE MISSING") | |
230 | endif(NOT _dasrc) | |
231 | ||
6db31708 | 232 | #----------- Targets ---------------------- |
233 | ||
45526b5e | 234 | set(CMAKE_CXX_FLAGS "${CXXFLAGS}") |
235 | set(CMAKE_C_FLAGS "${CFLAGS}") | |
9372fe67 | 236 | set(CMAKE_Fortran_FLAGS ${FFLAGS}) |
6db31708 | 237 | set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS}) |
238 | set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS}) | |
239 | ||
d54ad8d4 | 240 | add_dependencies(DA-all ${DATARGETNAME}) |
0a8abcad | 241 | add_custom_target(${DATARGETNAME} |
242 | WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
243 | ) | |
244 | add_dependencies(${DATARGETNAME} ${DAEXE}) | |
245 | ||
246 | set(ZIP) | |
247 | foreach(_lib ${ALIROOTALIBS}) | |
248 | string(REGEX REPLACE "-static" "" _lib ${_lib}) | |
249 | list(APPEND ZIP && ar x "../lib${_lib}.a") | |
250 | endforeach(_lib) | |
251 | list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o") | |
252 | ||
253 | add_custom_target(${DALIB}.a | |
254 | COMMAND rm -rf junk${DAEXE} && mkdir -p junk${DAEXE} | |
255 | COMMAND cd junk${DAEXE} ${ZIP} | |
256 | COMMAND cd ../ && rm -rf junk${DAEXE} | |
257 | DEPENDS ${ALIROOTALIBS} | |
258 | WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
259 | ) | |
260 | ||
261 | add_custom_command( | |
262 | TARGET ${DATARGETNAME}-clean | |
263 | COMMAND echo "***** Cleaning ${DAMODULE} ${SUBDAMODULE} ${DANAME} detector-algorithm *****" | |
264 | COMMAND rm -f ${DASPECFILE} | |
265 | COMMAND rm -f ${DATAR} | |
266 | COMMAND rm -f ${DAEXE} | |
267 | COMMAND rm -f ${DAOBJ} | |
268 | COMMAND rm -f ${DADEP} | |
269 | COMMAND rm -f ${DAMAKEFILE} | |
270 | COMMAND rm -f ${DALIB}.a | |
271 | COMMAND rm -f ${ALIROOTALIBS} | |
272 | COMMAND rm -f ${EXTRAROOTLIB} | |
273 | ) | |
274 | ||
d54ad8d4 | 275 | separate_arguments(SYSLIBS) |
276 | #execute_process(COMMAND ${AMORE}/amore-config --ldflags-da-static | tr "\n" " " OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
277 | #execute_process(COMMAND date-config --rcproxylibs OUTPUT_VARIABLE _amore2 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
278 | #execute_process(COMMAND date-config --monitorlibs=noshift OUTPUT_VARIABLE _monitor1 OUTPUT_STRIP_TRAILING_WHITESPACE) | |
279 | ||
280 | #set(AMOREDALIBS "-static ${_amore1} ${_amore2}\\") | |
281 | #set(MONITORLIBS "${_monitor1}\\") | |
0a8abcad | 282 | |
283 | add_custom_target(DAMAKEFILE_${DAEXE}_) | |
284 | add_custom_command( | |
285 | TARGET DAMAKEFILE_${DAEXE}_ | |
286 | COMMAND rm -f ${DAMAKEFILE} | |
287 | COMMAND @echo "***** Making makefile ${DAMAKEFILE} *****" | |
288 | COMMAND @echo '\#***************************************************' >> ${DAMAKEFILE} | |
289 | COMMAND @echo '\# Makefile for Detector Algorithm' >> ${DAMAKEFILE} | |
290 | COMMAND @echo '\#' >> ${DAMAKEFILE} | |
291 | COMMAND @echo '\# It is necessary to setup build environment before' >> ${DAMAKEFILE} | |
292 | COMMAND @echo '\# using make:' >> ${DAMAKEFILE} | |
293 | COMMAND @echo '\# - define path to daqDAlib (env. DAQDALIB_PATH)' >> ${DAMAKEFILE} | |
294 | COMMAND @echo '\#' >> ${DAMAKEFILE} | |
295 | COMMAND @echo '\#*****************************************************' >> ${DAMAKEFILE} | |
296 | COMMAND @echo "" >> ${DAMAKEFILE} | |
297 | COMMAND @echo "CXX=g++" >> ${DAMAKEFILE} | |
298 | COMMAND @echo "LD=g++" >> ${DAMAKEFILE} | |
299 | COMMAND @echo "" >> ${DAMAKEFILE} | |
300 | COMMAND @echo "CXXFLAGS=${CXXFLAGS}" >> ${DAMAKEFILE} | |
301 | COMMAND @echo "LDFLAGS=${LDFLAGS}" >> ${DAMAKEFILE} | |
302 | COMMAND @echo "" >> ${DAMAKEFILE} | |
303 | COMMAND @echo 'ifeq ($$(DAQDALIB_PATH),)' >> ${DAMAKEFILE} | |
304 | COMMAND @echo "DAQDADIR=${ALICE}/daqDAlib" >> ${DAMAKEFILE} | |
305 | COMMAND @echo "else" >> ${DAMAKEFILE} | |
306 | COMMAND @echo 'DAQDADIR=$$(DAQDALIB_PATH)' >> ${DAMAKEFILE} | |
307 | COMMAND @echo "endif" >> ${DAMAKEFILE} | |
308 | COMMAND @echo "" >> ${DAMAKEFILE} | |
309 | COMMAND @echo 'DAQDALIB=$$(DAQDADIR)/libdaqDA.a' >> ${DAMAKEFILE} | |
d54ad8d4 | 310 | #COMMAND @echo 'AMOREDALIBS=-static $$(shell $$(AMORE)/amore-config --ldflags-da-static) $$(shell date-config --rcproxylibs)' >> ${DAMAKEFILE} |
311 | #COMMAND @echo 'MONITORLIBS=$$(shell date-config --monitorlibs=noshift)' >> ${DAMAKEFILE} | |
312 | #COMMAND @echo 'AMOREDALIBS=-static ${_amore1} ${_amore2}' >> ${DAMAKEFILE} | |
313 | #COMMAND @echo 'MONITORLIBS=${monitor1}' >> ${DAMAKEFILE} | |
0a8abcad | 314 | COMMAND @echo "" >> ${DAMAKEFILE} |
315 | COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe: ${DAMODULE}${SUBDAMODULE}${DANAME}da.o" >> ${DAMAKEFILE} | |
f173b8fc | 316 | COMMAND @echo -e '\t$$(LD) $$(LDFLAGS) -o ''$$''@ ''$$''< ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${DALIB}.a ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${EXTRAROOTLIB} $$(ROOTSYS)/lib/libRoot.a $$(ROOTSYS)/lib/liblzma.a $$(ROOTSYS)/lib/libfreetype.a $$(ROOTSYS)/lib/libpcre.a ${SYSLIBS} $$(DAQDALIB) ${AMOREDALIBS} ${MONITORLIBS}' >> ${DAMAKEFILE} |
0a8abcad | 317 | COMMAND @echo "" >> ${DAMAKEFILE} |
318 | COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.o: ${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx" >> ${DAMAKEFILE} | |
d54ad8d4 | 319 | COMMAND @echo -e '\t$$(CXX) -c $$(CXXFLAGS) -I$$(DAQDADIR) ${mod} ''$$''< -o ''$$''@' >> ${DAMAKEFILE} |
0a8abcad | 320 | COMMAND @echo "" >> ${DAMAKEFILE} |
321 | COMMAND @echo "clean:" >> ${DAMAKEFILE} | |
d54ad8d4 | 322 | COMMAND @echo -e '\t@rm -f ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe ${DAMODULE}${SUBDAMODULE}${DANAME}da.o' >> ${DAMAKEFILE} |
0a8abcad | 323 | COMMAND @echo "" >> ${DAMAKEFILE} |
324 | COMMAND @echo "install: ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe" >> ${DAMAKEFILE} | |
d54ad8d4 | 325 | COMMAND @echo -e '\tif [ $$(INSTALL_PATH) == '' ]; then \\' >> ${DAMAKEFILE} |
326 | COMMAND @echo -e '\techo Environment variable INSTALL_PATH undefined, cannot continue\; \\' >> ${DAMAKEFILE} | |
327 | COMMAND @echo -e '\texit 1\; \\' >> ${DAMAKEFILE} | |
328 | COMMAND @echo -e '\tfi' >> ${DAMAKEFILE} | |
329 | COMMAND @echo -e '\t@cp -p ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe $$(INSTALL_PATH)' >> ${DAMAKEFILE} | |
0a8abcad | 330 | ) |
331 | ||
332 | add_custom_target(DATAR_${DAEXE}_) | |
333 | add_custom_command( | |
334 | TARGET DATAR_${DAEXE}_ | |
335 | COMMAND @echo "***** Making archive ${DATAR} *****" | |
336 | COMMAND rm -rf ${DATAR} | |
337 | COMMAND rm -rf junk | |
338 | COMMAND mkdir junk && mkdir junk/${DAARC} | |
58a019bc | 339 | COMMAND cp -a ${CMAKE_SOURCE_DIR}/${DASRC} junk/${DAARC} |
0a8abcad | 340 | COMMAND cp -a ${DAMAKEFILE} junk/${DAARC}/Makefile |
341 | COMMAND cp -a ${DASPECFILE} junk/${DAARC}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec | |
342 | COMMAND cd junk && tar czf ${DATAR} * | |
343 | COMMAND cd .. && rm -rf junk | |
344 | ) | |
345 | add_dependencies(DATAR_${DAEXE}_ DAMAKEFILE_${DAEXE}_ DASPECFILE_${DAEXE}_ ${DASRC}) | |
346 | ||
347 | add_custom_target(DASPECFILE_${DAEXE}_) | |
348 | ||
349 | add_custom_command( | |
350 | TARGET DASPECFILE_${DAEXE}_ | |
351 | COMMAND rm -f ${DASPECFILE} | |
352 | COMMAND @echo "***** Making RPM spec-file ${DASPECFILE} *****" | |
353 | COMMAND @echo '\# RPM specfile for $(DAMODULE)${SUBDAMODULE}$(DANAME) Detector Algorithm' >> ${DASPECFILE} | |
354 | COMMAND @echo "Summary: ${ONLINEDETECTORNAME} Detector Algorithm" >> ${DASPECFILE} | |
355 | COMMAND @echo "Name: ${DAARCNAME}" >> ${DASPECFILE} | |
356 | COMMAND @echo "Version: ${DAVERSION}" >> ${DASPECFILE} | |
8c50ee13 | 357 | COMMAND @echo "Release: ${DAALIROOTRELEASE}.${DAREVISION}" >> ${DASPECFILE} |
0a8abcad | 358 | COMMAND @echo "License: CERN Alice DAQ/Offine" >> ${DASPECFILE} |
359 | COMMAND @echo "Source: %{name}-%{version}.src.tar.gz" >> ${DASPECFILE} | |
360 | COMMAND @echo "Group: Applications/Alice" >> ${DASPECFILE} | |
361 | COMMAND @echo "Prefix: /opt/%{name}" >> ${DASPECFILE} | |
362 | COMMAND @echo "BuildRoot: %{_tmppath}/%{name}-root" >> ${DASPECFILE} | |
363 | COMMAND @echo "" >> ${DASPECFILE} | |
364 | COMMAND @echo '\# automatic dependencies' >> ${DASPECFILE} | |
365 | COMMAND @echo "AutoReqProv: yes" >> ${DASPECFILE} | |
366 | COMMAND @echo "" >> ${DASPECFILE} | |
367 | COMMAND @echo '\# list here required RPM packages for compilation' >> ${DASPECFILE} | |
368 | COMMAND @echo "BuildRequires: date" >> ${DASPECFILE} | |
369 | COMMAND @echo "" >> ${DASPECFILE} | |
370 | COMMAND @echo '\# list here required RPM packages for runtime' >> ${DASPECFILE} | |
371 | COMMAND @echo "Requires: date" >> ${DASPECFILE} | |
372 | COMMAND @echo "" >> ${DASPECFILE} | |
373 | COMMAND @echo '\# You can specify other dependencies in the description tag below.' >> ${DASPECFILE} | |
374 | COMMAND @echo "" >> ${DASPECFILE} | |
375 | COMMAND @echo '\# description of the package' >> ${DASPECFILE} | |
376 | COMMAND @echo "%description" >> ${DASPECFILE} | |
377 | COMMAND @echo "This is the ${ONLINEDETECTORNAME} ${DANAME} DA for online calibration." >> ${DASPECFILE} | |
378 | COMMAND @echo "It uses data from ${DAMODULE} detectors at run time." >> ${DASPECFILE} | |
379 | COMMAND @echo "Build requires: daqDAlib, date, AliRoot ${DAALIROOTRELEASE},ROOT ${DAROOTRELEASE}." >> ${DASPECFILE} | |
380 | COMMAND @echo "Runtime requires: date." >> ${DASPECFILE} | |
6050a6e8 | 381 | COMMAND @echo "Contact: ${DACONTACT}" >> ${DASPECFILE} |
382 | COMMAND @echo "Link: ${DALINKPAGE}" >> ${DASPECFILE} | |
383 | COMMAND @echo "Reference Run: ${DAREFRUN}" >> ${DASPECFILE} | |
384 | COMMAND @echo "Run type: ${DARUNTYPE}" >> ${DASPECFILE} | |
385 | COMMAND @echo "DA type: ${DATYPE}" >> ${DASPECFILE} | |
386 | COMMAND @echo "Number of events needed: ${DANUMBEROFEVENTS}" >> ${DASPECFILE} | |
387 | COMMAND @echo "Input files: ${DAINPUTFILES}" >> ${DASPECFILE} | |
388 | COMMAND @echo "Output files: ${DAOUTPUTFILES}" >> ${DASPECFILE} | |
389 | COMMAND @echo "Trigger types used: ${DATRIGGERTYPE}" >> ${DASPECFILE} | |
0a8abcad | 390 | COMMAND @echo "" >> ${DASPECFILE} |
391 | COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE} | |
392 | COMMAND @echo '\# Do not modify following scripts' >> ${DASPECFILE} | |
393 | COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE} | |
394 | COMMAND @echo "" >> ${DASPECFILE} | |
395 | COMMAND @echo "%define debug_package %{nil}" >> ${DASPECFILE} | |
396 | COMMAND @echo "%define __os_install_post %{nil}" >> ${DASPECFILE} | |
397 | COMMAND @echo "" >> ${DASPECFILE} | |
398 | COMMAND @echo '\# here is defined the installation root directory' >> ${DASPECFILE} | |
399 | COMMAND @echo "%define pkgname %{name}-%{version}" >> ${DASPECFILE} | |
400 | COMMAND @echo "%define destdir %{prefix}" >> ${DASPECFILE} | |
401 | COMMAND @echo "" >> ${DASPECFILE} | |
402 | COMMAND @echo '\# pre-compilation script: extract from tarball' >> ${DASPECFILE} | |
403 | COMMAND @echo "%prep" >> ${DASPECFILE} | |
404 | COMMAND @echo '\# extract archive' >> ${DASPECFILE} | |
405 | COMMAND @echo "%setup -n %{pkgname}" >> ${DASPECFILE} | |
406 | COMMAND @echo "" >> ${DASPECFILE} | |
407 | COMMAND @echo '\# compile' >> ${DASPECFILE} | |
408 | COMMAND @echo "%build" >> ${DASPECFILE} | |
409 | COMMAND @echo "export DATE_SITE=" >> ${DASPECFILE} | |
410 | COMMAND @echo ". /date/setup.sh" >> ${DASPECFILE} | |
411 | COMMAND @echo "gmake" >> ${DASPECFILE} | |
412 | COMMAND @echo "" >> ${DASPECFILE} | |
413 | COMMAND @echo '\# install runtime files' >> ${DASPECFILE} | |
414 | COMMAND @echo "%install" >> ${DASPECFILE} | |
415 | COMMAND @echo '\#remove install dir if existing' >> ${DASPECFILE} | |
416 | COMMAND echo '[ -d ''$$''RPM_BUILD_ROOT ] && rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE} | |
417 | COMMAND @echo '\#make install in install root directory' >> ${DASPECFILE} | |
d54ad8d4 | 418 | COMMAND @echo 'mkdir -p ''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE} |
419 | COMMAND @echo 'make install INSTALL_PATH=''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE} | |
0a8abcad | 420 | COMMAND @echo "" >> ${DASPECFILE} |
421 | COMMAND @echo '\# clean RPM build files' >> ${DASPECFILE} | |
422 | COMMAND @echo "%clean" >> ${DASPECFILE} | |
423 | COMMAND @echo '\# remove installed files' >> ${DASPECFILE} | |
424 | COMMAND @echo 'rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE} | |
425 | COMMAND @echo '\# remove source files' >> ${DASPECFILE} | |
426 | COMMAND @echo 'rm -rf ''$$''RPM_BUILD_DIR/%{pkgname}' >> ${DASPECFILE} | |
427 | COMMAND @echo "" >> ${DASPECFILE} | |
428 | COMMAND @echo '\# pre-install script' >> ${DASPECFILE} | |
429 | COMMAND @echo "%pre" >> ${DASPECFILE} | |
430 | COMMAND @echo "" >> ${DASPECFILE} | |
431 | COMMAND @echo '\# list of files to be installed' >> ${DASPECFILE} | |
432 | COMMAND @echo "%files" >> ${DASPECFILE} | |
433 | COMMAND @echo '%defattr (-,root,root)' >> ${DASPECFILE} | |
434 | COMMAND @echo "%{destdir}" >> ${DASPECFILE} | |
435 | COMMAND @echo "" >> ${DASPECFILE} | |
436 | COMMAND @echo '\# post-install script' >> ${DASPECFILE} | |
437 | COMMAND @echo '\# launched after rpm installed' >> ${DASPECFILE} | |
438 | COMMAND @echo "%post" >> ${DASPECFILE} | |
439 | COMMAND @echo "" >> ${DASPECFILE} | |
440 | COMMAND @echo '\# post-uninstall script' >> ${DASPECFILE} | |
441 | COMMAND @echo '\# launched after rpm removed' >> ${DASPECFILE} | |
442 | COMMAND @echo "%postun" >> ${DASPECFILE} | |
443 | ) | |
444 | ||
d54ad8d4 | 445 | |
0a8abcad | 446 | add_custom_target( ${DATARGETNAME}-rpm |
447 | ) | |
d54ad8d4 | 448 | add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB} |
0a8abcad | 449 | ) |
d54ad8d4 | 450 | add_custom_command(TARGET ${DATARGETNAME}-rpm |
451 | COMMAND mkdir -p ${CMAKE_BINARY_DIR}/junk/SOURCES ${CMAKE_BINARY_DIR}/junk/SPECS ${CMAKE_BINARY_DIR}/junk/BUILD ${CMAKE_BINARY_DIR}/junk/RPMS ${CMAKE_BINARY_DIR}/junk/SRPMS | |
452 | COMMAND cp ${DATAR} ${CMAKE_BINARY_DIR}/junk/SOURCES | |
453 | COMMAND rpmbuild --verbose --define "_topdir ${CMAKE_BINARY_DIR}/junk" --nodeps -bb ${DASPECFILE} | |
8c50ee13 | 454 | COMMAND cp `find './junk/' -name '${DAARC}*.rpm'` ./ |
0a8abcad | 455 | COMMAND rm -rf junk |
d54ad8d4 | 456 | COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****" |
457 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
0a8abcad | 458 | ) |
459 | ||
460 | ||
461 | add_custom_target(${DAEXE} | |
462 | COMMAND echo "***** Making executable ${DAEXE} *****" | |
f173b8fc | 463 | COMMAND g++ ${LDFLAGS} ${DAOBJ} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${DALIB}.a ${EXTRAROOTLIB} ${ROOTSYS}/lib/libRoot.a ${ROOTSYS}/lib/liblzma.a ${ROOTSYS}/lib/libfreetype.a ${ROOTSYS}/lib/libpcre.a ${SYSLIBS} ${DAQDALIB} ${AMOREDALIBS} ${MONITORLIBS} -o ${DAEXE} |
0a8abcad | 464 | WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} |
465 | ) | |
62c1e3a4 | 466 | |
467 | ||
d54ad8d4 | 468 | add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB}) |
0a8abcad | 469 | |
470 | add_custom_target(DAOBJ_${DAEXE}_ | |
471 | ) | |
472 | add_custom_command( | |
473 | TARGET DAOBJ_${DAEXE}_ | |
474 | COMMAND echo "***** Compiling ${DASRC} *****" | |
8c50ee13 | 475 | COMMAND echo "${DFLAGS}" |
58a019bc | 476 | COMMAND g++ -c ${AMOREDEFINITIONS} -D${CMAKE_SYSTEM_NAME} ${DATE_CFLAGS} -I${DATE_ROOT}/infoLogger -I${DATE_ROOT}/logbook -I${DAQDADIR} -I${CMAKE_SOURCE_DIR}/RAW -I${CMAKE_BINARY_DIR}/include -I${ROOTINCDIR} ${mod} ${date_head} ${CMAKE_SOURCE_DIR}/${DASRC} -o ${DAOBJ} |
58a019bc | 477 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR} |
0a8abcad | 478 | ) |
479 | add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ ) | |
480 | ||
481 | ||
0a8abcad | 482 | add_custom_target(DADEP_${DAEXE}_) |
483 | add_custom_command( | |
484 | TARGET DADEP_${DAEXE}_ | |
485 | COMMAND echo "***** Making detector-algorithm dependencies ${DADEP} *****" | |
58a019bc | 486 | COMMAND g++ -MM ${DATE_CFLAGS} -I${DAQDADIR} -I${CMAKE_SOURCE_DIR}/RAW -I${CMAKE_BINARY_DIR}/include -I${ROOTINCDIR} ${mod} ${date_head} ${CMAKE_SOURCE_DIR}/${DASRC} > ${DADEP} |
487 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
0a8abcad | 488 | ) |
489 | ||
490 | ||
0a8abcad | 491 | add_custom_command(TARGET clean |
492 | COMMAND rm -rf junk*.exe | |
493 | WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) | |
6050a6e8 | 494 | |
45526b5e | 495 | |
6db31708 | 496 | endif(match) |
497 | endforeach(dafile) | |
498 | endforeach(detector) |