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