1
2# this makefile (WMake) creates the Linux binary of JWasm.
3# Open Watcom v1.8-v1.9 may be used.
4
5name = jwasm
6
7!ifndef WATCOM
8WATCOM=\Watcom
9!endif
10!ifndef DEBUG
11DEBUG=0
12!endif
13
14!ifndef OUTD
15!if $(DEBUG)
16OUTD=build\OWLinuxD
17!else
18OUTD=build\OWLinuxR
19!endif
20!endif
21
22# calling convention for compiler: s=Stack, r=Register
23CCV=r
24
25inc_dirs  = -Isrc\H -I$(WATCOM)\LH
26
27# to track memory leaks, the Open Watcom TRMEM module can be included
28!ifndef TRMEM
29TRMEM=0
30!endif
31
32!ifdef JWLINK
33LINK = jwlink.exe
34c_flags = -zc
35!else
36LINK = $(WATCOM)\Binnt\wlink.exe
37c_flags = -zc
38!endif
39
40#cflags stuff
41#########
42extra_c_flags =
43!if $(DEBUG)
44extra_c_flags += -od -d2 -DDEBUG_OUT
45!else
46extra_c_flags += -ot -s -DNDEBUG
47!endif
48
49!if $(TRMEM)
50extra_c_flags += -DTRMEM -DFASTMEM=0
51!endif
52
53#lflags stuff
54#########
55!if $(DEBUG)
56LOPTD = debug dwarf op symfile
57!endif
58
59CC = $(WATCOM)\Binnt\wcc386 -q -3$(CCV) $(c_flags) -bc -bt=linux $(inc_dirs) $(extra_c_flags) -fo$@
60
61{src}.c{$(OUTD)}.obj:
62	$(CC) $<
63
64proj_obj = &
65!include owmod.inc
66
67!if $(TRMEM)
68proj_obj += $(OUTD)/trmem.obj
69!endif
70
71ALL: $(OUTD) $(OUTD)/$(name)
72
73$(OUTD):
74	@if not exist $(OUTD) mkdir $(OUTD)
75
76$(OUTD)/$(name) : $(OUTD)/main.obj $(proj_obj)
77	$(LINK) @<<
78format elf runtime linux
79$(LOPTD)
80libpath $(WATCOM)/lib386
81libpath $(WATCOM)/lib386/linux
82op map=$^*, norelocs, quiet, stack=0x20000
83file { $(OUTD)/main.obj $(proj_obj) }
84name $@.
85<<
86
87$(OUTD)/msgtext.obj: src/msgtext.c src/H/msgdef.h src/H/globals.h
88	$(CC) src\msgtext.c
89
90$(OUTD)/reswords.obj: src/reswords.c src/H/instruct.h src/H/special.h src/H/directve.h
91	$(CC) src\reswords.c
92
93######
94
95clean: .SYMBOLIC
96	@if exist $(OUTD)\*.    erase $(OUTD)\*.
97	@if exist $(OUTD)\*.obj erase $(OUTD)\*.obj
98	@if exist $(OUTD)\*.map erase $(OUTD)\*.map
99