]> gitweb @ CieloNegro.org - build-hc-pkg.git/blob - mk/main.mk
Various changes to support Linux
[build-hc-pkg.git] / mk / main.mk
1 DIRNAME    := $(patsubst %-src.tar.bz2,%,$(notdir $(SRCPATH)))
2 GNUTAR     ?= gtar
3 GNUSED     ?= gsed
4 HC_TARNAME ?= $(DIRNAME)-boot-$(PLATFORM).tar.bz2
5
6 all: work/pack-hc-pkg.stamp
7
8 work/extract-src.stamp:
9         $(GNUTAR) -jxf $(SRCPATH) -C work
10         touch $@
11
12 work/patch-src.stamp: work/extract-src.stamp
13         @echo "Executing an inner shell."
14         @echo "Apply some patches to the source tree if you want to, then exit."
15         @echo "(pwd: `pwd`/$(DIRNAME))"
16         @cd "work/$(DIRNAME)" && "$(SHELL)"
17         touch $@
18
19 work/duplicate-target.stamp: work/patch-src.stamp
20         cp -rp "work/$(DIRNAME)" "work/$(DIRNAME)-target"
21         touch $@
22
23 work/rename-host.stamp: work/duplicate-target.stamp
24         mv "work/$(DIRNAME)" "work/$(DIRNAME)-host"
25         touch $@
26
27 work/$(DIRNAME)-target/Makefile: work/rename-host.stamp
28         cd "work/$(DIRNAME)-target" && \
29                 ./configure -C --enable-hc-boot
30         touch $@
31
32 work/$(DIRNAME)-target/mk/build.mk: files/target-build.mk work/$(DIRNAME)-target/Makefile
33         cp -f $< $@
34
35 work/build-boot-files.stamp: work/$(DIRNAME)-target/mk/build.mk
36         $(MAKE) -C "work/$(DIRNAME)-target" bootstrapping-files
37         touch $@
38
39 work/$(DIRNAME)-host/Makefile: work/build-boot-files.stamp
40         cd "work/$(DIRNAME)-host" && \
41                 ./configure \
42                         --with-iconv-includes=/usr/pkg/include \
43                         --with-iconv-libraries=/usr/pkg/lib
44         touch $@
45
46 work/$(DIRNAME)-host/mk/build.mk: files/host-build.mk work/$(DIRNAME)-host/Makefile
47         cp -f $< $@
48
49 work/copy-boot-files.stamp: work/$(DIRNAME)-host/mk/build.mk
50         for i in dist-ghcconstants dist-derivedconstants ghcautoconf.h; do \
51                 rm -rf "work/$(DIRNAME)-host/includes/$$i" && \
52                 cp -pr \
53                         "work/$(DIRNAME)-target/includes/$$i" \
54                         "work/$(DIRNAME)-host/includes"; \
55         done
56         touch $@
57
58 work/build-hc.stamp: work/copy-boot-files.stamp
59         $(MAKE) -C "work/$(DIRNAME)-host"
60         touch $@
61
62 work/build-boot-tarball.stamp: work/build-hc.stamp
63         cd "work/$(DIRNAME)-host" && ../../files/mkboot
64         touch $@
65
66 work/extract-boot-tarball.stamp: work/build-boot-tarball.stamp
67         mkdir -p "work/$(DIRNAME)"
68         $(GNUTAR) -xf "work/$(DIRNAME)-host/boot.tar" -C "work/$(DIRNAME)"
69         touch $@
70
71 work/replace-paths.stamp: work/extract-boot-tarball.stamp
72         cd "work/$(DIRNAME)" && \
73                 $(GNUSED) -i \
74                         -e 's#/usr/pkg#[[PREFIX]]#g' \
75                         -e 's#'`pwd`'-host#[[GHC_SOURCE_PATH]]#g' \
76                         inplace/lib/package.conf.d/*.conf \
77                         */package.conf.inplace \
78                         */*/package-data.mk \
79                         */*/*/package-data.mk \
80                         */*/*/*/package-data.mk
81         touch $@
82
83 work/pack-hc-pkg.stamp: work/replace-paths.stamp
84         $(GNUTAR) -jcf "work/$(HC_TARNAME)" -C "work" $(DIRNAME)
85         touch $@
86         @echo "Done. Upload \"work/$(HC_TARNAME)\" to somewhere."