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