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.4 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${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")
73 # ----------Common stuff-------------------
75 file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
76 set(DAINSTALL "$ENV{ALICE_INSTALL}/DA")
78 file(MAKE_DIRECTORY ${DAINSTALL})
80 string (REPLACE "-pedantic-errors" "" CXXFLAGS ${CXXFLAGS})
82 find_program(XML2 xml2-config)
86 set(CXXFLAGS "${CXXFLAGS} ${AMOREFLAGS}")
87 set(CFLAGS "${CFLAGS} ${AMOREFLAGS}")
88 set(CINTFLAGS "${CINTFLAGS} ${AMOREFLAGS}")
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}")
102 separate_arguments(MONITORLIBS)
103 separate_arguments(AMOREDALIBS)
104 set(SYSLIBS -ldl -lpthread ${_xml2libs})
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")
111 add_library(${ROOTLIB} STATIC ${_extraroot})
112 set_target_properties(${ROOTLIB} PROPERTIES LINKER_LANGUAGE CXX)
114 set(DAQDALIB_PATH $ENV{DAQDALIB_PATH})
116 set(DAQDADIR "${DAQDALIB_PATH}")
118 set(DAQDADIR "$ENV{ALICE}/daqDAlib")
120 set(DAQDALIB "${DAQDADIR}/libdaqDA.a")
122 include_directories(${DAQDADIR} ${ALICE_ROOT}/RAW ${ALICE_ROOT}/include ${ALICE_ROOT}/STEER)
123 include_directories(SYSTEM ${ROOTINCDIR})
125 # ----------Create All Valid targets---------
127 foreach(detector ${ONLINEDETECTORS} )
129 set(ONLINEDETECTORNAME ${detector})
131 detector_module(DAMODULE ${ONLINEDETECTORNAME})
133 detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME})
138 set(BASIC_TARGET "daqDA-${ONLINEDETECTORNAME}-all")
139 add_custom_target(${BASIC_TARGET}
140 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
142 set(BASIC_RPM "daqDA-${ONLINEDETECTORNAME}-all-rpm")
143 add_custom_target(${BASIC_RPM}
144 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
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 )
148 expand(ALIROOTALIBS2 "\${${DAMODULE}ALIBS}")
149 expand(DAINCDIRS "\${${DAMODULE}INC}")
150 list(APPEND ALIROOTALIBS ${ALIROOTALIBS2})
152 include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS})
153 #Get detector algorithms for this detector
155 foreach(dafile ${_dafiles})
157 string(REGEX MATCH "$ENV{ALICE_ROOT}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
158 #Found a valid target name
160 string(REGEX REPLACE "$ENV{ALICE_ROOT}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile})
161 #Check for default DA
163 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}-${DANAME}")
165 set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}")
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")
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})
181 execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE)
182 string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease})
185 string(REGEX REPLACE ".*URL: .*/(.+)/${DASRC}.*$" "\\1" DAALIROOTRELEASE ${_daversion})
186 string (REPLACE "-" "." DAALIROOTRELEASE "${DAALIROOTRELEASE}")
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")
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})
208 message(FATAL_ERROR "SRC FILE MISSING")
211 #----------- Targets ----------------------
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})
219 add_dependencies(DA-all ${DATARGETNAME})
220 add_custom_target(${DATARGETNAME}
221 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
223 add_dependencies(${DATARGETNAME} ${DAEXE})
226 foreach(_lib ${ALIROOTALIBS})
227 string(REGEX REPLACE "-static" "" _lib ${_lib})
228 list(APPEND ZIP && ar x "../lib${_lib}.a")
230 list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
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}
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}
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)
259 #set(AMOREDALIBS "-static ${_amore1} ${_amore2}\\")
260 #set(MONITORLIBS "${_monitor1}\\")
262 add_custom_target(DAMAKEFILE_${DAEXE}_)
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}
311 add_custom_target(DATAR_${DAEXE}_)
313 TARGET DATAR_${DAEXE}_
314 COMMAND @echo "***** Making archive ${DATAR} *****"
315 COMMAND rm -rf ${DATAR}
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
324 add_dependencies(DATAR_${DAEXE}_ DAMAKEFILE_${DAEXE}_ DASPECFILE_${DAEXE}_ ${DASRC})
326 add_custom_target(DASPECFILE_${DAEXE}_)
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}
425 add_custom_target( ${DATARGETNAME}-rpm
427 add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB}
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"` . ;
435 COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****"
436 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
440 add_custom_target(${DAEXE}
441 COMMAND echo "***** Making executable ${DAEXE} *****"
442 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
444 target_link_libraries(${DAEXE} "-L" "lib${DALIB}.a" ${DAOBJ} ${EXTRAROOTLIB} "${ROOTALIBDIR}/libRoot.a" "${ROOTALIBDIR}/libfreetype.a" "${ROOTALIBDIR}/libpcre.a" ${SYSLIBS} ${DAQDALIB} ${MONITORLIBS} ${AMOREDALIBS})
446 add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB})
448 add_custom_target(DAOBJ_${DAEXE}_
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}
456 add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ )
460 add_custom_target(DADEP_${DAEXE}_)
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}
469 add_custom_command(TARGET clean
470 COMMAND rm -rf junk*.exe
471 WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})