LIBDIR = ../lib
BINDIR = ../bin

#
# The full path of output lib file (e.g. ../lib/libapp.a).
#
LIB = $($(APP)_LIB)

#
# The full path of output executable file (e.g. ../bin/app.exe).
#
EXE = $($(APP)_EXE)

#
# Source directory
#
SRCDIR = $($(APP)_SRCDIR)

#
# SRCEXT is .c
# SRCS is file.c
# FULL_SRCS is ../src/app/file.c
#
SRCEXT = $($(APP)_SRCEXT)
SRCS = $($(APP)_SRCS)
FULL_SRCS = $(foreach file, $(SRCS), $(SRCDIR)/$(file))


#
# Output directory for object files (i.e. output/target)
#
OBJDIR = ./output/$(app)-$(TARGET)

#
# OBJS1 is ./output/target/file.c
# OBJS is ./output/target/file.o
#
OBJS1 = $(foreach file, $(SRCS), $(OBJDIR)/$(file))
OBJS = $(OBJS1:%$(SRCEXT)=%$(OBJEXT))
OBJDIRS := $(sort $(foreach file, $(SRCS), $(dir $(OBJDIR)/$(file))))


#
# When generating dependency (gcc -MM), ideally we use only either
# CFLAGS or CXXFLAGS (not both). But I just couldn't make if/ifeq to work.
#
DEPFLAGS = $($(APP)_CXXFLAGS) $($(APP)_CFLAGS)

print_common:
	@echo "###"
	@echo "### DUMPING MAKE VARIABLES (I WON'T DO ANYTHING ELSE):"
	@echo "###"
	@echo APP=$(APP)
	@echo SRCEXT=$(SRCEXT)
	@echo OBJDIR=$(OBJDIR)
	@echo OBJS=$(OBJS)
	@echo SRCDIR=$(SRCDIR)
	@echo FULL_SRCS=$(FULL_SRCS)
	@echo $(APP)_CFLAGS=$($(APP)_CFLAGS)
	@echo $(APP)_CXXFLAGS=$($(APP)_CXXFLAGS)
	@echo $(APP)_LDFLAGS=$($(APP)_LDFLAGS)
	@echo DEPFLAGS=$(DEPFLAGS)

print_bin: print_common
	@echo EXE=$(EXE)
	@echo BINDIR=$(BINDIR)

print_lib: print_common
	@echo LIB=$(LIB)
	@echo LIBDIR=$(LIBDIR)

$(LIB): $(LIBDIR) $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
	$(AR) $(LIB) $(OBJS)
	$(RANLIB) $(LIB)

$(EXE): $(BINDIR) $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
	$(LD) $(LDOUT) $(EXE) $(OBJS) $($(APP)_LDFLAGS)

$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.c
	$(CC) $($(APP)_CFLAGS) $< $(CCOUT) $@

$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cpp
	$(CC) $($(APP)_CXXFLAGS) $< $(CCOUT) $@

#$(OBJDIR):
#	$(MKDIR) $(OBJDIR)
$(OBJDIRS):
	$(MKDIR) $@

$(LIBDIR):
	$(MKDIR) $(LIBDIR)

$(BINDIR):
	$(MKDIR) $(BINDIR)

clean:
	$(RM) -r $(OBJDIR)/*
	$(RMDIR) $(OBJDIR)

realclean: clean
	$(RM) $(LIB) $(EXE)
	$(RM) .$(app).depend

depend:
	$(RM) .$(app).depend
	for F in $(FULL_SRCS); do \
	   echo -n $(OBJDIR)/ >> .$(app).depend; \
	   if gcc -MM $(DEPFLAGS) $$F >> .$(app).depend; then \
		true; \
	   else \
		echo 'err:' >> .$(app).depend; \
		exit 1; \
	   fi; \
	done

dep: depend

-include .$(app).depend

