]> git.sur5r.net Git - cc65/blob - src/cc65/make/watcom.mak
Fixes for the watcom makefiles:
[cc65] / src / cc65 / make / watcom.mak
1 #
2 # CC65 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     = cc65.exe
29
30 # Determine the svn version number if possible
31 ifneq "$(shell which svnversion 2>/dev/null)" ""
32 ifneq "$(wildcard .svn)" ""
33 SVNVERSION=$(shell svnversion)
34 else
35 SVNVERSION=unknown
36 endif
37 else
38 SVNVERSION=unknown
39 endif
40
41 # Create NT programs by default
42 ifndef TARGET
43 TARGET = NT
44 endif
45
46 # --------------------- OS2 ---------------------
47 ifeq ($(TARGET),OS2)
48 SYSTEM  = os2v2
49 CFLAGS  += -bt=$(TARGET)
50 endif
51
52 # -------------------- DOS4G --------------------
53 ifeq ($(TARGET),DOS32)
54 SYSTEM  = dos4g
55 CFLAGS  += -bt=$(TARGET)
56 endif
57
58 # --------------------- NT ----------------------
59 ifeq ($(TARGET),NT)
60 SYSTEM  = nt
61 CFLAGS  += -bt=$(TARGET)
62 endif
63
64 # ------------------------------------------------------------------------------
65 # Implicit rules
66
67 %.obj:  %.c
68         $(CC) $(CFLAGS) -fo=$@ $^
69
70
71 # ------------------------------------------------------------------------------
72 # All OBJ files
73
74 OBJS =  anonname.obj    \
75         asmcode.obj     \
76         asmlabel.obj    \
77         asmstmt.obj     \
78         assignment.obj  \
79         casenode.obj    \
80         codeent.obj     \
81         codegen.obj     \
82         codelab.obj     \
83         codeinfo.obj    \
84         codeopt.obj     \
85         codeseg.obj     \
86         compile.obj     \
87         coptadd.obj     \
88         coptc02.obj     \
89         coptcmp.obj     \
90         coptind.obj     \
91         coptneg.obj     \
92         coptptrload.obj \
93         coptpush.obj    \
94         coptsize.obj    \
95         coptstop.obj    \
96         coptstore.obj   \
97         coptsub.obj     \
98         copttest.obj    \
99         dataseg.obj     \
100         datatype.obj    \
101         declare.obj     \
102         declattr.obj    \
103         error.obj       \
104         expr.obj        \
105         exprdesc.obj    \
106         funcdesc.obj    \
107         function.obj    \
108         global.obj      \
109         goto.obj        \
110         hexval.obj      \
111         ident.obj       \
112         incpath.obj     \
113         input.obj       \
114         lineinfo.obj    \
115         litpool.obj     \
116         loadexpr.obj    \
117         locals.obj      \
118         loop.obj        \
119         macrotab.obj    \
120         main.obj        \
121         opcodes.obj     \
122         output.obj      \
123         preproc.obj     \
124         pragma.obj      \
125         reginfo.obj     \
126         scanner.obj     \
127         scanstrbuf.obj  \
128         segments.obj    \
129         shiftexpr.obj   \
130         stackptr.obj    \
131         standard.obj    \
132         stdfunc.obj     \
133         stdnames.obj    \
134         stmt.obj        \
135         svnversion.obj  \
136         swstmt.obj      \
137         symentry.obj    \
138         symtab.obj      \
139         testexpr.obj    \
140         textseg.obj     \
141         typecmp.obj     \
142         typeconv.obj    \
143         util.obj
144
145 LIBS = ../common/common.lib
146
147
148 # ------------------------------------------------------------------------------
149 # Main targets
150
151 all:            svnversion $(EXE)
152
153
154 # ------------------------------------------------------------------------------
155 # Other targets
156
157
158 $(EXE):         $(OBJS) $(LIBS)
159         @echo "DEBUG ALL" > $(LNKCFG)
160         @echo "OPTION QUIET" >> $(LNKCFG)
161         @echo "OPTION MAP" >> $(LNKCFG)
162         @echo "OPTION STACK=65536" >> $(LNKCFG)
163         @echo "NAME $@" >> $(LNKCFG)
164         @for i in $(OBJS); do echo "FILE $${i}"; done >> $(LNKCFG)
165         @for i in $(LIBS); do echo "LIBRARY $${i}"; done >> $(LNKCFG)
166         @$(LD) system $(SYSTEM) @$(LNKCFG)
167         @rm $(LNKCFG)
168
169 .PHONY: svnversion
170 svnversion:
171         @$(RM) svnversion.c
172         @echo "/* This file is auto-generated - do not modify! */" >> svnversion.c
173         @echo "" >> svnversion.c
174         @echo "const char SVNVersion[] = \"$(SVNVERSION)\";" >> svnversion.c
175
176 svnversion.c:   svnversion
177
178 clean:
179         @rm -f *~ core
180
181 zap:    clean
182         @rm -f $(OBJS) $(EXE) $(EXE:.exe=.map) svnversion.c
183
184 strip:
185         @-$(WSTRIP) $(EXE)
186