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