Version bump for last patch; now at v1.13.4.
[rmac] / makefile
1 #
2 # RMAC - Reboot's Macro Assembler for the Atari Jaguar
3 # Copyright (C) 199x Landon Dyer, 2011 Reboot & Friends
4 # MAKEFILE for *nix
5 #
6
7 STD := c99
8
9 # Detect old, shitty platforms that aren't C99/POSIX compliant
10 OSTYPE := $(shell uname -a)
11
12 # Should catch MinGW
13 ifeq "$(findstring MINGW, $(OSTYPE))" "MINGW"
14 STD := gnu99
15 endif
16
17 # If we're cross compiling using MXE, we're still fooooooooooked
18 ifneq "$(CROSS)" ""
19 STD := gnu99
20 endif
21
22
23 rm = /bin/rm -f
24 CC = $(CROSS)gcc
25 HOSTCC = gcc
26
27 #CFLAGS = -std=$(STD) -D_DEFAULT_SOURCE -g -D__GCCUNIX__ -I. -O2 -MMD
28 CFLAGS = -std=$(STD) -D_DEFAULT_SOURCE -g -D__GCCUNIX__ -I. -O2
29
30 SRCS = 6502.c amode.c debug.c direct.c eagen.c error.c expr.c fltpoint.c listing.c mach.c macro.c mark.c object.c op.c procln.c riscasm.c rmac.c sect.c symbol.c token.c
31
32 OBJS = 6502.o amode.o debug.o direct.o eagen.o error.o expr.o fltpoint.o listing.o mach.o macro.o mark.o object.o op.o procln.o riscasm.o rmac.o sect.o symbol.o token.o
33
34 #
35 # Build everything
36 #
37
38 all : mntab.h 68ktab.h kwtab.h risckw.h 6502kw.h opkw.h rmac
39         @echo
40         @echo "Don't forget to bump the version number before commiting!"
41         @echo
42
43 #
44 # Generated sources for state machines and keyword, directive and mnemonic
45 # definitions
46 #
47
48 mntab.h : mntab 68kmn kwgen
49         cat mntab 68kmn | ./kwgen mn >mntab.h
50
51 68ktab.h 68kmn : 68ktab 68ktab 68kgen
52         ./68kgen 68kmn <68ktab >68ktab.h
53
54
55 kwtab.h : kwtab kwgen
56         ./kwgen kw <kwtab >kwtab.h
57
58 6502kw.h : 6502.tbl kwgen
59         ./kwgen mp <6502.tbl >6502kw.h
60
61 risckw.h : kwtab kwgen
62         ./kwgen mr <risctab >risckw.h
63
64 opkw.h : op.tab kwgen
65         ./kwgen mo <op.tab >opkw.h
66
67 #
68 # Build tools
69 #
70
71 kwgen.o : kwgen.c
72         $(HOSTCC) $(CFLAGS) -c kwgen.c
73
74 kwgen : kwgen.o
75         $(HOSTCC) $(CFLAGS) -o kwgen kwgen.o
76
77 68kgen.o : 68kgen.c
78         $(HOSTCC) $(CFLAGS) -c 68kgen.c
79
80 68kgen : 68kgen.o
81         $(HOSTCC) $(CFLAGS) -o 68kgen 68kgen.o
82
83 #
84 # Build RMAC executable
85 #
86
87 6502.o : 6502.c 6502.h
88         $(CC) $(CFLAGS) -c 6502.c
89
90 amode.o : amode.c amode.h
91         $(CC) $(CFLAGS) -c amode.c
92
93 debug.o : debug.c debug.h
94         $(CC) $(CFLAGS) -c debug.c
95
96 direct.o : direct.c direct.h
97         $(CC) $(CFLAGS) -c direct.c
98
99 eagen.o : eagen.c eagen.h eagen0.c
100         $(CC) $(CFLAGS) -c eagen.c
101
102 error.o : error.c error.h
103         $(CC) $(CFLAGS) -c error.c
104
105 expr.o : expr.c expr.h
106         $(CC) $(CFLAGS) -c expr.c
107
108 fltpoint.o : fltpoint.c fltpoint.h
109         $(CC) $(CFLAGS) -c fltpoint.c
110
111 listing.o : listing.c listing.h
112         $(CC) $(CFLAGS) -c listing.c
113
114 mach.o : mach.c mach.h
115         $(CC) $(CFLAGS) -c mach.c
116
117 macro.o : macro.c macro.h
118         $(CC) $(CFLAGS) -c macro.c
119
120 mark.o : mark.c mark.h
121         $(CC) $(CFLAGS) -c mark.c
122
123 object.o : object.c object.h
124         $(CC) $(CFLAGS) -c object.c
125
126 op.o : op.c op.h
127         $(CC) $(CFLAGS) -c op.c
128
129 procln.o : procln.c procln.h
130         $(CC) $(CFLAGS) -c procln.c
131
132 riscasm.o : riscasm.c riscasm.h
133         $(CC) $(CFLAGS) -c riscasm.c
134
135 rmac.o : rmac.c rmac.h
136         $(CC) $(CFLAGS) -c rmac.c
137
138 sect.o : sect.c sect.h
139         $(CC) $(CFLAGS) -c sect.c
140
141 symbol.o : symbol.c symbol.h
142         $(CC) $(CFLAGS) -c symbol.c
143
144 token.o : token.c token.h
145         $(CC) $(CFLAGS) -c token.c
146
147 rmac : $(OBJS)
148         $(CC) $(CFLAGS) -o rmac $(OBJS) -lm
149
150 #
151 # Clean build environment
152 #
153
154 clean:
155         $(rm) $(OBJS) kwgen.o 68kgen.o rmac kwgen 68kgen kwtab.h 68ktab.h mntab.h risckw.h 6502kw.h opkw.h
156
157 #
158 # Dependencies
159 #
160 6502.o: 6502.c direct.h rmac.h symbol.h token.h expr.h error.h mach.h \
161  procln.h riscasm.h sect.h
162 68kgen.o: 68kgen.c
163 amode.o: amode.c amode.h rmac.h symbol.h error.h expr.h mach.h procln.h \
164  token.h sect.h kwtab.h mntab.h parmode.h
165 debug.o: debug.c debug.h rmac.h symbol.h amode.h direct.h token.h expr.h \
166  mark.h sect.h
167 direct.o: direct.c direct.h rmac.h symbol.h token.h 6502.h amode.h \
168  error.h expr.h fltpoint.h listing.h mach.h macro.h mark.h procln.h \
169  riscasm.h sect.h kwtab.h
170 eagen.o: eagen.c eagen.h rmac.h symbol.h amode.h error.h fltpoint.h \
171  mach.h mark.h riscasm.h sect.h token.h eagen0.c
172 error.o: error.c error.h rmac.h symbol.h listing.h token.h
173 expr.o: expr.c expr.h rmac.h symbol.h direct.h token.h error.h listing.h \
174  mach.h procln.h riscasm.h sect.h kwtab.h
175 fltpoint.o: fltpoint.c fltpoint.h
176 kwgen.o: kwgen.c
177 listing.o: listing.c listing.h rmac.h symbol.h error.h procln.h token.h \
178  sect.h version.h
179 mach.o: mach.c mach.h rmac.h symbol.h amode.h direct.h token.h eagen.h \
180  error.h expr.h procln.h riscasm.h sect.h kwtab.h 68ktab.h
181 macro.o: macro.c macro.h rmac.h symbol.h debug.h direct.h token.h error.h \
182  expr.h listing.h procln.h
183 mark.o: mark.c mark.h rmac.h symbol.h error.h object.h riscasm.h sect.h
184 object.o: object.c object.h rmac.h symbol.h 6502.h direct.h token.h \
185  error.h mark.h riscasm.h sect.h
186 op.o: op.c op.h rmac.h symbol.h direct.h token.h error.h expr.h \
187  fltpoint.h mark.h procln.h riscasm.h sect.h
188 procln.o: procln.c procln.h rmac.h symbol.h token.h 6502.h amode.h \
189  direct.h error.h expr.h listing.h mach.h macro.h op.h riscasm.h sect.h \
190  kwtab.h mntab.h risckw.h 6502kw.h opkw.h
191 riscasm.o: riscasm.c riscasm.h rmac.h symbol.h amode.h direct.h token.h \
192  error.h expr.h mark.h procln.h sect.h risckw.h kwtab.h
193 rmac.o: rmac.c rmac.h symbol.h 6502.h debug.h direct.h token.h error.h \
194  expr.h listing.h mark.h macro.h object.h procln.h riscasm.h sect.h \
195  version.h
196 sect.o: sect.c sect.h rmac.h symbol.h 6502.h direct.h token.h error.h \
197  expr.h listing.h mach.h mark.h riscasm.h
198 symbol.o: symbol.c symbol.h error.h rmac.h listing.h object.h procln.h \
199  token.h
200 token.o: token.c token.h rmac.h symbol.h direct.h error.h macro.h \
201  procln.h sect.h kwtab.h
202