1# Copyright (c) 2023-2024 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14BOUNDS_CHECK_DIR:=$(subst /,\, $(abspath ..\..\..\..\..\third_party\bounds_checking_function)) 15INCLUDES:=-I $(PWD) -I $(BOUNDS_CHECK_DIR)\include 16 17CODEGEN_HDI_SOURCE_DIR := $(PWD)\codegen\HDI 18CODEGEN_HDI_SOURCE := $(wildcard $(CODEGEN_HDI_SOURCE_DIR)/*.cpp) 19CODEGEN_HDI_OBJ_DIR := $(BUILD_DIR)\codegen\HDI 20CODEGEN_HDI_OBJS := $(addprefix $(CODEGEN_HDI_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_HDI_SOURCE)))) 21 22CODEGEN_HDITYPE_SOURCE_DIR := $(PWD)\codegen\HDI\type 23CODEGEN_HDITYPE_SOURCE := $(wildcard $(CODEGEN_HDITYPE_SOURCE_DIR)/*.cpp) 24CODEGEN_HDITYPE_OBJ_DIR := $(BUILD_DIR)\codegen\HDI\type 25CODEGEN_HDITYPE_OBJS := $(addprefix $(CODEGEN_HDITYPE_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_HDITYPE_SOURCE)))) 26 27CODEGEN_HDIC_SOURCE_DIR := $(PWD)\codegen\HDI\c 28CODEGEN_HDIC_SOURCE := $(wildcard $(CODEGEN_HDIC_SOURCE_DIR)/*.cpp) 29CODEGEN_HDIC_OBJ_DIR := $(BUILD_DIR)\codegen\HDI\c 30CODEGEN_HDIC_OBJS := $(addprefix $(CODEGEN_HDIC_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_HDIC_SOURCE)))) 31 32CODEGEN_HDICPP_SOURCE_DIR := $(PWD)\codegen\HDI\cpp 33CODEGEN_HDICPP_SOURCE := $(wildcard $(CODEGEN_HDICPP_SOURCE_DIR)/*.cpp) 34CODEGEN_HDICPP_OBJ_DIR := $(BUILD_DIR)\codegen\HDI\cpp 35CODEGEN_HDICPP_OBJS := $(addprefix $(CODEGEN_HDICPP_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_HDICPP_SOURCE)))) 36 37CODEGEN_HDIJAVA_SOURCE_DIR := $(PWD)\codegen\HDI\java 38CODEGEN_HDIJAVA_SOURCE := $(wildcard $(CODEGEN_HDIJAVA_SOURCE_DIR)/*.cpp) 39CODEGEN_HDIJAVA_OBJ_DIR := $(BUILD_DIR)\codegen\HDI\java 40CODEGEN_HDIJAVA_OBJS := $(addprefix $(CODEGEN_HDIJAVA_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_HDIJAVA_SOURCE)))) 41 42CODEGEN_SA_SOURCE_DIR := $(PWD)\codegen\SA 43CODEGEN_SA_SOURCE := $(wildcard $(CODEGEN_SA_SOURCE_DIR)/*.cpp) 44CODEGEN_SA_OBJ_DIR := $(BUILD_DIR)\codegen\SA 45CODEGEN_SA_OBJS := $(addprefix $(CODEGEN_SA_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SA_SOURCE)))) 46 47CODEGEN_SATYPE_SOURCE_DIR := $(PWD)\codegen\SA\type 48CODEGEN_SATYPE_SOURCE := $(wildcard $(CODEGEN_SATYPE_SOURCE_DIR)/*.cpp) 49CODEGEN_SATYPE_OBJ_DIR := $(BUILD_DIR)\codegen\SA\type 50CODEGEN_SATYPE_OBJS := $(addprefix $(CODEGEN_SATYPE_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SATYPE_SOURCE)))) 51 52CODEGEN_SACPP_SOURCE_DIR := $(PWD)\codegen\SA\cpp 53CODEGEN_SACPP_SOURCE := $(wildcard $(CODEGEN_SACPP_SOURCE_DIR)/*.cpp) 54CODEGEN_SACPP_OBJ_DIR := $(BUILD_DIR)\codegen\SA\cpp 55CODEGEN_SACPP_OBJS := $(addprefix $(CODEGEN_SACPP_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SACPP_SOURCE)))) 56 57CODEGEN_SATS_SOURCE_DIR := $(PWD)\codegen\SA\ts 58CODEGEN_SATS_SOURCE := $(wildcard $(CODEGEN_SATS_SOURCE_DIR)/*.cpp) 59CODEGEN_SATS_OBJ_DIR := $(BUILD_DIR)\codegen\SA\ts 60CODEGEN_SATS_OBJS := $(addprefix $(CODEGEN_SATS_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SATS_SOURCE)))) 61 62CODEGEN_SARUST_SOURCE_DIR := $(PWD)\codegen\SA\rust 63CODEGEN_SARUST_SOURCE := $(wildcard $(CODEGEN_SARUST_SOURCE_DIR)/*.cpp) 64CODEGEN_SARUST_OBJ_DIR := $(BUILD_DIR)\codegen\SA\rust 65CODEGEN_SARUST_OBJS := $(addprefix $(CODEGEN_SARUST_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SARUST_SOURCE)))) 66 67CODEGEN_SOURCE_DIR := $(PWD)\codegen 68CODEGEN_SOURCE := $(wildcard $(CODEGEN_SOURCE_DIR)/*.cpp) 69CODEGEN_OBJ_DIR := $(BUILD_DIR)\codegen 70CODEGEN_OBJS := $(addprefix $(CODEGEN_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(CODEGEN_SOURCE)))) 71 72METADATA_SOURCE_DIR := $(PWD)\metadata 73METADATA_SOURCE := $(wildcard $(METADATA_SOURCE_DIR)/*.cpp) 74METADATA_OBJ_DIR := $(BUILD_DIR)\metadata 75METADATA_OBJS := $(addprefix $(METADATA_OBJ_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(METADATA_SOURCE)))) 76 77PARSER_SOURCE_DIR := $(PWD)\parser 78PARSER_SOURCE := $(wildcard $(PARSER_SOURCE_DIR)/*.cpp) 79PARSER_OBJS_DIR := $(BUILD_DIR)\parser 80PARSER_OBJS := $(addprefix $(PARSER_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(PARSER_SOURCE)))) 81 82PREPROCESSOR_SOURCE_DIR := $(PWD)\preprocessor 83PREPROCESSOR_SOURCE := $(wildcard $(PREPROCESSOR_SOURCE_DIR)/*.cpp) 84PREPROCESSOR_OBJS_DIR := $(BUILD_DIR)\preprocessor 85PREPROCESSOR_OBJS := $(addprefix $(PREPROCESSOR_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(PREPROCESSOR_SOURCE)))) 86 87LEXER_SOURCE_DIR := $(PWD)\lexer 88LEXER_SOURCE := $(wildcard $(LEXER_SOURCE_DIR)/*.cpp) 89LEXER_OBJS_DIR := $(BUILD_DIR)\lexer 90LEXER_OBJS := $(addprefix $(LEXER_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(LEXER_SOURCE)))) 91 92AST_SOURCE_DIR := $(PWD)\ast 93AST_SOURCE := $(wildcard $(AST_SOURCE_DIR)/*.cpp) 94AST_OBJS_DIR := $(BUILD_DIR)\ast 95AST_OBJS := $(addprefix $(AST_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(AST_SOURCE)))) 96 97AST_BASE_SOURCE_DIR := $(PWD)\ast\base 98AST_BASE_SOURCE := $(wildcard $(AST_BASE_SOURCE_DIR)/*.cpp) 99AST_BASE_OBJS_DIR := $(BUILD_DIR)\ast\base 100AST_BASE_OBJS := $(addprefix $(AST_BASE_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(AST_BASE_SOURCE)))) 101 102HASH_SOURCE_DIR := $(PWD)\hash 103HASH_SOURCE := $(wildcard $(HASH_SOURCE_DIR)/*.cpp) 104HASH_OBJS_DIR := $(BUILD_DIR)\hash 105HASH_OBJS := $(addprefix $(HASH_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(HASH_SOURCE)))) 106 107UTIL_SOURCE_DIR := $(PWD)\util 108UTIL_SOURCE := $(wildcard $(UTIL_SOURCE_DIR)/*.cpp) 109UTIL_OBJS_DIR := $(BUILD_DIR)\util 110UTIL_OBJS := $(addprefix $(UTIL_OBJS_DIR)\, $(patsubst %.cpp, %.o, $(notdir $(UTIL_SOURCE)))) 111 112BOUNDS_CHECK_SOURCE_DIR := $(subst /,\, $(abspath ..\..\..\..\third_party\bounds_checking_function\src)) 113BOUNDS_CHECK_SOURCE := $(wildcard $(BOUNDS_CHECK_SOURCE_DIR)\*.c) 114BOUNDS_CHECK_OBJS_DIR := $(BUILD_DIR)\bounds_checking_function 115BOUNDS_CHECK_OBJS := $(addprefix $(BOUNDS_CHECK_OBJS_DIR)\, $(patsubst %.c, %.o, $(notdir $(BOUNDS_CHECK_SOURCE)))) 116 117MAIN_SOURCE := $(wildcard *.cpp) 118MAIN_OBJS := $(addprefix $(BUILD_DIR)\, $(patsubst %.cpp, %.o, $(MAIN_SOURCE))) 119 120CODEGEN_HDI_ALL_OBJS := $(CODEGEN_HDI_OBJS) $(CODEGEN_HDITYPE_OBJS) $(CODEGEN_HDIC_OBJS) $(CODEGEN_HDICPP_OBJS) $(CODEGEN_HDIJAVA_OBJS) 121CODEGEN_SA_ALL_OBJS := $(CODEGEN_SA_OBJS) $(CODEGEN_SATYPE_OBJS) $(CODEGEN_SACPP_OBJS) $(CODEGEN_SATS_OBJS) $(CODEGEN_SARUST_OBJS) 122CODEGEN_ALL_OBJS := $(CODEGEN_HDI_ALL_OBJS) $(CODEGEN_SA_ALL_OBJS) $(CODEGEN_OBJS) 123AST_ALL_OBJS := $(AST_BASE_OBJS) $(AST_OBJS) 124 125all:$(TARGET) 126 127$(TARGET) : $(BOUNDS_CHECK_OBJS) $(UTIL_OBJS) $(HASH_OBJS) $(AST_ALL_OBJS) $(LEXER_OBJS) $(PREPROCESSOR_OBJS) $(PARSER_OBJS) $(METADATA_OBJS) $(CODEGEN_ALL_OBJS) $(MAIN_OBJS) 128 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) $^ -o $@ 129 $(Q) echo $(TARGET):build successful. 130 131$(BUILD_DIR)\\%.o : %.cpp 132 $(Q) if not exist $(BUILD_DIR) (mkdir $(BUILD_DIR)) 133 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 134 135$(CODEGEN_HDITYPE_OBJ_DIR)\\%.o : $(CODEGEN_HDITYPE_SOURCE_DIR)\\%.cpp 136 $(Q) if not exist $(CODEGEN_HDITYPE_OBJ_DIR) (mkdir $(CODEGEN_HDITYPE_OBJ_DIR)) 137 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 138 139$(CODEGEN_HDIC_OBJ_DIR)\\%.o : $(CODEGEN_HDIC_SOURCE_DIR)\\%.cpp 140 $(Q) if not exist $(CODEGEN_HDIC_OBJ_DIR) (mkdir $(CODEGEN_HDIC_OBJ_DIR)) 141 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 142 143$(CODEGEN_HDICPP_OBJ_DIR)\\%.o : $(CODEGEN_HDICPP_SOURCE_DIR)\\%.cpp 144 $(Q) if not exist $(CODEGEN_HDICPP_OBJ_DIR) (mkdir $(CODEGEN_HDICPP_OBJ_DIR)) 145 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 146 147$(CODEGEN_HDIJAVA_OBJ_DIR)\\%.o : $(CODEGEN_HDIJAVA_SOURCE_DIR)\\%.cpp 148 $(Q) if not exist $(CODEGEN_HDIJAVA_OBJ_DIR) (mkdir $(CODEGEN_HDIJAVA_OBJ_DIR)) 149 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 150 151$(CODEGEN_HDI_OBJ_DIR)\\%.o : $(CODEGEN_HDI_SOURCE_DIR)\\%.cpp 152 $(Q) if not exist $(CODEGEN_HDI_OBJ_DIR) (mkdir $(CODEGEN_HDI_OBJ_DIR)) 153 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 154 155$(CODEGEN_SATYPE_OBJ_DIR)\\%.o : $(CODEGEN_SATYPE_SOURCE_DIR)\\%.cpp 156 $(Q) if not exist $(CODEGEN_SATYPE_OBJ_DIR) (mkdir $(CODEGEN_SATYPE_OBJ_DIR)) 157 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 158 159$(CODEGEN_SACPP_OBJ_DIR)\\%.o : $(CODEGEN_SACPP_SOURCE_DIR)\\%.cpp 160 $(Q) if not exist $(CODEGEN_SACPP_OBJ_DIR) (mkdir $(CODEGEN_SACPP_OBJ_DIR)) 161 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 162 163$(CODEGEN_SATS_OBJ_DIR)\\%.o : $(CODEGEN_SATS_SOURCE_DIR)\\%.cpp 164 $(Q) if not exist $(CODEGEN_SATS_OBJ_DIR) (mkdir $(CODEGEN_SATS_OBJ_DIR)) 165 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 166 167$(CODEGEN_SARUST_OBJ_DIR)\\%.o : $(CODEGEN_SARUST_SOURCE_DIR)\\%.cpp 168 $(Q) if not exist $(CODEGEN_SARUST_OBJ_DIR) (mkdir $(CODEGEN_SARUST_OBJ_DIR)) 169 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 170 171$(CODEGEN_SA_OBJ_DIR)\\%.o : $(CODEGEN_SA_SOURCE_DIR)\\%.cpp 172 $(Q) if not exist $(CODEGEN_SA_OBJ_DIR) (mkdir $(CODEGEN_SA_OBJ_DIR)) 173 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 174 175$(CODEGEN_OBJ_DIR)\\%.o : $(CODEGEN_SOURCE_DIR)\\%.cpp 176 $(Q) if not exist $(CODEGEN_OBJ_DIR) (mkdir $(CODEGEN_OBJ_DIR)) 177 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 178 179$(METADATA_OBJ_DIR)\\%.o : $(METADATA_SOURCE_DIR)\\%.cpp 180 $(Q) if not exist $(METADATA_OBJ_DIR) (mkdir $(METADATA_OBJ_DIR)) 181 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 182 183$(PARSER_OBJS_DIR)\\%.o : $(PARSER_SOURCE_DIR)\\%.cpp 184 $(Q) if not exist $(PARSER_OBJS_DIR) (mkdir $(PARSER_OBJS_DIR)) 185 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 186 187$(PREPROCESSOR_OBJS_DIR)\\%.o : $(PREPROCESSOR_SOURCE_DIR)\\%.cpp 188 $(Q) if not exist $(PREPROCESSOR_OBJS_DIR) (mkdir $(PREPROCESSOR_OBJS_DIR)) 189 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 190 191$(LEXER_OBJS_DIR)\\%.o : $(LEXER_SOURCE_DIR)\\%.cpp 192 $(Q) if not exist $(LEXER_OBJS_DIR) (mkdir $(LEXER_OBJS_DIR)) 193 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 194 195$(AST_BASE_OBJS_DIR)\\%.o : $(AST_BASE_SOURCE_DIR)\\%.cpp 196 $(Q) if not exist $(AST_BASE_OBJS_DIR) (mkdir $(AST_BASE_OBJS_DIR)) 197 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 198 199$(AST_OBJS_DIR)\\%.o : $(AST_SOURCE_DIR)\\%.cpp 200 $(Q) if not exist $(AST_OBJS_DIR) (mkdir $(AST_OBJS_DIR)) 201 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 202 203$(HASH_OBJS_DIR)\\%.o : $(HASH_SOURCE_DIR)\\%.cpp 204 $(Q) if not exist $(HASH_OBJS_DIR) (mkdir $(HASH_OBJS_DIR)) 205 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 206 207$(UTIL_OBJS_DIR)\\%.o : $(UTIL_SOURCE_DIR)\\%.cpp 208 $(Q) if not exist $(UTIL_OBJS_DIR) (mkdir $(UTIL_OBJS_DIR)) 209 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 210 211$(BOUNDS_CHECK_OBJS_DIR)\\%.o : $(BOUNDS_CHECK_SOURCE_DIR)\%.c 212 $(Q) if not exist $(BOUNDS_CHECK_OBJS_DIR) (mkdir $(BOUNDS_CHECK_OBJS_DIR)) 213 $(Q) $(CXX) $(CXXFLAGS) $(INCLUDES) -c $^ -o $@ 214 215clean: 216 $(Q) if exist $(TARGET) (del $(TARGET)) 217 $(Q) if exist $(BUILD_DIR) (rd /s /q $(BUILD_DIR)) 218 219.PHONY:all clean