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