#
# The dependancies of header files do not exist.
# If classes in header files are modified make clean; make
# is the best way to rebuild eShell
#

.EXPORT_ALL_VARIABLES:
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
HPATH = $(TOPDIR)/include
OPATH = $(TOPDIR)/objdir
CPP = g++
CC = gcc

#CPP = eg++
#CC = egcs

# This activates electric fence. vlog allocates lots of small structs
# and memory usage went up to 80MB once.
#DEBUGS = -lefence -DEFENCE
DEBUGS =

CFLAGS = -Wall -c -g -I$(HPATH) -I- -O2
LCFLAGS = -Wall -g -I$(HPATH) -L/usr/X11R6/lib -lX11 -lXmu -O2 $(DEBUGS)

all: sub $(OPATH)/iServ.o $(OPATH)/lnshell.o $(OPATH)/library.o $(OPATH)/priv.o
	$(CPP) main.C objdir/*.o -o $(OPATH)/eShell $(LCFLAGS)
	@echo

$(OPATH)/iServ.o: iServ.C
	$(CPP) $(CFLAGS) iServ.C
	@mv iServ.o $(OPATH)

$(OPATH)/lnshell.o: lnshell.C
	$(CPP) $(CFLAGS) lnshell.C
	@mv lnshell.o $(OPATH)

$(OPATH)/library.o: library.C
	$(CPP) $(CFLAGS) library.C
	@mv library.o $(OPATH)

$(OPATH)/priv.o: priv.C
	$(CPP) $(CFLAGS) priv.C
	@mv priv.o $(OPATH)

sub:
	@echo
	@cd util && make fromup
	@echo
	@cd epil && make fromup
	@echo
	@cd UI && make fromup
	@echo

wc:
	@find . -name '*.[Cch]' | xargs wc | sort -n

codeds:
	@find . -name '*.C' | xargs grep ' void coded_'

find:
	@find . -name '*.C'

clean:
	rm -f $(OPATH)/*.o

distclean:
	rm -f $(OPATH)/*.o $(OPATH)/eShell include/arch.h
