Skip to content

Commit e9bb039

Browse files
committed
enable building with tc2 and tc3 with alternate paths
1 parent 47f3d42 commit e9bb039

File tree

3 files changed

+61
-20
lines changed

3 files changed

+61
-20
lines changed

build.bat

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,44 @@
1+
@ECHO OFF
12
rem Call this batch file with an argument of tcc3 or tcc2 to select compiler
3+
IF NOT [%2]==[] SET BASEPATH=%2
4+
IF [%2]==[] SET BASEPATH=
5+
IF NOT [%3]==[] SET MAKE=%3
6+
IF [%3]==[] SET MAKE=make
7+
IF [%1]==[] goto help
8+
SET OLD_PATH=%PATH%
29
goto %1
310

11+
:help
12+
ECHO build tcc# [tcpath] [make]
13+
ECHO e.g.
14+
ECHO build tcc2 D:\tc201 d:\dgjpp\bin\make
15+
ECHO or
16+
ECHO build tcc3 D:\tc30
17+
ECHO.
18+
ECHO Note: ensure UPX is in your path, optionally make in C:\bin
19+
goto end
20+
421
:tcc2
522
rem ############# Turbo C 2.01 ########################
6-
set PATH=C:\bin;C:\tc201;%PATH%
7-
set LIBS=C:\tc201\lib
8-
set CC=tcc
9-
set LD=tlink
10-
rem Small
11-
rem set COPT=-c -ms -1 share.c
12-
rem set LOPT=/m /s /c $(LIBS)\c0s.obj share.obj,share.com,,$(LIBS)\cs.lib
13-
rem Tiny
14-
set CFLAGS=-mt -1 -c -o
15-
set LDFLAGS=/m /s /c /t $(LIBS)\c0t.obj $(EXTRA_OBJS) share.obj,share.com,,$(LIBS)\cs.lib
16-
rem tcc looks for includes from the current directory, not the location of the
17-
rem file that's trying to include them, so add kitten's location
18-
set CFLAGS=-I../kitten -I../tnyprntf %CFLAGS%
19-
goto doit
23+
IF [%BASEPATH%]==[] set BASEPATH=C:\tc201
24+
set PATH=C:\bin;%BASEPATH%;%PATH%
25+
goto tcshared
2026

2127
:tcc3
2228
rem ############# TURBO_C 3 ########################
23-
set PATH=C:\bin;C:\tc\bin;%PATH%
24-
set LIBS=C:\tc\lib
29+
IF [%BASEPATH%]==[] set BASEPATH=C:\tc
30+
set PATH=C:\bin;%BASEPATH%\bin;%PATH%
31+
rem TC3 may create relocation records, if so use Small memory model
32+
goto tcshared
33+
34+
:tcshared
35+
rem ############# TURBO_C shared ########################
36+
set LIBS=%BASEPATH%\lib
37+
set INCLUDE=%BASEPATH%/include
2538
set CC=tcc
2639
set LD=tlink
27-
rem Tiny
28-
set COPT=-c -mt -1 share.c
29-
set LOPT=/m /s /c /t -L$(LIBS) c0t.obj share.obj,share.com,,cs.lib
40+
set LDFLAGS=/m /s /c /t $(LIBS)\c0t.obj $(EXTRA_OBJS) share.obj,share.com,,$(LIBS)\cs.lib
41+
set CFLAGS=-I../kitten -I../tnyprntf -I%INCLUDE% -mt -1 -c -o
3042
goto doit
3143

3244
:doit
@@ -51,4 +63,18 @@ rem or
5163
rem --best for smallest
5264

5365
rem We use GNU make for all targets
54-
make -C src
66+
%MAKE% -C src
67+
68+
rem cleanup
69+
:end
70+
set PATH=%OLD_PATH%
71+
set MAKE=
72+
set BASEPATH=
73+
set INCLUDE=
74+
set LIBS=
75+
set CC=
76+
set CFLAGS=
77+
set LD=
78+
set LDFLAGS=
79+
set EXTRA_OBJS=
80+
set UPXARGS=

src/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,16 @@ endif
2121
share.obj: share.c
2222
$(CC) $(CFLAGS)$@ $^
2323

24+
ifeq "$(COMPILER)" "gcc"
2425
gcc_help.obj: gcc_help.asm
2526
nasm -f elf -I ../lmacros/ -I lmacros/ $< -o $@
27+
else
28+
kitten.obj: ../kitten/kitten.c
29+
$(CC) $(CFLAGS)$@ $^
30+
31+
tnyprntf.obj: ../tnyprntf/tnyprntf.c
32+
$(CC) $(CFLAGS)$@ $^
33+
endif
2634

2735
share.com: share.obj $(EXTRA_OBJS)
2836
$(LD) $(LDFLAGS)

src/share.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,14 @@ int main(int argc, char **argv) {
11641164
setvect(0x2D, i2D_handler);
11651165
#endif
11661166
old_handler2f = getvect(MUX_INT_NO);
1167+
#if 0 /* causes relocations when built with Turbo C/C++ 3 */
11671168
setvect(MUX_INT_NO,handler2f);
1169+
#else
1170+
{
1171+
void (near *isr)() = FP_OFF(handler2f);
1172+
setvect(MUX_INT_NO,(void (interrupt far *)())MK_FP(_DS,isr));
1173+
}
1174+
#endif
11681175
/* enable(); */
11691176

11701177
/* Let them know we're installed. */

0 commit comments

Comments
 (0)