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