-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile.build
135 lines (106 loc) · 4.59 KB
/
Makefile.build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
REPO_ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
CACHE_DIR := $(REPO_ROOT).cache
BIN_DIR := $(CACHE_DIR)/bin
CONFIG_DIR := $(CACHE_DIR)/config
TARGET_DIR := $(CACHE_DIR)/targets
VBCC_REPO := $(abspath $(CACHE_DIR)/vbcc_vasm_vlink)
VASM := $(CACHE_DIR)/bin/vasmm68k_mot
VLINK := $(CACHE_DIR)/bin/vlink
VC := $(CACHE_DIR)/bin/vc
VC_CFG := $(CONFIG_DIR)/vc.cfg
VC_M68K := $(TARGET_DIR)/m68k-amigaos
VBCC := $(abspath $(CACHE_DIR))
NDK := $(CACHE_DIR)/NDK_3.9
SANA2 := $(CACHE_DIR)/sana2
AHI := $(CACHE_DIR)/ahi
AMITCP := $(CACHE_DIR)/AmiTCP-SDK-4.3
INC_ASM := $(NDK)/Include/include_i/
LVO := $(INC_ASM)lvo
SFD := $(notdir $(wildcard $(NDK)/Include/sfd/*.sfd))
LVOS := $(addprefix $(LVO)/,$(SFD:.sfd=.i))
RL := $(CACHE_DIR)/bin/rl-controller
.PHONY: distclean lvos buildenv $(VASM) $(VLINK) $(VC)
buildenv: $(VASM) $(VLINK) $(VC) $(VC_CFG) $(VC_M68K) $(NDK) $(LVO) $(SANA2) $(AHI) $(AMITCP)
# @echo "** $@ done"
distclean: clean
rm -rf $(CACHE_DIR)
@echo "** $@ done"
$(CACHE_DIR): | $(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR)
mkdir -p $(CACHE_DIR)
$(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR):
mkdir -p $(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR)
$(VBCC_REPO): | $(CACHE_DIR)
rm -rf $(VBCC_REPO)
git clone --depth 1 https://github.com/erique/vbcc_vasm_vlink.git $(VBCC_REPO)
$(VC): $(VC).done
$(VC).done: | $(CACHE_DIR) $(VBCC_REPO)
cd $(CACHE_DIR) && rm -rf vbcc
cd $(CACHE_DIR) && tar xzf $(VBCC_REPO)/vbcc.tar.gz
cd $(CACHE_DIR) && patch -p 0 < ../vbcc.patch
cd $(CACHE_DIR) && cd vbcc && mkdir bin && make TARGET=m68k -j 4 && cp bin/vc ../bin && cp bin/vbccm68k ../bin
cd $(CACHE_DIR) && rm -rf vbcc
touch $@
$(VC_CFG): $(REPO_ROOT)vc.cfg | $(CACHE_DIR)
# when using mingw we need a second regex replace (/c/ -> c:/)
cat $< | sed -e 's:%%VBCC%%:$(VBCC):g' | sed -e 's:/\([a-z]\)/:\1\:/:g' > $(CONFIG_DIR)/vc.config
cp $(CONFIG_DIR)/vc.config $@
$(VC_M68K): $(VC_M68K).done
$(VC_M68K).done : | $(CACHE_DIR) $(VBCC_REPO)
cd $(CACHE_DIR) && rm -rf vbcc_target_m68k-amigaos*
cd $(CACHE_DIR) && 7z x $(VBCC_REPO)/vbcc_target_m68k-amigaos.lha
cd $(CACHE_DIR) && cd vbcc_target_m68k-amigaos && mv targets/m68k-amigaos ../targets/m68k-amigaos
cd $(CACHE_DIR) && rm -rf vbcc_target_m68k-amigaos*
touch $@
$(VLINK): $(VLINK).done
$(VLINK).done: | $(CACHE_DIR) $(VBCC_REPO)
cd $(CACHE_DIR) && rm -rf vlink
cd $(CACHE_DIR) && tar xzf $(VBCC_REPO)/vlink.tar.gz
cd $(CACHE_DIR) && cd vlink && make -j 4 && cp vlink ../bin
cd $(CACHE_DIR) && rm -rf vlink
touch $@
$(VASM): $(VASM).done
$(VASM).done: | $(CACHE_DIR) $(VBCC_REPO)
cd $(CACHE_DIR) && rm -rf vasm
cd $(CACHE_DIR) && tar xzf $(VBCC_REPO)/vasm.tar.gz
cd $(CACHE_DIR) && cd vasm && make CPU=m68k SYNTAX=mot -j 4 && cp vasmm68k_mot ../bin
cd $(CACHE_DIR) && rm -rf vasm
touch $@
$(NDK): | $(CACHE_DIR)
cd $(CACHE_DIR) && wget http://www.haage-partner.de/download/AmigaOS/NDK39.lha
cd $(CACHE_DIR) && 7z x -y NDK39.lha NDK_3.9/Include
cd $(CACHE_DIR) && rm -rf NDK39.lha
$(SANA2): | $(CACHE_DIR)
cd $(CACHE_DIR) && wget http://aminet.net/dev/misc/sana2_v2.lha
cd $(CACHE_DIR) && 7z x -osana2 sana2_v2.lha
cd $(CACHE_DIR) && rm -rf sana2_v2.lha
$(AHI): | $(CACHE_DIR)
cd $(CACHE_DIR) && wget http://aminet.net/driver/audio/m68k-amigaos-ahidev.lha
cd $(CACHE_DIR) && 7z x m68k-amigaos-ahidev.lha m68k-amigaos-ahi/Developer/Include/Asm
cd $(CACHE_DIR) && mv m68k-amigaos-ahi/Developer/Include/Asm ahi
cd $(CACHE_DIR) && rm -rf m68k-amigaos-ahi/Developer/Include
cd $(CACHE_DIR) && rm -rf m68k-amigaos-ahidev.lha
$(AMITCP): | $(CACHE_DIR)
cd $(CACHE_DIR) && wget http://aminet.net/comm/tcp/AmiTCP-SDK-4.3.lha
cd $(CACHE_DIR) && 7z x -y AmiTCP-SDK-4.3.lha AmiTCP-SDK-4.3
cd $(CACHE_DIR) && rm -rf AmiTCP-SDK-4.3.lha
$(LVO): | $(NDK)
cd $(CACHE_DIR) && wget http://aminet.net/dev/gcc/sfdc.lha
cd $(CACHE_DIR) && 7z x sfdc.lha && mv sfdc-master sfdc
cd $(REPO_ROOT) && make -f Makefile lvos -j 4
cd $(CACHE_DIR) && rm -rf sfdc
cd $(CACHE_DIR) && rm -rf sfdc.lha
lvos: $(LVOS)
@echo "** $@ done"
$(LVO)/%.i : $(NDK)/Include/sfd/%.sfd
@mkdir -p $(LVO)
perl $(CACHE_DIR)/sfdc/sfdc -q --mode lvo $< -o $@
# may require "set PATH=C:\msys64\mingw32\bin;%PATH%" on Windows..
$(RL): $(RL).done
$(RL).done : | $(CACHE_DIR)
cd $(CACHE_DIR) && rm -rf rlaunch t2-build
cd $(CACHE_DIR) && git clone --recurse-submodules https://github.com/deplinenoise/tundra.git t2-build
cd $(CACHE_DIR) && cd t2-build && make -j 4 && sudo make install
cd $(CACHE_DIR) && git clone https://github.com/deplinenoise/rlaunch.git
cd $(CACHE_DIR) && cd rlaunch && VBCC=$(VBCC) tundra2 release && cp t2-output/*-release-default/rl-controller* ../bin
cd $(CACHE_DIR) && rm -rf rlaunch t2-build
touch $@