##
## legOS - the independent LEGO Mindstorms OS
## Makefile - allows you to keep the upper hand
## (c) 1998 by Markus L. Noga <markus@noga.de>
##
PACKAGE = legOS



VERSION = $(shell cat VERSION)

export LEGOS_ROOT=$(shell cd . && pwd)/

SUBDIRS=util lib boot demo


.PHONY: all depend clean realclean html tag c++

all:
	for i in $(SUBDIRS) ; do $(MAKE) $(MFLAGS) -C $$i || exit 2 ; done

depend:
	for i in $(SUBDIRS) ; do $(MAKE) $(MFLAGS) NODEPS=yes -C $$i depend || exit 2 ; done

clean:
	for i in $(SUBDIRS) ; do $(MAKE) $(MFLAGS) NODEPS=yes -C $$i clean ; done
	rm -rf *.o *.map *.coff *.srec *.dis* *~ *.bak *.tgz *.s tags

c++:
	$(MAKE) -C demo c++

realclean:
	for i in $(SUBDIRS) ; do $(MAKE) $(MFLAGS) NODEPS=yes -C $$i realclean ; done
	rm -rf *.o *.map *.coff *.srec *.dis* *~ *.bak *.tgz *.s tags
	rm -f doc/html/*.html doc/html/*.gif doc/html/*.css doc/html/*.js doc/html/*.dot
	rm -rf doc/html-c++ doc/html-c doc/rtf-c doc/rtf-c++ doc/rtf

# doc/html-c subdirectory
html-c:
	doxygen Doxyfile-c

# doc/html-c++ subdirectory
html-c++:
	doxygen Doxyfile-c++

# doc/html subdirectory
html-full:
	doxygen Doxyfile

html: html-full html-c html-c++

# tags
tag:
	ctags --format=1 kernel/*.c include/*.h include/*/*.h

# install
#CP=/cs/bin/cscp
CP=/bin/cp

#BASEDIR=/course/cs148
UTILS=dll lnp_listen lnp_reliable_listen makelx changeBrickAddress getlog firmdl3
INCDIR=$(BASEDIR)/include

#  Debian GNU/Linux
ifneq (,$(findstring $(OSTYPE),linux-gnu Linux))
BASEDIR=/course/cs148
LIBDIR=$(BASEDIR)/lib
BINDIR=$(BASEDIR)/bin
endif

# Windows
ifneq (,$(findstring $(OSTYPE),cygwin32 cygwin CYGWIN_NT-4.0 CYGWIN_NT-5.0 CYGWIN_NT-5>.1 WindowsNT Windows_NT))
CP=/usr/bin/cp
BASEDIR=/cygdrive/l
BINDIR=$(BASEDIR)/winbin
LIBDIR=$(BASEDIR)/winlib
endif



install:
	if [ ! -d $(INCDIR) ] ; then mkdir $(INCDIR) ; fi
	if [ ! -d $(BINDIR) ] ; then mkdir $(BINDIR) ; fi
	if [ ! -d $(LIBDIR) ] ; then mkdir $(LIBDIR) ; fi

#	if [ ! -d $(LIBDIR)/boot ] ; then mkdir $(LIBDIR)/boot ; fi
#	if [ ! -d $(BINDIR)/util ] ; then mkdir $(BINDIR)/util ; fi
	if [ ! -d $(INCDIR)/lnp ] ; then mkdir $(INCDIR)/lnp ; fi
	if [ ! -d $(INCDIR)/rom ] ; then mkdir $(INCDIR)/rom ; fi
	if [ ! -d $(INCDIR)/sys ] ; then mkdir $(INCDIR)/sys ; fi

	if [ ! -d $(INCDIR)/lnp/sys ] ; then mkdir $(INCDIR)/lnp/sys ; fi
	if [ ! -d $(INCDIR)/host ] ; then mkdir $(INCDIR)/host ; fi
#	if [ ! -d $(INCDIR)/lnp/host/sys ] ; then mkdir $(INCDIR)/lnp/host/sys ; fi

	$(CP) lib/*.a $(LIBDIR)

	#$(CP) boot/legOS.lds boot/legOS.srec $(LIBDIR)
	$(CP) boot/legOS.lds $(LIBDIR)/brickOS.lds
	$(CP) boot/legOS.srec $(LIBDIR)/brickOS.srec

	$(CP) $(UTILS:%=util/%) $(BINDIR)
	$(CP) include/*.h $(INCDIR)
#$(CP) include/c++/*.h $(INCDIR)/c++
	$(CP) include/lnp/*.h $(INCDIR)/lnp
	$(CP) include/rom/*.h $(INCDIR)/rom
	$(CP) include/sys/*.h $(INCDIR)/sys
	$(CP) include/lnp/sys/*.h $(INCDIR)/lnp/sys
#	$(CP) include/lnp/host/*.h $(INCDIR)/lnp/host
#	$(CP) include/lnp/host/sys/*.h $(INCDIR)/lnp/host/sys

	$(CP) util/lnp_tools/*.h $(INCDIR)/host
