include Makefile.include

BINDIR=../bin
EXE=$(BINDIR)/dg

ifdef WIN32
EXE:=../dg.exe
endif


LIB_OBJS=\
client/libclient.a \
server/libserver.a \
widgets/libwidget.a \
util/libutil.a

EXE_OBJS=\
main.$(OBJ_SUFFIX) \
DG.$(OBJ_SUFFIX) \
Graphics.$(OBJ_SUFFIX) \
gl_stubs.$(OBJ_SUFFIX) \
GraphicsState.$(OBJ_SUFFIX)

RM=rm -f

SUBDIRS=util widgets client server

LEAK_OBJ=#/home0/jwatson/LeakTracer/LeakTracer.o

default: $(LIB_OBJS) $(EXE)

all: $(LIB_OBJS) $(EXE)

etags: FORCE
	etags -C *.cc *.h */*.cc */*.h

depend: FORCE
	makedepend $(DEP_INCLUDES) -I/usr/local/include -f$(DEPFILE) *.cc -o.$(OBJ_SUFFIX) && \
	$(MAKE) $(SUBDIRS) TARGET=$@

include $(DEPFILE)

$(SUBDIRS): FORCE
	cd $@ && $(MAKE) $(TARGET)

static: FORCE
	$(MAKE) $(EXE) LDFLAGS="$(STATIC_LDFLAGS)" && strip $(EXE)

$(EXE): $(EXE_OBJS) $(LIB_OBJS) $(SUBDIRS)
	$(CXX) $(CXXFLAGS) $(EXE_OBJS) $(LIB_OBJS) -o $@ $(LDFLAGS) $(LEAK_OBJ)

widgets/libwidget.a: widgets
util/libutil.a: util
client/libclient.a: client
server/libserver.a: server

clean: FORCE
	$(RM) *.o $(EXE) core *~ $(LIB_OBJS)
	$(MAKE) $(SUBDIRS) TARGET=$@

fresh: FORCE
	$(RM) $(LIB_OBJS)

count: FORCE
	wc */*.{cc,h} *.{cc,h} | sort -n

test: FORCE
	$(CXX) $(CXXFLAGS) test.cc -o $@ $(LDFLAGS)

FORCE:
