export SHELLOPTS := igncr

CPU   := -mcpu=e500mc -mbig-endian -msoft-float
AOPT  := -g -Wall $(CPU) -Wa,--gdwarf2 -mregnames -xassembler-with-cpp -c
COPT  := -g -Wall $(CPU) -mno-sdata -fshort-enums -c
LOPT  := -g -Wall $(CPU) -Wl,--nmagic -nodefaultlibs -nostartfiles
TMP   := ./tmp
VPATH := . ./src

CCGRP := powerpc-eabi-
NAME  := sieve

all: $(NAME).elf $(NAME)_flash.elf

$(TMP):
	mkdir $(TMP)

$(TMP)/%.o: %.c $(MAKEFILE_LIST)
	$(CCGRP)gcc $(COPT) -o $@ $<

$(TMP)/%.o: %.cpp $(MAKEFILE_LIST)
	$(CCGRP)g++ $(COPT) -o $@ $<

$(TMP)/%.o: %.sx  $(MAKEFILE_LIST)
	$(CCGRP)gcc $(AOPT) -o $@ $<

$(TMP)/crt0.flash.o: crt0.sx  $(MAKEFILE_LIST)
	$(CCGRP)gcc $(AOPT) -DBOOT_FROM_FLASH -o $@ $<


$(TMP)/sram.ld:  mpc55xx.ldx $(MAKEFILE_LIST) | $(TMP)
	$(CCGRP)cpp -P -o $@ $< -D RAM_SIZE=16K

$(TMP)/flash.ld: mpc55xx.ldx $(MAKEFILE_LIST) | $(TMP)
	$(CCGRP)cpp -P -o $@ $< -D RAM_SIZE=16K -D ROM_SIZE=128K


$(NAME).elf:           $(addprefix $(TMP)/,sram.ld crt0.o $(NAME).o)
	$(CCGRP)gcc $(LOPT) -o $@ -T $^

$(NAME)_flash.elf:     $(addprefix $(TMP)/,flash.ld crt0.flash.o $(NAME).o lib.o)
	$(CCGRP)gcc $(LOPT) -o $@ -T $^

clean:
	-rm -fvr $(TMP)
	-rm -fv *.elf
