CC=g++
CCOPTS=-Wall
LINK=g++
LINKOPTS= -lm

TEMPLATE_PREPROCESSOR=../perlpp -qq

PROYECT_NAME=qmath
PROYECT_ROOT_DIR=..
# $(TMP) gets deleted when "make mrproper" terminates, so it should be
# a directory solely for this purpose.
TMP=/tmp/qmath_makefile

include evaluators.makefile.defs

OBJ_FILES=$(EVALUATORS_OBJ_FILES)
GENERATED_FILES=Evaluator_default.H                    \
                Evaluator_default.cc                   \
                Evaluator_default_atom_dictionary.icc  \
                Evaluator_mathml.H                     \
                Evaluator_mathml.cc                    \
                Evaluator_mathml_atom_dictionary.icc
INCLUDED_FILES=../QMATH_Evaluator.H ../QMATH_types.H   \
               Evaluator_default.H                     \
               Evaluator_default_atom_dictionary.icc   \
               Evaluator_mathml.H                      \
               Evaluator_mathml_atom_dictionary.icc
#SUBDIRECTORIES=mathml

all: $(TMP)
	if [ "$(GENERATED_FILES)" != "" ]; then make generated_files; fi
	if [ "$(OBJ_FILES)" != "" ];       then make obj_files;       fi
	#$(LINK) $(LINKOPTS) -o qmath $(OBJ_FILES)

obj_files: $(OBJ_FILES)

generated_files:
	for file in $(GENERATED_FILES); do if [ -f $$file ]; then chmod -f u+w $$file; fi; done
	make $(GENERATED_FILES);
	chmod -f u-w $(GENERATED_FILES)

$(TMP):
	mkdir -p $@

%.H: template.%.H
	$(TEMPLATE_PREPROCESSOR) -o $@ $<

%.cc: template.%.cc
	$(TEMPLATE_PREPROCESSOR) -o $@ $<

%.icc: template.%.icc
	$(TEMPLATE_PREPROCESSOR) -o $@ $<

$(TMP)/%.o: %.cc $(INCLUDED_FILES)
	$(CC) -c -o $@ $<

$(TMP)/%.o: %.c $(INCLUDED_FILES)
	$(CC) -c -o $@ $<

subdirectories:
	for directory in $(SUBDIRECTORIES); do bash -c "cd $$directory ; make; cd .."; done

clean:
	rm -f $(OBJ_FILES)
	rm -f $(GENERATED_FILES)

mrproper:
	make clean
	if [ "$(SUBDIRECTORIES)" != "" ]; then bash -c "for directory in $(SUBDIRECTORIES) ''; do cd \$$directory ; make mrproper ; cd ..; done"; fi
	rm -rf $(TMP)
	# Remove EMACS backup files.
	find . -iname '*~' -type f -exec rm '{}' ';'

snapshot:
	bash -c "pushd .; cd $(PROYECT_ROOT_DIR); make snapshot; popd;"
