1
1
REPO_ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
2
2
CACHE_DIR := $(REPO_ROOT).cache
3
- VASM := $(CACHE_DIR)/vasmm68k_mot
3
+
4
+ BIN_DIR := $(CACHE_DIR)/bin
5
+ CONFIG_DIR := $(CACHE_DIR)/config
6
+ TARGET_DIR := $(CACHE_DIR)/targets
7
+
8
+ VASM := $(CACHE_DIR)/bin/vasmm68k_mot
9
+ VLINK := $(CACHE_DIR)/bin/vlink
10
+
11
+ VC := $(CACHE_DIR)/bin/vc
12
+ VC_CFG := $(CONFIG_DIR)/vc.cfg
13
+ VC_M68K := $(TARGET_DIR)/m68k-amigaos
14
+
15
+ VBCC := $(abspath $(CACHE_DIR))
16
+
4
17
NDK := $(CACHE_DIR)/NDK_3.9
5
18
SANA2 := $(CACHE_DIR)/sana2
6
19
AHI := $(CACHE_DIR)/ahi
@@ -11,25 +24,61 @@ LVO := $(INC_ASM)lvo
11
24
SFD := $(notdir $(wildcard $(NDK)/Include/sfd/*.sfd))
12
25
LVOS := $(addprefix $(LVO)/,$(SFD:.sfd=.i))
13
26
14
- .PHONY: distclean lvos buildenv $(VASM)
27
+ .PHONY: distclean lvos buildenv $(VASM) $(VLINK) $(VC)
15
28
16
- buildenv: $(VASM) $(NDK) $(LVO) $(SANA2) $(AHI)
29
+ buildenv: $(VASM) $(VLINK) $(VC) $(VC_CFG) $(VC_M68K) $( NDK) $(LVO) $(SANA2) $(AHI)
17
30
# @echo "** $@ done"
18
31
19
32
20
33
distclean: clean
21
34
rm -rf $(CACHE_DIR)
22
35
@echo "** $@ done"
23
36
24
- $(CACHE_DIR):
37
+ $(CACHE_DIR): | $(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR)
25
38
mkdir -p $(CACHE_DIR)
26
39
40
+ $(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR):
41
+ mkdir -p $(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR)
42
+
43
+ $(VC): $(VC).done
44
+ $(VC).done: | $(CACHE_DIR)
45
+ cd $(CACHE_DIR) && rm -rf vbcc vbcc*.tar.gz
46
+ cd $(CACHE_DIR) && wget --no-check-certificate https://server.owl.de/~frank/tags/vbcc0_9g.tar.gz
47
+ cd $(CACHE_DIR) && tar xzf vbcc0_9g.tar.gz
48
+ cd $(CACHE_DIR) && patch -p 0 < ../vbcc.patch
49
+ cd $(CACHE_DIR) && cd vbcc && mkdir bin && make TARGET=m68k -j 4 && cp bin/vc ../bin && cp bin/vbccm68k ../bin
50
+ cd $(CACHE_DIR) && rm -rf vbcc vbcc*.tar.gz
51
+ touch $@
52
+
53
+ $(VC_CFG): $(REPO_ROOT)vc.cfg | $(CACHE_DIR)
54
+ # when using mingw we need a second regex replace (/c/ -> c:/)
55
+ cat $< | sed -e 's:%%VBCC%%:$(VBCC):g' | sed -e 's:/\([a-z]\)/:\1\:/:g' > $(CONFIG_DIR)/vc.config
56
+ cp $(CONFIG_DIR)/vc.config $@
57
+
58
+ $(VC_M68K): $(VC_M68K).done
59
+ $(VC_M68K).done : | $(CACHE_DIR)
60
+ cd $(CACHE_DIR) && rm -rf vbcc_target_m68k-amigaos*
61
+ cd $(CACHE_DIR) && wget --no-check-certificate http://server.owl.de/~frank/vbcc/2019-10-04/vbcc_target_m68k-amigaos.lha
62
+ cd $(CACHE_DIR) && 7z x vbcc_target_m68k-amigaos.lha
63
+ cd $(CACHE_DIR) && cd vbcc_target_m68k-amigaos && mv targets/m68k-amigaos ../targets/m68k-amigaos
64
+ cd $(CACHE_DIR) && rm -rf vbcc_target_m68k-amigaos*
65
+ touch $@
66
+
67
+ $(VLINK): $(VLINK).done
68
+ $(VLINK).done: | $(CACHE_DIR)
69
+ cd $(CACHE_DIR) && rm -rf vlink vlink.tar.gz
70
+ cd $(CACHE_DIR) && wget http://sun.hasenbraten.de/vlink/release/vlink.tar.gz
71
+ cd $(CACHE_DIR) && tar xzf vlink.tar.gz
72
+ cd $(CACHE_DIR) && cd vlink && make -j 4 && cp vlink ../bin
73
+ cd $(CACHE_DIR) && rm -rf vlink vlink.tar.gz
74
+ touch $@
75
+
27
76
$(VASM): $(VASM).done
28
77
$(VASM).done: | $(CACHE_DIR)
29
78
cd $(CACHE_DIR) && rm -rf vasm vasm.tar.gz
30
79
cd $(CACHE_DIR) && wget http://sun.hasenbraten.de/vasm/release/vasm.tar.gz
31
80
cd $(CACHE_DIR) && tar xzf vasm.tar.gz
32
- cd $(CACHE_DIR) && cd vasm && make CPU=m68k SYNTAX=mot -j 4 && cp vasmm68k_mot ..
81
+ cd $(CACHE_DIR) && cd vasm && make CPU=m68k SYNTAX=mot -j 4 && cp vasmm68k_mot ../bin
33
82
cd $(CACHE_DIR) && rm -rf vasm vasm.tar.gz
34
83
touch $@
35
84
0 commit comments