]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - cmake/CMakeDA.cmake
Xcode project file addded to .gitignore
[u/mrichter/AliRoot.git] / cmake / CMakeDA.cmake
index b358ae9482dcf53d0d705d7448cd033473ed3efa..01e4033f9eafc7ad1ff9ce0f3b995ded68073759 100644 (file)
@@ -1,9 +1,26 @@
-cmake_minimum_required(VERSION 2.8.2 FATAL_ERROR)
+#--------------------------------------------------------------------
+# CMakeDA.cmake file for AliRoot Build System
+#
+# Author: Anshul Goel (anshul.goel@cern.ch)
+#         Port of previous Makefile build to DAQ targets and RPM
+#
+
+cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
 
 # -----------Utilities--------------------
 
 #list of detectors 
-set(ONLINEDETECTORS SPD SDD SSD TPC TRD TOF HMP PHS CPV PMD MCH MTR FMD T00 V00 ZDC ACO TRI EMC HLT TST GRP)
+#set(ONLINEDETECTORS T00)
+set(ONLINEDETECTORS SPD SDD SSD ACO GRP TST HLT EMC TRI T00 PMD CPV PHS FMD TPC TRD ZDC V00 MTR MCH HMP TOF)
+function(expand output input)
+    string(REGEX MATCH "\\\${[^}]*}" m "${input}")
+    while(m)
+        string(REGEX REPLACE "\\\${(.*)}" "\\1" v "${m}")
+        string(REPLACE "\${${v}}" "${${v}}" input "${input}")
+        string(REGEX MATCH "\\\${[^}]*}" m "${input}")
+    endwhile()
+    set("${output}" "${input}" PARENT_SCOPE)
+endfunction()
 
 #function to get module for detector
 function (detector_module _module detector)
@@ -38,14 +55,31 @@ function (getinfo _info pattern file)
   string(REGEX MATCH "${pattern}:[^\n]*" _match ${file})
   if(_match)
     string(REGEX REPLACE "${pattern}:[ ]*" "" _data ${_match})
+    string(REPLACE "(" "\\(" _data "${_data}")
+    string(REPLACE ")" "\\)" _data "${_data}")
+    string(REPLACE "<" "\\<" _data "${_data}")
+    string(REPLACE ">" "\\>" _data "${_data}")
   endif(_match)
   set(${_info} ${_data} PARENT_SCOPE)
 endfunction()
 
+
+foreach(oldetect ${ONLINEDETECTORS})
+detector_module(h_module ${oldetect})
+  list(APPEND mod "-I${CMAKE_SOURCE_DIR}/${h_module}")
+endforeach(oldetect ${ONLINEDETECTORS})
+list(APPEND mod "-I${CMAKE_SOURCE_DIR}/include" "-I${CMAKE_SOURCE_DIR}/STEER" "-I${CMAKE_SOURCE_DIR}/ANALYSIS" "-I${CMAKE_SOURCE_DIR}/RAW" "-I${CMAKE_SOURCE_DIR}/STEER/STEER" "-I${CMAKE_SOURCE_DIR}/STEER/CDB" "-I${ROOTINCDIR}" "-I${CMAKE_SOURCE_DIR}/STEER/STEERBase" "-I${CMAKE_SOURCE_DIR}/STEER/AOD" "-I${CMAKE_SOURCE_DIR}/STEER/ESD" "-I${CMAKE_SOURCE_DIR}/MUON/mapping" "-I${CMAKE_SOURCE_DIR}/TPC/Base" "-I$ENV{AMORE}/include/amore")
+
 # ----------Common stuff-------------------
 
