CC_OPTS = -O3 -fomit-frame-pointer -noixemul $(CFLAGS)
CPP_OPTS = -I./liba52 -DNDEBUG
RM = rm -f
MV = mv -f

PROGNAME = RAPlay

RA_SRC = RAPlay.c decode144.c decode288.c decodednet.c
RA_OBJ = $(RA_SRC:.c=.o)

A52_SRC = liba52/bitstream.c liba52/bit_allocate.c liba52/downmix.c liba52/imdct.c liba52/parse.c
A52_OBJ = $(A52_SRC:.c=.o)

%.o: %.c 
	$(CC) $(CPP_OPTS) $(CC_OPTS) -c $< -o $@

all: $(PROGNAME)_020 $(PROGNAME)_020FPU $(PROGNAME)_040 $(PROGNAME)_060 $(PROGNAME)_PPC

$(PROGNAME): $(RA_OBJ) $(A52_OBJ)
	$(CC) -o $@ /Work/GGPPC/lib/gcc-lib/m68k-amigaos/2.95.3/libnix/swapstack.o $(RA_OBJ) $(A52_OBJ) $(CC_OPTS) $(LD_OPTS)

$(PROGNAME)_ELF: $(RA_OBJ) $(A52_OBJ)
	ppc-morphos-ld -r -o $(PROGNAME) $(LIBDIR)/startup.o $(RA_OBJ) $(A52_OBJ) -L$(LIBDIR) -lgcc -lc -lm -lgcc $(LIBDIR)/end.o

$(PROGNAME)_020:
	$(MAKE) $(PROGNAME) "CC = m68k-amigaos-gcc" "CFLAGS = -m68020" "LD_OPTS = -lm"
	m68k-amigaos-strip --strip-unneeded --remove-section .comment $(PROGNAME)
	-$(MV) $(PROGNAME) $(PROGNAME).020
	-$(RM) $(RA_OBJ) $(A52_OBJ)

$(PROGNAME)_020FPU:
	$(MAKE) $(PROGNAME) "CC = m68k-amigaos-gcc" "CFLAGS = -m68020 -m68881" "LD_OPTS = -lm881"
	m68k-amigaos-strip --strip-unneeded --remove-section .comment $(PROGNAME)
	-$(MV) $(PROGNAME) $(PROGNAME).020.FPU
	-$(RM) $(RA_OBJ) $(A52_OBJ)

$(PROGNAME)_040:
	$(MAKE) $(PROGNAME) "CC = m68k-amigaos-gcc" "CFLAGS = -m68040 -m68881" "LD_OPTS = -lm040"
	m68k-amigaos-strip --strip-unneeded --remove-section .comment $(PROGNAME)
	-$(MV) $(PROGNAME) $(PROGNAME).040
	-$(RM) $(RA_OBJ) $(A52_OBJ)

$(PROGNAME)_060:
	$(MAKE) $(PROGNAME) "CC = m68k-amigaos-gcc" "CFLAGS = -m68060 -m68881" "LD_OPTS = -lm060"
	m68k-amigaos-strip --strip-unneeded --remove-section .comment $(PROGNAME)
	-$(MV) $(PROGNAME) $(PROGNAME).060
	-$(RM) $(RA_OBJ) $(A52_OBJ)

$(PROGNAME)_PPC:
	$(MAKE) $(PROGNAME)_ELF "CC = ppc-morphos-gcc" "CFLAGS = -mcpu=603e -mmultiple -I/GCCInclude -I/PPCInclude -I/Include" "LIBDIR = /Work/GG/lib/gcc-lib/ppc-amigaos/2.95.3" "LD_OPTS = -L\$$(LIBDIR)"
	ppc-morphos-strip --strip-unneeded --remove-section .comment $(PROGNAME)
	-$(MV) $(PROGNAME) $(PROGNAME).elf
	-$(RM) $(RA_OBJ) $(A52_OBJ)

clean:
	-$(RM) $(RA_OBJ) $(A52_OBJ)

