#!/usr/bin/make -f # -*- makefile -*- export DH_OPTIONS SHELL:=/bin/sh ROOT:=$(CURDIR)/build-dir CONFIGDIR:=$(ROOT)/config SRCDIR:=$(ROOT)/src BS_SML:=$(ROOT)/bootstrap/bin/sml BS_LINK:=$(ROOT)/bootstrap/bin/.link-sml SMLNJ_HOME:=/usr/lib/smlnj BINDIR:=$(SMLNJ_HOME)/bin HEAPDIR:=$(BINDIR)/heap RUNDIR:=$(BINDIR)/run LIBDIR:=$(BINDIR)/lib VERSION=$(shell cat $(CONFIGDIR)/version) 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 notlibs:=smlnj-runtime smlnj-doc libpkgs:=$(filter-out $(notlibs),$(shell dh_listpackages)) 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 arch-n-opsys: $(CONFIGDIR)/_arch-n-opsys vars.sed cat $< | sed -f vars.sed > $@ chmod 777 $@ $(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 && URLGETTER=/bin/false ./config/install.sh boot.%.tgz: $(BS_SML) cd $(ROOT)/base/system && echo "CMB.make();" | $< "\$$smlnj/cmb.cm"; cd $(ROOT)/base/system/sml.boot.$* \ && $(BS_LINK) @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` && $(MAKE) -f debian/rules boot.$$ARCH-unix.tgz; smlnj: boot cd $(ROOT) && ./config/install.sh mkdir -p $(ROOT)/wrapper for c in `cd $(ROOT)/bin && ls`; do \ cat debian/wrapper.in | sed -f vars.sed -e "s/@CMD@/$$c/g" > $(ROOT)/wrapper/$$c; \ chmod 555 $(ROOT)/wrapper/$$c; \ done $(ROOT): mkdir -p $(ROOT) for d in $$(ls -A | grep -v -e debian -e build-dir); do cp -a $$d $(ROOT); done # Architecture build: build-arch-stamp build-indep-stamp build-arch: build-arch-stamp build-arch-stamp: $(ROOT) cp debian/targets build-dir/config/targets $(MAKE) -f debian/rules smlnj touch $@ build-indep: build-indep-stamp build-indep-stamp: $(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 cd $(ROOT)/MLRISC/Tools/Doc; make cd $(ROOT)/ml-lex; latex lexgen.tex && latex lexgen.tex && dvipdfmx lexgen.dvi cd $(ROOT)/ml-yacc/doc; latex mlyacc.tex && latex mlyacc.tex && dvipdfmx mlyacc.dvi endif touch $@ clean: dh_testdir dh_testroot rm -f *-stamp rm -rf $(ROOT) rm -f vars.sed rm -f arch-n-opsys rm -f boot*tgz rm -rf $(SRCDIR)/system/foo.* $(SRCDIR)/system/sml.* rm -rf sml.boot.* dh_clean install: install-arch-stamp install-indep-stamp install-indep: build-indep-stamp dh_testdir dh_testroot dh_installdirs -i dh_install -i install-arch: build-arch-stamp dh_testdir dh_testroot dh_prep dh_installdirs -a dh_installchangelogs -psmlnj base/compiler/ChangeLog upstream dh_installchangelogs -plibcml-smlnj cml/CHANGES upstream dh_installchangelogs -plibexene-smlnj eXene/CHANGES upstream dh_installchangelogs -plibsmlnj-smlnj smlnj-lib/CHANGES upstream dh_installchangelogs -plibckit-smlnj ckit/HISTORY upstream dh_install -a # make sure that the build path doesn't sneak in the link and run scripts sed -i 's/BIN_DIR=".*smlnj.*"/BIN_DIR="\/usr\/lib\/smlnj\/bin\/"/' $(CURDIR)/debian/smlnj-runtime/usr/lib/smlnj/bin/.*-sml # install extrapathconfig rules to smlnj-runtime package to use as a seed for # the trigger-generated pathconfig file install -m 644 config/extrapathconfig $(CURDIR)/debian/smlnj-runtime/usr/lib/smlnj/lib/ echo bindir ../bin >> $(CURDIR)/debian/smlnj-runtime/usr/lib/smlnj/lib/extrapathconfig binary-arch: install-arch dh_testdir -a dh_testroot -a dh_installchangelogs -a dh_installdocs --exclude=".cvsignore" -a dh_installexamples --exclude=".cvsignore" -a dh_installman -a dh_strip -a --no-automatic-dbgsym dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binary-indep: install-indep dh_testdir -i dh_testroot -i dh_installchangelogs -i dh_installdocs --exclude=".cvsignore" -i dh_installexamples --exclude=".cvsignore" -i dh_installman -i dh_compress -i dh_fixperms -i dh_installdeb -i dh_shlibdeps -i dh_gencontrol -i dh_md5sums -i dh_builddeb -i binary: binary-arch binary-indep .PHONY: build build-arch build-indep clean binary-arch binary-indep binary install install-arch install-indep