#--------------------------------------------------------- #-- start of constituents_header ------ include ${CMTROOT}/src/Makefile.core #include ${CMTROOT}/mgr/Unix.make ifdef tag CMTEXTRATAGS = $(tag) else tag = $(CMTCONFIG) endif tags = $(tag),$(CMTEXTRATAGS) PACKAGE = CMT ${PACKAGE}_tag = $(tag) cmt_local_tagfile = $(bin)$(${PACKAGE}_tag).make #-include $(cmt_local_tagfile) #include $(cmt_local_tagfile) include ${CMTROOT}/mgr/Unix.make #cmt_final_setup = $(bin)setup.make ifneq ($(wildcard $(cmtexe)),) all :: cmt $(silent)\cd $(bin) && { [ -L cmt ] || [ $(notdir $(cmtexe)) = cmt ] || \ln -sf $(notdir $(cmtexe)) cmt; } # $(silent)\cd $(bin) && \rm -f cmt && ln -s cmt.exe cmt $(echo) all ok else #--------------------------------------------------------- # # Re-building CMT # #--------------------------------------------------------- ifneq ($(cppdepflags),) all :: cmt else all :: cmt #all :: cmt update #all :: cmt post_build done endif $(silent)\cd $(bin) && { [ -L cmt ] || [ $(notdir $(cmtexe)) = cmt ] || \ln -sf $(notdir $(cmtexe)) cmt; } # $(silent)\cd $(bin) && \rm -f cmt && ln -s cmt.exe cmt $(echo) all ok #@cd $(bin); /bin/rm -f cmt; cp cmt.exe cmt #done : cmt post_build # @echo "CMT has been succesfully rebuilt." #--------------------------------------------------------- #post_build :: cmt cmt_dependencies.make $(bin)/cmt_dependencies.make #post_build :: cmt cmt_dependencies.make # @echo post_build done update :: cmt $(echo) "(GNUmakefile) Starting ${@}" @$(MAKE) cmt $(silent) \cmp -s $(cmt_local_${CONSTITUENT}_makefile) ${CMTROOT}/mgr/$(notdir $(cmt_local_${CONSTITUENT}_makefile)) || \cp -p $(cmt_local_${CONSTITUENT}_makefile) ${CMTROOT}/mgr/$(notdir $(cmt_local_${CONSTITUENT}_makefile)) # $(silent) if [ -f $(bin)/cmt_dependencies.make ]; then \cmp -s $(bin)/cmt_dependencies.make ${CMTROOT}/mgr/cmt_dependencies.make || \cp -p $(bin)/cmt_dependencies.make ${CMTROOT}/mgr/cmt_dependencies.make; fi $(echo) "(GNUmakefile) ${@} done" #cmt_dependencies.make $(bin)/cmt_dependencies.make : $(cmtexe) #cmt_dependencies.make : $(cmtexe) # $(cmtexe) -quiet build dependencies cmt -all_sources -no_stamps -out=$(bin)/cmt_dependencies.make # cp $(bin)/cmt_dependencies.make ../mgr # $(cmtexe) -quiet build dependencies cmt -all_sources -out=$(bin)/cmt_dependencies.make #--------------------------------------------------------- endif dirs :: requirements @if test ! -d $(bin) ; then $(mkdir) -p $(bin) ; fi #requirements : # @if test ! -r requirements ; then echo "No requirements file" ; fi #-- end of constituents_header ------ #-- start of constituent ------ CONSTITUENT = cmt #cmt_final_setup_${CONSTITUENT} = $(bin)setup.make cmt_final_setup_cmt = requirements cmt_local_${CONSTITUENT}_makefile = $(bin)${CONSTITUENT}.make #cmt_local_tagfile_${CONSTITUENT} = $(bin)$(${PACKAGE}_tag).make cmt_local_tagfile_${CONSTITUENT} = ${CMTROOT}/mgr/Unix.make ifdef STRUCTURED_OUTPUT ${CONSTITUENT}dirs : @if test ! -d $(bin)${CONSTITUENT}; then $(mkdir) -p $(bin)${CONSTITUENT}; fi $(echo) "STRUCTURED_OUTPUT="$(bin)${CONSTITUENT} else ${CONSTITUENT}dirs : ; endif ifneq ($(wildcard $(cmtexe)),) ifndef QUICK $(cmt_local_${CONSTITUENT}_makefile) :: $(${CONSTITUENT}_dependencies) dirs $(echo) "(GNUmakefile) Building ${CONSTITUENT}.make"; \ $(cmtexe) -tag=$(tags) $(${CONSTITUENT}_extratags) build constituent_config -out=$(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT} else $(cmt_local_${CONSTITUENT}_makefile) : $(${CONSTITUENT}_dependencies) $(use_requirements) @if test ! -d $(bin) ; then $(mkdir) -p $(bin) ; fi if [ ! -f $@ ] || [ ! -f $(cmt_local_tagfile_${CONSTITUENT}) ] || \ [ ! -f $(cmt_final_setup_${CONSTITUENT}) ]; then \ test -z "$(cmtmsg)" || \ echo "$(CMTMSGPREFIX)" "(GNUmakefile) Building ${CONSTITUENT}.make"; \ $(cmtexe) -tag=$(tags) $(${CONSTITUENT}_extratags) build constituent_config -out=$(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT}; \ fi endif else build_dependencies = : #build_dependencies = test -f $(bin)CMT_setup.make || touch $(bin)CMT_setup.make ; echo #build_dependencies = test -d $(bin) || mkdir -p $(binshort); test -f $(cmtexe) || cp ../mgr/cmt_dependencies.make $(bin); test -f $(bin)CMT_setup.make || touch $(bin)CMT_setup.make ; echo #${CONSTITUENT}_dependencies += $(bin)/cmt_dependencies.make $(bin)/cmt_dependencies.make : dirs if [ ! -f $@ ]; then \ test -z "$(cmtmsg)" || \ echo "$(CMTMSGPREFIX)" "(GNUmakefile) Copying $(@F)"; \ \cp -p ${CMTROOT}/mgr/$(@F) $@; \ fi $(cmt_local_${CONSTITUENT}_makefile) :: $(${CONSTITUENT}_dependencies) dirs if [ ! -f $@ ]; then \ test -z "$(cmtmsg)" || \ echo "$(CMTMSGPREFIX)" "(GNUmakefile) Copying $(@F)"; \ \cp -p ${CMTROOT}/mgr/$(@F) $@; \ fi endif ${CONSTITUENT} :: $(${CONSTITUENT}_dependencies) $(cmt_local_${CONSTITUENT}_makefile) dirs ${CONSTITUENT}dirs $(echo) "(GNUmakefile) Starting ${CONSTITUENT}" @$(MAKE) -f $(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT} cmt_local_tagfile_${CONSTITUENT}=${CMTROOT}/mgr/Unix.make cmt_final_setup_cmt=$(cmt_final_setup_cmt) build_dependencies="$(build_dependencies)" cmt_dependencies_in_cmt=$(cmt_dependencies_in_cmt) $(echo) "(GNUmakefile) ${CONSTITUENT} done" clean :: ${CONSTITUENT}clean ${CONSTITUENT}clean :: $(${CONSTITUENT}clean_dependencies) ##$(cmt_local_${CONSTITUENT}_makefile) $(echo) "(constituents.make) Starting ${CONSTITUENT}clean" @-if test -f $(cmt_local_${CONSTITUENT}_makefile); then \ $(MAKE) -f $(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT}clean cmt_local_tagfile_${CONSTITUENT}=${CMTROOT}/mgr/Unix.make cmt_final_setup_cmt=$(cmt_final_setup_cmt); \ fi $(echo) "(constituents.make) ${CONSTITUENT}clean done" #-- end of constituent ------ cmt_makefile = $(bin)cmt.make build_cmt_makefile : build_cmt_tagfile @echo "Building $(cmt_local_${CONSTITUENT}_makefile)"; \ $(cmtexe) -tag=$(tags) $(${CONSTITUENT}_extratags) build constituent_makefile -out=$(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT} build_cmt_tagfile : $(cmtexe) @echo "Building $(cmt_local_tagfile)"; \ $(cmtexe) -tag=$(tags) build tag_makefile | grep -v '^CMTINSTALLAREA=' >$(cmt_local_tagfile) #--------------------------------------------------------- #--------------------------------------------------------- # This procedure installs a hook into the commitinfo management file. # then the #--------------------------------------------------------- installcvs : cd `echo ${CVSROOT} | cut -f4 -d':'`/CVSROOT;\ if [ "`grep cmt_buildcvsinfos loginfo`" = "" ] ; then \ echo "======== Configuring loginfo in `pwd`>>>>>> "; \ chmod u+w loginfo; \ echo '.cmtcvsinfos $${CVSROOT}/CVSROOT/cmt_buildcvsinfos2.sh' >> loginfo; \ chmod u-w loginfo; \ else \ echo "======== loginfo already configured in `pwd` >>>>>> "; \ fi; \ cp ${CMTROOT}/mgr/cmt_buildcvsinfos2.sh .; \ /bin/rm -rf ../.cmtcvsinfos/* #--------------------------------------------------------- #--------------------------------------------------------- ###binaries = Linux OSF1 HP-UX VisualC ##binaries = $(shell '/usr/bin/find ../ -name cmt.exe') #--------------------------------------------------------- # Regenerates the Doxygen documentation of CMT # A priori as it is written it works at LAL only # The result is also transported to the Web site #--------------------------------------------------------- doxygen :: . /lal/Doxygen/Linux/setup.sh; cd ../doc; /bin/rm -Rf Doxygen; doxygen ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/Doxygen #--------------------------------------------------------- # Converts CMTDoc.html CMTFAQ.html into pdf and ps #--------------------------------------------------------- pdf :: html2ps -nu -o ../doc/CMTDoc.ps ../doc/CMTDoc.html ps2pdf ../doc/CMTDoc.ps ../doc/CMTDoc.pdf html2ps -nu -o ../doc/CMTFAQ.ps ../doc/CMTFAQ.html ps2pdf ../doc/CMTFAQ.ps ../doc/CMTFAQ.pdf #python = python python = /afs/cern.ch/sw/lcg/external/Python/2.3.4/rh73_gcc323/bin/python #python = /cygdrive/c/Arnault/Python23/python.exe #--------------------------------------------------------- # Generates the html form of the doc from the XML form #--------------------------------------------------------- gendoc :: @cd ../doc; python gendoc.py CMTDoc.xml > CMTDoc.html @echo "CMTDoc.html generated from CMTDoc.xml" #--------------------------------------------------------- # Transfer the docs into the Web site. #--------------------------------------------------------- docs :: ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTDoc.html ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTDoc.ps ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTDoc.pdf ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTFAQ.html ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/ReleaseNotes.html ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/ChangeLog ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/mgr/ChangeLog.php ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTFAQ.ps ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTFAQ.pdf # echo ' RPM for redhat 7.2' >>doc/CMTDownload.html; #--------------------------------------------------------- # Construct the pacman file from the generic form #--------------------------------------------------------- pacman :: version=`cmt version`; \ sed -e 's##'"$${version}"'#g' CMT.pacman >CMT-$${version}.pacman #--------------------------------------------------------- # Construct the tar balls for the binary kits for all # existing binaries available in ../*.cmt.exe # Binary kits are now autonomous (ie they don't require # the source kit) #--------------------------------------------------------- bintar :: cd ..; root=`pwd`; \ tag=`cmt version`; \ version=`basename $${root}`; \ tag=$${version} ; \ cat doc/CMTDownload1.html >| doc/CMTDownload.html; \ echo ' Source kit ' >> doc/CMTDownload.html; \ binaries=`/usr/bin/find ./ -name cmt.exe | sed -e 's#[.]/##' -e 's#/.*##'`; \ for f in `echo $${binaries}`; do \ echo ' '$${f}' ' >> doc/CMTDownload.html; \ done; \ cat doc/CMTDownload2.html >> doc/CMTDownload.html; \ ${CMTROOT}/mgr/cmt_export.sh CMT/ $${root}/doc/CMTDownload.html $${tag}; \ if test -d rpm; then \ ${CMTROOT}/mgr/cmt_export.sh CMT/ $${root}/rpm/CMT-$${version}-1.i386.rpm $${tag}; \ fi; \ cd ../../; \ for branch in `echo $${binaries}` ; \ do \ if test $${branch} = VisualC; then \ /bin/rm -rf CMT/$${version}/$${branch}/cmt ; \ else \ /bin/rm -rf CMT/$${version}/$${branch}/*.o ; \ ln -s cmt.exe CMT/$${version}/$${branch}/cmt ; \ fi ; \ echo $${branch} ; \ tarfile=CMT/CMT$${version}$${branch}.tar; \ tar cf $${tarfile} CMT/$${version}/mgr CMT/$${version}/src CMT/$${version}/$${branch} ; \ gzip $${tarfile}; \ ${CMTROOT}/mgr/cmt_export.sh CMT/ $${tarfile}.gz $${tag} ; \ done #---------------------------------------------------------- # # Building an RPM for CMT. # # reinstallation is done by: # # rpm -Uvh --relocate /CMT=/newdir/CMT CMT-${version}-1.i386.rpm # #---------------------------------------------------------- rpm :: version=`$(cmtexe) -quiet version`; \ tempdir=/tmp/CMT; \ rm -rf $${tempdir}; \ for f in BUILD RPMS SOURCES SPECS SRPMS ; do \ mkdir -p $${tempdir}/$${f}; \ done; \ (cd ../; tar cf $${tempdir}/SOURCES/CMT$${version}.tar --exclude mgr src source); \ gzip $${tempdir}/SOURCES/CMT$${version}.tar; \ if test ! -d ../rpm; then mkdir -p ../rpm; fi; \ rpmbuild -ba --define "_topdir $${tempdir}" --define "_version $${version}" CMT.spec; \ cp $${tempdir}/RPMS/i386/CMT-$${version}-1.i386.rpm ../rpm ; \ cp $${tempdir}/SRPMS/CMT-$${version}-1.src.rpm ../rpm ; \ rm -r $${tempdir} # # cp CMT.spec $${tempdir}; \ # find ../fragments ../mgr ../src ! -path '*/CVS*' ! -name '*~' ! -type d | \ # sed -e 's#[.][.]#%{prefix}/%{version}#' >>$${tempdir}/CMT.spec ; \ # #---------------------------------------------------------- # Construct a source kit #---------------------------------------------------------- srctar :: ${CMTROOT}/mgr/cmt_tar_export.sh source mgr src Visual java doc #---------------------------------------------------------- # Construct the kits #---------------------------------------------------------- Export :: docs srctar bintar @echo Export done democlean :: /bin/rm -rf ../demo/* demo_location = ../demo demo_sequence = demo1 #---------------------------------------------------------- # Run the autotest sequence #---------------------------------------------------------- demo :: democlean @echo "------------------------------------------" @echo "Starting general auto test sequence" @echo " Creating $(demo_location) work area..." @mkdir -p $(demo_location) @echo " Creating all $(demo_sequence) packages..." cd $(demo_location); \ version=`$(cmtexe) -quiet version`; \ ($(cmtexe) -quiet run_sequence ${CMTROOT}/src/demo/$(demo_sequence).cmt | \ sed -e "s#$${CMTROOT}#"'$${CMTROOT}'"#" \ -e "s#$${version}#"'$${version}'"#" \ -e "s#$${CMTCONFIG}#"'$${CMTCONFIG}'"#"; \ ) >$(demo_sequence).txt @echo " Comparing results with reference output (${CMTROOT}/src/demo/$(demo_sequence).out) ..." @cd $(demo_location); \ diff $(demo_sequence).txt ${CMTROOT}/src/demo/$(demo_sequence).out; s=$$?; \ if test $${s} = 0; then \ echo " => no differences"; \ else \ echo " => errors?"; \ cp $(demo_sequence).txt ${CMTROOT}/src/demo/$(demo_sequence).out; \ fi #--------------------------------------------------------- tprivate :: democlean @echo "------------------------------------------"; \ sequence=tprivate; \ location=../demo; \ echo "Starting auto test sequence on private uses"; \ echo " Creating $${location} work area..."; \ mkdir -p $${location}; \ cd $${location}; \ version=`$(cmtexe) -quiet version`; \ echo " Creating all $${sequence} packages..."; \ ($(cmtexe) -quiet run_sequence ${CMTROOT}/src/demo/$${sequence}.cmt | \ sed -e "s#$${CMTROOT}#"'$${CMTROOT}'"#" \ -e "s#$${version}#"'$${version}'"#" \ -e "s#$${CMTCONFIG}#"'$${CMTCONFIG}'"#"; \ ) >$${sequence}.txt; \ echo " Comparing results with reference output (${CMTROOT}/src/demo/$${sequence}.out) ..."; \ diff $${sequence}.txt ${CMTROOT}/src/demo/$${sequence}.out; s=$$?; \ if test $${s} = 0; then \ echo " => no differences"; \ else \ echo " => errors?"; \ cp $${sequence}.txt ${CMTROOT}/src/demo/$${sequence}.out; \ fi #--------------------------------------------------------- help :: @echo "------------------------------------------------------------" @echo " [all] : Default target" @echo " " @echo " installcvs : " @echo " doxygen : Documentation generation" @echo " docs : Documentation production and installation" @echo " pdf : Convert html docs into pdf and ps" @echo " gendoc : Convert xml doc into html" @echo " srctar : Production and installation of source tar-ball" @echo " (include Linux binary directory)" @echo " bintar : Production and installation of binary tar-balls" @echo " rpm : Production of the RPM" @echo " Export : Installation in the web site" @echo " democlean : Cleaning the demo area" @echo " demo : Run the demo sequence on private uses" @echo " (Site-specific targets for building CMT)" @echo " LAL : asc lx1 papou1-fe hp2 #virgo-control1" @echo " LHCB : lxtest hpplus dxplus rsplus" @echo " Atlas : atlinux atlas50" @echo " Virgo : ax7 vmpc13a rio0a" @echo " CCIN2P3 : ccars ccahp ccali ccasn" @echo "------------------------------------------------------------"