]> Shamusworld >> Repos - rmac/blob - makefile
c9260ff7af714b2c322fb9c0a9246089f06f19fe
[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 = 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 = 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 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 kwtab.h : kwtab kwgen
54         ./kwgen kw <kwtab >kwtab.h
55
56 risckw.h : kwtab kwgen
57         ./kwgen mr <risctab >risckw.h
58
59 #
60 # Build tools
61 #
62
63 kwgen.o : kwgen.c
64         $(HOSTCC) $(CFLAGS) -c kwgen.c
65
66 kwgen : kwgen.o
67         $(HOSTCC) $(CFLAGS) -o kwgen kwgen.o
68
69 68kgen.o : 68kgen.c
70         $(HOSTCC) $(CFLAGS) -c 68kgen.c
71
72 68kgen : 68kgen.o
73         $(HOSTCC) $(CFLAGS) -o 68kgen 68kgen.o
74
75 #
76 # Build RMAC executable
77 #
78
79 amode.o : amode.c
80         $(CC) $(CFLAGS) -c amode.c
81
82 debug.o : debug.c
83         $(CC) $(CFLAGS) -c debug.c
84
85 direct.o : direct.c
86         $(CC) $(CFLAGS) -c direct.c
87
88 eagen.o : eagen.c
89         $(CC) $(CFLAGS) -c eagen.c
90
91 error.o : error.c
92         $(CC) $(CFLAGS) -c error.c
93
94 expr.o : expr.c
95         $(CC) $(CFLAGS) -c expr.c
96
97 listing.o : listing.c
98         $(CC) $(CFLAGS) -c listing.c
99
100 mach.o : mach.c
101         $(CC) $(CFLAGS) -c mach.c
102
103 macro.o : macro.c
104         $(CC) $(CFLAGS) -c macro.c
105
106 mark.o : mark.c
107         $(CC) $(CFLAGS) -c mark.c
108
109 object.o : object.c
110         $(CC) $(CFLAGS) -c object.c
111
112 procln.o : procln.c
113         $(CC) $(CFLAGS) -c procln.c
114
115 risca.o : risca.c
116         $(CC) $(CFLAGS) -c risca.c
117
118 rmac.o : rmac.c
119         $(CC) $(CFLAGS) -c rmac.c
120
121 sect.o : sect.c
122         $(CC) $(CFLAGS) -c sect.c
123
124 symbol.o : symbol.c
125         $(CC) $(CFLAGS) -c symbol.c
126
127 token.o : token.c
128         $(CC) $(CFLAGS) -c token.c
129
130 rmac : $(OBJS)
131         $(CC) $(CFLAGS) -o rmac $(OBJS)
132
133 #
134 # Clean build environment
135 #
136
137 clean:
138         $(rm) $(OBJS) kwgen.o 68kgen.o rmac kwgen 68kgen kwtab.h 68ktab.h mntab.h risckw.h
139