1 #--------------------------------------------------------------------
2 # CMakeDA.cmake file for AliRoot Build System
4 # Author: Anshul Goel (anshul.goel@cern.ch)
5 # Port of previous Makefile build to DAQ targets and RPM
8 cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
10 # -----------Utilities--------------------
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}")
18 string(REGEX REPLACE "\\\${(.*)}" "\\1" v "${m}")
19 string(REPLACE "\${${v}}" "${${v}}" input "${input}")
20 string(REGEX MATCH "\\\${[^}]*}" m "${input}")
22 set("${output}" "${input}" PARENT_SCOPE)
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)
33 math(EXPR _index "${_index}+1")
34 list(GET DETECTORMODULEMAP ${_index} _index)
35 set(${_module} ${_index} PARENT_SCOPE)
36 endif(_index STREQUAL "-1")
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)
47 math(EXPR _index "${_index}+1")
48 list(GET DETECTORSUBDAMAP ${_index} _index)
49 set(${_subda} ${_index} PARENT_SCOPE)
50 endif(_index STREQUAL "-1")
53 #function to extract info
54 function (getinfo _info pattern file)
55 string(REGEX MATCH "${pattern}:[^\n]*" _match ${file})
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}")
63 set(${_info} ${_data} PARENT_SCOPE)
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")
73 # ----------Common stuff-------------------
75 #file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
76 file(GLOB_RECURSE _dafiles ${AliRoot_SOURCE_DIR}/*da.cxx)
78 set (DAINSTALL "$ENV{ALICE_INSTALL}/DA")
79 if(DAINSTALL STREQUAL "/DA")
80 set(DAINSTALL "$ENV{ALICE_ROOT}/DA")
81 endif(DAINSTALL STREQUAL "/DA")
84 file(MAKE_DIRECTORY ${DAINSTALL})
86 string (REPLACE "-pedantic-errors" "" CXXFLAGS ${CXXFLAGS})
88 find_program(XML2 xml2-config)
92 set(CXXFLAGS "${CXXFLAGS} ${AMOREFLAGS}")
93 set(CFLAGS "${CFLAGS} ${AMOREFLAGS}")
94 set(CINTFLAGS "${CINTFLAGS} ${AMOREFLAGS}")
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)
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")
122 add_library(${ROOTLIB} STATIC ${_extraroot})
123 set_target_properties(${ROOTLIB} PROPERTIES LINKER_LANGUAGE CXX)
125 set(DAQDALIB_PATH $ENV{DAQDALIB_PATH})
127 set(DAQDADIR "${DAQDALIB_PATH}")
129 set(DAQDADIR "$ENV{ALICE}/daqDAlib")
131 set(DAQDALIB "${DAQDADIR}/libdaqDA.a")
133 include_directories(${DAQDADIR} ${AliRoot_SOURCE_DIR}/RAW ${AliRoot_SOURCE_DIR}/include ${AliRoot_SOURCE_DIR}/STEER)
134 include_directories(SYSTEM ${ROOTINCDIR})
136 # ----------Create All Valid targets---------
138 foreach(detector ${ONLINEDETECTORS} )
140 set(ONLINEDETECTORNAME ${detector})
142 detector_module(DAMODULE ${ONLINEDETECTORNAME})
144 detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME})
150 set(BASIC_TARGET "daqDA-${ONLINEDETECTORNAME}-all")
151 add_custom_target(${BASIC_TARGET}
152 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
154 set(BASIC_RPM "daqDA-${ONLINEDETECTORNAME}-all-rpm")
155 add_custom_target(${BASIC_RPM}
156 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
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 )
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})
170 include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS})
171 #Get detector algorithms for this detector
172 foreach(dafile ${_dafiles})
174 string(REGEX MATCH "${AliRoot_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
175 #Found a valid target name
177 string(REGEX REPLACE "${AliRoot_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile})
178 #Check for default DA
180 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}-${DANAME}")
182 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}")
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")
195 execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE)
196 string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease})
198 set(DAALIROOTRELEASE ${ALIROOT_BRANCH})
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")
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})
220 message(FATAL_ERROR "SRC FILE MISSING")
223 #----------- Targets ----------------------
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})
231 add_dependencies(DA-all ${DATARGETNAME})
232 add_custom_target(${DATARGETNAME}
233 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
235 add_dependencies(${DATARGETNAME} ${DAEXE})
238 foreach(_lib ${ALIROOTALIBS})
239 string(REGEX REPLACE "-static" "" _lib ${_lib})
240 list(APPEND ZIP && ar x "../lib${_lib}.a")
242 list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
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}
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}
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)
271 #set(AMOREDALIBS "-static ${_amore1} ${_amore2}\\")
272 #set(MONITORLIBS "${_monitor1}\\")
274 add_custom_target(DAMAKEFILE_${DAEXE}_)
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}
323 add_custom_target(DATAR_${DAEXE}_)
325 TARGET DATAR_${DAEXE}_
326 COMMAND @echo "***** Making archive ${DATAR} *****"
327 COMMAND rm -rf ${DATAR}
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
336 add_dependencies(DATAR_${DAEXE}_ DAMAKEFILE_${DAEXE}_ DASPECFILE_${DAEXE}_ ${DASRC})
338 add_custom_target(DASPECFILE_${DAEXE}_)
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}
437 add_custom_target( ${DATARGETNAME}-rpm
439 add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB}
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'` ./
447 COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****"
448 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
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}
459 add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB})
461 add_custom_target(DAOBJ_${DAEXE}_
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}
470 add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ )
473 add_custom_target(DADEP_${DAEXE}_)
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}
482 add_custom_command(TARGET clean
483 COMMAND rm -rf junk*.exe
484 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})