### Configuration.

CC = $(if $(P_CC),$(P_CC),gcc)
AR = $(if $(P_AR),$(P_AR),ar)
RANLIB = $(if $(P_RANLIB),$(P_RANLIB),ar)

CFLAGS = $(if $(P_CFLAGS),$(P_CFLAGS),-Wall -Werror -g)

LDFLAGS = $(if $(P_LDFLAGS),$(P_LDFLAGS),) -L..

# FILENAMES ONLY!
LIBS = $(if $(P_LIBS),$(P_LIBS),) ../librev.a




### Internals

INCLUDES = $(if $(P_INCLUDES),$(P_INCLUDES)) -I.. -I../..

COMPILE = $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
CLINK = $(CC) $(LDFLAGS)

TEST_OBJS = 00_dataobj_basic.o 01_dataobj_text.o
TEST_BINS = $(TEST_OBJS:%.o=%)

OBJS = $(TEST_OBJS)
BINS = $(TEST_BINS)

DEP_FILES_1 = $(foreach obj,$(OBJS),.deps/$(obj))
DEP_FILES = $(DEP_FILES_1:%.o=%.P)




### Normal build rules

all:	$(BINS)

$(BINS): %: %.o $(LIBS)
	$(CLINK) -o $@ $< $(LIBS)


clean:
	rm -rf .deps core $(BINS) $(OBJS)




### Internal build rules

DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

%.o: %.c
	@echo '$(COMPILE) -c $<'; \
		$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-cp .deps/$(*F).pp .deps/$(*F).P; \
		tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.a:
	rm -f $@
	$(AR) cru $@ $^
	$(RANLIB) $@
