Commit | Line | Data |
---|---|---|
4dd335d4 JM |
1 | #!/usr/bin/make -f |
2 | # -*- makefile -*- | |
3 | ||
4 | export DH_OPTIONS | |
5 | ||
6 | SHELL:=/bin/sh | |
7 | ||
8 | ROOT:=$(CURDIR) | |
9 | ||
10 | CONFIGDIR:=$(ROOT)/config | |
11 | SRCDIR:=$(ROOT)/src | |
12 | BS_SML:=$(ROOT)/bootstrap/bin/sml | |
13 | BS_LINK:=$(ROOT)/bootstrap/bin/.link-sml | |
14 | ||
15 | SMLNJ_HOME:=/usr/lib/smlnj | |
16 | BINDIR:=$(SMLNJ_HOME)/bin | |
17 | HEAPDIR:=$(BINDIR)/heap | |
18 | RUNDIR:=$(BINDIR)/run | |
19 | LIBDIR:=$(BINDIR)/lib | |
20 | ||
21 | VERSION=$(shell cat $(CONFIGDIR)/version) | |
22 | ||
23 | debscripts:=$(addprefix debian/,deregister mkorig pkg-deregister pkg-register register) | |
24 | ||
25 | srcdirs:=$(basename $(wildcard *tgz)) | |
26 | basedirs:=$(basename $(notdir $(wildcard base/*tgz))) | |
27 | ||
28 | notlibs:=smlnj-runtime smlnj-doc | |
29 | libpkgs:=$(filter-out $(notlibs),$(shell dh_listpackages)) | |
30 | postinsts:=$(addsuffix .postinst,$(addprefix debian/,$(libpkgs))) | |
31 | prerms:=$(addsuffix .prerm,$(addprefix debian/,$(libpkgs))) | |
32 | ||
33 | vars.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 | ||
39 | arch-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 | ||
49 | boot.%.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 | ||
59 | boot: arch-n-opsys | |
60 | eval `./arch-n-opsys` && $(MAKE) -f debian/rules boot.$$ARCH-unix.tgz; | |
61 | ||
62 | smlnj: 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 | ||
71 | debian/%.postinst: debian/postinst.in vars.sed | |
72 | cat $< | sed -f vars.sed -e "s/@PKG@/$*/" > $@ | |
73 | ||
74 | debian/%.prerm: debian/prerm.in vars.sed | |
75 | cat $< | sed -f vars.sed -e "s/@PKG@/$*/" > $@ | |
76 | ||
77 | instscripts: $(postinsts) $(prerms) | |
78 | ||
79 | unpack-source: unpack-source-stamp | |
80 | unpack-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 | |
86 | build: build-arch | |
87 | ||
88 | build-arch: build-arch-stamp | |
89 | build-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 | ||
100 | build-indep: build-indep-stamp | |
101 | build-indep-stamp: unpack-source-stamp | |
102 | ifeq (,$(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 | |
109 | endif | |
110 | touch $@ | |
111 | ||
112 | clean: | |
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 | ||
133 | install: install-arch-stamp install-indep-stamp | |
134 | ||
135 | install-indep: build-indep-stamp | |
136 | dh_testdir | |
137 | dh_testroot | |
138 | dh_installdirs -i | |
139 | dh_install -i | |
140 | ||
141 | install-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 | ||
160 | binary-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 | ||
176 | binary-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 | ||
192 | binary: binary-arch | |
193 | .PHONY: unpack-source build build-arch build-indep clean binary-arch binary-indep binary install install-arch install-indep |