• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
20PREPROCESSOR_SOURCE_DIR := $(PWD)/preprocessor
21PREPROCESSOR_SOURCE := $(wildcard $(PREPROCESSOR_SOURCE_DIR)/*.cpp)
22PREPROCESSOR_OBJS_DIR := $(BUILD_DIR)/preprocessor
23PREPROCESSOR_OBJS := $(addprefix $(PREPROCESSOR_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(PREPROCESSOR_SOURCE))))
24
25LEXER_SOURCE_DIR := $(PWD)/lexer
26LEXER_SOURCE := $(wildcard $(LEXER_SOURCE_DIR)/*.cpp)
27LEXER_OBJS_DIR := $(BUILD_DIR)/lexer
28LEXER_OBJS := $(addprefix $(LEXER_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(LEXER_SOURCE))))
29
30AST_SOURCE_DIR := $(PWD)/ast
31AST_SOURCE := $(wildcard $(AST_SOURCE_DIR)/*.cpp)
32AST_OBJS_DIR := $(BUILD_DIR)/ast
33AST_OBJS := $(addprefix $(AST_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(AST_SOURCE))))
34
35UTIL_SOURCE_DIR := $(PWD)/util
36UTIL_SOURCE := $(wildcard $(UTIL_SOURCE_DIR)/*.cpp)
37UTIL_OBJS_DIR := $(BUILD_DIR)/util
38UTIL_OBJS := $(addprefix $(UTIL_OBJS_DIR)/, $(patsubst %.cpp, %.o, $(notdir $(UTIL_SOURCE))))
39
40BOUNDS_CHECK_SOURCE_DIR := $(abspath ../../../../../third_party/bounds_checking_function/src)
41BOUNDS_CHECK_SOURCE := $(wildcard $(BOUNDS_CHECK_SOURCE_DIR)/*.c)
42BOUNDS_CHECK_OBJS_DIR := $(BUILD_DIR)/bounds_checking_function
43BOUNDS_CHECK_OBJS := $(addprefix $(BOUNDS_CHECK_OBJS_DIR)/, $(patsubst %.c, %.o, $(notdir $(BOUNDS_CHECK_SOURCE))))
44
45MAIN_SOURCE := $(wildcard *.cpp)
46MAIN_OBJS := $(addprefix $(BUILD_DIR)/, $(patsubst %.cpp, %.o, $(MAIN_SOURCE)))
47
48all:$(TARGET)
49
50$(TARGET) : $(BOUNDS_CHECK_OBJS) $(UTIL_OBJS) $(AST_OBJS) $(LEXER_OBJS) $(PREPROCESSOR_OBJS) $(PARSER_OBJS) $(CODEGEN_OBJS) $(MAIN_OBJS)
51	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) $^ -o $@
52	$(Q) echo $(TARGET):build successful.
53
54$(BUILD_DIR)/%.o : %.cpp
55	$(Q) mkdir -p $(BUILD_DIR)
56	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
57
58$(CODEGEN_OBJ_DIR)/%.o : $(CODEGEN_SOURCE_DIR)/%.cpp
59	$(Q) mkdir -p $(CODEGEN_OBJ_DIR)
60	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
61
62$(PARSER_OBJS_DIR)/%.o : $(PARSER_SOURCE_DIR)/%.cpp
63	$(Q) mkdir -p $(PARSER_OBJS_DIR)
64	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
65
66$(PREPROCESSOR_OBJS_DIR)/%.o : $(PREPROCESSOR_SOURCE_DIR)/%.cpp
67	$(Q) mkdir -p $(PREPROCESSOR_OBJS_DIR)
68	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
69
70$(LEXER_OBJS_DIR)/%.o : $(LEXER_SOURCE_DIR)/%.cpp
71	$(Q) mkdir -p $(LEXER_OBJS_DIR)
72	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
73
74$(AST_OBJS_DIR)/%.o : $(AST_SOURCE_DIR)/%.cpp
75	$(Q) mkdir -p $(AST_OBJS_DIR)
76	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
77
78$(UTIL_OBJS_DIR)/%.o : $(UTIL_SOURCE_DIR)/%.cpp
79	$(Q) mkdir -p $(UTIL_OBJS_DIR)
80	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
81
82$(BOUNDS_CHECK_OBJS_DIR)/%.o : $(BOUNDS_CHECK_SOURCE_DIR)/%.c
83	$(Q) mkdir -p $(BOUNDS_CHECK_OBJS_DIR)
84	$(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@
85
86clean:
87	$(Q) rm -rf $(TARGET) $(BUILD_DIR)
88
89.PHONY:all clean