Skip to content

Commit 41d3230

Browse files
authored
Merge pull request #2 from erique/add-vbcc
Add VBCC
2 parents e5eb47f + 101d3b4 commit 41d3230

File tree

5 files changed

+123
-5
lines changed

5 files changed

+123
-5
lines changed

Makefile.build

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
REPO_ROOT := $(dir $(lastword $(MAKEFILE_LIST)))
22
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+
417
NDK := $(CACHE_DIR)/NDK_3.9
518
SANA2 := $(CACHE_DIR)/sana2
619
AHI := $(CACHE_DIR)/ahi
@@ -11,25 +24,61 @@ LVO := $(INC_ASM)lvo
1124
SFD := $(notdir $(wildcard $(NDK)/Include/sfd/*.sfd))
1225
LVOS := $(addprefix $(LVO)/,$(SFD:.sfd=.i))
1326

14-
.PHONY: distclean lvos buildenv $(VASM)
27+
.PHONY: distclean lvos buildenv $(VASM) $(VLINK) $(VC)
1528

16-
buildenv: $(VASM) $(NDK) $(LVO) $(SANA2) $(AHI)
29+
buildenv: $(VASM) $(VLINK) $(VC) $(VC_CFG) $(VC_M68K) $(NDK) $(LVO) $(SANA2) $(AHI)
1730
# @echo "** $@ done"
1831

1932

2033
distclean: clean
2134
rm -rf $(CACHE_DIR)
2235
@echo "** $@ done"
2336

24-
$(CACHE_DIR):
37+
$(CACHE_DIR): | $(BIN_DIR) $(CONFIG_DIR) $(TARGET_DIR)
2538
mkdir -p $(CACHE_DIR)
2639

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+
2776
$(VASM): $(VASM).done
2877
$(VASM).done: | $(CACHE_DIR)
2978
cd $(CACHE_DIR) && rm -rf vasm vasm.tar.gz
3079
cd $(CACHE_DIR) && wget http://sun.hasenbraten.de/vasm/release/vasm.tar.gz
3180
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
3382
cd $(CACHE_DIR) && rm -rf vasm vasm.tar.gz
3483
touch $@
3584

test/Makefile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
VC_FLAGS := -v
2+
3+
TARGET := test
4+
SOURCE := test.c
5+
INCLUDES :=
6+
LISTFILE := $(addsuffix .txt,$(basename $(TARGET)))
7+
8+
all: $(TARGET)
9+
@echo ""
10+
11+
$(TARGET): Makefile | buildenv
12+
$(TARGET): $(INCLUDES)
13+
$(TARGET): $(SOURCE)
14+
$(VC) $< -o $@ $(VC_FLAGS)
15+
16+
clean:
17+
rm -rf $(TARGET) $(LISTFILE)
18+
19+
.PHONY: clean
20+
21+
# export VBCC root env var
22+
.EXPORT_ALL_VARIABLES:
23+
24+
include ../Makefile.build

test/test.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#include <stdio.h>
2+
3+
int main()
4+
{
5+
printf("hello replay world!\n");
6+
return 0;
7+
}

vbcc.patch

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
diff -rupN vbcc/datatypes/dtgen.c vbcc.patch/datatypes/dtgen.c
2+
--- vbcc/datatypes/dtgen.c 2013-04-24 00:45:50 +0200
3+
+++ vbcc.patch/datatypes/dtgen.c 2020-01-01 21:11:42 +0100
4+
@@ -133,8 +133,7 @@ int askyn(char *def)
5+
do{
6+
printf("Type y or n [%s]: ",def);
7+
fflush(stdout);
8+
- fgets(in,sizeof(in),stdin);
9+
- if(*in=='\n') strcpy(in,def);
10+
+ strcpy(in,def);
11+
}while(*in!='y'&&*in!='n');
12+
return *in=='y';
13+
}
14+
@@ -144,9 +143,7 @@ char *asktype(char *def)
15+
char *in=mymalloc(128);
16+
printf("Enter that type[%s]: ",def);
17+
fflush(stdout);
18+
- fgets(in,127,stdin);
19+
- if(in[strlen(in)-1]=='\n') in[strlen(in)-1]=0;
20+
- if(!*in) strcpy(in,def);
21+
+ strcpy(in,def);
22+
return in;
23+
}
24+

vc.cfg

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-cc=%%VBCC%%/bin/vbccm68k -quiet -hunkdebug %s -o= %s %s -O=%ld -I"%%VBCC%%/targets/m68k-amigaos/include" -I"%%VBCC%%/targets/m68k-amigaos/ndk/include_h" -I"%%VBCC%%/targets/m68k-amigaos/netinclude"
2+
-ccv=%%VBCC%%/bin/vbccm68k -hunkdebug %s -o= %s %s -O=%ld -I"%%VBCC%%/targets/m68k-amigaos/include" -I"%%VBCC%%/targets/m68k-amigaos/ndk/include_h" -I"%%VBCC%%/targets/m68k-amigaos/netinclude"
3+
-as=%%VBCC%%/bin/vasmm68k_mot -quiet -Fhunk -phxass -opt-fconst -nowarn=62 %s -o %s
4+
-asv=%%VBCC%%/bin/vasmm68k_mot -Fhunk -phxass -opt-fconst -nowarn=62 %s -o %s
5+
-rm=rm %s
6+
-rmv=rm %s
7+
-ld=%%VBCC%%/bin/vlink -bamigahunk -x -Bstatic -Cvbcc -nostdlib "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -L"%%VBCC%%/targets/m68k-amigaos/lib" -lvc -lamiga -o %s
8+
-l2=%%VBCC%%/bin/vlink -bamigahunk -x -Bstatic -Cvbcc -nostdlib %s %s -L"%%VBCC%%/targets/m68k-amigaos/lib" -o %s
9+
-ldv=%%VBCC%%/bin/vlink -bamigahunk -t -x -Bstatic -Cvbcc -nostdlib "%%VBCC%%/targets/m68k-amigaos/lib/startup.o" %s %s -L"%%VBCC%%/targets/m68k-amigaos/lib" -lvc -o %s
10+
-l2v=%%VBCC%%/bin/vlink -bamigahunk -t -x -Bstatic -Cvbcc -nostdlib %s %s -L"%%VBCC%%/targets/m68k-amigaos/lib" -o %s
11+
-ldnodb=-s -Rshort
12+
-ul=-l%s
13+
-cf=-F%s
14+
-ml=500

0 commit comments

Comments
 (0)