c7683af36dbcabb5021100dffc022d7004b1add8
[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
28
29 SRCS = 6502.c amode.c debug.c direct.c eagen.c error.c expr.c listing.c mach.c macro.c mark.c object.c procln.c riscasm.c rmac.c sect.c symbol.c token.c
30
31 OBJS = 6502.o amode.o debug.o direct.o eagen.o error.o expr.o listing.o mach.o macro.o mark.o object.o procln.o riscasm.o rmac.o sect.o symbol.o token.o
32
33 #
34 # Build everything
35 #
36
37 all : mntab.h 68ktab.h kwtab.h risckw.h 6502kw.h rmac
38         @echo
39         @echo "Don't forget to bump the version number before commiting!"
40         @echo
41
42 #
43 # Generated sources for state machines and keyword, directive and mnemonic
44 # definitions
45 #
46
47 mntab.h : mntab 68kmn kwgen
48         cat mntab 68kmn | ./kwgen mn >mntab.h
49
50 68ktab.h 68kmn : 68ktab 68ktab 68kgen
51         ./68kgen 68kmn <68ktab >68ktab.h
52
53
54 kwtab.h : kwtab kwgen
55         ./kwgen kw <kwtab >kwtab.h
56
57 6502kw.h : 6502.tbl kwgen
58         ./kwgen mp <6502.tbl >6502kw.h
59
60 risckw.h : kwtab kwgen
61         ./kwgen mr <risctab >risckw.h
62
63 #
64 # Build tools
65 #
66
67 kwgen.o : kwgen.c
68         $(HOSTCC) $(CFLAGS) -c kwgen.c
69
70 kwgen : kwgen.o
71         $(HOSTCC) $(CFLAGS) -o kwgen kwgen.o
72
73 68kgen.o : 68kgen.c
74         $(HOSTCC) $(CFLAGS) -c 68kgen.c
75
76 68kgen : 68kgen.o
77         $(HOSTCC) $(CFLAGS) -o 68kgen 68kgen.o
78
79 #
80 # Build RMAC executable
81 #
82
83 6502.o : 6502.c 6502.h
84         $(CC) $(CFLAGS) -c 6502.c
85
86 amode.o : amode.c amode.h
87         $(CC) $(CFLAGS) -c amode.c
88
89 debug.o : debug.c debug.h
90         $(CC) $(CFLAGS) -c debug.c
91
92 direct.o : direct.c direct.h
93         $(CC) $(CFLAGS) -c direct.c
94
95 eagen.o : eagen.c eagen.h eagen0.c
96         $(CC) $(CFLAGS) -c eagen.c
97
98 error.o : error.c error.h
99         $(CC) $(CFLAGS) -c error.c
100
101 expr.o : expr.c expr.h
102         $(CC) $(CFLAGS) -c expr.c
103
104 listing.o : listing.c listing.h
105         $(CC) $(CFLAGS) -c listing.c
106
107 mach.o : mach.c mach.h
108         $(CC) $(CFLAGS) -c mach.c
109
110 macro.o : macro.c macro.h
111         $(CC) $(CFLAGS) -c macro.c
112
113 mark.o : mark.c mark.h
114         $(CC) $(CFLAGS) -c mark.c
115
116 object.o : object.c object.h
117         $(CC) $(CFLAGS) -c object.c
118
119 procln.o : procln.c procln.h
120         $(CC) $(CFLAGS) -c procln.c
121
122 risca.o : risca.c risca.h
123         $(CC) $(CFLAGS) -c risca.c
124
125 rmac.o : rmac.c rmac.h
126         $(CC) $(CFLAGS) -c rmac.c
127
128 sect.o : sect.c sect.h
129         $(CC) $(CFLAGS) -c sect.c
130
131 symbol.o : symbol.c symbol.h
132         $(CC) $(CFLAGS) -c symbol.c
133
134 token.o : token.c token.h
135         $(CC) $(CFLAGS) -c token.c
136
137 rmac : $(OBJS)
138         $(CC) $(CFLAGS) -o rmac $(OBJS)
139
140 #
141 # Clean build environment
142 #
143
144 clean:
145         $(rm) $(OBJS) kwgen.o 68kgen.o rmac kwgen 68kgen kwtab.h 68ktab.h mntab.h risckw.h 6502kw.h
146
147 #
148 # Dependencies
149 #
150 6502.o: 6502.c direct.h rmac.h symbol.h expr.h error.h mach.h amode.h \
151  procln.h token.h riscasm.h sect.h
152 68kgen.o: 68kgen.c
153 amode.o: amode.c amode.h rmac.h symbol.h error.h token.h expr.h kwtab.h \
154  mntab.h parmode.h
155 debug.o: debug.c debug.h rmac.h symbol.h amode.h direct.h mark.h sect.h \
156  token.h
157 direct.o: direct.c direct.h rmac.h symbol.h 6502.h error.h expr.h \
158  listing.h mach.h amode.h macro.h mark.h procln.h token.h riscasm.h \
159  sect.h kwtab.h
160 eagen.o: eagen.c eagen.h rmac.h symbol.h amode.h sect.h mark.h error.h \
161  mach.h riscasm.h eagen0.c
162 error.o: error.c error.h rmac.h symbol.h token.h listing.h
163 expr.o: expr.c expr.h rmac.h symbol.h direct.h error.h listing.h mach.h \
164  amode.h procln.h token.h riscasm.h sect.h kwtab.h
165 kwgen.o: kwgen.c
166 listing.o: listing.c listing.h rmac.h symbol.h version.h token.h procln.h \
167  sect.h error.h
168 mach.o: mach.c mach.h amode.h rmac.h symbol.h eagen.h error.h direct.h \
169  procln.h token.h riscasm.h sect.h kwtab.h 68ktab.h
170 macro.o: macro.c macro.h rmac.h symbol.h debug.h direct.h error.h expr.h \
171  listing.h procln.h token.h
172 mark.o: mark.c mark.h rmac.h symbol.h error.h object.h riscasm.h sect.h
173 object.o: object.c object.h rmac.h symbol.h error.h mark.h riscasm.h \
174  sect.h
175 procln.o: procln.c procln.h rmac.h symbol.h token.h 6502.h amode.h \
176  direct.h error.h expr.h listing.h mach.h macro.h riscasm.h sect.h \
177  kwtab.h mntab.h risckw.h 6502kw.h
178 riscasm.o: riscasm.c riscasm.h rmac.h symbol.h amode.h direct.h error.h \
179  expr.h mark.h procln.h token.h sect.h risckw.h kwtab.h
180 rmac.o: rmac.c rmac.h symbol.h 6502.h debug.h direct.h error.h expr.h \
181  listing.h mark.h macro.h object.h procln.h token.h riscasm.h sect.h \
182  version.h
183 sect.o: sect.c sect.h rmac.h symbol.h 6502.h direct.h error.h expr.h \
184  listing.h mach.h amode.h mark.h riscasm.h token.h
185 symbol.o: symbol.c symbol.h error.h rmac.h listing.h object.h procln.h \
186  token.h
187 token.o: token.c token.h rmac.h symbol.h error.h macro.h procln.h sect.h \
188  kwtab.h
189