
OBJECTS = a.o b.o c.o
TARGETS = dummy_exe
OBJECT_DIR = ./


MAKE_OBJECT = \
	rm -f "$@";\
	cd "$(dir $@)";\
	echo "***building***: $@";\

## Test for eval function:
$(eval evaltest := 1)
ifeq ($(evaltest),1)
  ifneq ($(NOBATCH),1)
    BATCH_RULE := batch_comp
    MAKE_OBJECT = \
	if [ "$(dir $(patsubst $(WE_ROOT)%,%,$<))" = "$(dir $(patsubst $(OBJECT_DIR)%,%,$@))" ] ; then \
	$(eval targlist := ${targlist} $<) $(eval outlist := ${outlist} $@) exit;\
	else\
		rm -f "$@";\
		cd "$(dir $@)";\
		echo "***building***: $@";\
	fi;

  endif
else
    NOBATCH := 1
endif

# Perform compiler batching for all object files
# when BATCH_RULE is defined
all: $(OBJECTS) $(BATCH_RULE) $(TARGETS)


clean:
	rm -f *.o dummy_exe

dummy_exe: $(OBJECTS)
	@echo Building TARGET $@ with: $^
	@cat $^ > dummy_exe


batchbuild_objects = @echo ***building***: Batched ${targlist};\
		echo $(CXX) $(CXXFLAGS) $(CXXDEFINES) $(CXXINCLUDES) $(addprefix $(WE_ROOT),${targlist}); \
		touch $(patsubst %.c,%.o,${targlist})

batch_comp:
	$(if ${targlist},$(batchbuild_objects),)$(if ${targlist},$(updatecache ${outlist}),)


## Dependancies to c files
a.o: a.h
b.o: a.h b.h
c.o: a.h b.h c.h
## Dependancies to build objects
%.o:%.c
	@$(MAKE_OBJECT)\
	  echo $(CXX) $(CXXFLAGS) $(CXXDEFINES) $(CXXINCLUDES) $^ $(CXXOUTPUT_FLAG);\
          touch $@
