# CC = /usr/local/bin/g++
CC = /usr/local/bin/gcc
# CC = /usr/local/bin/c++
CFLAGS = -g -Wall 
LIBS = -lstdc++ -lm
LDFLAGS = 
MV = /bin/mv
TAR = /usr/local/bin/tar
MKDIR = /bin/mkdir
STLHOME = /usr/local/src/stl/STLport-4.0b5

TOP        	:= ..
BIN 	   	:= $(TOP)/bin
INCLUDE    	:= -I$(STLHOME)/stlport
INCLUDE    	+= -I../include
LIB	   	:= -L$(STLHOME)/lib -lstlport_gcc 
LIB             += -lX11 -L/usr/i386-glibc20-linux/lib
DEFINES         := -DUSE_NAMESPACES -DUSE_STLPORT
# DEBUG_MESGS     += -DALLOCATOR_DEBUG
# DEBUG_MESGS     := -DSYM_TABLE_LOG_MESG -DTIMERS_CLOCKS_LOG_MESG -DTIMERS_CLOCKS_LOG_MESG
# DEBUG_MESGS     += -DVEHICLE_LOG_MESG -DSHAPES_LOG_MESG -DXFIG_LOG_MESG 

TMPDIR     	:= $(TOP)/src

BIN 	 = ../bin
RM	 = rm -f 
MV	 = mv -f

source = main.cc bit_vector.cc shared_memory.cc arena.cc \
	 allocator.cc
objects = $(source:%.cc=%.o)
dependencies = $(source:%.cc=%.d)

all: allocator

allocator: $(dependencies) $(objects)
	$(CC) $(LDFLAGS) -o $@ $(objects) $(INCLUDE) $(LIB) $(LIBS)
	$(MV) $@ $(BIN)/

depend: $(dependencies)

modes:
	-chmod -f 600 *.cc *.o *.d *~ TAGS *.out Makefile $(INCLUDE)/*
	-chmod -f 700 RCS
	-chmod -f 700 $(BIN)
	-chmod -f 700 $(BIN)/*

%.o: %.cc
	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(DEFINES) $(INCLUDE) $< -o $@ $(DEBUG_MESGS)


%.d: %.cc
	$(SHELL) -ec '$(CC) -M $(CPPFLAGS) $(DEFINES) $(INCLUDE) $< \
		| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
		[ -s $@ ] || rm -f $@'

tags:
	$(RM) $@
	find ../ -follow \(  -name "*.[chCH]" -o -name "*.cc" \
		-o -name "*.hh" \) -print | etags - -C -o TAGS

clean:
	$(RM) *.o
	$(RM) TAGS
	$(RM) *.d

backup:
	@echo "Disk contents before backup:"
	-$(TAR) tvMf /dev/fd0 
	@echo "Backup with compression: tar cvzf /dev/fd0 "
	-$(TAR) cvMf /dev/fd0 ./*.cc ./Makefile ./*.h 
	@echo "Disk space in use: /bin/df -k /dev/fd0"
	/bin/df -k /dev/fd0
	@echo "Disk contents after backup:"
	-$(TAR) tvMf /dev/fd0

include $(dependencies)
