| 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 |