VPATH=librtems/lib/drvmgr/:librtems/lib/ambapp/



CC=sparc-elf-gcc
AR=sparc-elf-ar
RANLIB=sparc-elf-ranlib
AS=sparc-elf-gcc -c
CFLAGS= -g -gstabs $(XFLAGS) -I librtems/include -I rtemscompat -I sparc/shared/include  \
	-D__leonbare__ -Werror

#DEF_RR
ASFLAGS=$(CFLAGS) 

PREFIX = /opt/sparc-elf
GCCDIR=$(PREFIX)/lib/gcc-lib/sparc-elf/3.2.3
LIBDIR=$(PREFIX)/sparc-elf/lib
INCDIR=$(PREFIX)/sparc-elf/include
DOCDIR=$(PREFIX)/doc
LIBOBJ=libdrivers.a

OBJS = gpio.o \
rtemscompat.o \
drvmgr_by_id.o \
drvmgr_by_name.o \
drvmgr.o \
drvmgr_drvinf.o \
drvmgr_for_each_dev.o \
drvmgr_for_each_list_dev.o \
drvmgr_func.o \
drvmgr_init.o \
drvmgr_list.o \
drvmgr_lock.o \
drvmgr_print.o \
drvmgr_res.o \
drvmgr_rw.o \
drvmgr_translate.o \
drvmgr_unregister.o \
\
  ambapp.o \
  ambapp_alloc.o \
  ambapp_depth.o \
  ambapp_freq.o \
  ambapp_names.o \
  ambapp_old.o \
  ambapp_parent.o \
  ambapp_show.o \
 \
drivers.o \
driver_ambapp_bus_grlib.o \
driver_ambapp_bus.o \
driver_uart.o \
\
kernel_io.o

all:
	make local
	make -C tests 

up-4.6.0:
	cd ../../; make -f Makefile.gcc-4.6.0-git newlib-compile newlib-install
	cd ../../; make -f Makefile.gcc-4.6.0-git freertos-compile

multi-all: $(LIBOBJ) 

libdrivers.a: $(OBJS)
	$(AR) cr libdrivers.a $(OBJS)
	$(RANLIB) libdrivers.a

local:
	make libdrivers.a
	make install

install: install-headers
	install $(LIBOBJ) $(LIBDIR)/$(DESTDIR)

install-headers:
	-rm -rf tmp
	mkdir -p tmp
	svn export librtems/include tmp/libdriver
	svn export rtemscompat/sys tmp/sys
	install -d tmp/libdriver $(INCDIR)/libdriver
	cp -r tmp/libdriver/* $(INCDIR)/libdriver
	mkdir -p $(INCDIR)/libdriver/rtems
	install rtemscompat/rtems.h $(INCDIR)/libdriver
	install rtemscompat/rtemscompat.h $(INCDIR)/libdriver
	install rtemscompat/rtems/confdefs.h $(INCDIR)/libdriver/rtems/
	install libdriver.h $(INCDIR)/libdriver
	mkdir -p $(INCDIR)/libdriver/sys
	cp -r tmp/sys/* $(INCDIR)/libdriver/sys
	cp ../../git-newlib-1.19.0/libgloss/sparc_leon/asm-leon/leonbare_kernel.h $(INCDIR)/asm-leon/leonbare_kernel.h


clean:
	-rm -rf *.o *.a

distclean: clean
	-rm -f src/offsets.h

install-src:
	cp -p * /opt/sparc-elf/src/libio

define filechk_gen-asm-offsets
	(set -e; \
	 echo "#ifndef __ASM_OFFSETS_H__"; \
	 echo "#define __ASM_OFFSETS_H__"; \
	 echo "/*"; \
	 echo " * DO NOT MODIFY."; \
	 echo " *"; \
	 echo " * This file was generated by offsets.c"; \
	 echo " *"; \
	 echo " */"; \
	 echo ""; \
	 sed -ne "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"; \
	 echo ""; \
	 echo "#endif" )
endef

define filechk
	@set -e;				\
	echo '  CHK     $@';			\
	mkdir -p $(dir $@);			\
	$(filechk_$(1)) < $< > $@.tmp;		\
	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
		rm -f $@.tmp;			\
	else					\
		echo '  UPD     $@';		\
		mv -f $@.tmp $@;		\
	fi
endef

multi-do:
	  compiler="$(CC)"; \
	  for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
	    dir=`echo $$i | sed -e 's/;.*$$//'`; \
	    if [ "$${dir}" = "." ]; then \
	      true; \
	    else \
	        flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
		$(MAKE) $(FLAGS_TO_PASS) \
				CFLAGS="$(CFLAGS) $${flags}" \
				FCFLAGS="$(FCFLAGS) $${flags}" \
				FFLAGS="$(FFLAGS) $${flags}" \
				ADAFLAGS="$(ADAFLAGS) $${flags}" \
				prefix="$(prefix)" \
				PREFIX="$(PREFIX)" \
				exec_prefix="$(exec_prefix)" \
				GCJFLAGS="$(GCJFLAGS) $${flags}" \
				CXXFLAGS="$(CXXFLAGS) $${flags}" \
				LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
				LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
				LDFLAGS="$(LDFLAGS) $${flags}" \
				MULTIFLAGS="$${flags}" \
				DESTDIR="$${dir}" \
				INSTALL="$(INSTALL)" \
				INSTALL_DATA="$(INSTALL_DATA)" \
				INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \
				INSTALL_SCRIPT="$(INSTALL_SCRIPT)" \
				$(DO);  \
	    fi; \
	  done; \

