1# Copyright (c) 2021 Huawei Device Co., Ltd. 2# 3# HDF is dual licensed: you can use it either under the terms of 4# the GPL, or the BSD license, at your option. 5# See the LICENSE file in the root of this repository for complete details. 6 7BOUNDS_CHECK_DIR := $(abspath ../../../../third_party/bounds_checking_function) 8INCLUDES = -I$(PWD) -I$(BOUNDS_CHECK_DIR)/include 9 10CODEGEN_SOURCE_DIR := $(PWD)/codegen 11CODEGEN_SOURCE := $(wildcard $(CODEGEN_SOURCE_DIR)/*.cpp) 12CODEGEN_OBJ_DIR := $(BUILD_DIR)/codegen 13CODEGEN_OBJS := $(addprefix $(CODEGEN_OBJ_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SOURCE)))) 14 15PARSER_SOURCE_DIR := $(PWD)/parser 16PARSER_SOURCE := $(wildcard $(PARSER_SOURCE_DIR)/*.cpp) 17PARSER_OBJS_DIR := $(BUILD_DIR)/parser 18PARSER_OBJS := $(addprefix $(PARSER_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(PARSER_SOURCE)))) 19 20AST_SOURCE_DIR := $(PWD)/ast 21AST_SOURCE := $(wildcard $(AST_SOURCE_DIR)/*.cpp) 22AST_OBJS_DIR := $(BUILD_DIR)/ast 23AST_OBJS := $(addprefix $(AST_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(AST_SOURCE)))) 24 25UTIL_SOURCE_DIR := $(PWD)/util 26UTIL_SOURCE := $(wildcard $(UTIL_SOURCE_DIR)/*.cpp) 27UTIL_OBJS_DIR := $(BUILD_DIR)/util 28UTIL_OBJS := $(addprefix $(UTIL_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(UTIL_SOURCE)))) 29 30BOUNDS_CHECK_SOURCE_DIR := $(abspath ../../../../third_party/bounds_checking_function/src) 31BOUNDS_CHECK_SOURCE := $(wildcard $(BOUNDS_CHECK_SOURCE_DIR)/*.c) 32BOUNDS_CHECK_OBJS_DIR := $(BUILD_DIR)/bounds_checking_function 33BOUNDS_CHECK_OBJS := $(addprefix $(BOUNDS_CHECK_OBJS_DIR)/, $(patsubst %.c, %.o, $(notdir $(BOUNDS_CHECK_SOURCE)))) 34 35MAIN_SOURCE := $(wildcard *.cpp) 36MAIN_OBJS := $(addprefix $(BUILD_DIR)/, $(patsubst %.cpp, %.o, $(MAIN_SOURCE))) 37 38all:$(TARGET) 39$(TARGET) : $(BOUNDS_CHECK_OBJS) $(UTIL_OBJS) $(AST_OBJS) $(PARSER_OBJS) $(CODEGEN_OBJS) $(MAIN_OBJS) 40 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) $^ -o $@ 41 $(Q) echo $(TARGET):build successful. 42 43$(BUILD_DIR)/%.o : %.cpp 44 $(Q) mkdir -p $(BUILD_DIR) 45 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 46 47$(CODEGEN_OBJ_DIR)/%.o : $(CODEGEN_SOURCE_DIR)/%.cpp 48 $(Q) mkdir -p $(CODEGEN_OBJ_DIR) 49 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 50 51$(PARSER_OBJS_DIR)/%.o : $(PARSER_SOURCE_DIR)/%.cpp 52 $(Q) mkdir -p $(PARSER_OBJS_DIR) 53 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 54 55$(AST_OBJS_DIR)/%.o : $(AST_SOURCE_DIR)/%.cpp 56 $(Q) mkdir -p $(AST_OBJS_DIR) 57 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 58 59$(UTIL_OBJS_DIR)/%.o : $(UTIL_SOURCE_DIR)/%.cpp 60 $(Q) mkdir -p $(UTIL_OBJS_DIR) 61 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 62 63$(BOUNDS_CHECK_OBJS_DIR)/%.o : $(BOUNDS_CHECK_SOURCE_DIR)/%.c 64 $(Q) mkdir -p $(BOUNDS_CHECK_OBJS_DIR) 65 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 66 67clean: 68 $(Q) rm -rf $(TARGET) $(BUILD_DIR) 69 70.PHONY:all clean