X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=build-hc-pkg.git;a=blobdiff_plain;f=mk%2Fmain.mk;fp=mk%2Fmain.mk;h=815f6531a31177041c203bac574e9bde5c3071c4;hp=0000000000000000000000000000000000000000;hb=2a032631b7bfccfa2044dd50863d0e1c119c8b2e;hpb=7b8684199160e0da113ddeb5a1b13afb5a415d32 diff --git a/mk/main.mk b/mk/main.mk new file mode 100644 index 0000000..815f653 --- /dev/null +++ b/mk/main.mk @@ -0,0 +1,85 @@ +DIRNAME := $(patsubst %-src.tar.bz2,%,$(notdir $(SRCPATH))) +GNUTAR ?= gnutar +HC_TARNAME ?= $(DIRNAME)-boot-$(PLATFORM).tar.bz2 + +all: work/pack-hc-pkg.stamp + +work/extract-src.stamp: + $(GNUTAR) -jxf $(SRCPATH) -C work + touch $@ + +work/patch-src.stamp: work/extract-src.stamp + @echo "Executing an inner shell." + @echo "Apply some patch to the source tree, then exit." + @echo "(pwd: `pwd`/$(DIRNAME))" + @cd "work/$(DIRNAME)" && "$(SHELL)" + touch $@ + +work/duplicate-target.stamp: work/patch-src.stamp + cp -rp "work/$(DIRNAME)" "work/$(DIRNAME)-target" + touch $@ + +work/rename-host.stamp: work/duplicate-target.stamp + mv "work/$(DIRNAME)" "work/$(DIRNAME)-host" + touch $@ + +work/$(DIRNAME)-target/Makefile: work/rename-host.stamp + cd "work/$(DIRNAME)-target" && \ + ./configure -C --enable-hc-boot + touch $@ + +work/$(DIRNAME)-target/mk/build.mk: files/target-build.mk work/$(DIRNAME)-target/Makefile + cp -f $< $@ + +work/build-boot-files.stamp: work/$(DIRNAME)-target/mk/build.mk + $(MAKE) -C "work/$(DIRNAME)-target" bootstrapping-files + touch $@ + +work/$(DIRNAME)-host/Makefile: work/build-boot-files.stamp + cd "work/$(DIRNAME)-host" && \ + ./configure \ + --with-iconv-includes=/usr/pkg/include \ + --with-iconv-libraries=/usr/pkg/lib + touch $@ + +work/$(DIRNAME)-host/mk/build.mk: files/host-build.mk work/$(DIRNAME)-host/Makefile + cp -f $< $@ + +work/copy-boot-files.stamp: work/$(DIRNAME)-host/mk/build.mk + for i in dist-ghcconstants dist-derivedconstants ghcautoconf.h; do \ + rm -rf "work/$(DIRNAME)-host/includes/$$i" && \ + cp -pr \ + "work/$(DIRNAME)-target/includes/$$i" \ + "work/$(DIRNAME)-host/includes"; \ + done + touch $@ + +work/build-hc.stamp: work/copy-boot-files.stamp + $(MAKE) -C "work/$(DIRNAME)-host" + touch $@ + +work/build-boot-tarball.stamp: work/build-hc.stamp + cd "work/$(DIRNAME)-host" && ../../files/mkboot + touch $@ + +work/extract-boot-tarball.stamp: work/build-boot-tarball.stamp + mkdir -p "work/$(DIRNAME)" + $(GNUTAR) -xf "work/$(DIRNAME)-host/boot.tar" -C "work/$(DIRNAME)" + touch $@ + +work/replace-paths.stamp: work/extract-boot-tarball.stamp + cd "work/$(DIRNAME)" && \ + gsed -i \ + -e 's#/usr/pkg#[[PREFIX]]#g' \ + -e 's#'`pwd`'-host#[[GHC_SOURCE_PATH]]#g' \ + inplace/lib/package.conf.d/*.conf \ + */package.conf.inplace \ + */*/package-data.mk \ + */*/*/package-data.mk \ + */*/*/*/package-data.mk + touch $@ + +work/pack-hc-pkg.stamp: work/replace-paths.stamp + $(GNUTAR) -jcf "work/$(HC_TARNAME)" -C "work" $(DIRNAME) + touch $@ + @echo "Done. Upload \"work/$(HC_TARNAME)\" to somewhere."