#!/usr/bin/make -f include /usr/share/dpkg/architecture.mk SHELL:=/bin/sh ROOT:=$(CURDIR)/build-dir CONFIGDIR:=$(ROOT)/config BS_SML:=$(ROOT)/bootstrap/bin/sml BS_LINK:=$(ROOT)/bootstrap/bin/.link-sml SMLNJ_HOME:=/usr/lib/smlnj BINDIR:=$(SMLNJ_HOME)/bin VERSION=$(shell cat $(CONFIGDIR)/version) # word size of the host architecture; selects x86 vs amd64 on x86_64 kernels SIZE_OPT:=-$(DEB_HOST_ARCH_BITS) # keep the build directory out of source locations recorded in stable # libraries (see debian/patches/0004-pathnames-trim-prefix.patch) export SMLNJ_TRIM_PREFIX:=$(ROOT)/ srcdirs:=ckit cml config doc eXene heap2asm ml-burg ml-lex ml-lpt MLRISC ml-yacc nlffi pgraph smlnj-c smlnj-lib trace-debug-profile basedirs:=cm compiler old-basis runtime system %: dh $@ vars.sed: echo "s,@SHELL@,$(SHELL),g" > vars.sed echo "s,@SMLNJ_HOME@,$(SMLNJ_HOME)," >> vars.sed echo "s,@BINDIR@,$(BINDIR)," >> vars.sed echo "s,@VERSION@,$(VERSION)," >> vars.sed echo "s,@SIZE@,$(DEB_HOST_ARCH_BITS)," >> vars.sed arch-n-opsys: $(CONFIGDIR)/_arch-n-opsys vars.sed sed -f vars.sed $< > $@ chmod 755 $@ # bootstrap compiler from the upstream boot images $(BS_SML): for f in $(srcdirs); do cp -a $$f $(ROOT)/bootstrap; done mkdir -p $(ROOT)/bootstrap/base for f in $(basedirs); do cp -a base/$$f $(ROOT)/bootstrap/base; done cd $(ROOT)/bootstrap && env -u MAKEFLAGS URLGETTER=/bin/false ./config/install.sh $(SIZE_OPT) -default $(DEB_HOST_ARCH_BITS) # rebuild the boot images from source using the bootstrap compiler boot.%.tgz: $(BS_SML) cd $(ROOT)/base/system && PATH=$(ROOT)/bootstrap/bin:$$PATH \ && echo 'OS.Process.exit (if CMB.make () then OS.Process.success else OS.Process.failure);' \ | $< $(SIZE_OPT) "\$$smlnj/cmb.cm" cd $(ROOT)/base/system/sml.boot.$* \ && $(BS_LINK) $(SIZE_OPT) @SMLboot=BOOTLIST @SMLheap=sml @SMLalloc=1M \ @SMLrebuild="foo" rm -r $(ROOT)/base/system/sml.boot.$* rm -r $(ROOT)/base/system/*.bin.$* mv $(ROOT)/base/system/foo.boot.$* $(ROOT)/base/system/sml.boot.$* cd $(ROOT)/base/system && tar zcf $(ROOT)/$@ sml.boot.$* boot: arch-n-opsys eval `./arch-n-opsys $(SIZE_OPT)` && $(MAKE) -f debian/rules boot.$$ARCH-unix.tgz smlnj: boot cd $(ROOT) && env -u MAKEFLAGS URLGETTER=/bin/false ./config/install.sh $(SIZE_OPT) -default $(DEB_HOST_ARCH_BITS) @echo Populate $(ROOT)/wrapper mkdir -p $(ROOT)/wrapper for c in `cd $(ROOT)/bin && ls`; do \ sed -f vars.sed -e "s/@CMD@/$$c/g" debian/wrapper.in > $(ROOT)/wrapper/$$c; \ chmod 755 $(ROOT)/wrapper/$$c; \ done # build in a copy of the source tree $(ROOT): mkdir -p $(ROOT) cp -a $(srcdirs) base bootstrap $(ROOT) override_dh_auto_build-arch: $(ROOT) cp debian/targets $(ROOT)/config/targets $(MAKE) -f debian/rules smlnj override_dh_auto_build-indep: $(ROOT) ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS))) cd $(ROOT)/base/cm/Doc && latex manual.tex && latex manual.tex && dvipdfmx -o cm_manual.pdf manual.dvi cd $(ROOT)/ml-lpt/doc && latex manual.tex && latex manual.tex && dvipdfmx -o ml-lpt_manual.pdf manual.dvi cd $(ROOT)/ml-burg/doc && transfig -L ps tree.fig && make && latex doc.tex && latex doc.tex && dvipdfmx -o ml-burg_manual.pdf doc.dvi cd $(ROOT)/nlffi/lib/Doc/manual && latex nlffi.tex && latex nlffi.tex && dvipdfmx nlffi.dvi cd $(ROOT)/MLRISC/Doc && make -j1 cd $(ROOT)/MLRISC/Tools/Doc && make cd $(ROOT)/ml-lex/doc && pdflatex ml-lex.tex cd $(ROOT)/ml-yacc/doc && latex mlyacc.tex && latex mlyacc.tex && dvipdfmx mlyacc.dvi endif override_dh_auto_clean: rm -rf $(ROOT) rm -f vars.sed arch-n-opsys boot*tgz execute_after_dh_install-arch: # make sure that the build path doesn't sneak into the driver scripts find debian/*$(BINDIR) -maxdepth 1 -type f \ -exec sed -i 's,$(ROOT)/bin,$(BINDIR),g; s,$(ROOT)/lib,$(SMLNJ_HOME)/lib,g' {} + # install extrapathconfig rules to smlnj-runtime package to use as a seed for # the trigger-generated pathconfig file install -m 644 config/extrapathconfig debian/smlnj-runtime$(SMLNJ_HOME)/lib/ echo bindir ../bin >> debian/smlnj-runtime$(SMLNJ_HOME)/lib/extrapathconfig # the smlnj-lib HTML documentation loads MathJax from a CDN, but no page uses math execute_after_dh_installdocs-arch: find debian/libsmlnj-smlnj/usr/share/doc -name '*.html' \ -exec sed -i '//,/MathJax.js/d' {} + override_dh_installchangelogs: dh_installchangelogs -psmlnj base/compiler/ChangeLog dh_installchangelogs -plibcml-smlnj cml/CHANGES dh_installchangelogs -plibexene-smlnj eXene/CHANGES dh_installchangelogs -plibsmlnj-smlnj smlnj-lib/CHANGES dh_installchangelogs -plibckit-smlnj ckit/HISTORY dh_installchangelogs --remaining-packages # upstream does not build with -g, so there is nothing for a dbgsym package override_dh_strip: dh_strip --no-automatic-dbgsym