TARGETDIR = .

-include $(TARGETDIR)/defines.mk


OPTIMIZATION = -O2

CXXFLAGS = $(OPTIMIZATION) -Wall -Woverloaded-virtual -Wsynth -Winline \
		-ggdb -I..  \
		$(CONDDEFINES) $(DMALLOC)
LDFLAGS = -Ur 

LIBSOURCES = \
	lterm.cpp lstring.cpp lexcept.cpp lsymbol.cpp lthread.cpp\
	lform.cpp lsym_std.cpp \
	lfun_std.cpp lfun_io.cpp lfun_str.cpp lfun_hsh.cpp lfun_rdr.cpp

LIBINFOHEADERS = lsym_std.hpp lfun_std.hpp lfun_str.hpp \
	lfun_rdr.hpp lfun_io.hpp lfun_hsh.hpp

OBJFILES = $(patsubst %,$(TARGETDIR)/%,$(LIBSOURCES:.cpp=.o))

DIRSTOCLEAN = . 
 
none:
	@echo No default rule

$(TARGETDIR)/%.o:	%.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGETDIR)/lisp_all.o:		$(OBJFILES)
	$(LD) $(OBJFILES) -r -o $@

all:	$(TARGETDIR)/lisp_all.o
	:

lib.lsp:	$(LIBINFOHEADERS) 
	gcc -I.. -x c++ $(LIBINFOHEADERS) -E -DLISP2CPP_TRANSLATOR_INVOKED \
                    | grep -v "^#" | grep -v "^ *$$" > lib.lsp

$(TARGETDIR)/l_deps.mk: $(LIBSOURCES) Makefile
	$(CXX) -MM -I.. $(LIBSOURCES) \
	| sed '/^[^ ]/s/^/$(subst /,\/,$(TARGETDIR))\//g' > $@

clean:	
	for D in $(DIRSTOCLEAN) ; do \
	  (cd $$D && rm -f core *.o a.out lisplib.a test buf gmon.out l_deps.mk lib.lsp)\
	done

ifneq (clean, $(MAKECMDGOALS))
-include $(TARGETDIR)/l_deps.mk
endif
