+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."