export BUILD_DIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))build export CXX=g++ export CXXFLAGS= _OBJS-top=ast.o main.o DEBUG=a ifdef DEBUG CXXFLAGS+=-g endif OBJS-top=$(patsubst %,$(BUILD_DIR)/%,$(_OBJS-top)) .PHONY: clean default all default: docconv $(BUILD_DIR) all: default docconv: $(BUILD_DIR)/parsers $(BUILD_DIR)/gens $(OBJS-top) $(CXX) $(CXXFLAGS) -o $@ $(BUILD_DIR)/*.o $(BUILD_DIR)/parsers/*.o $(BUILD_DIR)/gens/*.o $(BUILD_DIR)/%.o: %.cpp $(CXX) -c $(CXXFLAGS) -o $@ $< $(BUILD_DIR)/parsers: $(BUILD_DIR) $(MAKE) -C parsers $(BUILD_DIR)/gens: $(BUILD_DIR) $(MAKE) -C gens $(BUILD_DIR): mkdir -p $@ clean: rm -rf $(BUILD_DIR)