aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile.devel
blob: 8aabffbdc6073e74af8b6edd22943f530066f7fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
##
## Makefile for Proof General 
##
## Author:  David Aspinall <da@dcs.ed.ac.uk>
##
## $Id$
## 
###########################################################################


#  TODO (da):
#    - user-level targets for docs and .elc compile.



##
## Use:
##
##    make compile        - cleanout all .elc's and recompile
##    make <file.elc>     - byte compile file if .el file is newer
##                          (do all if <file.elc> is omitted)
##    make docs           - build info and .dvi files from isamode.texi
##    make pdf / html     - make other documentation files
##    make install        - install .el and .elc's into INSTALLDIR
##                          .rules files into RULESINSTALLDIR
##    make public         - install doc files and .el's into PUBLICDIR
##
###########################################################################
##
## Things to edit: INSTALLDIR, PUBLICDIR, EMACS, MAKEINFO, TEXI2DVI
##
## See-also: generic/proof-site.el
## 
###########################################################################




# Byte compilation command
BYTECOMP = $(EMACS) -batch -q -f batch-byte-compile

EMACS=xemacs


#############################################################
##
## Developer use only:
##
##    make ChangeLog	  - make ChangeLog from CVS sources (uses emacs)
##    make tag		  - tag the CVS sources with CVS_RELEASE_TAG
##    make dist           - make a distribution from sources with above tag
## 
#############################################################
##
## Developer variables
##

# Release tag.  NB: CVS tags can't have points in them.
RELEASE_TAG=2.0-pre$(shell date "+%y%m%d")
CVS_RELEASE_TAG=2-0-pre$(shell date "+%y%m%d")

CVSNAME = elisp
CVSROOT = /home/lego/src
EXPORTDIR = /home/lego/pub/ProofGeneral

NAME = ProofGeneral
RELEASENAME = ProofGeneral-2.0

# Files to not include the distribution 
NONDISTFILES=todo html

# Where to build a distribution
DISTBUILDIR = /tmp/ProofGeneralRelease

# Where to install a new distribution
RELEASEDIR = /home/lego/EXPORT/ProofGeneral

# Files not kept under cvs to clean away.
FILES_NONCVS = ChangeLog 


FORCE:

# Targets to pre-compile for distribution
# Slightly dodgy to include elisp compile here.
alldist:	docs



############################################################
#
# Re-Build ChangeLog.  CVSROOT must be set correctly.
# Correct dependency would be to check repository for changes!
#
ChangeLog:	FORCE
	rm -f ChangeLog
	$(EMACS) -batch -q -f vc-update-change-log -f save-buffer



############################################################
#
# Clean up for cvs (developer only)
#
# Idea is to remove all ?'s from 'cvs update' output.
#
cvsclean:	clean
	rm -rf $(FILES_NONCVS)


############################################################
#
# Clean 
#
clean:	



############################################################
#
# Documentation
#
docs:



############################################################
##
## tag:    tag the CVS sources of working directory with RELEASE_TAG,
##	   and edit version stamp in proof-site.el
##	   (Developers only)
##
tag:		
	@echo "*************************************************"
	@echo " Tagging sources... (fails if CVS source dirty)"
	@echo "*************************************************"
	if [ -n "`cvs -n -q update`" ]; then exit 1; fi
	(cd generic; mv proof-site.el proof-site.el.old; sed -e 's/proof-general-version \".*\"/proof-general-version \"Proof General, Version $(RELEASE_TAG) released by da,tms. Email lego@dcs.ed.ac.uk.\"/g' proof-site.el.old > proof-site.el; rm proof-site.el.old)
	cvs commit -m"Set version tag for release." generic/proof-site.el
	cvs tag "Release-$(CVS_RELEASE_TAG)"


############################################################
##
## dist: make a distribution in DISTBUILDIR from CVS sources
##       Builds from sources tagged with CVS_RELEASE_TAG.
##	 Moves html files to parent directory, and removes
##       non-distributed files.
##	 (Developer only)
##	    
dist:	cvsclean
	@echo "*************************************************"
	@echo " Cleaning dist build directory..."
	@echo "*************************************************"
	rm -rf $(DISTBUILDIR)
	mkdir -p $(DISTBUILDIR)
	@echo "*************************************************"
	@echo " Running cvs export .."
	@echo "*************************************************"
	cvs export -kv -r "Release-$(CVS_RELEASE_TAG)" -d $(DISTBUILDIR)/$(RELEASENAME) $(CVSNAME)
	@echo "*************************************************"
	@echo " Running 'make alldist' for new release .."
	@echo "*************************************************"
#	(cd $(DISTBUILDIR)/$(RELEASENAME); make alldist)
	@echo "*************************************************"
	@echo " Moving html files .."
	@echo "*************************************************"
	(cd $(DISTBUILDIR)/$(RELEASENAME)/html; mv * ../..)
	@echo "*************************************************"
	@echo " Cleaning non-distributed files .."
	@echo "*************************************************"
	(cd $(DISTBUILDIR)/$(RELEASENAME); rm -rf $(NONDISTFILES))
	@echo "*************************************************"
	@echo " Making compressed tar file..."
	@echo "*************************************************"
	tar -cvhf $(DISTBUILDIR)/$(RELEASENAME).tar -C $(DISTBUILDIR) $(RELEASENAME)
	gzip -9 $(DISTBUILDIR)/$(RELEASENAME).tar
	@echo "*************************************************"
	@echo " Finished."
	@echo "*************************************************"


############################################################
##
## release:
##     tag the CVS sources, and make a distribution.
##     Then install the distribution in RELEASEDIR.
##     RELEASEDIR is not cleaned, but files there
##     with same names will be overwritten.
##     Moreover, a link ProofGeneral -> ProofGeneral-<version>
##     is made.
##	  
release: tag dist
	mkdir -p $(RELEASEDIR)
	cp -pfr $(DISTBUILDIR)/* $(RELEASEDIR)
	(cd $(RELEASEDIR); ln -sf $(RELEASENAME) $(NAME))