CMake: Typo in DIMDIR variable
[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.8 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${AliRoot_SOURCE_DIR}/${h_module}")
70 endforeach(oldetect ${ONLINEDETECTORS})
71 list(APPEND mod "-I${AliRoot_SOURCE_DIR}/include" "-I${AliRoot_SOURCE_DIR}/STEER" "-I${AliRoot_SOURCE_DIR}/ANALYSIS" "-I${AliRoot_SOURCE_DIR}/RAW" "-I${AliRoot_SOURCE_DIR}/STEER/STEER" "-I${AliRoot_SOURCE_DIR}/STEER/CDB" "-I${ROOTINCDIR}" "-I${AliRoot_SOURCE_DIR}/STEER/STEERBase" "-I${AliRoot_SOURCE_DIR}/STEER/AOD" "-I${AliRoot_SOURCE_DIR}/STEER/ESD" "-I${AliRoot_SOURCE_DIR}/MUON/mapping" "-I${AliRoot_SOURCE_DIR}/TPC/Base" "-I$ENV{AMORE}/include/amore")
72
73 # ----------Common stuff-------------------
74
75 #file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
76 file(GLOB_RECURSE _dafiles ${AliRoot_SOURCE_DIR}/*da.cxx)
77
78 set (DAINSTALL "$ENV{ALICE_INSTALL}/DA")
79 if(DAINSTALL STREQUAL "/DA") 
80   set(DAINSTALL "$ENV{ALICE_ROOT}/DA")
81 endif(DAINSTALL STREQUAL "/DA")
82
83
84 file(MAKE_DIRECTORY ${DAINSTALL})
85
86 string (REPLACE "-pedantic-errors" "" CXXFLAGS ${CXXFLAGS})
87
88 find_program(XML2 xml2-config)
89
90 if(AMORE_FOUND)
91   #Set compiler flags
92   set(CXXFLAGS "${CXXFLAGS} ${AMOREFLAGS}")
93   set(CFLAGS "${CFLAGS} ${AMOREFLAGS}")
94   set(CINTFLAGS "${CINTFLAGS} ${AMOREFLAGS}")
95 else()
96   set(AMORELIBS)
97 endif(AMORE_FOUND)
98
99 execute_process(COMMAND ${XML2} --libs OUTPUT_VARIABLE _xml2libs OUTPUT_STRIP_TRAILING_WHITESPACE)
100 execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=noshift OUTPUT_VARIABLE MONITORLIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
101 execute_process(COMMAND $ENV{AMORE}/bin/amore-config --ldflags-da-static OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE)
102 execute_process(COMMAND $ENV{AMORE}/bin/amore-config --auxlibs  OUTPUT_VARIABLE _amore3 OUTPUT_STRIP_TRAILING_WHITESPACE)
103 execute_process(COMMAND date-config --rcproxylibs OUTPUT_VARIABLE _amore2 OUTPUT_STRIP_TRAILING_WHITESPACE)
104 execute_process(COMMAND date-config --monitorlibs=noshift OUTPUT_VARIABLE _monitor1 OUTPUT_STRIP_TRAILING_WHITESPACE)
105 string(REPLACE "\n" " " _amore1 "${_amore1}") 
106 set(AMOREDALIBS " ${_amore1} ${_amore2}")
107 set(AMOREDADLIBS " ${_amore3} ${_amore2}")
108 set(MONITORLIBS "${_monitor1} -lssl")
109 separate_arguments(MONITORLIBS)
110 separate_arguments(AMOREDALIBS)
111 separate_arguments(AMOREDADLIBS)
112 set(SYSLIBS -ldl -lpthread ${_xml2libs})
113 set(DATE_CFLAGS "${DATEFLAGS}")
114 separate_arguments(DATE_CFLAGS)
115 set(ROOTDLIBS "${ROOTCLIBS} -lRMySQL")
116 separate_arguments(ROOTDLIBS)
117
118 set(EXTRAROOTLIB "libRootExtra.a")
119 set(ROOTLIB "RootExtra")
120 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")
121
122 add_library(${ROOTLIB} STATIC ${_extraroot})      
123 set_target_properties(${ROOTLIB} PROPERTIES LINKER_LANGUAGE CXX)
124
125 set(DAQDALIB_PATH $ENV{DAQDALIB_PATH})  
126 if(DAQDALIB_PATH)
127   set(DAQDADIR "${DAQDALIB_PATH}")
128 else()
129   set(DAQDADIR "$ENV{ALICE}/daqDAlib")
130 endif(DAQDALIB_PATH)
131 set(DAQDALIB "${DAQDADIR}/libdaqDA.a")
132
133 include_directories(${DAQDADIR} ${AliRoot_SOURCE_DIR}/RAW ${AliRoot_SOURCE_DIR}/include ${AliRoot_SOURCE_DIR}/STEER)
134 include_directories(SYSTEM ${ROOTINCDIR})
135
136 # ----------Create All Valid targets---------
137           
138 foreach(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 "${AliRoot_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
175 #Found a valid target name
176         if(match)
177       string(REGEX REPLACE "${AliRoot_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         # DAROOTRELEASE 
195           execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE)
196           string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease})
197         
198       set(DAALIROOTRELEASE ${ALIROOT_BRANCH})
199         
200           set(DAARCNAME "${DATARGETNAME}")
201           #string(REPLACE "-" "" DAARCNAME "${DAARCNAME}")
202           set(DAARC "${DAARCNAME}-${ALIROOT_BRANCH_SPEC}")
203           set(DATAR "${DATARGETDIR}/${DAARC}.src.tar.gz")
204           set(DASPECFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec")
205           set(DAMAKEFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.make")
206
207   
208       file(READ "${AliRoot_SOURCE_DIR}/${DASRC}" _dasrc)
209           getinfo(DACONTACT "Contact" ${_dasrc})
210           getinfo(DALINKPAGE "Link" ${_dasrc})
211           getinfo(DAREFRUN "Reference Run" ${_dasrc})
212           getinfo(DARUNTYPE "Run Type" ${_dasrc})
213           getinfo(DATYPE "DA Type" ${_dasrc})
214           getinfo(DANUMBEROFEVENTS "Number of events needed" ${_dasrc})
215           getinfo(DAINPUTFILES "Input Files" ${_dasrc})
216           getinfo(DAOUTPUTFILES "Output Files" ${_dasrc})
217           getinfo(DATRIGGERTYPE "Trigger types used" ${_dasrc})
218
219           if(NOT _dasrc)
220            message(FATAL_ERROR "SRC FILE MISSING")
221           endif(NOT _dasrc)
222
223 #----------- Targets ----------------------
224
225           set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
226           set(CMAKE_C_FLAGS "${CFLAGS}")
227           set(CMAKE_Fortran_FLAGS ${FFLAGS})
228           set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS}) 
229           set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS})
230
231 add_dependencies(DA-all ${DATARGETNAME})
232 add_custom_target(${DATARGETNAME}
233 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
234 )
235 add_dependencies(${DATARGETNAME} ${DAEXE})
236
237 set(ZIP)
238 foreach(_lib ${ALIROOTALIBS})
239 string(REGEX REPLACE "-static" "" _lib ${_lib})
240 list(APPEND ZIP && ar x "../lib${_lib}.a")
241 endforeach(_lib)
242 list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
243
244 add_custom_target(${DALIB}.a
245 COMMAND rm -rf junk${DAEXE} && mkdir -p junk${DAEXE}
246 COMMAND cd junk${DAEXE} ${ZIP}
247 COMMAND cd ../ && rm -rf junk${DAEXE}
248 DEPENDS ${ALIROOTALIBS} 
249 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 
250 )
251
252 add_custom_command(
253 TARGET ${DATARGETNAME}-clean
254 COMMAND echo "***** Cleaning ${DAMODULE} ${SUBDAMODULE} ${DANAME} detector-algorithm *****"
255 COMMAND rm -f ${DASPECFILE}
256 COMMAND rm -f ${DATAR}
257 COMMAND rm -f ${DAEXE}
258 COMMAND rm -f ${DAOBJ}
259 COMMAND rm -f ${DADEP}
260 COMMAND rm -f ${DAMAKEFILE}
261 COMMAND rm -f ${DALIB}.a
262 COMMAND rm -f ${ALIROOTALIBS}
263 COMMAND rm -f ${EXTRAROOTLIB}
264 )
265
266 separate_arguments(SYSLIBS)
267 #execute_process(COMMAND ${AMORE}/amore-config --ldflags-da-static | tr "\n" " "  OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE)
268 #execute_process(COMMAND date-config --rcproxylibs OUTPUT_VARIABLE _amore2 OUTPUT_STRIP_TRAILING_WHITESPACE)
269 #execute_process(COMMAND date-config --monitorlibs=noshift OUTPUT_VARIABLE _monitor1 OUTPUT_STRIP_TRAILING_WHITESPACE)
270   
271 #set(AMOREDALIBS "-static ${_amore1} ${_amore2}\\")
272 #set(MONITORLIBS "${_monitor1}\\")
273
274 add_custom_target(DAMAKEFILE_${DAEXE}_)
275 add_custom_command( 
276 TARGET DAMAKEFILE_${DAEXE}_
277 COMMAND rm -f ${DAMAKEFILE}
278 COMMAND @echo "***** Making makefile ${DAMAKEFILE} *****"
279 COMMAND @echo '\#***************************************************' >> ${DAMAKEFILE}
280 COMMAND @echo '\# Makefile for Detector Algorithm' >> ${DAMAKEFILE}
281 COMMAND @echo '\#' >> ${DAMAKEFILE}
282 COMMAND @echo '\# It is necessary to setup build environment before' >> ${DAMAKEFILE}
283 COMMAND @echo '\# using make:' >> ${DAMAKEFILE}
284 COMMAND @echo '\# - define path to daqDAlib \(env. DAQDALIB_PATH\)' >> ${DAMAKEFILE}
285 COMMAND @echo '\#' >> ${DAMAKEFILE}
286 COMMAND @echo '\#*****************************************************' >> ${DAMAKEFILE}
287 COMMAND @echo "" >> ${DAMAKEFILE}
288 COMMAND @echo "CXX=g++" >> ${DAMAKEFILE}
289 COMMAND @echo "LD=g++" >> ${DAMAKEFILE}
290 COMMAND @echo "" >> ${DAMAKEFILE}
291 COMMAND @echo "CXXFLAGS=${CXXFLAGS}" >> ${DAMAKEFILE}
292 COMMAND @echo "LDFLAGS=${LDFLAGS}" >> ${DAMAKEFILE}
293 COMMAND @echo "" >> ${DAMAKEFILE}
294 COMMAND @echo 'ifeq \($$\(DAQDALIB_PATH\),\)' >> ${DAMAKEFILE}
295 COMMAND @echo "DAQDADIR=${ALICE}/daqDAlib" >> ${DAMAKEFILE}
296 COMMAND @echo "else" >> ${DAMAKEFILE}
297 COMMAND @echo 'DAQDADIR=$$(DAQDALIB_PATH)' >> ${DAMAKEFILE}
298 COMMAND @echo "endif" >> ${DAMAKEFILE}
299 COMMAND @echo "" >> ${DAMAKEFILE}
300 COMMAND @echo 'DAQDALIB=$$(DAQDADIR)/libdaqDA.a' >> ${DAMAKEFILE}
301 #COMMAND @echo 'AMOREDALIBS=-static $$(shell $$(AMORE)/amore-config --ldflags-da-static) $$(shell date-config --rcproxylibs)' >> ${DAMAKEFILE}
302 #COMMAND @echo 'MONITORLIBS=$$(shell date-config --monitorlibs=noshift)' >> ${DAMAKEFILE}
303 #COMMAND @echo 'AMOREDALIBS=-static ${_amore1} ${_amore2}' >> ${DAMAKEFILE}
304 #COMMAND @echo 'MONITORLIBS=${monitor1}' >> ${DAMAKEFILE}
305 COMMAND @echo "" >> ${DAMAKEFILE}
306 COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe: ${DAMODULE}${SUBDAMODULE}${DANAME}da.o" >> ${DAMAKEFILE}
307 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/liblzma.a $$(ROOTSYS)/lib/libfreetype.a $$(ROOTSYS)/lib/libpcre.a ${SYSLIBS} $$(DAQDALIB) ${AMOREDALIBS} ${MONITORLIBS}' >> ${DAMAKEFILE}
308 COMMAND @echo "" >> ${DAMAKEFILE}
309 COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.o: ${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx" >> ${DAMAKEFILE}
310 COMMAND @echo -e '\t$$(CXX) -c $$(CXXFLAGS) -I$$(DAQDADIR) ${mod} ''$$''< -o ''$$''@' >> ${DAMAKEFILE}
311 COMMAND @echo "" >> ${DAMAKEFILE}
312 COMMAND @echo "clean:" >> ${DAMAKEFILE}
313 COMMAND @echo -e '\t@rm -f ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe ${DAMODULE}${SUBDAMODULE}${DANAME}da.o' >> ${DAMAKEFILE}
314 COMMAND @echo "" >> ${DAMAKEFILE}
315 COMMAND @echo "install: ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe" >> ${DAMAKEFILE}
316 COMMAND @echo -e '\tif [ $$(INSTALL_PATH) == '' ]; then \\' >> ${DAMAKEFILE}
317 COMMAND @echo -e '\techo Environment variable INSTALL_PATH undefined, cannot continue\; \\' >> ${DAMAKEFILE}
318 COMMAND @echo -e '\texit 1\; \\' >> ${DAMAKEFILE}
319 COMMAND @echo -e '\tfi' >> ${DAMAKEFILE}
320 COMMAND @echo -e '\t@cp -p ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe $$(INSTALL_PATH)' >> ${DAMAKEFILE}
321 )
322
323 add_custom_target(DATAR_${DAEXE}_)
324 add_custom_command( 
325 TARGET DATAR_${DAEXE}_
326 COMMAND @echo "***** Making archive ${DATAR} *****"
327 COMMAND rm -rf ${DATAR}
328 COMMAND rm -rf junk
329 COMMAND mkdir junk && mkdir junk/${DAARC} 
330         COMMAND cp -a ${AliRoot_SOURCE_DIR}/${DASRC} junk/${DAARC} 
331 COMMAND cp -a ${DAMAKEFILE} junk/${DAARC}/Makefile 
332 COMMAND cp -a ${DASPECFILE} junk/${DAARC}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec
333 COMMAND cd junk && tar czf ${DATAR} * 
334 COMMAND cd .. && rm -rf junk
335 )
336 add_dependencies(DATAR_${DAEXE}_ DAMAKEFILE_${DAEXE}_ DASPECFILE_${DAEXE}_ ${DASRC}) 
337
338 add_custom_target(DASPECFILE_${DAEXE}_)
339
340 add_custom_command(
341 TARGET DASPECFILE_${DAEXE}_
342 COMMAND rm -f ${DASPECFILE}
343 COMMAND @echo "***** Making RPM spec-file ${DASPECFILE} *****"
344 COMMAND @echo '\# RPM specfile for $(DAMODULE)${SUBDAMODULE}$(DANAME) Detector Algorithm' >> ${DASPECFILE}
345 COMMAND @echo "Summary: ${ONLINEDETECTORNAME} Detector Algorithm" >> ${DASPECFILE}
346 COMMAND @echo "Name: ${DAARCNAME}" >> ${DASPECFILE}
347 COMMAND @echo "Version: ${ALIROOT_BRANCH_SPEC}" >> ${DASPECFILE}
348 COMMAND @echo "Release: ${GIT_SHORT_SHA1}" >> ${DASPECFILE}
349 COMMAND @echo "License: CERN Alice DAQ/Offine" >> ${DASPECFILE}
350 COMMAND @echo "Source: %{name}-%{version}.src.tar.gz" >> ${DASPECFILE}
351 COMMAND @echo "Group: Applications/Alice" >> ${DASPECFILE}
352 COMMAND @echo "Prefix: /opt/%{name}" >> ${DASPECFILE}
353 COMMAND @echo "BuildRoot: %{_tmppath}/%{name}-root" >> ${DASPECFILE}
354 COMMAND @echo "" >> ${DASPECFILE}
355 COMMAND @echo '\# automatic dependencies' >> ${DASPECFILE}
356 COMMAND @echo "AutoReqProv: yes" >> ${DASPECFILE}
357 COMMAND @echo "" >> ${DASPECFILE}
358 COMMAND @echo '\# list here required RPM packages for compilation' >> ${DASPECFILE}
359 COMMAND @echo "BuildRequires: date" >> ${DASPECFILE} 
360 COMMAND @echo "" >> ${DASPECFILE}
361 COMMAND @echo '\# list here required RPM packages for runtime' >> ${DASPECFILE}
362 COMMAND @echo "Requires: date, daqDA-lib" >> ${DASPECFILE}
363 COMMAND @echo "" >> ${DASPECFILE}    
364 COMMAND @echo '\# You can specify other dependencies in the description tag below.' >> ${DASPECFILE}
365 COMMAND @echo "" >> ${DASPECFILE}
366 COMMAND @echo '\# description of the package' >> ${DASPECFILE}
367 COMMAND @echo "%description" >> ${DASPECFILE}
368 COMMAND @echo "This is the ${ONLINEDETECTORNAME} ${DANAME} DA for online calibration." >> ${DASPECFILE}
369 COMMAND @echo "It uses data from ${DAMODULE} detectors at run time." >> ${DASPECFILE}
370 COMMAND @echo "Build requires: daqDAlib, date, AliRoot ${DAALIROOTRELEASE},ROOT ${DAROOTRELEASE}." >> ${DASPECFILE}
371 COMMAND @echo "Runtime requires: date." >> ${DASPECFILE}
372 COMMAND @echo "Contact: ${DACONTACT}" >> ${DASPECFILE}
373 COMMAND @echo "Link: ${DALINKPAGE}" >> ${DASPECFILE}
374 COMMAND @echo "Reference Run: ${DAREFRUN}" >> ${DASPECFILE}
375 COMMAND @echo "Run type: ${DARUNTYPE}" >> ${DASPECFILE}
376 COMMAND @echo "DA type: ${DATYPE}" >> ${DASPECFILE}
377 COMMAND @echo "Number of events needed: ${DANUMBEROFEVENTS}" >> ${DASPECFILE}
378 COMMAND @echo "Input files: ${DAINPUTFILES}" >> ${DASPECFILE}
379 COMMAND @echo "Output files: ${DAOUTPUTFILES}" >> ${DASPECFILE}
380 COMMAND @echo "Trigger types used: ${DATRIGGERTYPE}" >> ${DASPECFILE}
381 COMMAND @echo "" >> ${DASPECFILE}
382 COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE}
383 COMMAND @echo '\# Do not modify following scripts' >> ${DASPECFILE}
384 COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE}
385 COMMAND @echo "" >> ${DASPECFILE}
386 COMMAND @echo "%define debug_package %{nil}" >> ${DASPECFILE}
387 COMMAND @echo "%define __os_install_post %{nil}" >> ${DASPECFILE}
388 COMMAND @echo "" >> ${DASPECFILE}
389 COMMAND @echo '\# here is defined the installation root directory' >> ${DASPECFILE}
390 COMMAND @echo "%define pkgname %{name}-%{version}" >> ${DASPECFILE}
391 COMMAND @echo "%define destdir %{prefix}" >> ${DASPECFILE}
392 COMMAND @echo "" >> ${DASPECFILE}
393 COMMAND @echo '\# pre-compilation script: extract from tarball' >> ${DASPECFILE}
394 COMMAND @echo "%prep" >> ${DASPECFILE}
395 COMMAND @echo '\# extract archive' >> ${DASPECFILE}
396 COMMAND @echo "%setup -n %{pkgname}" >> ${DASPECFILE}
397 COMMAND @echo "" >> ${DASPECFILE}
398 COMMAND @echo '\# compile' >> ${DASPECFILE}
399 COMMAND @echo "%build" >> ${DASPECFILE}
400 COMMAND @echo "export DATE_SITE=" >> ${DASPECFILE}
401 COMMAND @echo ". /date/setup.sh" >> ${DASPECFILE}
402 COMMAND @echo "gmake" >> ${DASPECFILE}
403 COMMAND @echo "" >> ${DASPECFILE}
404 COMMAND @echo '\# install runtime files' >> ${DASPECFILE}
405 COMMAND @echo "%install" >> ${DASPECFILE}
406 COMMAND @echo '\#remove install dir if existing' >> ${DASPECFILE}
407 COMMAND echo  '[ -d ''$$''RPM_BUILD_ROOT ] && rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE}
408 COMMAND @echo '\#make install in install root directory' >> ${DASPECFILE}
409 COMMAND @echo 'mkdir -p ''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
410 COMMAND @echo 'make install INSTALL_PATH=''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
411 COMMAND @echo "" >> ${DASPECFILE}
412 COMMAND @echo '\# clean RPM build files' >> ${DASPECFILE}
413 COMMAND @echo "%clean" >> ${DASPECFILE}
414 COMMAND @echo '\# remove installed files' >> ${DASPECFILE}
415 COMMAND @echo 'rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE}
416 COMMAND @echo '\# remove source files' >> ${DASPECFILE}
417 COMMAND @echo 'rm -rf ''$$''RPM_BUILD_DIR/%{pkgname}' >> ${DASPECFILE}
418 COMMAND @echo "" >> ${DASPECFILE}
419 COMMAND @echo '\# pre-install script' >> ${DASPECFILE}
420 COMMAND @echo "%pre" >> ${DASPECFILE}
421 COMMAND @echo "" >> ${DASPECFILE}
422 COMMAND @echo '\# list of files to be installed' >> ${DASPECFILE}
423 COMMAND @echo "%files" >> ${DASPECFILE}
424 COMMAND @echo '%defattr \(-,root,root\)' >> ${DASPECFILE}
425 COMMAND @echo "%{destdir}" >> ${DASPECFILE}
426 COMMAND @echo "" >> ${DASPECFILE}
427 COMMAND @echo '\# post-install script' >> ${DASPECFILE}
428 COMMAND @echo '\# launched after rpm installed' >> ${DASPECFILE}
429 COMMAND @echo "%post" >> ${DASPECFILE}
430 COMMAND @echo "" >> ${DASPECFILE}
431 COMMAND @echo '\# post-uninstall script' >> ${DASPECFILE}
432 COMMAND @echo '\# launched after rpm removed' >> ${DASPECFILE}
433 COMMAND @echo "%postun" >> ${DASPECFILE}
434 )
435
436
437 add_custom_target( ${DATARGETNAME}-rpm
438 )
439 add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB}     
440 )
441 add_custom_command(TARGET ${DATARGETNAME}-rpm
442 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
443 COMMAND cp ${DATAR} ${CMAKE_BINARY_DIR}/junk/SOURCES
444 COMMAND rpmbuild --verbose --define "_topdir ${CMAKE_BINARY_DIR}/junk" --nodeps -bb ${DASPECFILE}
445 COMMAND cp `find './junk/' -name '${DAARC}*.rpm'` ./ 
446 COMMAND rm -rf junk
447 COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****"
448 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  
449 )
450
451
452 add_custom_target(${DAEXE}
453 COMMAND echo "***** Making executable ${DAEXE} *****"
454 COMMAND g++ ${LDFLAGS} ${DAOBJ} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${DALIB}.a ${EXTRAROOTLIB} $ENV{ROOTSYS}/lib/libRoot.a $ENV{ROOTSYS}/lib/liblzma.a $ENV{ROOTSYS}/lib/libfreetype.a $ENV{ROOTSYS}/lib/libpcre.a  ${SYSLIBS} ${DAQDALIB} ${AMOREDALIBS} ${MONITORLIBS} -o ${DAEXE}
455 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
456 )
457
458
459 add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB})
460
461 add_custom_target(DAOBJ_${DAEXE}_
462 )
463 add_custom_command(
464 TARGET DAOBJ_${DAEXE}_
465 COMMAND echo "***** Compiling ${DASRC} *****"
466 COMMAND echo "${DFLAGS}"
467         COMMAND g++ -c ${AMOREDEFINITIONS} -D${CMAKE_SYSTEM_NAME} ${DATE_CFLAGS} -I${DATE_ROOT}/infoLogger -I${DATE_ROOT}/logbook -I${DAQDADIR} -I${AliRoot_SOURCE_DIR}/RAW -I${CMAKE_BINARY_DIR}/include -I${ROOTINCDIR} ${mod} ${date_head} ${AliRoot_SOURCE_DIR}/${DASRC} -o ${DAOBJ}
468         WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  
469 )
470 add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ )
471
472
473 add_custom_target(DADEP_${DAEXE}_)
474 add_custom_command(
475 TARGET DADEP_${DAEXE}_
476 COMMAND echo "***** Making detector-algorithm dependencies ${DADEP} *****"
477         COMMAND g++ -MM ${DATE_CFLAGS} -I${DAQDADIR} -I${AliRoot_SOURCE_DIR}/RAW -I${CMAKE_BINARY_DIR}/include -I${ROOTINCDIR} ${mod} ${date_head} ${AliRoot_SOURCE_DIR}/${DASRC} > ${DADEP}
478         WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  
479 )
480
481
482 add_custom_command(TARGET clean
483 COMMAND rm -rf junk*.exe
484 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
485   
486
487         endif(match)
488   endforeach(dafile)
489 endforeach(detector)