-file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
-set(DAINSTALL "$ENV{ALICE_INSTALL}/DA")
+#file(GLOB_RECURSE _dafiles $ENV{ALICE_ROOT}/*da.cxx)
+file(GLOB_RECURSE _dafiles ${CMAKE_SOURCE_DIR}/*da.cxx)
+
+set (DAINSTALL "$ENV{ALICE_INSTALL}/DA")
+if(DAINSTALL STREQUAL "/DA") 
+  set(DAINSTALL "$ENV{ALICE_ROOT}/DA")
+endif(DAINSTALL STREQUAL "/DA")
+
 
 file(MAKE_DIRECTORY ${DAINSTALL})
 
@@ -64,15 +98,30 @@ endif(AMORE_FOUND)
 
 execute_process(COMMAND ${XML2} --libs OUTPUT_VARIABLE _xml2libs OUTPUT_STRIP_TRAILING_WHITESPACE)
 execute_process(COMMAND ${DATE_CONFIG} --monitorlibs=noshift OUTPUT_VARIABLE MONITORLIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
-
+execute_process(COMMAND $ENV{AMORE}/bin/amore-config --ldflags-da-static OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND $ENV{AMORE}/bin/amore-config --auxlibs  OUTPUT_VARIABLE _amore3 OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND date-config --rcproxylibs OUTPUT_VARIABLE _amore2 OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND date-config --monitorlibs=noshift OUTPUT_VARIABLE _monitor1 OUTPUT_STRIP_TRAILING_WHITESPACE)
+string(REPLACE "\n" " " _amore1 "${_amore1}") 
+set(AMOREDALIBS " ${_amore1} ${_amore2}")
+set(AMOREDADLIBS " ${_amore3} ${_amore2}")
+set(MONITORLIBS "${_monitor1} -lssl")
 separate_arguments(MONITORLIBS)
-
+separate_arguments(AMOREDALIBS)
+separate_arguments(AMOREDADLIBS)
 set(SYSLIBS -ldl -lpthread ${_xml2libs})
+set(DATE_CFLAGS "${DATEFLAGS}")
+separate_arguments(DATE_CFLAGS)
+set(ROOTDLIBS "${ROOTCLIBS} -lRMySQL")
+separate_arguments(ROOTDLIBS)
 
 set(EXTRAROOTLIB "libRootExtra.a")
-
+set(ROOTLIB "RootExtra")
 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")
 
+add_library(${ROOTLIB} STATIC ${_extraroot})      
+set_target_properties(${ROOTLIB} PROPERTIES LINKER_LANGUAGE CXX)
+
 set(DAQDALIB_PATH $ENV{DAQDALIB_PATH}) 
 if(DAQDALIB_PATH)
   set(DAQDADIR "${DAQDALIB_PATH}")
@@ -81,93 +130,82 @@ else()
 endif(DAQDALIB_PATH)
 set(DAQDALIB "${DAQDADIR}/libdaqDA.a")
 
-include_directories(${DAQDADIR} RAW)
+include_directories(${DAQDADIR} ${CMAKE_SOURCE_DIR}/RAW ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/STEER)
 include_directories(SYSTEM ${ROOTINCDIR})
 
-#message("${_extraroot}")
-
-
-#add_custom_target(TARGET ${EXTRAROOTLIB} COMMAND ${CMAKE_AR} r $ENV{ALICE_INSTALL}/lib/tgt_$ENV{ALICE_TARGET}/${EXTRAROOTLIB} ${_extraroot} COMMAND pwd)
-
-message("RAW SRCS ${RAWDatabase_SRC}")
-
 # ----------Create All Valid targets---------
          
 foreach(detector ${ONLINEDETECTORS} )
-  
-  #ALIROOTALIBS
-
-  set(ALIROOTALIBS)
-
-  list(APPEND ALIROOTALIBS RAWDatabase_a RAWDatarec_a RAWDatasim_a STEERBase_a STEER_a CDB_a ESD_a STAT_a AOD_a )
 
   set(ONLINEDETECTORNAME ${detector})
 
   detector_module(DAMODULE ${ONLINEDETECTORNAME})
 
   detector_subda(SUBDAMODULE ${ONLINEDETECTORNAME})
+  
+  #ALIROOTALIBS
 
+  set(ALIROOTALIBS)
+  set(ALIROOTDLIBS)
+       set(BASIC_TARGET "daqDA-${ONLINEDETECTORNAME}-all")
+       add_custom_target(${BASIC_TARGET}
+       WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+       ) 
+       set(BASIC_RPM "daqDA-${ONLINEDETECTORNAME}-all-rpm")
+       add_custom_target(${BASIC_RPM}
+       WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+        )
+ 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 )
+  list(APPEND ALIROOTDLIBS -lRAWDatabase -lRAWDatarec -lRAWDatasim -lSTEERBase -lSTEER -lCDB -lESD -lSTAT -lAOD -lANALYSIS -lANALYSISalice )
+
+  expand(ALIROOTALIBS2 "\${${DAMODULE}ALIBS}")
+  expand(ALIROOTDLIBS2 "\${${DAMODULE}LIBS}")
+  expand(DAINCDIRS "\${${DAMODULE}INC}")
+  list(APPEND ALIROOTALIBS ${ALIROOTALIBS2})
+  foreach (detlib ${ALIROOTDLIBS2}) 
+    list(APPEND ALIROOTDLIBS "-l${detlib}")
+  endforeach(detlib ${ALIROOTDLIBS2})  
+  # list(APPEND ALIROOTDLIBS ${ALIROOTDLIBS2})
+  
+  include_directories(${DAMODULE} ${SUBDIR} ${DAINCDIRS})
 #Get detector algorithms for this detector
-
   foreach(dafile ${_dafiles})
 
-       string(REGEX MATCH "$ENV{ALICE_ROOT}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
+    string(REGEX MATCH "${CMAKE_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}" match ${dafile})
 #Found a valid target name
        if(match)
-          string(REGEX REPLACE "$ENV{ALICE_ROOT}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile})
+      string(REGEX REPLACE "${CMAKE_SOURCE_DIR}/${DAMODULE}/${DAMODULE}${SUBDAMODULE}(.*)da\\.cxx" "\\1" DANAME ${dafile})
 #Check for default DA 
          if(DANAME)
            set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}-${DANAME}")
-         else()
+       else()
            set(DATARGETNAME "daqDA-${ONLINEDETECTORNAME}")
          endif(DANAME)
-          message("${DATARGETNAME}")
-
-         set(DATARGETDIR "${DAINSTALL}/${DAMODULE}/tgt_$ENV{ALICE_TARGET}")
-         file(MAKE_DIRECTORY ${DATARGETDIR})
-
-         set(DASRC "${DAMODULE}/${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx")
-         set(DALIB "${DAMODULE}${SUBDAMODULE}${DANAME}DA")
-         set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da")
-         
-       # DAVERSION
-         execute_process(COMMAND svn info $ENV{ALICE_ROOT}/${DASRC} OUTPUT_VARIABLE _daversion OUTPUT_STRIP_TRAILING_WHITESPACE)
-         string(REGEX REPLACE ".*Last Changed Rev: ([^\n]+)\n.*" "\\1" DAVERSION ${_daversion})
+       add_dependencies(${BASIC_TARGET} ${DATARGETNAME})  
+       add_dependencies(${BASIC_RPM} ${DATARGETNAME}-rpm) 
+       set(DATARGETDIR "${DAINSTALL}/${DAMODULE}/tgt_$ENV{ALICE_TARGET}")
+       file(MAKE_DIRECTORY ${DATARGETDIR})
+       set(DAOBJ "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.o")
+       set(DASRC "${DAMODULE}/${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx")
+       set(DALIB "${DAMODULE}${SUBDAMODULE}${DANAME}DA")
+       set(DAEXE "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe")
+       set(DADEP "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.d") 
 
        # DAROOTRELEASE 
          execute_process(COMMAND root-config --version OUTPUT_VARIABLE _darootrelease OUTPUT_STRIP_TRAILING_WHITESPACE)
          string(REGEX REPLACE "/" "." DAROOTRELEASE ${_darootrelease})
        
-       # DAALIROOTRELEASE
-         string(REGEX REPLACE ".*URL: .*/(.+)/${DASRC}.*$" "\\1" DAALIROOTRELEASE ${_daversion})
+      set(DAALIROOTRELEASE ${ALIROOT_BRANCH})
        
          set(DAARCNAME "${DATARGETNAME}")
-         set(DAARC "${DAARCNAME}-${DAVERSION}")
+         #string(REPLACE "-" "" DAARCNAME "${DAARCNAME}")
+         set(DAARC "${DAARCNAME}-${ALIROOT_BRANCH_SPEC}")
          set(DATAR "${DATARGETDIR}/${DAARC}.src.tar.gz")
          set(DASPECFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec")
          set(DAMAKEFILE "${DATARGETDIR}/${DAMODULE}${SUBDAMODULE}${DANAME}da.make")
 
-
-# Super Duper Hack :D
-         file(GLOB _damodule "$ENV{ALICE_ROOT}/${DAMODULE}/lib${DAMODULE}*.pkg" )
-         
-         message(${_damodule})
-         foreach(_submodule ${_damodule})
-           string(REGEX REPLACE ".*lib(${DAMODULE}.*)" "\\1" _submodule ${_submodule})
-           string(REGEX REPLACE "\\.pkg" "_a" _submodule ${_submodule})
-           list(APPEND ALIROOTALIBS "${_submodule}")     
-           message("Adding ${_submodule}")
-         endforeach(_submodule)
-         
-#      file(WRITE "$ENV{ALICE_INSTALL}/tmp" "list(APPEND ALIROOTALIBS ${DAMODULE}-all)")
-#        include("$ENV{ALICE_INSTALL}/tmp")
-
-         list(REMOVE_DUPLICATES ALIROOTALIBS)
-         if(EXTRADAMODULE)
-           ##**set
-         endif(EXTRADAMODULE)
-
-         file(READ "$ENV{ALICE_ROOT}/${DASRC}" _dasrc)
+  
+      file(READ "${CMAKE_SOURCE_DIR}/${DASRC}" _dasrc)
          getinfo(DACONTACT "Contact" ${_dasrc})
          getinfo(DALINKPAGE "Link" ${_dasrc})
          getinfo(DAREFRUN "Reference Run" ${_dasrc})
@@ -184,33 +222,268 @@ foreach(detector ${ONLINEDETECTORS} )
 
 #----------- Targets ----------------------
 
-         set(CMAKE_CXX_FLAGS ${CXXFLAGS})
-         set(CMAKE_C_FLAGS ${CFLAGS})
+         set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
+         set(CMAKE_C_FLAGS "${CFLAGS}")
          set(CMAKE_Fortran_FLAGS ${FFLAGS})
          set(CMAKE_SHARED_LINKER_FLAGS ${SOFLAGS}) 
          set(CMAKE_MODULE_LINKER_FLAGS ${LDFLAGS})
 
-         set(ZIP)
-         foreach(_lib ${ALIROOTALIBS})
-          string(REGEX REPLACE "-all" "_a" _lib ${_lib})
-          list(APPEND ZIP && ar x "../lib${_lib}.a")
-         endforeach(_lib)
-         list (APPEND ZIP && ar r "../${DALIB}.a" "*.o")
-         add_custom_target("${DALIB}_x" rm -rf junk && mkdir -p junk 
-                               COMMAND cd junk ${ZIP}
-                               COMMAND cd ../ && rm -rf junk
-                               DEPENDS ${ALIROOTALIBS}
-                               WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
-
-         add_custom_target(${DATARGETNAME} DEPENDS ${DAEXE} )
-         add_executable(${DAEXE} ${DASRC} )
-         set_property(TARGET ${DAEXE} PROPERTY EXCLUDE_FROM_ALL TRUE)
-         add_dependencies(${DAEXE} ${DALIB}_x)
-         target_link_libraries(${DAEXE} "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DALIB}.a" ${EXTRAROOTLIB} "${ROOTLIBDIR}/libRoot.a" "${ROOTLIBDIR}/libfreetype.a" "${ROOTLIBDIR}/libpcre.a" ${SYSLIBS} ${DAQDALIB} ${MONITORLIBS} ${AMOREDALIBS})
-         add_custom_command(TARGET ${DAEXE} 
-                       PRE_LINK
-                       COMMAND ${CMAKE_AR} r ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${EXTRAROOTLIB} ${_extraroot})
+add_dependencies(DA-all ${DATARGETNAME})
+add_custom_target(${DATARGETNAME}
+WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+)
+add_dependencies(${DATARGETNAME} ${DAEXE})
+
+set(ZIP)
+foreach(_lib ${ALIROOTALIBS})
+string(REGEX REPLACE "-static" "" _lib ${_lib})
+list(APPEND ZIP && ar x "../lib${_lib}.a")
+endforeach(_lib)
+list (APPEND ZIP && ar r "../lib${DALIB}.a" "*.o")
+
+add_custom_target(${DALIB}.a
+COMMAND rm -rf junk${DAEXE} && mkdir -p junk${DAEXE}
+COMMAND cd junk${DAEXE} ${ZIP}
+COMMAND cd ../ && rm -rf junk${DAEXE}
+DEPENDS ${ALIROOTALIBS} 
+WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} 
+)
+
+add_custom_command(
+TARGET ${DATARGETNAME}-clean
+COMMAND echo "***** Cleaning ${DAMODULE} ${SUBDAMODULE} ${DANAME} detector-algorithm *****"
+COMMAND rm -f ${DASPECFILE}
+COMMAND rm -f ${DATAR}
+COMMAND rm -f ${DAEXE}
+COMMAND rm -f ${DAOBJ}
+COMMAND rm -f ${DADEP}
+COMMAND rm -f ${DAMAKEFILE}
+COMMAND rm -f ${DALIB}.a
+COMMAND rm -f ${ALIROOTALIBS}
+COMMAND rm -f ${EXTRAROOTLIB}
+)
+
+separate_arguments(SYSLIBS)
+#execute_process(COMMAND ${AMORE}/amore-config --ldflags-da-static | tr "\n" " "  OUTPUT_VARIABLE _amore1 OUTPUT_STRIP_TRAILING_WHITESPACE)
+#execute_process(COMMAND date-config --rcproxylibs OUTPUT_VARIABLE _amore2 OUTPUT_STRIP_TRAILING_WHITESPACE)
+#execute_process(COMMAND date-config --monitorlibs=noshift OUTPUT_VARIABLE _monitor1 OUTPUT_STRIP_TRAILING_WHITESPACE)
+  
+#set(AMOREDALIBS "-static ${_amore1} ${_amore2}\\")
+#set(MONITORLIBS "${_monitor1}\\")
+
+add_custom_target(DAMAKEFILE_${DAEXE}_)
+add_custom_command( 
+TARGET DAMAKEFILE_${DAEXE}_
+COMMAND rm -f ${DAMAKEFILE}
+COMMAND @echo "***** Making makefile ${DAMAKEFILE} *****"
+COMMAND @echo '\#***************************************************' >> ${DAMAKEFILE}
+COMMAND @echo '\# Makefile for Detector Algorithm' >> ${DAMAKEFILE}
+COMMAND @echo '\#' >> ${DAMAKEFILE}
+COMMAND @echo '\# It is necessary to setup build environment before' >> ${DAMAKEFILE}
+COMMAND @echo '\# using make:' >> ${DAMAKEFILE}
+COMMAND @echo '\# - define path to daqDAlib \(env. DAQDALIB_PATH\)' >> ${DAMAKEFILE}
+COMMAND @echo '\#' >> ${DAMAKEFILE}
+COMMAND @echo '\#*****************************************************' >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo "CXX=g++" >> ${DAMAKEFILE}
+COMMAND @echo "LD=g++" >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo "CXXFLAGS=${CXXFLAGS}" >> ${DAMAKEFILE}
+COMMAND @echo "LDFLAGS=${LDFLAGS}" >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo 'ifeq \($$\(DAQDALIB_PATH\),\)' >> ${DAMAKEFILE}
+COMMAND @echo "DAQDADIR=${ALICE}/daqDAlib" >> ${DAMAKEFILE}
+COMMAND @echo "else" >> ${DAMAKEFILE}
+COMMAND @echo 'DAQDADIR=$$(DAQDALIB_PATH)' >> ${DAMAKEFILE}
+COMMAND @echo "endif" >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo 'DAQDALIB=$$(DAQDADIR)/libdaqDA.a' >> ${DAMAKEFILE}
+#COMMAND @echo 'AMOREDALIBS=-static $$(shell $$(AMORE)/amore-config --ldflags-da-static) $$(shell date-config --rcproxylibs)' >> ${DAMAKEFILE}
+#COMMAND @echo 'MONITORLIBS=$$(shell date-config --monitorlibs=noshift)' >> ${DAMAKEFILE}
+#COMMAND @echo 'AMOREDALIBS=-static ${_amore1} ${_amore2}' >> ${DAMAKEFILE}
+#COMMAND @echo 'MONITORLIBS=${monitor1}' >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.exe: ${DAMODULE}${SUBDAMODULE}${DANAME}da.o" >> ${DAMAKEFILE}
+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}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo "${DAMODULE}${SUBDAMODULE}${DANAME}da.o: ${DAMODULE}${SUBDAMODULE}${DANAME}da.cxx" >> ${DAMAKEFILE}
+COMMAND @echo -e '\t$$(CXX) -c $$(CXXFLAGS) -I$$(DAQDADIR) ${mod} ''$$''< -o ''$$''@' >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo "clean:" >> ${DAMAKEFILE}
+COMMAND @echo -e '\t@rm -f ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe ${DAMODULE}${SUBDAMODULE}${DANAME}da.o' >> ${DAMAKEFILE}
+COMMAND @echo "" >> ${DAMAKEFILE}
+COMMAND @echo "install: ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe" >> ${DAMAKEFILE}
+COMMAND @echo -e '\tif [ $$(INSTALL_PATH) == '' ]; then \\' >> ${DAMAKEFILE}
+COMMAND @echo -e '\techo Environment variable INSTALL_PATH undefined, cannot continue\; \\' >> ${DAMAKEFILE}
+COMMAND @echo -e '\texit 1\; \\' >> ${DAMAKEFILE}
+COMMAND @echo -e '\tfi' >> ${DAMAKEFILE}
+COMMAND @echo -e '\t@cp -p ${DAMODULE}${SUBDAMODULE}${DANAME}da.exe $$(INSTALL_PATH)' >> ${DAMAKEFILE}
+)
+
+add_custom_target(DATAR_${DAEXE}_)
+add_custom_command( 
+TARGET DATAR_${DAEXE}_
+COMMAND @echo "***** Making archive ${DATAR} *****"
+COMMAND rm -rf ${DATAR}
+COMMAND rm -rf junk
+COMMAND mkdir junk && mkdir junk/${DAARC} 
+       COMMAND cp -a ${CMAKE_SOURCE_DIR}/${DASRC} junk/${DAARC} 
+COMMAND cp -a ${DAMAKEFILE} junk/${DAARC}/Makefile 
+COMMAND cp -a ${DASPECFILE} junk/${DAARC}/${DAMODULE}${SUBDAMODULE}${DANAME}da.spec
+COMMAND cd junk && tar czf ${DATAR} * 
+COMMAND cd .. && rm -rf junk
+)
+add_dependencies(DATAR_${DAEXE}_ DAMAKEFILE_${DAEXE}_ DASPECFILE_${DAEXE}_ ${DASRC}) 
+
+add_custom_target(DASPECFILE_${DAEXE}_)
+
+add_custom_command(
+TARGET DASPECFILE_${DAEXE}_
+COMMAND rm -f ${DASPECFILE}
+COMMAND @echo "***** Making RPM spec-file ${DASPECFILE} *****"
+COMMAND @echo '\# RPM specfile for $(DAMODULE)${SUBDAMODULE}$(DANAME) Detector Algorithm' >> ${DASPECFILE}
+COMMAND @echo "Summary: ${ONLINEDETECTORNAME} Detector Algorithm" >> ${DASPECFILE}
+COMMAND @echo "Name: ${DAARCNAME}" >> ${DASPECFILE}
+COMMAND @echo "Version: ${ALIROOT_BRANCH_SPEC}" >> ${DASPECFILE}
+COMMAND @echo "Release: ${GIT_SHORT_SHA1}" >> ${DASPECFILE}
+COMMAND @echo "License: CERN Alice DAQ/Offine" >> ${DASPECFILE}
+COMMAND @echo "Source: %{name}-%{version}.src.tar.gz" >> ${DASPECFILE}
+COMMAND @echo "Group: Applications/Alice" >> ${DASPECFILE}
+COMMAND @echo "Prefix: /opt/%{name}" >> ${DASPECFILE}
+COMMAND @echo "BuildRoot: %{_tmppath}/%{name}-root" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# automatic dependencies' >> ${DASPECFILE}
+COMMAND @echo "AutoReqProv: yes" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# list here required RPM packages for compilation' >> ${DASPECFILE}
+COMMAND @echo "BuildRequires: date" >> ${DASPECFILE} 
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# list here required RPM packages for runtime' >> ${DASPECFILE}
+COMMAND @echo "Requires: date, daqDA-lib" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}    
+COMMAND @echo '\# You can specify other dependencies in the description tag below.' >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# description of the package' >> ${DASPECFILE}
+COMMAND @echo "%description" >> ${DASPECFILE}
+COMMAND @echo "This is the ${ONLINEDETECTORNAME} ${DANAME} DA for online calibration." >> ${DASPECFILE}
+COMMAND @echo "It uses data from ${DAMODULE} detectors at run time." >> ${DASPECFILE}
+COMMAND @echo "Build requires: daqDAlib, date, AliRoot ${DAALIROOTRELEASE},ROOT ${DAROOTRELEASE}." >> ${DASPECFILE}
+COMMAND @echo "Runtime requires: date." >> ${DASPECFILE}
+COMMAND @echo "Contact: ${DACONTACT}" >> ${DASPECFILE}
+COMMAND @echo "Link: ${DALINKPAGE}" >> ${DASPECFILE}
+COMMAND @echo "Reference Run: ${DAREFRUN}" >> ${DASPECFILE}
+COMMAND @echo "Run type: ${DARUNTYPE}" >> ${DASPECFILE}
+COMMAND @echo "DA type: ${DATYPE}" >> ${DASPECFILE}
+COMMAND @echo "Number of events needed: ${DANUMBEROFEVENTS}" >> ${DASPECFILE}
+COMMAND @echo "Input files: ${DAINPUTFILES}" >> ${DASPECFILE}
+COMMAND @echo "Output files: ${DAOUTPUTFILES}" >> ${DASPECFILE}
+COMMAND @echo "Trigger types used: ${DATRIGGERTYPE}" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE}
+COMMAND @echo '\# Do not modify following scripts' >> ${DASPECFILE}
+COMMAND @echo '\#*****************************************************************' >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo "%define debug_package %{nil}" >> ${DASPECFILE}
+COMMAND @echo "%define __os_install_post %{nil}" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# here is defined the installation root directory' >> ${DASPECFILE}
+COMMAND @echo "%define pkgname %{name}-%{version}" >> ${DASPECFILE}
+COMMAND @echo "%define destdir %{prefix}" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# pre-compilation script: extract from tarball' >> ${DASPECFILE}
+COMMAND @echo "%prep" >> ${DASPECFILE}
+COMMAND @echo '\# extract archive' >> ${DASPECFILE}
+COMMAND @echo "%setup -n %{pkgname}" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# compile' >> ${DASPECFILE}
+COMMAND @echo "%build" >> ${DASPECFILE}
+COMMAND @echo "export DATE_SITE=" >> ${DASPECFILE}
+COMMAND @echo ". /date/setup.sh" >> ${DASPECFILE}
+COMMAND @echo "gmake" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# install runtime files' >> ${DASPECFILE}
+COMMAND @echo "%install" >> ${DASPECFILE}
+COMMAND @echo '\#remove install dir if existing' >> ${DASPECFILE}
+COMMAND echo  '[ -d ''$$''RPM_BUILD_ROOT ] && rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE}
+COMMAND @echo '\#make install in install root directory' >> ${DASPECFILE}
+COMMAND @echo 'mkdir -p ''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
+COMMAND @echo 'make install INSTALL_PATH=''$$''RPM_BUILD_ROOT%{prefix}' >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# clean RPM build files' >> ${DASPECFILE}
+COMMAND @echo "%clean" >> ${DASPECFILE}
+COMMAND @echo '\# remove installed files' >> ${DASPECFILE}
+COMMAND @echo 'rm -rf ''$$''RPM_BUILD_ROOT' >> ${DASPECFILE}
+COMMAND @echo '\# remove source files' >> ${DASPECFILE}
+COMMAND @echo 'rm -rf ''$$''RPM_BUILD_DIR/%{pkgname}' >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# pre-install script' >> ${DASPECFILE}
+COMMAND @echo "%pre" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# list of files to be installed' >> ${DASPECFILE}
+COMMAND @echo "%files" >> ${DASPECFILE}
+COMMAND @echo '%defattr \(-,root,root\)' >> ${DASPECFILE}
+COMMAND @echo "%{destdir}" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# post-install script' >> ${DASPECFILE}
+COMMAND @echo '\# launched after rpm installed' >> ${DASPECFILE}
+COMMAND @echo "%post" >> ${DASPECFILE}
+COMMAND @echo "" >> ${DASPECFILE}
+COMMAND @echo '\# post-uninstall script' >> ${DASPECFILE}
+COMMAND @echo '\# launched after rpm removed' >> ${DASPECFILE}
+COMMAND @echo "%postun" >> ${DASPECFILE}
+)
+
+
+add_custom_target( ${DATARGETNAME}-rpm
+)
+add_dependencies(${DATARGETNAME}-rpm DATAR_${DAEXE}_ DASPECFILE_${DAEXE}_ ${LIBPATH} ${DALIB}.a DADEP_${DAEXE}_ ${ROOTLIB}     
+)
+add_custom_command(TARGET ${DATARGETNAME}-rpm
+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
+COMMAND cp ${DATAR} ${CMAKE_BINARY_DIR}/junk/SOURCES
+COMMAND rpmbuild --verbose --define "_topdir ${CMAKE_BINARY_DIR}/junk" --nodeps -bb ${DASPECFILE}
+COMMAND cp `find './junk/' -name '${DAARC}*.rpm'` ./ 
+COMMAND rm -rf junk
+COMMAND echo "***** RPMS created and put ${CMAKE_BINARY_DIR} folder *****"
+WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  
+)
+
+
+add_custom_target(${DAEXE}
+COMMAND echo "***** Making executable ${DAEXE} *****"
+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}
+WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+)
+
+
+add_dependencies(${DAEXE} ${DASRC} DAOBJ_${DAEXE}_ ${BINPATH} ${LIBPATH} ${DALIB}.a ${DAQDALIB} ${ROOTLIB})
+
+add_custom_target(DAOBJ_${DAEXE}_
+)
+add_custom_command(
+TARGET DAOBJ_${DAEXE}_
+COMMAND echo "***** Compiling ${DASRC} *****"
+COMMAND echo "${DFLAGS}"
+       COMMAND g++ -c ${AMOREDEFINITIONS} -D${CMAKE_SYSTEM_NAME} ${DATE_CFLAGS} -I${DATE_ROOT}/infoLogger -I${DATE_ROOT}/logbook -I${DAQDADIR} -I${CMAKE_SOURCE_DIR}/RAW -I${CMAKE_BINARY_DIR}/include -I${ROOTINCDIR} ${mod} ${date_head} ${CMAKE_SOURCE_DIR}/${DASRC} -o ${DAOBJ}
+       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  
+)
+add_dependencies(DAOBJ_${DAEXE}_ DADEP_${DAEXE}_ )
+
+
+add_custom_target(DADEP_${DAEXE}_)
+add_custom_command(
+TARGET DADEP_${DAEXE}_
+COMMAND echo "***** Making detector-algorithm dependencies ${DADEP} *****"
+       COMMAND g++ -MM ${DATE_CFLAGS} -I${DAQDADIR} -I${CMAKE_SOURCE_DIR}/RAW -I${CMAKE_BINARY_DIR}/include -I${ROOTINCDIR} ${mod} ${date_head} ${CMAKE_SOURCE_DIR}/${DASRC} > ${DADEP}
+       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}  
+)
+
+
+add_custom_command(TARGET clean
+COMMAND rm -rf junk*.exe
+WORKING_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
+  
+
        endif(match)
   endforeach(dafile)
 endforeach(detector)