source: CMT/v1r26p20160527/mgr/GNUmakefile

Last change on this file was 604, checked in by rybkin, 12 years ago

See C.L. 479

File size: 15.5 KB
Line 
1#---------------------------------------------------------
2#-- start of constituents_header ------
3
4include ${CMTROOT}/src/Makefile.core
5#include ${CMTROOT}/mgr/Unix.make
6
7ifdef tag
8CMTEXTRATAGS = $(tag)
9else
10tag       = $(CMTCONFIG)
11endif
12
13tags      = $(tag),$(CMTEXTRATAGS)
14
15PACKAGE = CMT
16${PACKAGE}_tag = $(tag)
17
18cmt_local_tagfile = $(bin)$(${PACKAGE}_tag).make
19
20#-include $(cmt_local_tagfile)
21#include $(cmt_local_tagfile)
22include ${CMTROOT}/mgr/Unix.make
23
24#cmt_final_setup = $(bin)setup.make
25
26ifneq ($(wildcard $(cmtexe)),)
27all :: cmt
28        $(silent)\cd $(bin) && { [ -L cmt ] || [ $(notdir $(cmtexe)) = cmt ] || \ln -sf $(notdir $(cmtexe)) cmt; }
29#       $(silent)\cd $(bin) && \rm -f cmt && ln -s cmt.exe cmt
30        $(echo) all ok
31else
32#---------------------------------------------------------
33#
34# Re-building CMT
35#
36#---------------------------------------------------------
37ifneq ($(cppdepflags),)
38all :: cmt
39else
40all :: cmt
41#all :: cmt update
42#all :: cmt post_build done
43endif
44        $(silent)\cd $(bin) && { [ -L cmt ] || [ $(notdir $(cmtexe)) = cmt ] || \ln -sf $(notdir $(cmtexe)) cmt; }
45#       $(silent)\cd $(bin) && \rm -f cmt && ln -s cmt.exe cmt
46        $(echo) all ok
47#@cd $(bin); /bin/rm -f cmt; cp cmt.exe cmt
48
49#done : cmt post_build
50#       @echo "CMT has been succesfully rebuilt."
51
52#---------------------------------------------------------
53#post_build :: cmt cmt_dependencies.make $(bin)/cmt_dependencies.make
54#post_build :: cmt cmt_dependencies.make
55#       @echo post_build done
56
57update :: cmt
58        $(echo) "(GNUmakefile) Starting ${@}"
59        @$(MAKE) cmt
60        $(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))
61#       $(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
62        $(echo) "(GNUmakefile) ${@} done"
63
64#cmt_dependencies.make $(bin)/cmt_dependencies.make : $(cmtexe)
65#cmt_dependencies.make : $(cmtexe)
66#       $(cmtexe) -quiet build dependencies cmt -all_sources -no_stamps -out=$(bin)/cmt_dependencies.make
67#       cp $(bin)/cmt_dependencies.make ../mgr
68#       $(cmtexe) -quiet build dependencies cmt -all_sources -out=$(bin)/cmt_dependencies.make
69#---------------------------------------------------------
70endif
71
72dirs :: requirements
73        @if test ! -d $(bin) ; then $(mkdir) -p $(bin) ; fi
74
75#requirements :
76#       @if test ! -r requirements ; then echo "No requirements file" ; fi
77
78#-- end of constituents_header ------
79
80#-- start of constituent ------
81CONSTITUENT = cmt
82#cmt_final_setup_${CONSTITUENT} = $(bin)setup.make
83cmt_final_setup_cmt = requirements
84cmt_local_${CONSTITUENT}_makefile = $(bin)${CONSTITUENT}.make
85#cmt_local_tagfile_${CONSTITUENT} = $(bin)$(${PACKAGE}_tag).make
86cmt_local_tagfile_${CONSTITUENT} = ${CMTROOT}/mgr/Unix.make
87
88ifdef STRUCTURED_OUTPUT
89${CONSTITUENT}dirs :
90        @if test ! -d $(bin)${CONSTITUENT}; then $(mkdir) -p $(bin)${CONSTITUENT}; fi
91        $(echo) "STRUCTURED_OUTPUT="$(bin)${CONSTITUENT}
92else
93${CONSTITUENT}dirs : ;
94endif
95
96ifneq ($(wildcard $(cmtexe)),)
97
98ifndef QUICK
99$(cmt_local_${CONSTITUENT}_makefile) :: $(${CONSTITUENT}_dependencies) dirs
100        $(echo) "(GNUmakefile) Building ${CONSTITUENT}.make"; \
101          $(cmtexe) -tag=$(tags) $(${CONSTITUENT}_extratags) build constituent_config -out=$(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT}
102else
103$(cmt_local_${CONSTITUENT}_makefile) : $(${CONSTITUENT}_dependencies) $(use_requirements)
104        @if test ! -d $(bin) ; then $(mkdir) -p $(bin) ; fi
105        if [ ! -f $@ ] || [ ! -f $(cmt_local_tagfile_${CONSTITUENT}) ] || \
106          [ ! -f $(cmt_final_setup_${CONSTITUENT}) ]; then \
107          test -z "$(cmtmsg)" || \
108          echo "$(CMTMSGPREFIX)" "(GNUmakefile) Building ${CONSTITUENT}.make"; \
109          $(cmtexe) -tag=$(tags) $(${CONSTITUENT}_extratags) build constituent_config -out=$(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT}; \
110          fi
111endif
112
113else
114
115build_dependencies = :
116#build_dependencies = test -f $(bin)CMT_setup.make || touch $(bin)CMT_setup.make ; echo
117#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
118
119#${CONSTITUENT}_dependencies += $(bin)/cmt_dependencies.make
120
121$(bin)/cmt_dependencies.make : dirs
122        if [ ! -f $@ ]; then \
123          test -z "$(cmtmsg)" || \
124          echo "$(CMTMSGPREFIX)" "(GNUmakefile) Copying $(@F)"; \
125          \cp -p ${CMTROOT}/mgr/$(@F) $@; \
126          fi
127
128$(cmt_local_${CONSTITUENT}_makefile) :: $(${CONSTITUENT}_dependencies) dirs
129        if [ ! -f $@ ]; then \
130          test -z "$(cmtmsg)" || \
131          echo "$(CMTMSGPREFIX)" "(GNUmakefile) Copying $(@F)"; \
132          \cp -p ${CMTROOT}/mgr/$(@F) $@; \
133          fi
134
135endif
136
137${CONSTITUENT} :: $(${CONSTITUENT}_dependencies) $(cmt_local_${CONSTITUENT}_makefile) dirs ${CONSTITUENT}dirs
138        $(echo) "(GNUmakefile) Starting ${CONSTITUENT}"
139        @$(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)
140        $(echo) "(GNUmakefile) ${CONSTITUENT} done"
141
142clean :: ${CONSTITUENT}clean
143
144${CONSTITUENT}clean :: $(${CONSTITUENT}clean_dependencies) ##$(cmt_local_${CONSTITUENT}_makefile)
145        $(echo) "(constituents.make) Starting ${CONSTITUENT}clean"
146        @-if test -f $(cmt_local_${CONSTITUENT}_makefile); then \
147          $(MAKE) -f $(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT}clean cmt_local_tagfile_${CONSTITUENT}=${CMTROOT}/mgr/Unix.make cmt_final_setup_cmt=$(cmt_final_setup_cmt); \
148        fi
149        $(echo) "(constituents.make) ${CONSTITUENT}clean done"
150#-- end of constituent ------
151
152cmt_makefile = $(bin)cmt.make
153build_cmt_makefile : build_cmt_tagfile
154        @echo "Building $(cmt_local_${CONSTITUENT}_makefile)"; \
155          $(cmtexe) -tag=$(tags) $(${CONSTITUENT}_extratags) build constituent_makefile -out=$(cmt_local_${CONSTITUENT}_makefile) ${CONSTITUENT}
156
157build_cmt_tagfile : $(cmtexe)
158        @echo "Building $(cmt_local_tagfile)"; \
159          $(cmtexe) -tag=$(tags) build tag_makefile | grep -v '^CMTINSTALLAREA=' >$(cmt_local_tagfile)
160#---------------------------------------------------------
161
162#---------------------------------------------------------
163# This procedure installs a hook into the commitinfo management file.
164# then the
165#---------------------------------------------------------
166installcvs :
167        cd `echo ${CVSROOT} | cut -f4 -d':'`/CVSROOT;\
168        if [ "`grep cmt_buildcvsinfos loginfo`" = "" ] ; then \
169          echo "======== Configuring loginfo in `pwd`>>>>>> "; \
170          chmod u+w loginfo; \
171          echo '.cmtcvsinfos $${CVSROOT}/CVSROOT/cmt_buildcvsinfos2.sh' >> loginfo; \
172          chmod u-w loginfo; \
173        else \
174          echo "======== loginfo already configured in `pwd` >>>>>> "; \
175        fi; \
176        cp ${CMTROOT}/mgr/cmt_buildcvsinfos2.sh .; \
177        /bin/rm -rf ../.cmtcvsinfos/*
178
179#---------------------------------------------------------
180
181#---------------------------------------------------------
182###binaries = Linux OSF1 HP-UX VisualC
183##binaries = $(shell '/usr/bin/find ../ -name cmt.exe')
184
185
186#---------------------------------------------------------
187# Regenerates the Doxygen documentation of CMT
188# A priori as it is written it works at LAL only
189# The result is also transported to the Web site
190#---------------------------------------------------------
191doxygen ::
192        . /lal/Doxygen/Linux/setup.sh; cd ../doc; /bin/rm -Rf Doxygen; doxygen
193        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/Doxygen
194
195#---------------------------------------------------------
196# Converts CMTDoc.html CMTFAQ.html into pdf and ps
197#---------------------------------------------------------
198pdf ::
199        html2ps -nu -o ../doc/CMTDoc.ps ../doc/CMTDoc.html
200        ps2pdf ../doc/CMTDoc.ps ../doc/CMTDoc.pdf
201        html2ps -nu -o ../doc/CMTFAQ.ps ../doc/CMTFAQ.html
202        ps2pdf ../doc/CMTFAQ.ps ../doc/CMTFAQ.pdf
203
204#python = python
205python = /afs/cern.ch/sw/lcg/external/Python/2.3.4/rh73_gcc323/bin/python
206#python = /cygdrive/c/Arnault/Python23/python.exe
207
208#---------------------------------------------------------
209# Generates the html form of the doc from the XML form
210#---------------------------------------------------------
211gendoc ::
212        @cd ../doc; python gendoc.py CMTDoc.xml > CMTDoc.html
213        @echo "CMTDoc.html generated from CMTDoc.xml"
214
215
216#---------------------------------------------------------
217# Transfer the docs into the Web site.
218#---------------------------------------------------------
219docs ::
220        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTDoc.html
221        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTDoc.ps
222        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTDoc.pdf
223        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTFAQ.html
224        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/ReleaseNotes.html
225        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/ChangeLog
226        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/mgr/ChangeLog.php
227        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTFAQ.ps
228        ${CMTROOT}/mgr/cmt_export.sh CMT/ ${CMTROOT}/doc/CMTFAQ.pdf
229
230#        echo '  <tr><td><a href="CMT-'$${version}'-1.i386.rpm">RPM for redhat 7.2</a></td></tr>' >>doc/CMTDownload.html;
231
232#---------------------------------------------------------
233# Construct the pacman file from the generic form
234#---------------------------------------------------------
235pacman ::
236        version=`cmt version`; \
237        sed -e 's#<version>#'"$${version}"'#g' CMT.pacman >CMT-$${version}.pacman
238
239#---------------------------------------------------------
240# Construct the tar balls for the binary kits for all
241# existing binaries available in ../*.cmt.exe
242# Binary kits are now autonomous (ie they don't require
243# the source kit)
244#---------------------------------------------------------
245bintar ::
246        cd ..; root=`pwd`; \
247        tag=`cmt version`; \
248        version=`basename $${root}`; \
249        tag=$${version} ; \
250        cat doc/CMTDownload1.html >| doc/CMTDownload.html; \
251        echo '  <tr><td><a href="CMT'$${version}'.tar.gz">Source kit</a> </td></tr>' >> doc/CMTDownload.html; \
252        binaries=`/usr/bin/find ./ -name cmt.exe | sed -e 's#[.]/##' -e 's#/.*##'`; \
253        for f in `echo $${binaries}`; do \
254          echo '  <tr><td><a href="CMT'$${version}$${f}'.tar.gz">'$${f}'</a> </td></tr>' >> doc/CMTDownload.html; \
255        done; \
256        cat doc/CMTDownload2.html >> doc/CMTDownload.html; \
257        ${CMTROOT}/mgr/cmt_export.sh CMT/ $${root}/doc/CMTDownload.html $${tag}; \
258        if test -d rpm; then \
259          ${CMTROOT}/mgr/cmt_export.sh CMT/ $${root}/rpm/CMT-$${version}-1.i386.rpm $${tag}; \
260        fi; \
261        cd ../../; \
262        for branch in `echo $${binaries}` ; \
263        do \
264          if test $${branch} = VisualC; then \
265            /bin/rm -rf CMT/$${version}/$${branch}/cmt ; \
266          else \
267            /bin/rm -rf CMT/$${version}/$${branch}/*.o ; \
268            ln -s cmt.exe CMT/$${version}/$${branch}/cmt ; \
269          fi ; \
270          echo $${branch} ; \
271          tarfile=CMT/CMT$${version}$${branch}.tar; \
272          tar cf $${tarfile} CMT/$${version}/mgr CMT/$${version}/src CMT/$${version}/$${branch} ; \
273          gzip $${tarfile}; \
274          ${CMTROOT}/mgr/cmt_export.sh CMT/ $${tarfile}.gz $${tag} ; \
275        done
276
277
278#----------------------------------------------------------
279#
280#  Building an RPM for CMT.
281#
282#   reinstallation is done by:
283#
284#  rpm -Uvh --relocate /CMT=/newdir/CMT CMT-${version}-1.i386.rpm
285#
286#----------------------------------------------------------
287rpm ::
288        version=`$(cmtexe) -quiet version`; \
289        tempdir=/tmp/CMT; \
290        rm -rf $${tempdir}; \
291        for f in BUILD RPMS SOURCES SPECS SRPMS ; do \
292          mkdir -p $${tempdir}/$${f}; \
293        done; \
294        (cd ../; tar cf $${tempdir}/SOURCES/CMT$${version}.tar --exclude mgr src source); \
295        gzip $${tempdir}/SOURCES/CMT$${version}.tar; \
296        if test ! -d ../rpm; then mkdir -p ../rpm; fi; \
297        rpmbuild -ba --define "_topdir $${tempdir}" --define "_version $${version}" CMT.spec; \
298        cp $${tempdir}/RPMS/i386/CMT-$${version}-1.i386.rpm ../rpm ; \
299        cp $${tempdir}/SRPMS/CMT-$${version}-1.src.rpm ../rpm ; \
300        rm -r $${tempdir}
301
302#
303#        cp CMT.spec $${tempdir}; \
304#        find ../fragments ../mgr ../src ! -path '*/CVS*' ! -name '*~' ! -type d | \
305#          sed -e 's#[.][.]#%{prefix}/%{version}#' >>$${tempdir}/CMT.spec ; \
306#
307
308
309#----------------------------------------------------------
310# Construct a source kit
311#----------------------------------------------------------
312srctar ::
313        ${CMTROOT}/mgr/cmt_tar_export.sh source mgr src Visual java doc
314
315
316#----------------------------------------------------------
317# Construct the kits
318#----------------------------------------------------------
319Export :: docs srctar bintar
320        @echo Export done
321
322democlean ::
323        /bin/rm -rf ../demo/*
324
325demo_location = ../demo
326demo_sequence = demo1
327
328#----------------------------------------------------------
329# Run the autotest sequence
330#----------------------------------------------------------
331demo :: democlean
332        @echo "------------------------------------------"
333        @echo "Starting general auto test sequence"
334        @echo "  Creating $(demo_location) work area..."
335        @mkdir -p $(demo_location)
336        @echo "  Creating all $(demo_sequence) packages..."
337        cd $(demo_location); \
338        version=`$(cmtexe) -quiet version`; \
339        ($(cmtexe) -quiet run_sequence ${CMTROOT}/src/demo/$(demo_sequence).cmt | \
340          sed -e "s#$${CMTROOT}#"'$${CMTROOT}'"#" \
341              -e "s#$${version}#"'$${version}'"#" \
342              -e "s#$${CMTCONFIG}#"'$${CMTCONFIG}'"#"; \
343          ) >$(demo_sequence).txt
344        @echo "  Comparing results with reference output (${CMTROOT}/src/demo/$(demo_sequence).out) ..."
345        @cd $(demo_location); \
346        diff $(demo_sequence).txt ${CMTROOT}/src/demo/$(demo_sequence).out; s=$$?; \
347        if test $${s} = 0; then \
348          echo "    => no differences"; \
349        else \
350          echo "    => errors?"; \
351          cp $(demo_sequence).txt ${CMTROOT}/src/demo/$(demo_sequence).out; \
352        fi
353
354#---------------------------------------------------------
355
356
357tprivate :: democlean
358        @echo "------------------------------------------"; \
359        sequence=tprivate; \
360        location=../demo; \
361        echo "Starting auto test sequence on private uses"; \
362        echo "  Creating $${location} work area..."; \
363        mkdir -p $${location}; \
364        cd $${location}; \
365        version=`$(cmtexe) -quiet version`; \
366        echo "  Creating all $${sequence} packages..."; \
367        ($(cmtexe) -quiet run_sequence ${CMTROOT}/src/demo/$${sequence}.cmt | \
368          sed -e "s#$${CMTROOT}#"'$${CMTROOT}'"#" \
369              -e "s#$${version}#"'$${version}'"#" \
370              -e "s#$${CMTCONFIG}#"'$${CMTCONFIG}'"#"; \
371          ) >$${sequence}.txt; \
372        echo "  Comparing results with reference output (${CMTROOT}/src/demo/$${sequence}.out) ..."; \
373        diff $${sequence}.txt ${CMTROOT}/src/demo/$${sequence}.out; s=$$?; \
374        if test $${s} = 0; then \
375          echo "    => no differences"; \
376        else \
377          echo "    => errors?"; \
378          cp $${sequence}.txt ${CMTROOT}/src/demo/$${sequence}.out; \
379        fi
380
381
382
383#---------------------------------------------------------
384
385help ::
386        @echo "------------------------------------------------------------"
387        @echo "  [all]      : Default target"
388        @echo "  "
389        @echo "  installcvs : "
390        @echo "  doxygen    : Documentation generation"
391        @echo "  docs       : Documentation production and installation"
392        @echo "  pdf        : Convert html docs into pdf and ps"
393        @echo "  gendoc     : Convert xml doc into html"
394        @echo "  srctar     : Production and installation of source tar-ball"
395        @echo "                (include Linux binary directory)"
396        @echo "  bintar     : Production and installation of binary tar-balls"
397        @echo "  rpm        : Production of the RPM"
398        @echo "  Export     : Installation in the web site"
399        @echo "  democlean  : Cleaning the demo area"
400        @echo "  demo       : Run the demo sequence on private uses"
401        @echo "      (Site-specific targets for building CMT)"
402        @echo "  LAL        : asc lx1 papou1-fe hp2 #virgo-control1"
403        @echo "  LHCB       : lxtest hpplus dxplus rsplus"
404        @echo "  Atlas      : atlinux atlas50"
405        @echo "  Virgo      : ax7 vmpc13a rio0a"
406        @echo "  CCIN2P3    : ccars ccahp ccali ccasn"
407        @echo "------------------------------------------------------------"
408
Note: See TracBrowser for help on using the repository browser.