HCoop backport of SML/NJ for ml-nlffigen
[hcoop/zz_old/debian/smlnj.git] / debian / rules
CommitLineData
4dd335d4
JM
1#!/usr/bin/make -f
2# -*- makefile -*-
3
4export DH_OPTIONS
5
6SHELL:=/bin/sh
7
8ROOT:=$(CURDIR)
9
10CONFIGDIR:=$(ROOT)/config
11SRCDIR:=$(ROOT)/src
12BS_SML:=$(ROOT)/bootstrap/bin/sml
13BS_LINK:=$(ROOT)/bootstrap/bin/.link-sml
14
15SMLNJ_HOME:=/usr/lib/smlnj
16BINDIR:=$(SMLNJ_HOME)/bin
17HEAPDIR:=$(BINDIR)/heap
18RUNDIR:=$(BINDIR)/run
19LIBDIR:=$(BINDIR)/lib
20
21VERSION=$(shell cat $(CONFIGDIR)/version)
22
23debscripts:=$(addprefix debian/,deregister mkorig pkg-deregister pkg-register register)
24
25srcdirs:=$(basename $(wildcard *tgz))
26basedirs:=$(basename $(notdir $(wildcard base/*tgz)))
27
28notlibs:=smlnj-runtime smlnj-doc
29libpkgs:=$(filter-out $(notlibs),$(shell dh_listpackages))
30postinsts:=$(addsuffix .postinst,$(addprefix debian/,$(libpkgs)))
31prerms:=$(addsuffix .prerm,$(addprefix debian/,$(libpkgs)))
32
33vars.sed:
34 echo "s,@SHELL@,$(SHELL),g" > vars.sed
35 echo "s,@SMLNJ_HOME@,$(SMLNJ_HOME)," >> vars.sed
36 echo "s,@BINDIR@,$(BINDIR)," >> vars.sed
37 echo "s,@VERSION@,$(VERSION)," >> vars.sed
38
39arch-n-opsys: $(CONFIGDIR)/_arch-n-opsys vars.sed
40 cat $< | sed -f vars.sed > $@
41 chmod 777 $@
42
43$(BS_SML):
44 for f in *tgz; do tar zxf $$f -C bootstrap; done
45 mkdir -p bootstrap/base
46 for f in base/*tgz; do tar zxf $$f -C bootstrap/base; done
47 cd bootstrap && URLGETTER=/bin/false ./config/install.sh
48
49boot.%.tgz: $(BS_SML)
50 cd base/system && echo "CMB.make();" | $< "\$$smlnj/cmb.cm";
51 cd base/system/sml.boot.$* \
52 && $(BS_LINK) @SMLboot=BOOTLIST @SMLheap=sml @SMLalloc=1M \
53 @SMLrebuild="foo"
54 rm -r base/system/sml.boot.$*
55 rm -r base/system/*.bin.$*
56 mv base/system/foo.boot.$* base/system/sml.boot.$*
57 cd base/system && tar zcf $(ROOT)/$@ sml.boot.$*;
58
59boot: arch-n-opsys
60 eval `./arch-n-opsys` && $(MAKE) -f debian/rules boot.$$ARCH-unix.tgz;
61
62smlnj: boot
63 config/install.sh
64
65 mkdir -p wrapper
66 for c in `cd bin && ls`; do \
67 cat debian/wrapper.in | sed -f vars.sed -e "s/@CMD@/$$c/g" > wrapper/$$c; \
68 chmod 555 wrapper/$$c; \
69 done
70
71debian/%.postinst: debian/postinst.in vars.sed
72 cat $< | sed -f vars.sed -e "s/@PKG@/$*/" > $@
73
74debian/%.prerm: debian/prerm.in vars.sed
75 cat $< | sed -f vars.sed -e "s/@PKG@/$*/" > $@
76
77instscripts: $(postinsts) $(prerms)
78
79unpack-source: unpack-source-stamp
80unpack-source-stamp:
81 cd base && for t in $(basedirs); do tar zxf $$t.tgz; done
82 for t in $(srcdirs); do tar zxf $$t.tgz; done
83 touch $@
84
85# Architecture
86build: build-arch
87
88build-arch: build-arch-stamp
89build-arch-stamp: unpack-source-stamp
90 mkdir -p debscripts
91 install -m 555 $(debscripts) debscripts
92
93 cat debian/patches/* | patch -N -p1 1>/dev/null || true
94 cp config/targets config/targets.orig
95 cp debian/targets config/targets
96 $(MAKE) -f debian/rules smlnj
97
98 touch $@
99
100build-indep: build-indep-stamp
101build-indep-stamp: unpack-source-stamp
102ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
103 cd base/cm/Doc; latex manual.tex && latex manual.tex && dvipdfmx -o cm_manual.pdf manual.dvi
104 cd ml-lpt/doc; latex manual.tex && latex manual.tex && dvipdfmx -o ml-lpt_manual.pdf manual.dvi
105 cd nlffi/lib/Doc/manual; latex nlffi.tex && latex nlffi.tex && dvipdfmx nlffi.dvi
106 cd MLRISC/Doc; make
107 cd MLRISC/Tools/Doc; make
108 cd ml-lex; latex lexgen.tex && latex lexgen.tex && dvipdfmx lexgen.dvi
109endif
110 touch $@
111
112clean:
113 dh_testdir
114 dh_testroot
115 rm -f *-stamp
116
117 rm -f vars.sed
118 rm -f $(prerms) $(postinsts)
119 rm -f arch-n-opsys
120 rm -f boot*tgz
121 cd bootstrap && rm -rf bin ckit config lib src
122 rm -rf $(SRCDIR)/system/foo.* $(SRCDIR)/system/sml.*
123 rm -rf bin lib wrapper debscripts
124
125 cd base && rm -rf $(basedirs)
126 rm -rf $(srcdirs)
127 rm -rf sml.boot.*
128
129 cd bootstrap && rm -rf `ls | grep -v unix.tgz`
130
131 dh_clean
132
133install: install-arch-stamp install-indep-stamp
134
135install-indep: build-indep-stamp
136 dh_testdir
137 dh_testroot
138 dh_installdirs -i
139 dh_install -i
140
141install-arch: build-arch-stamp instscripts
142 dh_testdir
143 dh_testroot
144 dh_prep
145 dh_installdirs -s
146
147 dh_installchangelogs -psmlnj base/compiler/ChangeLog upstream
148 dh_installchangelogs -plibcml-smlnj cml/CHANGES upstream
149 dh_installchangelogs -plibexene-smlnj eXene/CHANGES upstream
150 dh_installchangelogs -plibsmlnj-smlnj smlnj-lib/CHANGES upstream
151 dh_installchangelogs -plibckit-smlnj ckit/HISTORY upstream
152
153 dh_install -s
154
155# make sure that the build path doesn't sneak in the link and run scripts
156 sed -i 's/BIN_DIR=".*smlnj.*"/BIN_DIR="\/usr\/lib\/smlnj\/bin\/"/' $(CURDIR)/debian/smlnj-runtime/usr/lib/smlnj/bin/.*-sml
157# install base pathconfig rules to smlnj-runtime package
158 install -m 644 config/extrapathconfig $(CURDIR)/debian/smlnj-runtime/usr/lib/smlnj/lib/pathconfig
159
160binary-arch: install-arch
161 dh_testdir -a
162 dh_testroot -a
163 dh_installchangelogs -a
164 dh_installdocs --exclude=".cvsignore" -a
165 dh_installexamples --exclude=".cvsignore" -a
166 dh_installman -a
167 dh_strip -a
168 dh_compress -a
169 dh_fixperms -a
170 dh_installdeb -a
171 dh_shlibdeps -a
172 dh_gencontrol -a
173 dh_md5sums -a
174 dh_builddeb -a
175
176binary-indep: install-indep
177 dh_testdir -i
178 dh_testroot -i
179 dh_installchangelogs -i
180 dh_installdocs --exclude=".cvsignore" -i
181 dh_installexamples --exclude=".cvsignore" -i
182 dh_installman -i
183 dh_strip -i
184 dh_compress -i
185 dh_fixperms -i
186 dh_installdeb -i
187 dh_shlibdeps -i
188 dh_gencontrol -i
189 dh_md5sums -i
190 dh_builddeb -i
191
192binary: binary-arch
193.PHONY: unpack-source build build-arch build-indep clean binary-arch binary-indep binary install install-arch install-indep