MAKECMD=gmake

ifndef "CFG"
CFG=release
endif

# global
ROOT=../..
BIN=$(ROOT)/bin

PLATFORMDIR=$(BIN)/$(OS)/$(PM)
APPOUTDIR=$(PLATFORMDIR)/demo
OUTDIR=$(APPOUTDIR)/$(CFG)

# output filename
LIBFILE=libarclib64.a
OUTFILE=$(OUTDIR)/demo64
GCCMOPT = -m64


ifeq "$(PM)" "i386"
LIBFILE=libarclib32.a
OUTFILE=$(OUTDIR)/demo32
GCCMOPT = -m32
endif


PUBLIC_INC=$(ROOT)/include
INCLUDE=-I"$(PUBLIC_INC)"

ifeq "$(CFG)" "release"
CFG_INC=
CFG_LIB=$(PLATFORMDIR)/release/$(LIBFILE)
CFG_OBJ=
COMMON_OBJ=$(OUTDIR)/demo.o $(OUTDIR)/demo_hba.o
OBJ=$(COMMON_OBJ) $(CFG_OBJ)

COMPILE=g++ $(GCCMOPT) -c  -D_REENTRANT $(INCLUDE) -o "$(OUTDIR)/$(*F).o" $(CFG_INC) "$<"
LINK=g++ $(GCCMOPT) -o "$(OUTFILE)" $(OBJ) $(CFG_LIB) -lstdc++ -lpthread -lsocket -lnsl

# Pattern rules
$(OUTDIR)/%.o : $(ROOT)/apps/demo/%.cpp
	$(COMPILE)

# Build rules
all: $(OUTFILE)

$(OUTFILE): $(OUTDIR)  $(OBJ)
	$(LINK)

$(OUTDIR):
	mkdir -p "$(OUTDIR)"

# Rebuild this project
rebuild: cleanall all

# Clean this project
clean:
	rm -f $(OUTFILE)
	rm -f $(OBJ)

# Clean this project and all dependencies
cleanall: clean
endif
