X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=makefile;h=ca6b7d1c99ba26f78f0492133b792f4f73370f2a;hp=8b46eed9cd6273ac53d3533d1ad275dfe0c5fbad;hb=bdbf34766f4d074a5933eb1326fe4ce03d249e10;hpb=f6e6a55c4cdaf0dffa0897792dc5926c7b173a23 diff --git a/makefile b/makefile index 8b46eed..ca6b7d1 100644 --- a/makefile +++ b/makefile @@ -1,120 +1,150 @@ # -# RMAC - Reboot's Macro Assembler for the Atari Jaguar -# Copyright (C) 199x Landon Dyer, 2011 Reboot & Friends -# MAKEFILE for Non-Windows Compilation -# Currently tested against Cygwin under Windows XP Pro +# RMAC - Reboot's Macro Assembler for all Atari computers +# Copyright (C) 199x Landon Dyer, 2011-2019 Reboot & Friends +# MAKEFILE for *nix # -rm = /bin/rm -f -CC = $(CROSS)gcc -HOSTCC = gcc +STD := c99 -CFLAGS = -g -D__GCCUNIX__ -I. -O2 +# Detect old, shitty platforms that aren't C99/POSIX compliant +OSTYPE := $(shell uname -a) -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 +# Should catch MinGW +ifeq "$(findstring MINGW, $(OSTYPE))" "MINGW" +STD := gnu99 +endif -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 +# If we're cross compiling using MXE, we're still fooooooooooked +ifneq "$(CROSS)" "" +STD := gnu99 +endif -# -# Build everything -# - -all : mntab.h 68ktab.h kwtab.h risckw.h rmac -# -# Generated Sources for State Machines and Keyword, Directive and Mnemonic Definitions -# - -mntab.h : mntab 68kmn kwgen - cat mntab 68kmn | ./kwgen mn >mntab.h - -68ktab.h 68kmn : 68ktab 68ktab 68kgen - ./68kgen 68kmn <68ktab >68ktab.h +RM = /bin/rm -f +CC = $(CROSS)gcc +HOSTCC = gcc -kwtab.h : kwtab kwgen - ./kwgen kw kwtab.h +#CFLAGS = -std=$(STD) -D_DEFAULT_SOURCE -g -D__GCCUNIX__ -I. -O2 -MMD +CFLAGS = -std=$(STD) -D_DEFAULT_SOURCE -g -D__GCCUNIX__ -I. -O2 -risckw.h : kwtab kwgen - ./kwgen mr risckw.h +OBJS = 6502.o amode.o debug.o direct.o dsp56k.o dsp56k_amode.o dsp56k_mach.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 # -# Build Tools +# Build everything # -kwgen.o : kwgen.c - $(HOSTCC) $(CFLAGS) -c kwgen.c - -kwgen : kwgen.o - $(HOSTCC) $(CFLAGS) -o kwgen kwgen.o - -68kgen.o : 68kgen.c - $(HOSTCC) $(CFLAGS) -c 68kgen.c - -68kgen : 68kgen.o - $(HOSTCC) $(CFLAGS) -o 68kgen 68kgen.o +#all: mntab.h 68ktab.h kwtab.h risckw.h 6502kw.h opkw.h dsp56ktab.h rmac +all: rmac + @echo + @echo "Don't forget to bump the version number before commiting!" + @echo # -# Build RMAC Executable +# Generated sources for state machines and keyword, directive and mnemonic +# definitions # -amode.o : amode.c - $(CC) $(CFLAGS) -c amode.c +68ktab.h 68k.tab: 68k.mch 68kgen + ./68kgen 68k.tab <68k.mch >68ktab.h -debug.o : debug.c - $(CC) $(CFLAGS) -c debug.c +dsp56ktab.h dsp56k.tab: dsp56k.mch dsp56kgen + ./dsp56kgen dsp56k.tab dsp56ktab.h -direct.o : direct.c - $(CC) $(CFLAGS) -c direct.c -eagen.o : eagen.c - $(CC) $(CFLAGS) -c eagen.c +mntab.h: direct.tab 68k.tab kwgen + cat direct.tab 68k.tab | ./kwgen mn >mntab.h -error.o : error.c - $(CC) $(CFLAGS) -c error.c +kwtab.h: kw.tab kwgen + ./kwgen kw kwtab.h -expr.o : expr.c - $(CC) $(CFLAGS) -c expr.c +6502kw.h: 6502.tab kwgen + ./kwgen mp <6502.tab >6502kw.h -listing.o : listing.c - $(CC) $(CFLAGS) -c listing.c +risckw.h: risc.tab kwgen + ./kwgen mr risckw.h -mach.o : mach.c - $(CC) $(CFLAGS) -c mach.c +opkw.h: op.tab kwgen + ./kwgen mo opkw.h -macro.o : macro.c - $(CC) $(CFLAGS) -c macro.c +# Looks like this is not needed... +dsp56kkw.h: dsp56k.tab kwgen + ./kwgen dsp dsp56kkw.h -mark.o : mark.c - $(CC) $(CFLAGS) -c mark.c - -object.o : object.c - $(CC) $(CFLAGS) -c object.c - -procln.o : procln.c - $(CC) $(CFLAGS) -c procln.c +# +# Build tools +# -risca.o : risca.c - $(CC) $(CFLAGS) -c risca.c +%gen: %gen.c + $(HOSTCC) $(CFLAGS) -c $< + $(HOSTCC) $(CFLAGS) -o $*gen $< -rmac.o : rmac.c - $(CC) $(CFLAGS) -c rmac.c +# +# Build RMAC executable +# -sect.o : sect.c - $(CC) $(CFLAGS) -c sect.c +%.o: %.c %.h + $(CC) $(CFLAGS) -c $< -symbol.o : symbol.c - $(CC) $(CFLAGS) -c symbol.c +rmac: $(OBJS) + $(CC) $(CFLAGS) -o rmac $(OBJS) -lm -token.o : token.c - $(CC) $(CFLAGS) -c token.c +# +# Clean build environment +# -rmac : $(OBJS) - $(CC) $(CFLAGS) -o rmac $(OBJS) +clean: + $(RM) $(OBJS) kwgen.o 68kgen.o rmac kwgen 68kgen 68k.tab kwtab.h 68ktab.h mntab.h risckw.h 6502kw.h opkw.h dsp56kgen dsp56kgen.o dsp56k.tab dsp56kkw.h dsp56ktab.h # -# Clean Build Environment +# Dependencies # - -clean: - $(rm) $(OBJS) kwgen.o 68kgen.o rmac kwgen 68kgen kwtab.h 68ktab.h mntab.h risckw.h +6502.o: 6502.c direct.h rmac.h symbol.h token.h expr.h error.h mach.h \ + procln.h riscasm.h sect.h kwtab.h +68kgen: 68kgen.c +amode.o: amode.c amode.h rmac.h symbol.h error.h expr.h mach.h procln.h \ + token.h sect.h riscasm.h kwtab.h mntab.h parmode.h +debug.o: debug.c debug.h rmac.h symbol.h amode.h direct.h token.h expr.h \ + mark.h sect.h riscasm.h +direct.o: direct.c direct.h rmac.h symbol.h token.h 6502.h amode.h \ + error.h expr.h fltpoint.h listing.h mach.h macro.h mark.h procln.h \ + riscasm.h sect.h kwtab.h +dsp56k.o: dsp56k.c rmac.h symbol.h dsp56k.h sect.h riscasm.h +dsp56k_amode.o: dsp56k_amode.c dsp56k_amode.h rmac.h symbol.h amode.h \ + error.h token.h expr.h procln.h sect.h riscasm.h kwtab.h mntab.h +dsp56k_mach.o: dsp56k_mach.c dsp56k_mach.h rmac.h symbol.h dsp56k_amode.h \ + amode.h direct.h token.h dsp56k.h sect.h riscasm.h error.h kwtab.h \ + dsp56ktab.h +dsp56kgen: dsp56kgen.c +eagen.o: eagen.c eagen.h rmac.h symbol.h amode.h error.h fltpoint.h \ + mach.h mark.h riscasm.h sect.h token.h eagen0.c +error.o: error.c error.h rmac.h symbol.h listing.h token.h +expr.o: expr.c expr.h rmac.h symbol.h direct.h token.h error.h listing.h \ + mach.h procln.h riscasm.h sect.h kwtab.h +fltpoint.o: fltpoint.c fltpoint.h +kwgen: kwgen.c +listing.o: listing.c listing.h rmac.h symbol.h error.h procln.h token.h \ + sect.h riscasm.h version.h +mach.o: mach.c mach.h rmac.h symbol.h amode.h direct.h token.h eagen.h \ + error.h expr.h procln.h riscasm.h sect.h kwtab.h 68ktab.h +macro.o: macro.c macro.h rmac.h symbol.h debug.h direct.h token.h error.h \ + expr.h listing.h procln.h +mark.o: mark.c mark.h rmac.h symbol.h error.h object.h riscasm.h sect.h +object.o: object.c object.h rmac.h symbol.h 6502.h direct.h token.h \ + error.h mark.h riscasm.h sect.h +op.o: op.c op.h direct.h rmac.h symbol.h token.h error.h expr.h \ + fltpoint.h mark.h procln.h riscasm.h sect.h opkw.h +procln.o: procln.c procln.h rmac.h symbol.h token.h 6502.h amode.h \ + direct.h dsp56kkw.h error.h expr.h listing.h mach.h macro.h op.h riscasm.h \ + sect.h kwtab.h mntab.h risckw.h 6502kw.h opkw.h +riscasm.o: riscasm.c riscasm.h rmac.h symbol.h amode.h direct.h token.h \ + error.h expr.h mark.h procln.h sect.h risckw.h kwtab.h +rmac.o: rmac.c rmac.h symbol.h 6502.h debug.h direct.h token.h error.h \ + expr.h listing.h mark.h macro.h object.h procln.h riscasm.h sect.h \ + version.h +sect.o: sect.c sect.h rmac.h symbol.h riscasm.h 6502.h direct.h token.h \ + error.h expr.h listing.h mach.h mark.h +symbol.o: symbol.c symbol.h error.h rmac.h listing.h object.h procln.h \ + token.h +token.o: token.c token.h rmac.h symbol.h direct.h error.h macro.h \ + procln.h sect.h riscasm.h kwtab.h