]> git.sur5r.net Git - cc65/blob - src/ca65/make/watcom.mak
Fixes for the watcom makefiles:
[cc65] / src / ca65 / make / watcom.mak
1 #
2 # CA65 Makefile for the Watcom compiler (using GNU make)
3 #
4
5 # ------------------------------------------------------------------------------
6 # Generic stuff
7
8 # Environment variables for the watcom compiler
9 export WATCOM  = c:\\watcom
10 export INCLUDE = $(WATCOM)\\h
11
12 # We will use the windows compiler under linux (define as empty for windows)
13 export WINEDEBUG=fixme-all
14 WINE = wine
15
16 # Programs
17 AR      = $(WINE) wlib
18 CC      = $(WINE) wcc386
19 LD      = $(WINE) wlink
20 WSTRIP  = $(WINE) wstrip -q
21
22 LNKCFG  = ld.tmp
23
24 # Program arguments
25 CFLAGS  = -d1 -obeilr -zp4 -5 -zq -w2 -i=..\\common
26
27 # Target files
28 EXE     = ca65.exe
29
30 # Create NT programs by default
31 ifndef TARGET
32 TARGET = NT
33 endif
34
35 # --------------------- OS2 ---------------------
36 ifeq ($(TARGET),OS2)
37 SYSTEM  = os2v2
38 CFLAGS  += -bt=$(TARGET)
39 endif
40
41 # -------------------- DOS4G --------------------
42 ifeq ($(TARGET),DOS32)
43 SYSTEM  = dos4g
44 CFLAGS  += -bt=$(TARGET)
45 endif
46
47 # --------------------- NT ----------------------
48 ifeq ($(TARGET),NT)
49 SYSTEM  = nt
50 CFLAGS  += -bt=$(TARGET)
51 endif
52
53 # ------------------------------------------------------------------------------
54 # Implicit rules
55
56 %.obj:  %.c
57         $(CC) $(CFLAGS) -fo=$@ $^
58
59
60 # ------------------------------------------------------------------------------
61 # All library OBJ files
62
63 OBJS =  anonname.obj    \
64         asserts.obj     \
65         condasm.obj     \
66         dbginfo.obj     \
67         ea65.obj        \
68         easw16.obj      \
69         enum.obj        \
70         error.obj       \
71         expr.obj        \
72         feature.obj     \
73         filetab.obj     \
74         fragment.obj    \
75         global.obj      \
76         incpath.obj     \
77         instr.obj       \
78         istack.obj      \
79         lineinfo.obj    \
80         listing.obj     \
81         macpack.obj     \
82         macro.obj       \
83         main.obj        \
84         nexttok.obj     \
85         objcode.obj     \
86         objfile.obj     \
87         options.obj     \
88         pseudo.obj      \
89         repeat.obj      \
90         scanner.obj     \
91         segment.obj     \
92         segrange.obj    \
93         sizeof.obj      \
94         spool.obj       \
95         struct.obj      \
96         studyexpr.obj   \
97         symbol.obj      \
98         symentry.obj    \
99         symtab.obj      \
100         token.obj       \
101         toklist.obj     \
102         ulabel.obj
103
104 LIBS = ../common/common.lib
105
106
107 # ------------------------------------------------------------------------------
108 # Main targets
109
110 all:            $(EXE)
111
112
113 # ------------------------------------------------------------------------------
114 # Other targets
115
116
117 $(EXE):         $(OBJS) $(LIBS)
118         @echo "DEBUG ALL" > $(LNKCFG)
119         @echo "OPTION QUIET" >> $(LNKCFG)
120         @echo "OPTION MAP" >> $(LNKCFG)
121         @echo "OPTION STACK=65536" >> $(LNKCFG)
122         @echo "NAME $@" >> $(LNKCFG)          
123         @for i in $(OBJS); do echo "FILE $${i}"; done >> $(LNKCFG)
124         @for i in $(LIBS); do echo "LIBRARY $${i}"; done >> $(LNKCFG)
125         @$(LD) system $(SYSTEM) @$(LNKCFG)
126         @rm $(LNKCFG)
127
128 clean:
129         @rm -f *~ core
130
131 zap:    clean
132         @rm -f $(OBJS) $(EXE) $(EXE:.exe=.map)
133
134 strip:
135         @-$(WSTRIP) $(EXE)
136