CC=/opt/rtems-4.6/bin/sparc-rtems-gcc $(CFLAGS)
CC_NOCFLAGS=/opt/rtems-4.6/bin/sparc-rtems-gcc
LD=/opt/rtems-4.6/bin/sparc-rtems-ld
PROG = rtems-ttcp rtems-hello rtems-cdtest rtems-shell \
	rtems-irq rtems-tasks rtems-synctrap rtems-http \
	rtems-ttcpw

LEON3_PROGS=rtems-brm_bm rtems-brm_rt rtems-brm_bc \
            rtems-occan rtems-occan_tx rtems-occan_rx \
            rtems-spwtest_2boards_rx rtems-spwtest_2boards_tx \
            rtems-spwtest_loopback

CCOPT = -O2
all: leon3

build: $(PROG)

build_leon3: $(LEON3_PROGS)

leon2:
	make CFLAGS="-msoft-float -qleon2" build

leon2fp:
	make CFLAGS="-qleon2" build

leon2fpv8:
	make CFLAGS="-qleon2 -mv8" build

leon2v8:
	make CFLAGS="-qleon2 -mv8 -msoft-float" build

leon3:
	make CFLAGS="-msoft-float -g" build build_leon3

leon3fp:
	make CFLAGS="" build  build_leon3

leon3fpv8:
	make CFLAGS="-mv8" build build_leon3

leon3v8:
	make CFLAGS="-mv8 -msoft-float" build build_leon3

erc32:
	make CFLAGS=-tsc691 build

rtems-hello: rtems-hello.c
	$(CC) -g $(CCOPT) rtems-hello.c -o rtems-hello

rtems-tasks: rtems-tasks.c
	$(CC) -g $(CCOPT) rtems-tasks.c -o rtems-tasks

rtems-irq: rtems-irq.c
	$(CC) -g $(CCOPT) rtems-irq.c -o rtems-irq

rtems-synctrap: rtems-synctrap.c
	$(CC) -g rtems-synctrap.c -o rtems-synctrap

rtems-shell: rtems-shell.c
	$(CC) -g rtems-shell.c -o rtems-shell

rtems-cdtest: rtems-cdtest.cc
	$(CC) -g $(CCOPT) rtems-cdtest.cc -o rtems-cdtest

rtems-http: rtems-http.c networkconfig.h rootfs/etc/hosts rootfs/etc/host.conf \
	rootfs/index.html
	cd rootfs ; tar cf ../tarfile web etc index.html
	$(CC) -g -c $(CCOPT) rtems-http.c
	$(LD)  -r -o temp.o  rtems-http.o -b binary tarfile
	$(CC) -g $(CCOPT) temp.o -o rtems-http

rtems-ttcp: rtems-ttcp.c
	$(CC) -g $(CCOPT) -DREAD_TEST_ONLY rtems-ttcp.c -o rtems-ttcp

rtems-io: rtems-io.c
	$(CC) -g $(CCOPT) rtems-io.c -o rtems-io

rtems-ttcpw: rtems-ttcp.c
	$(CC) -g $(CCOPT) -DWRITE_TEST_ONLY rtems-ttcp.c -o rtems-ttcpw

rtems-pd: rtems-pd.c
	$(CC) -g $(CCOPT) -DREAD_TEST_ONLY rtems-pd.c -o rtems-pd

# only LEON3
rtems-occan: rtems-occan.c occan_lib.h occan_lib.c
	$(CC) -g $(CCOPT) -DTASK_TX -DTASK_RX rtems-occan.c occan_lib.c -o rtems-occan

rtems-occan_tx: rtems-occan.c occan_lib.h occan_lib.c
	$(CC) -g $(CCOPT) -DMULTI_BOARD -DTASK_TX rtems-occan.c occan_lib.c -o rtems-occan_tx
	
rtems-occan_rx: rtems-occan.c occan_lib.h occan_lib.c
	$(CC) -g $(CCOPT) -DMULTI_BOARD -DTASK_RX rtems-occan.c occan_lib.c -o rtems-occan_rx

rtems-spwtest_2boards_rx: rtems-spwtest-2boards.c
	$(CC) -g $(CCOPT) -DTASK_RX rtems-spwtest-2boards.c -o rtems-spwtest_2boards_rx
	
rtems-spwtest_2boards_tx: rtems-spwtest-2boards.c
	$(CC) -g $(CCOPT) -DTASK_TX rtems-spwtest-2boards.c -o rtems-spwtest_2boards_tx

rtems-spwtest_loopback: rtems-spwtest-2boards.c
	$(CC) -g $(CCOPT) -DTASK_TX -DTASK_RX rtems-spwtest-2boards.c -o rtems-spwtest_loopback

rtems-brm_bc: rtems-brm.c brm_lib.o
	$(CC) -Wall -g $(CCOPT) -DBRM_BC_TEST rtems-brm.c brm_lib.o -o rtems-brm_bc

rtems-brm_rt: rtems-brm.c brm_lib.o
	$(CC) -Wall -g $(CCOPT) rtems-brm.c brm_lib.o -o rtems-brm_rt

rtems-brm_bm: rtems-brm.c brm_lib.o
	$(CC) -Wall -g $(CCOPT) -DBRM_BM_TEST rtems-brm.c brm_lib.o -o rtems-brm_bm

brm_lib.o: brm_lib.c brm_lib.h
	$(CC) -g -c brm_lib.c -o brm_lib.o
	
clean:
	rm -rf b_*.c $(PROG) $(LEON3_PROGS) *.out *.o tarfile *.srec *.exe *.ali *.o core > /dev/null
