CC			:=	gcc
CXX			:=	g++
CFLAGS			:=	-pipe -Wall -W -g -DDEBUG -D_REENTRANT 
CXXFLAGS		:=	-pipe -Wall -W -g -frepo -DDEBUG -D_REENTRANT
INCPATH			:=	
LINK			:=	g++
LFLAGS			:=	-frepo
LIBS			:=	-lpthread

TAR			:=	tar -cf
GZIP			:=	gzip -9f
BZIP			:=	bzip2
RM			:=	rm -vf
TAG			:=	ctags

# FILE THAT STORES THE DEPENDENCIES AND IS INCLUDED IN THE MAKEFILE AUTOMATICALLY
DEPS			:= Makefile.dep
# FLAG HOW TO GENERATE THE DEPENDENCIES ( '-M' generates all dependencies '-MM' generates only dependencies of user created source
# files 
DEP_FLAG		:= -MM
HEADERS			:= $(wildcard *.h)
SOURCES 		:= $(wildcard *.cpp) $(wildcard *.cc)
OBJECTS 		:= $(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(SOURCES)))

TARGET			:= trimWhite

####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.C.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

####### Build rules

.PHONY : all depend objects clean proper world


all : $(TARGET)

$(TARGET): $(OBJECTS) 
	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)

depend :
	$(CXX) $(DEP_FLAG) $(SOURCES) > $(DEPS)

objects : $(OBJECTS)

clean :
	$(RM) $(TARGET)
	$(RM) $(OBJECTS)
	$(RM) *.d
	$(RM) *~ core

proper: clean
	$(RM) *.a
	$(RM) *.bak
	$(RM) *.old
	$(RM) *.rpo
	$(RM) $(DEPS)
	$(RM) tags
	$(RM) *~

tags:
	$(TAG) *

world: proper tags depend all

-include $(DEPS)