-
Notifications
You must be signed in to change notification settings - Fork 24
/
OWDOS32.mak
132 lines (108 loc) · 3.04 KB
/
OWDOS32.mak
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
# this makefile in OW WMake style creates JWasmd.EXE (DOS32).
# unlike the DOS version created with OWWin32.mak, which uses
# a statically linked Win32 emulation layer, this creates
# a DOS version that uses the native OW DOS32 support. Besides
# a noticeable size reduction there isn't much gained, though.
# Tools used:
# - Open Watcom v2.0
# - jwlink ( OW's wlink might also be used )
# - HXDev ( for modules cstrtdhr.obj and loadpero.bin )
#
# LibFile clock.obj is a replacement for the std OW clock();
# it has a resolution of 1 ms instead of 55 ms.
#
# "WMake debug=1" - creates a debug version.
#
# Note that OW 1.9 has severe bugs concerning its LFN support!
name = JWasm
# Open Watcom root directory
!ifndef WATCOM
WATCOM = \ow20
!endif
NOGBL = 1
!ifndef DEBUG
DEBUG=0
!endif
!ifndef DJGPP
DJGPP=1
!endif
# to track memory leaks, the Open Watcom TRMEM module can be included.
# it's useful only if FASTMEM=0 is set, though, otherwise most allocs
# won't use the C heap.
!ifndef TRMEM
TRMEM=0
!endif
!ifndef OUTD
!if $(DEBUG)
OUTD=Build\OWDOS32D
!else
OUTD=Build\OWDOS32R
!endif
!endif
inc_dirs = -Isrc\H -I$(WATCOM)\H
c_flags = -q -bc -bt=dos -3r -fpi87 -wcd=115 -wcd=303 -D__WATCOM_LFN__
# OW's wlink could be used as well, but jwlink can better handle CONST segments in PE file format;
# also, it understands "format windows pe hx" ( which simply produces a 'PX' instead of 'PE' binary )
LINK = jwlink.exe
#cflags stuff
#########
extra_c_flags =
!if $(DEBUG)
extra_c_flags += -od -d2 -w3 -hc -DDEBUG_OUT
!else
#extra_c_flags += -obmilrt -s -DNDEBUG
extra_c_flags += -oxa -s -DNDEBUG
!endif
!if $(TRMEM)
extra_c_flags += -of -DTRMEM -DFASTMEM=0
!endif
!if !$(DJGPP)
extra_c_flags += -DDJGPP_SUPPORT=0
!endif
#########
!if $(DEBUG)
LOPTD = debug c op cvp, symfile
!else
LOPTD =
!endif
CC=$(WATCOM)\binnt\wcc386 $(c_flags) $(inc_dirs) $(extra_c_flags) -fo$@
LIB=$(WATCOM)\binnt\wlib
{src}.c{$(OUTD)}.obj:
$(CC) $<
proj_obj = &
!include owmod.inc
!if $(TRMEM)
proj_obj += $(OUTD)/trmem.obj
!endif
TARGET1=$(OUTD)/$(name)d.exe
ALL: $(OUTD) $(TARGET1)
$(OUTD):
@if not exist $(OUTD) mkdir $(OUTD)
$(OUTD)/$(name)d.exe: $(OUTD)/main.obj $(proj_obj)
$(LINK) @<<
$(LOPTD)
format windows pe hx runtime console
file { $(OUTD)/main.obj $(proj_obj) }
name $@
Libpath $(WATCOM)\lib386\dos;$(WATCOM)\lib386
Libfile cstrtdhr.obj, inirmlfn.obj, clock.obj
op quiet, stack=0x10000, heapsize=0x1000, map=$^*, stub=loadpero.bin
disable 171
!ifndef NOGBL
sort global
!endif
op statics
!ifndef WLINK
segment CONST readonly
segment CONST2 readonly
!endif
<<
$(OUTD)/msgtext.obj: src/msgtext.c src/H/msgdef.h src/H/globals.h
$(CC) src\msgtext.c
$(OUTD)/reswords.obj: src/reswords.c src/H/instruct.h src/H/special.h src/H/directve.h src/H/opndcls.h src/H/instravx.h
$(CC) src\reswords.c
######
clean: .SYMBOLIC
@if exist $(OUTD)\$(name).exe erase $(OUTD)\$(name).exe
@if exist $(OUTD)\$(name).map erase $(OUTD)\$(name).map
@if exist $(OUTD)\*.obj erase $(OUTD)\*.obj