CXXFLAGS += -Wall -I.
CXXLIBS ?= $(CCLIBS)

.SILENT :
.EXPORT_ALL_VARIABLES :

.PHONY : all
.PHONY : subdirectories

OBJ_LIST= Interface/*.o OpenMath/OpenMath_object/*.o QMath_parser/*.o QMath_parser/Tokenizer/*.o QMath_parser/Tokenizer/Unicode_regexp/*.o QMath_parser/Tokenizer/Unicode_regexp/Unicode_regexp_node/*.o Unicode_data/*.o Unicode_translator/*.o XML_infoset/XML_ent_start_marker_info_item/*.o XML_infoset/XML_unexp_ent_ref_info_item/*.o XML_infoset/XML_info_item/*.o XML_infoset/XML_doc_info_item/*.o XML_infoset/XML_string/*.o XML_infoset/XML_doc_type_decl_info_item/*.o XML_infoset/XML_comment_info_item/*.o XML_infoset/XML_character_info_item/*.o XML_infoset/XML_namespace_info_item/*.o XML_infoset/XML_external_ent_info_item/*.o XML_infoset/XML_elem_info_item/*.o XML_infoset/XML_internal_ent_info_item/*.o XML_infoset/XML_cdata_end_marker_info_item/*.o XML_infoset/XML_unparsed_ent_info_item/*.o XML_infoset/XML_attr_info_item/*.o XML_infoset/XML_notation_info_item/*.o XML_infoset/XML_cdata_start_marker_info_item/*.o XML_infoset/XML_ent_end_marker_info_item/*.o XML_infoset/XML_proc_inst_info_item/*.o XML_parser/*.o

all: subdirectories
	SOURCE_FILES=''
	for f in *.c *.cc *.cxx *.cpp; do                  \
	  case "$$f" in                                          \
	    \*.*)                                                \
	      ;;                                                 \
	    *)                                                   \
	      SOURCE_FILES="$$SOURCE_FILES $$f"                  \
	      ;;                                                 \
	  esac                                                   \
	done                                                    ;\
	echo "Final compile and link:"                          ;\
	$(CXX) $(CXXFLAGS) $(CXXLIBS) -o QMath $(OBJ_LIST) $$SOURCE_FILES && echo "Done."

subdirectories:
	for d in *; do if [ -f "$$d/makefile" ]; then echo "make $$d"; $(MAKE) -C $$d; fi; done
