]> gitweb @ CieloNegro.org - build-hc-pkg.git/blobdiff - mk/main.mk
build-hc-pkg seems to be mature now.
[build-hc-pkg.git] / mk / main.mk
diff --git a/mk/main.mk b/mk/main.mk
new file mode 100644 (file)
index 0000000..815f653
--- /dev/null
@@ -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."