minor additions related to recent check-ins, reality, etc.
[ess.git] / Makefile
blobffef31e3b6140b61ff6c10430a16c9e0cfd8bed9
1 ## Top Level Makefile
3 ## Before making changes here, please take a look at Makeconf
4 include ./Makeconf
6 ## This is the default target, i.e. 'make' and 'make all' are the same.
8 all install clean distclean:
9 @for D in lisp doc etc; do cd $$D; $(MAKE) $@; cd ..; done
11 ## the rest of the targets are for ESS developer's use only :
13 ## --- PRE-release ---
15 dist: VERSION RPM.spec
16 cd doc; $(MAKE) docs; cd ..
17 cd lisp; $(MAKE) dist; grep 'ess-version' ess-cust.el; cd ..
18 $(MAKE) cleanup-dist
19 svn cleanup
20 @echo "** Committing VERSION, README, ANNOUNCE, info etc **"
21 svn commit -m "Updating toplevel files for new version" \
22 VERSION README ANNOUNCE RPM.spec
23 svn commit -m "Updating ess-version, info & html for new version" lisp/ess-cust.el doc/info doc/html
24 @echo "**********************************************************"
25 @echo "** Making distribution of ESS for release $(ESSVERSION),"
26 @echo "** from $(ESSDIR)"
27 @echo "** (must have setup subversion with cached authentication, prior for security)"
28 @echo "**********************************************************"
29 @echo "** Exporting Files **"
30 svn checkout --quiet $(SVN_URL)/trunk $(ESSDIR)-svn
31 mkdir -p $(ESSDIR)
32 (cd $(ESSDIR)-svn; $(GNUTAR) cvf - --exclude=.svn --no-wildcards .) | (cd $(ESSDIR); $(GNUTAR) xf - )
33 @echo "** Clean-up docs, Make docs, and Correct Write Permissions **"
34 CLEANUP="jcgs techrep dsc2001-rmh philasug user-* Why_* README.*"; \
35 cd $(ESSDIR)/doc; chmod -R u+w $$CLEANUP; rm -rf $$CLEANUP; \
36 make all cleanaux ; cd ../..
37 chmod u+w $(ESSDIR)/lisp/ess-site.el $(ESSDIR)/Make*
38 chmod u+w $(ESSDIR)/doc/Makefile $(ESSDIR)/lisp/Makefile
39 chmod a-w $(ESSDIR)/lisp/*.el
40 # should be newer than 'VERSION' :
41 touch $(ESSDIR)/lisp/ess-cust.el
42 chmod a-w $(ESSDIR)/ChangeLog $(ESSDIR)/doc/*
43 @echo "** Creating .tgz file **"
44 test -f $(ESSDIR).tgz && rm -rf $(ESSDIR).tgz || true
45 $(GNUTAR) hcvofz $(ESSDIR).tgz $(ESSDIR)
46 @echo "** Creating .zip file **"
47 test -f $(ESSDIR).zip && rm -rf $(ESSDIR).zip || true
48 zip -r $(ESSDIR).zip $(ESSDIR)
49 # Change of plans: no longer think this is a good idea
50 # Rather, the improved installation docs for xemacs will serve us better
51 # @echo "** Creating .tgz and .zip files for the XEmacs Package System **"
52 # test -f $(ESSDIR)-xemacs-pkg.tgz && rm -rf $(ESSDIR)-xemacs-pkg.tgz || true
53 # test -f $(ESSDIR)-xemacs-pkg.zip && rm -rf $(ESSDIR)-xemacs-pkg.zip || true
54 # cd $(ESSDIR); mv etc ess; mkdir etc; mv ess etc; mkdir info; \
55 # cp doc/info/ess.info info; mv lisp ess; mkdir lisp; mv ess lisp; \
56 # $(GNUTAR) hcvofz ../$(ESSDIR)-xemacs-pkg.tgz etc info lisp; \
57 # zip -r ../$(ESSDIR)-xemacs-pkg.zip etc info lisp; cd ..
58 $(MAKE) cleanup-dist
59 touch $@
61 .PHONY: cleanup-dist cleanup-rel
62 cleanup-dist:
63 @echo "** Cleaning up **"
64 (if [ -d $(ESSDIR) ] ; then \
65 chmod -R u+w $(ESSDIR) $(ESSDIR)-svn && rm -rf $(ESSDIR) $(ESSDIR)-svn; fi)
66 ## should only be called manually (if at all):
67 cleanup-rel:
68 @rm -f dist lisp/dist $(ESSDIR)*
70 %.spec: %.spec.in VERSION
71 sed 's/@@VERSION@@/$(ESSVERSION)/g' $< > $@
74 ## --- RELEASE ---
76 ## NB: Typically use 'make -W VERSION ChangeLog' before 'make rel'
77 ## since ~~~~~~~~~~~~~~~~~~~~~~~~~
78 ## ChangeLog often ends up newer than VERSION
79 ChangeLog: VERSION
80 @echo "** Adding log-entry to ChangeLog file"
81 mv ChangeLog ChangeLog.old
82 (echo `date "+%Y-%m-%d "` \
83 " ESS Maintainers <ESS-core@stat.math.ethz.ch>" ; \
84 echo; echo " * Version $(ESSVERSION) released."; echo; \
85 cat ChangeLog.old ) > ChangeLog
86 @rm ChangeLog.old
87 svn commit -m 'Version $(ESSVERSION)' ChangeLog
89 rel: ChangeLog dist tag
90 [ x$$USER = xmaechler ] || (echo 'must be maechler'; exit 1 )
91 @echo "** Placing .tgz and .zip files **"
92 cp -p $(ESSDIR).tgz $(ESSDIR).zip $(UPLOAD_DIR)
93 @echo "** Creating LATEST.IS. file **"
94 rm -f $(UPLOAD_DIR)/LATEST.IS.*
95 touch $(UPLOAD_DIR)/LATEST.IS.$(ESSDIR)
96 @echo "If all is perfect, eventually call 'make cleanup-rel'"
98 tag:
99 @echo "** Tagging the release **"
100 svn cp -m'release tagging' $(SVN_URL)/trunk $(SVN_URL)/tags/$(ESSVERSIONTAG)
102 ## TODO (when MM has GPG set up properly): add this to 'rel'
103 .PHONY: buildrpm
104 buildrpm: dist
105 rpmbuild -ta --sign $(ESSDIR).tgz