@@ -5,28 +5,45 @@ SHELL := bash
5
5
MAKEFLAGS += --warn-undefined-variables
6
6
MAKEFLAGS += --no-builtin-rules
7
7
8
- export CABAL := $(shell cabal list-bin -v0 --project-dir libraries/Cabal cabal-install:exe:cabal)
9
- export CABAL_ARGS_STAGE1 =--project-file cabal.project.stage1
10
- export GHC_STAGE1 := $(shell cabal list-bin -v0 $(CABAL_ARGS_STAGE1 ) ghc-bin:exe:ghc)
8
+ GHC ?= ghc
9
+ GHC_VERSION =$(shell $(GHC ) --numeric-version)
11
10
12
- all : $(GHC_STAGE1 )
11
+ STAGE ?= stage1
12
+
13
+ BUILD_DIR = _build/$(STAGE ) /build
14
+ STORE_DIR = _build/$(STAGE ) /store
15
+
16
+ GHC = _build/$(STAGE ) /bin/ghc
17
+
18
+ CABAL := _build/cabal/bin/cabal
19
+
20
+ .PHONY : all
21
+ all : stage1-ghc
13
22
14
23
cabal : $(CABAL )
15
-
24
+
16
25
$(CABAL ) :
17
- cabal build --project-dir libraries/Cabal cabal-install:exe:cabal
26
+ echo " Building cabal for $( STAGE) "
27
+ mkdir -p $(@D )
28
+ cabal build --builddir $(abspath _build/cabal/build) --project-dir libraries/Cabal cabal-install:exe:cabal
29
+ BIN=$$(cabal list-bin -v0 --builddir $(abspath _build/cabal/build) --project-dir libraries/Cabal cabal-install:exe:cabal )
30
+ ln -svf $$ BIN $@
18
31
19
- CONFIG_SCRIPTS := $(wildcard libraries/ * /configure.ac )
32
+ all-config-scripts : $(CONFIG_SCRIPTS )
20
33
21
- $(CONFIG_SCRIPTS:%.ac =%) : % : %.ac
34
+ CONFIG_SCRIPTS := $(patsubst % .ac,% ,$(wildcard libraries/* /configure.ac) )
35
+
36
+ $(CONFIG_SCRIPTS ) : % : % .ac
22
37
autoreconf -i -f $(@D )
23
38
24
- $(GHC_STAGE1 ) : $(CABAL ) $(CONFIG_SCRIPTS )
25
- $(CABAL ) build $(CABAL_ARGS_STAGE1 ) ghc-bin:exe:ghc
39
+ stage1-ghc : STAGE=stage1
40
+ stage1-ghc : $(GHC )
41
+
42
+ $(GHC ) : $(CABAL ) $(CONFIG_SCRIPTS )
43
+ echo " Building GHC ($( GHC) ) for $( STAGE) "
44
+ mkdir -p $(@D )
45
+ $(CABAL ) --store-dir $(STORE_DIR ) build --builddir $(BUILD_DIR ) --project-file cabal.project.$(STAGE ) ghc-bin:exe:ghc
26
46
27
47
clean :
28
48
rm -rf _build
29
-
30
- clean-submodules :
31
49
git submodule foreach git clean -dxf
32
-
0 commit comments