TESTS = $(ALL)
TARGETS = nvram
ALL = $(TARGETS:%=%.le) $(TARGETS:%=%.be)

all: $(ALL)

RUN_FLAGS= \
	-o '\#address-cells 1' \
	-o '/iobus@0xf0000000/nvram@0xf0000000/reg 0xf0000000 0x1000'
RUN_ARGS= 0xf0000000 0x1000

LIB = ../lib/libbug
LDFLAGS=-Ttext 0x0 -Tdata 0x10000
CRT0 = ../lib/bug
CONFIG_TARGET = powerpc-eabi
AS=$(CONFIG_TARGET)-as
LD=$(CONFIG_TARGET)-ld -g
CC=$(CONFIG_TARGET)-gcc -g
AR=$(CONFIG_TARGET)-ar
#RUN=$(CONFIG_TARGET)-run
RUN=$$HOME/build/psim/build/sim/ppc/run
RANLIB=$(CONFIG_TARGET)-ranlib
CFLAGS= -v

.SUFFIXES: # drop .a
.SUFFIXES: .S .s .c .bo .lo .be .le .ba .la

%.bo: %.s
	$(AS) -mbig -o $@ $<
%.bo: %.S
	$(CC) -mbig -E -I. $< > $@,
	$(AS) -mbig $@, -o $@,,
	rm $@,
	mv $@,, $@
%.bo: %.c $(INCLUDES)
	$(CC) -mbig -c -I. -o $@ $<
%.be: %.bo $(LIB:%=%.ba) $(CRT0:%=%.bo)
	$(LD) $(LDFLAGS) -oformat elf32-powerpc -o $@ $(CRT0:%=%.bo) $< $(LIB:%=%.ba)

%.lo: %.s
	$(AS) -mlittle -o $@ $<
%.lo: %.S
	$(CC) -mlittle -E -I. $< > $@,
	$(AS) -mlittle $@, -o $@,,
	rm $@,
	mv $@,, $@
%.lo: %.c $(INCLUDES)
	$(CC) -mlittle -I. -c -o $@ $<
%.le: %.lo $(LIB:%=%.la) $(CRT0:%=%.lo)
	$(LD) $(LDFLAGS) -oformat elf32-powerpcle -o $@ $(CRT0:%=%.lo) $< $(LIB:%=%.la)

tests test: all
	@dir=`pwd` ; \
	dir=`basename $$dir` ; \
	for t in x $(TESTS) ; \
	do \
	  if [ $$t = x ] ; \
	  then \
	    continue ; \
	  else \
	    echo "****" ; \
	    echo "**** Running $$dir/$$t" ; \
	    echo "****" ; \
	    ( set -xe ; \
	        $(RUN_PREFIX) \
		$(RUN) \
		$(RUN_FLAGS) \
		$$t \
		$(RUN_ARGS) \
	    ) || exit 1 ; \
	  fi \
	done

Makefile: Makefile.in ../Makefile.in
	cat Makefile.in ../Makefile.in > Makefile~
	mv Makefile~ Makefile


clean:
	rm -f $(ALL)
	rm -f *.o *.bo *.lo *.be
	rm -f *.a *.ba *.la *.le
	rm -f *, *~
	rm -f *.core

tidy:
	rm -f *.core
	rm -f *, *~
