]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - cmake/CMakeDA.cmake
fix compiler warnings + set ownership of fIonTailArray
[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})
197
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})
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})
207 string (REPLACE "-" "." DAALIROOTRELEASE "${DAALIROOTRELEASE}")
208
209 set(DAARCNAME "${DATARGETNAME}")
210 #string(REPLACE "-" "" DAARCNAME "${DAARCNAME}")
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")
215
216
217 file(READ "${CMAKE_SOURCE_DIR}/${DASRC}" _dasrc)
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
232#----------- Targets ----------------------
233
234 set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
235 set(CMAKE_C_FLAGS "${CFLAGS}")
236 set(CMAKE_Fortran_FLAGS ${FFLAGS})
237 set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS})
238 set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS})
239
240add_dependencies(DA-all ${DATARGETNAME})
241add_custom_target(${DATARGETNAME}
242WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
243)
244add_dependencies(${DATARGETNAME} ${DAEXE})
245
246set(ZIP)
247foreach(_lib ${ALIROOTALIBS})
248string(REGEX REPLACE "-static" "" _lib ${_lib})
249list(APPEND ZIP && ar x "../lib${_lib}.a")
250endforeach(_lib)
251list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
252
253add_custom_target(${DALIB}.a
254COMMAND rm -rf junk${DAEXE} && mkdir -p junk${DAEXE}
255COMMAND cd junk${DAEXE} ${ZIP}
256COMMAND cd ../ && rm -rf junk${DAEXE}
257DEPENDS ${ALIROOTALIBS}
258WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
259)
260
261add_custom_command(
262TARGET ${DATARGETNAME}-clean
263COMMAND echo "***** Cleaning ${DAMODULE} ${SUBDAMODULE} ${DANAME} detector-algorithm *****"
264COMMAND rm -f ${DASPECFILE}
265COMMAND rm -f ${DATAR}
266COMMAND rm -f ${DAEXE}
267COMMAND rm -f ${DAOBJ}
268COMMAND rm -f ${DADEP}
269COMMAND rm -f ${DAMAKEFILE}
270COMMAND rm -f ${DALIB}.a
271COMMAND rm -f ${ALIROOTALIBS}
272COMMAND rm -f ${EXTRAROOTLIB}
273)
274
275separate_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}\\")
282
283add_custom_target(DAMAKEFILE_${DAEXE}_)
284add_custom_command(
285TARGET DAMAKEFILE_${DAEXE}_
286COMMAND rm -f ${DAMAKEFILE}
287COMMAND @echo "***** Making makefile ${DAMAKEFILE} *****"
288COMMAND @echo '\#***************************************************' >> ${DAMAKEFILE}
289COMMAND @echo '\# Makefile for Detector Algorithm' >> ${DAMAKEFILE}
290COMMAND @echo '\#' >> ${DAMAKEFILE}
291COMMAND @echo '\# It is necessary to setup build environment before' >> ${DAMAKEFILE}
292COMMAND @echo '\# using make:' >> ${DAMAKEFILE}
293COMMAND @echo '\# - define path to daqDAlib (env. DAQDALIB_PATH)' >> ${DAMAKEFILE}
294COMMAND @echo '\#' >> ${DAMAKEFILE}
295COMMAND @echo '\#*****************************************************' >> ${DAMAKEFILE}
296COMMAND @echo "" >> ${DAMAKEFILE}
297COMMAND @echo "CXX=g++" >> ${DAMAKEFILE}
298COMMAND @echo "LD=g++" >> ${DAMAKEFILE}
299COMMAND @echo "" >> ${DAMAKEFILE}
300COMMAND @echo "CXXFLAGS=${CXXFLAGS}" >> ${DAMAKEFILE}
301COMMAND @echo "LDFLAGS=${LDFLAGS}" >> ${DAMAKEFILE}
302COMMAND @echo "" >> ${DAMAKEFILE}
303COMMAND @echo 'ifeq ($$(DAQDALIB_PATH),)' >> ${DAMAKEFILE}
304COMMAND @echo "DAQDADIR=${ALICE}/daqDAlib" >> ${DAMAKEFILE}
305COMMAND @echo "else" >> ${DAMAKEFILE}
306COMMAND @echo 'DAQDADIR=$$(DAQDALIB_PATH)' >> ${DAMAKEFILE}
307COMMAND @echo "endif" >> ${DAMAKEFILE}
308COMMAND @echo "" >> ${DAMAKEFILE}
309COMMAND @echo 'DAQDALIB=$$(DAQDADIR)/libdaqDA.a' >> ${DAMAKEFILE}
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}
314COMMAND @echo "" >> ${DAMAKEFILE}
315COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe: ${DAMODULE}${SUBDAMODULE}${DANAME}da.o" >> ${DAMAKEFILE}
316COMMAND @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}
317COMMAND @echo "" >> ${DAMAKEFILE}
318COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.o: ${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx" >> ${DAMAKEFILE}
319COMMAND @echo -e '\t$$(CXX) -c $$(CXXFLAGS) -I$$(DAQDADIR) ${mod} ''$$''< -o ''$$''@' >> ${DAMAKEFILE}
320COMMAND @echo "" >> ${DAMAKEFILE}
321COMMAND @echo "clean:" >> ${DAMAKEFILE}
322COMMAND @echo -e '\t@rm -f ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe ${DAMODULE}${SUBDAMODULE}${DANAME}da.o' >> ${DAMAKEFILE}
323COMMAND @echo "" >> ${DAMAKEFILE}
324COMMAND @echo "install: ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe" >> ${DAMAKEFILE}
325COMMAND @echo -e '\tif [ $$(INSTALL_PATH) == '' ]; then \\' >> ${DAMAKEFILE}
326COMMAND @echo -e '\techo Environment variable INSTALL_PATH undefined, cannot continue\; \\' >> ${DAMAKEFILE}
327COMMAND @echo -e '\texit 1\; \\' >> ${DAMAKEFILE}
328COMMAND @echo -e '\tfi' >> ${DAMAKEFILE}
329COMMAND @echo -e '\t@cp -p ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe $$(INSTALL_PATH)' >> ${DAMAKEFILE}
330)
331
332add_custom_target(DATAR_${DAEXE}_)
333add_custom_command(
334TARGET DATAR_${DAEXE}_
335COMMAND @echo "***** Making archive ${DATAR} *****"
336COMMAND rm -rf ${DATAR}
337COMMAND rm -rf junk
338COMMAND mkdir junk && mkdir junk/${DAARC}
339 COMMAND cp -a ${CMAKE_SOURCE_DIR}/${DASRC} junk/${DAARC}
340COMMAND cp -a ${DAMAKEFILE} junk/${DAARC}/Makefile
341COMMAND cp -a ${DASPECFILE} junk/${DAARC}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec
342COMMAND cd junk && tar czf ${DATAR} *
343COMMAND cd .. && rm -rf junk
344)
345add_dependencies(DATAR_${DAEXE}_ DAMAKEFILE_${DAEXE}_ DASPECFILE_${DAEXE}_ ${DASRC})
346
347add_custom_target(DASPECFILE_${DAEXE}_)
348
349add_custom_command(
350TARGET DASPECFILE_${DAEXE}_
351COMMAND rm -f ${DASPECFILE}
352COMMAND @echo "***** Making RPM spec-file ${DASPECFILE} *****"
353COMMAND @echo '\# RPM specfile for $(DAMODULE)${SUBDAMODULE}$(DANAME) Detector Algorithm' >> ${DASPECFILE}
354COMMAND @echo "Summary: ${ONLINEDETECTORNAME} Detector Algorithm" >> ${DASPECFILE}
355COMMAND @echo "Name: ${DAARCNAME}" >> ${DASPECFILE}
356COMMAND @echo "Version: ${DAVERSION}" >> ${DASPECFILE}
357COMMAND @echo "Release: ${DAALIROOTRELEASE}.${DAREVISION}" >> ${DASPECFILE}
358COMMAND @echo "License: CERN Alice DAQ/Offine" >> ${DASPECFILE}
359COMMAND @echo "Source: %{name}-%{version}.src.tar.gz" >> ${DASPECFILE}
360COMMAND @echo "Group: Applications/Alice" >> ${DASPECFILE}
361COMMAND @echo "Prefix: /opt/%{name}" >> ${DASPECFILE}
362COMMAND @echo "BuildRoot: %{_tmppath}/%{name}-root" >> ${DASPECFILE}
363COMMAND @echo "" >> ${DASPECFILE}
364COMMAND @echo '\# automatic dependencies' >> ${DASPECFILE}
365COMMAND @echo "AutoReqProv: yes" >> ${DASPECFILE}
366COMMAND @echo "" >> ${DASPECFILE}
367COMMAND @echo '\# list here required RPM packages for compilation' >> ${DASPECFILE}
368COMMAND @echo "BuildRequires: date" >> ${DASPECFILE}
369COMMAND @echo "" >> ${DASPECFILE}
370COMMAND @echo '\# list here required RPM packages for runtime' >> ${DASPECFILE}
371COMMAND @echo "Requires: date" >> ${DASPECFILE}
372COMMAND @echo "" >> ${DASPECFILE}
373COMMAND @echo '\# You can specify other dependencies in the description tag below.' >> ${DASPECFILE}
374COMMAND @echo "" >> ${DASPECFILE}
375COMMAND @echo '\# description of the package' >> ${DASPECFILE}
376COMMAND @echo "%description" >> ${DASPECFILE}
377COMMAND @echo "This is the ${ONLINEDETECTORNAME} ${DANAME} DA for online calibration." >> ${DASPECFILE}
378COMMAND @echo "It uses data from ${DAMODULE} detectors at run time." >> ${DASPECFILE}
379COMMAND @echo "Build requires: daqDAlib, date, AliRoot ${DAALIROOTRELEASE},ROOT ${DAROOTRELEASE}." >> ${DASPECFILE}
380COMMAND @echo "Runtime requires: date." >> ${DASPECFILE}
381COMMAND @echo "Contact: ${DACONTACT}" >> ${DASPECFILE}
382COMMAND @echo "Link: ${DALINKPAGE}" >> ${DASPECFILE}
383COMMAND @echo "Reference Run: ${DAREFRUN}" >> ${DASPECFILE}
384COMMAND @echo "Run type: ${DARUNTYPE}" >> ${DASPECFILE}
385COMMAND @echo "DA type: ${DATYPE}" >> ${DASPECFILE}
386COMMAND @echo "Number of events needed: ${DANUMBEROFEVENTS}" >> ${DASPECFILE}
387COMMAND @echo "Input files: ${DAINPUTFILES}" >> ${DASPECFILE}
388COMMAND @echo "Output files: ${DAOUTPUTFILES}" >> ${DASPECFILE}
389COMMAND @echo "Trigger types used: ${DATRIGGERTYPE}" >> ${DASPECFILE}
390COMMAND @echo "" >> ${DASPECFILE}
391COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE}
392COMMAND @echo '\# Do not modify following scripts' >> ${DASPECFILE}
393COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE}
394COMMAND @echo "" >> ${DASPECFILE}
395COMMAND @echo "%define debug_package %{nil}" >> ${DASPECFILE}
396COMMAND @echo "%define __os_install_post %{nil}" >> ${DASPECFILE}
397COMMAND @echo "" >> ${DASPECFILE}
398COMMAND @echo '\# here is defined the installation root directory' >> ${DASPECFILE}
399COMMAND @echo "%define pkgname %{name}-%{version}" >> ${DASPECFILE}
400COMMAND @echo "%define destdir %{prefix}" >> ${DASPECFILE}
401COMMAND @echo "" >> ${DASPECFILE}
402COMMAND @echo '\# pre-compilation script: extract from tarball' >> ${DASPECFILE}
403COMMAND @echo "%prep" >> ${DASPECFILE}
404COMMAND @echo '\# extract archive' >> ${DASPECFILE}
405COMMAND @echo "%setup -n %{pkgname}" >> ${DASPECFILE}
406COMMAND @echo "" >> ${DASPECFILE}
407COMMAND @echo '\# compile' >> ${DASPECFILE}
408COMMAND @echo "%build" >> ${DASPECFILE}
409COMMAND @echo "export DATE_SITE=" >> ${DASPECFILE}
410COMMAND @echo ". /date/setup.sh" >> ${DASPECFILE}
411COMMAND @echo "gmake" >> ${DASPECFILE}
412COMMAND @echo "" >> ${DASPECFILE}
413COMMAND @echo '\# install runtime files' >> ${DASPECFILE}
414COMMAND @echo "%install" >> ${DASPECFILE}
415COMMAND @echo '\#remove install dir if existing' >> ${DASPECFILE}
416COMMAND echo '[ -d ''$$''RPM_BUILD_ROOT ] && rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE}
417COMMAND @echo '\#make install in install root directory' >> ${DASPECFILE}
418COMMAND @echo 'mkdir -p ''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
419COMMAND @echo 'make install INSTALL_PATH=''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
420COMMAND @echo "" >> ${DASPECFILE}
421COMMAND @echo '\# clean RPM build files' >> ${DASPECFILE}
422COMMAND @echo "%clean" >> ${DASPECFILE}
423COMMAND @echo '\# remove installed files' >> ${DASPECFILE}
424COMMAND @echo 'rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE}
425COMMAND @echo '\# remove source files' >> ${DASPECFILE}
426COMMAND @echo 'rm -rf ''$$''RPM_BUILD_DIR/%{pkgname}' >> ${DASPECFILE}
427COMMAND @echo "" >> ${DASPECFILE}
428COMMAND @echo '\# pre-install script' >> ${DASPECFILE}
429COMMAND @echo "%pre" >> ${DASPECFILE}
430COMMAND @echo "" >> ${DASPECFILE}
431COMMAND @echo '\# list of files to be installed' >> ${DASPECFILE}
432COMMAND @echo "%files" >> ${DASPECFILE}
433COMMAND @echo '%defattr (-,root,root)' >> ${DASPECFILE}
434COMMAND @echo "%{destdir}" >> ${DASPECFILE}
435COMMAND @echo "" >> ${DASPECFILE}
436COMMAND @echo '\# post-install script' >> ${DASPECFILE}
437COMMAND @echo '\# launched after rpm installed' >> ${DASPECFILE}
438COMMAND @echo "%post" >> ${DASPECFILE}
439COMMAND @echo "" >> ${DASPECFILE}
440COMMAND @echo '\# post-uninstall script' >> ${DASPECFILE}
441COMMAND @echo '\# launched after rpm removed' >> ${DASPECFILE}
442COMMAND @echo "%postun" >> ${DASPECFILE}
443)
444
445
446add_custom_target( ${DATARGETNAME}-rpm
447)
448add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB}
449)
450add_custom_command(TARGET ${DATARGETNAME}-rpm
451COMMAND 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
452COMMAND cp ${DATAR} ${CMAKE_BINARY_DIR}/junk/SOURCES
453COMMAND rpmbuild --verbose --define "_topdir ${CMAKE_BINARY_DIR}/junk" --nodeps -bb ${DASPECFILE}
454COMMAND cp `find './junk/' -name '${DAARC}*.rpm'` ./
455COMMAND rm -rf junk
456COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****"
457WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
458)
459
460
461add_custom_target(${DAEXE}
462COMMAND echo "***** Making executable ${DAEXE} *****"
463COMMAND 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}
464WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
465)
466
467
468add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB})
469
470add_custom_target(DAOBJ_${DAEXE}_
471)
472add_custom_command(
473TARGET DAOBJ_${DAEXE}_
474COMMAND echo "***** Compiling ${DASRC} *****"
475COMMAND echo "${DFLAGS}"
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}
477 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
478)
479add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ )
480
481
482add_custom_target(DADEP_${DAEXE}_)
483add_custom_command(
484TARGET DADEP_${DAEXE}_
485COMMAND echo "***** Making detector-algorithm dependencies ${DADEP} *****"
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}
488)
489
490
491add_custom_command(TARGET clean
492COMMAND rm -rf junk*.exe
493WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
494
495
496 endif(match)
497 endforeach(dafile)
498endforeach(detector)