]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - cmake/CMakeDA.cmake
Changes to the DEtaDPhi corr fun (making 0 in the center of the bin in the histogram...
[u/mrichter/AliRoot.git] / cmake / CMakeDA.cmake
... / ...
CommitLineData
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
8cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
9
10# -----------Utilities--------------------
11
12#list of detectors
13#set(ONLINEDETECTORS T00)
14set(ONLINEDETECTORS SPD SDD SSD ACO GRP TST HLT EMC TRI T00 PMD CPV PHS FMD TPC TRD ZDC V00 MTR MCH HMP TOF)
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
25#function to get module for detector
26function (detector_module _module detector)
27 #Map of online detectors to DA in pairs of ONLINEDETECTORNAME DAMODULE
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)
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})
58 string(REPLACE "(" "\\(" _data "${_data}")
59 string(REPLACE ")" "\\)" _data "${_data}")
60 string(REPLACE "<" "\\<" _data "${_data}")
61 string(REPLACE ">" "\\>" _data "${_data}")
62 endif(_match)
63 set(${_info} ${_data} PARENT_SCOPE)
64endfunction()
65
66
67foreach(oldetect ${ONLINEDETECTORS})
68detector_module(h_module ${oldetect})
69 list(APPEND mod "-I${CMAKE_SOURCE_DIR}/${h_module}")
70endforeach(oldetect ${ONLINEDETECTORS})
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")
72
73# ----------Common stuff-------------------
74
75#file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
76file(GLOB_RECURSE _dafiles ${CMAKE_SOURCE_DIR}/*da.cxx)
77
78set (DAINSTALL "$ENV{ALICE_INSTALL}/DA")
79if(DAINSTALL STREQUAL "/DA")
80 set(DAINSTALL "$ENV{ALICE_ROOT}/DA")
81endif(DAINSTALL STREQUAL "/DA")
82
83
84file(MAKE_DIRECTORY ${DAINSTALL})
85
86string (REPLACE "-pedantic-errors" "" CXXFLAGS ${CXXFLAGS})
87
88find_program(XML2 xml2-config)
89
90if(AMORE_FOUND)
91 #Set compiler flags
92 set(CXXFLAGS "${CXXFLAGS} ${AMOREFLAGS}")
93 set(CFLAGS "${CFLAGS} ${AMOREFLAGS}")
94 set(CINTFLAGS "${CINTFLAGS} ${AMOREFLAGS}")
95else()
96 set(AMORELIBS)
97endif(AMORE_FOUND)
98
99execute_process(COMMAND ${XML2} --libs OUTPUT_VARIABLE _xml2libs OUTPUT_STRIP_TRAILING_WHITESPACE)
100execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=noshift OUTPUT_VARIABLE MONITORLIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
101execute_process(COMMAND $ENV{AMORE}/bin/amore-config --ldflags-da-static OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE)
102execute_process(COMMAND $ENV{AMORE}/bin/amore-config --auxlibs OUTPUT_VARIABLE _amore3 OUTPUT_STRIP_TRAILING_WHITESPACE)
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}")
106set(AMOREDALIBS " ${_amore1} ${_amore2}")
107set(AMOREDADLIBS " ${_amore3} ${_amore2}")
108set(MONITORLIBS "${_monitor1} -lssl")
109separate_arguments(MONITORLIBS)
110separate_arguments(AMOREDALIBS)
111separate_arguments(AMOREDADLIBS)
112set(SYSLIBS -ldl -lpthread ${_xml2libs})
113set(DATE_CFLAGS "${DATEFLAGS}")
114separate_arguments(DATE_CFLAGS)
115set(ROOTDLIBS "${ROOTCLIBS} -lRMySQL")
116separate_arguments(ROOTDLIBS)
117
118set(EXTRAROOTLIB "libRootExtra.a")
119set(ROOTLIB "RootExtra")
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")
121
122add_library(${ROOTLIB} STATIC ${_extraroot})
123set_target_properties(${ROOTLIB} PROPERTIES LINKER_LANGUAGE CXX)
124
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
133include_directories(${DAQDADIR} ${CMAKE_SOURCE_DIR}/RAW ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/STEER)
134include_directories(SYSTEM ${ROOTINCDIR})
135
136# ----------Create All Valid targets---------
137
138foreach(detector ${ONLINEDETECTORS} )
139
140 set(ONLINEDETECTORNAME ${detector})
141
142 detector_module(DAMODULE ${ONLINEDETECTORNAME})
143
144 detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME})
145
146 #ALIROOTALIBS
147
148 set(ALIROOTALIBS)
149 set(ALIROOTDLIBS)
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 )
159 list(APPEND ALIROOTDLIBS -lRAWDatabase -lRAWDatarec -lRAWDatasim -lSTEERBase -lSTEER -lCDB -lESD -lSTAT -lAOD -lANALYSIS -lANALYSISalice )
160
161 expand(ALIROOTALIBS2 "\${${DAMODULE}ALIBS}")
162 expand(ALIROOTDLIBS2 "\${${DAMODULE}LIBS}")
163 expand(DAINCDIRS "\${${DAMODULE}INC}")
164 list(APPEND ALIROOTALIBS ${ALIROOTALIBS2})
165 foreach (detlib ${ALIROOTDLIBS2})
166 list(APPEND ALIROOTDLIBS "-l${detlib}")
167 endforeach(detlib ${ALIROOTDLIBS2})
168 # list(APPEND ALIROOTDLIBS ${ALIROOTDLIBS2})
169
170 include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS})
171#Get detector algorithms for this detector
172 foreach(dafile ${_dafiles})
173
174 string(REGEX MATCH "${CMAKE_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
175#Found a valid target name
176 if(match)
177 string(REGEX REPLACE "${CMAKE_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile})
178#Check for default DA
179 if(DANAME)
180 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}-${DANAME}")
181 else()
182 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}")
183 endif(DANAME)
184 add_dependencies(${BASIC_TARGET} ${DATARGETNAME})
185 add_dependencies(${BASIC_RPM} ${DATARGETNAME}-rpm)
186 set(DATARGETDIR "${DAINSTALL}/${DAMODULE}/tgt_$ENV{ALICE_TARGET}")
187 file(MAKE_DIRECTORY ${DATARGETDIR})
188 set(DAOBJ "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.o")
189 set(DASRC "${DAMODULE}/${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx")
190 set(DALIB "${DAMODULE}${SUBDAMODULE}${DANAME}DA")
191 set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe")
192 set(DADEP "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.d")
193
194 # DAVERSION
195 # execute_process(COMMAND svn info ${CMAKE_SOURCE_DIR}/${DASRC} OUTPUT_VARIABLE _daversion OUTPUT_STRIP_TRAILING_WHITESPACE)
196 # string(REGEX REPLACE ".*Last Changed Rev: ([^\n]+)\n.*" "\\1" DAVERSION ${_daversion}e)
197 execute_process(COMMAND git log -1 --format=%h
198 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${DASRC}
199 OUTPUT_VARIABLE DAVERSION)
200
201 #DAREVISION
202 # execute_process(COMMAND svn info ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE _darevision OUTPUT_STRIP_TRAILING_WHITESPACE)
203 # string(REGEX REPLACE ".*Revision: ([^\n]+)\n.*" "\\1" DAREVISION ${_darevision})
204 execute_process(COMMAND git log -1 --format=%h
205 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${DASRC}
206 OUTPUT_VARIABLE DAVERSION)
207
208 # DAROOTRELEASE
209 execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE)
210 string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease})
211
212 # DAALIROOTRELEASE
213 # string(REGEX REPLACE ".*URL: .*/(.+)/${DASRC}.*$" "\\1" DAALIROOTRELEASE ${_daversion})
214 # string (REPLACE "-" "." DAALIROOTRELEASE "${DAALIROOTRELEASE}")
215 execute_process(COMMAND git branch
216 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${DASRC}
217 OUTPUT_VARIABLE DAVERSION)
218 string (REPLACE "* " "" DAALIROOTRELEASE "${DAALIROOTRELEASE}")
219
220 set(DAARCNAME "${DATARGETNAME}")
221 #string(REPLACE "-" "" DAARCNAME "${DAARCNAME}")
222 set(DAARC "${DAARCNAME}-${DAVERSION}")
223 set(DATAR "${DATARGETDIR}/${DAARC}.src.tar.gz")
224 set(DASPECFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec")
225 set(DAMAKEFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.make")
226
227
228 file(READ "${CMAKE_SOURCE_DIR}/${DASRC}" _dasrc)
229 getinfo(DACONTACT "Contact" ${_dasrc})
230 getinfo(DALINKPAGE "Link" ${_dasrc})
231 getinfo(DAREFRUN "Reference Run" ${_dasrc})
232 getinfo(DARUNTYPE "Run Type" ${_dasrc})
233 getinfo(DATYPE "DA Type" ${_dasrc})
234 getinfo(DANUMBEROFEVENTS "Number of events needed" ${_dasrc})
235 getinfo(DAINPUTFILES "Input Files" ${_dasrc})
236 getinfo(DAOUTPUTFILES "Output Files" ${_dasrc})
237 getinfo(DATRIGGERTYPE "Trigger types used" ${_dasrc})
238
239 if(NOT _dasrc)
240 message(FATAL_ERROR "SRC FILE MISSING")
241 endif(NOT _dasrc)
242
243#----------- Targets ----------------------
244
245 set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
246 set(CMAKE_C_FLAGS "${CFLAGS}")
247 set(CMAKE_Fortran_FLAGS ${FFLAGS})
248 set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS})
249 set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS})
250
251add_dependencies(DA-all ${DATARGETNAME})
252add_custom_target(${DATARGETNAME}
253WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
254)
255add_dependencies(${DATARGETNAME} ${DAEXE})
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
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}\\")
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}
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}
325COMMAND @echo "" >> ${DAMAKEFILE}
326COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe: ${DAMODULE}${SUBDAMODULE}${DANAME}da.o" >> ${DAMAKEFILE}
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}
328COMMAND @echo "" >> ${DAMAKEFILE}
329COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.o: ${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx" >> ${DAMAKEFILE}
330COMMAND @echo -e '\t$$(CXX) -c $$(CXXFLAGS) -I$$(DAQDADIR) ${mod} ''$$''< -o ''$$''@' >> ${DAMAKEFILE}
331COMMAND @echo "" >> ${DAMAKEFILE}
332COMMAND @echo "clean:" >> ${DAMAKEFILE}
333COMMAND @echo -e '\t@rm -f ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe ${DAMODULE}${SUBDAMODULE}${DANAME}da.o' >> ${DAMAKEFILE}
334COMMAND @echo "" >> ${DAMAKEFILE}
335COMMAND @echo "install: ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe" >> ${DAMAKEFILE}
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}
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}
350 COMMAND cp -a ${CMAKE_SOURCE_DIR}/${DASRC} junk/${DAARC}
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}
368COMMAND @echo "Release: ${DAALIROOTRELEASE}.${DAREVISION}" >> ${DASPECFILE}
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}
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}
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}
429COMMAND @echo 'mkdir -p ''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
430COMMAND @echo 'make install INSTALL_PATH=''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
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
456
457add_custom_target( ${DATARGETNAME}-rpm
458)
459add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB}
460)
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}
465COMMAND cp `find './junk/' -name '${DAARC}*.rpm'` ./
466COMMAND rm -rf junk
467COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****"
468WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
469)
470
471
472add_custom_target(${DAEXE}
473COMMAND echo "***** Making executable ${DAEXE} *****"
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}
475WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
476)
477
478
479add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB})
480
481add_custom_target(DAOBJ_${DAEXE}_
482)
483add_custom_command(
484TARGET DAOBJ_${DAEXE}_
485COMMAND echo "***** Compiling ${DASRC} *****"
486COMMAND echo "${DFLAGS}"
487 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}
488 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
489)
490add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ )
491
492
493add_custom_target(DADEP_${DAEXE}_)
494add_custom_command(
495TARGET DADEP_${DAEXE}_
496COMMAND echo "***** Making detector-algorithm dependencies ${DADEP} *****"
497 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}
498 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
499)
500
501
502add_custom_command(TARGET clean
503COMMAND rm -rf junk*.exe
504WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
505
506
507 endif(match)
508 endforeach(dafile)
509endforeach(detector)