# the below does not change from projec to project
OBJ_DIR=../obj
BIN_DIR=../bin
LIB_DIR=../lib
INC_DIR=../include
AREA_INCDIR=$(AreaRootDir)/include
AREA_LIBDIR=$(AreaRootDir)/lib
AREA_BINDIR=$(AreaRootDir)/bin
LIBS_DEPEND_ON=-lpthread
INCLUDES=-I. -I$(INC_DIR) -I$(AREA_INCDIR)
#CPP=g++
#LD=g++

.c.o:
	$(CC) $(INCLUDES) $(CFLAGS) -c $<
	mv $@ $(OBJ_DIR)

.cpp.o:
	$(CPP) $(INCLUDES) $(CPPFLAGS) -c $<
	mv $@ $(OBJ_DIR)


PROJECT=lbthread
DEBUG= -g
CPPFLAGS += ${DEBUG}

all: install

liblbthread.so: lbthread.o
		cd $(OBJ_DIR); $(LD) -shared -o $(LIB_DIR)/$@ -fPIC $? $(LIBS_DEPEND_ON)

testthread: testthread.o liblbthread.so
		cd $(OBJ_DIR) ; ${CPP} -o ${BIN_DIR}/$@ testthread.o -L$(LIB_DIR) -llbthread

lbthread.o: lbthread.hpp

headers: lbthread.hpp
	 if test ! -e $(INC_DIR)/$(PROJECT) ; then { mkdir $(INC_DIR)/$(PROJECT); } fi ; cp $? $(INC_DIR)/$(PROJECT)

install: liblbthread.so headers testthread
	 cp $(LIB_DIR)/liblbthread.so $(AREA_LIBDIR); cp $(BIN_DIR)/* $(AREA_BINDIR); cp -r $(INC_DIR)/$(PROJECT) $(AREA_INCDIR)


clean:
	\rm -f $(OBJ_DIR)/* $(BIN_DIR)/* $(LIB_DIR)/*; \rm -f $(AREA_LIBDIR)/liblbthread.so; \rm -rf $(AREA_INCDIR)/$(PROJECT)

