1# 2# Copyright (c) 2020-2023 Huawei Device Co., Ltd. 3# 4# This software is licensed under the terms of the GNU General Public 5# License version 2, as published by the Free Software Foundation, and 6# may be copied, distributed, and modified under those terms. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# 14 15ccflags-$(CONFIG_DRIVERS_HDF_TEST) += -I$(srctree)/include/hdf \ 16 -I$(srctree)/include/hdf/osal \ 17 -I$(srctree)/include/hdf/utils \ 18 -I$(srctree)/drivers/hdf/inner_api/osal/shared \ 19 -I$(srctree)/drivers/hdf/inner_api/host/shared \ 20 -I$(srctree)/drivers/hdf/inner_api/utils \ 21 -I$(srctree)/drivers/hdf/inner_api/core \ 22 -I$(srctree)/drivers/hdf/khdf/osal/include \ 23 -I$(srctree)/drivers/hdf/framework/utils/include 24 25ifeq ($(LOCAL_HCS_ROOT),) 26 LOCAL_HCS_ROOT := $(PRODUCT_PATH) 27endif 28 29CURRENT_DIR := $(abspath $(dir $(realpath $(lastword $(MAKEFILE_LIST))))) 30SOURCE_ROOT := $(abspath $(CURRENT_DIR)/../../../../../../) 31 32HC_GEN_DIR := $(abspath $(SOURCE_ROOT)/drivers/hdf_core/framework/tools/hc-gen) 33ifneq ($(OUT_DIR),) 34HC_GEN := $(OUT_DIR)/kernel/OBJ/${KERNEL_VERSION}/drivers/hdf/khdf/hc_gen_build/hc-gen 35else 36HC_GEN := $(HC_GEN_DIR)/build/hc-gen 37endif 38LOCAL_HCS_ROOT := $(CURRENT_DIR) 39 40HCS_DIR := $(LOCAL_HCS_ROOT) 41 42ifneq ($(TARGET_BOARD_PLATFORM),) 43 HCS_DIR := $(LOCAL_HCS_ROOT)/$(TARGET_BOARD_PLATFORM) 44else 45 ifneq ($(CONFIG_ARCH_HI3516DV300),) 46 HCS_DIR := $(LOCAL_HCS_ROOT) 47 endif 48 ifneq ($(CONFIG_ARCH_HI3518EV300),) 49 HCS_DIR := $(LOCAL_HCS_ROOT) 50 endif 51 ifneq ($(CONFIG_ARCH_HI3751V350),) 52 HCS_DIR := $(LOCAL_HCS_ROOT) 53 endif 54endif 55$(info HCS_DIR = $(HCS_DIR)) 56HCB_FLAGS := -b -i -a 57 58HCS_OBJ := hdf_hcs_hex.o 59HCS_OBJ_SRC := $(subst .o,.c,$(notdir $(HCS_OBJ))) 60 61CONFIG_GEN_HEX_SRC := $(addprefix $(LOCAL_HCS_ROOT)/, $(HCS_OBJ_SRC)) 62CONFIG_HCS_SRC := $(subst _hcs_hex.o,.hcs,$(addprefix $(HCS_DIR)/, $(HCS_OBJ))) 63 64HDF_FRAMWORK_TEST_ROOT = $(abspath $(SOURCE_ROOT)/drivers/hdf_core/framework/test/unittest/utils/hcs_parser/unittest) 65HCS_MACRO_OBJ := hcs_macro_cases.o 66HCS_MACRO_SRC := $(HDF_FRAMWORK_TEST_ROOT)/hcs_macro_cases.c 67HCS_DEP := $(HDF_FRAMWORK_TEST_ROOT)/hdf_macro_test.h 68HCS_MACRO_GEN_FILE := $(HDF_FRAMWORK_TEST_ROOT)/hdf_macro_test 69HCS_FILE := $(HCS_DIR)/hdf.hcs 70 71$(obj)/$(HCS_OBJ): $(CONFIG_GEN_HEX_SRC) 72 $(Q)$(CC) $(c_flags) -c -o $@ $< 73 $(Q)rm -f $< 74 75$(CONFIG_GEN_HEX_SRC): $(LOCAL_HCS_ROOT)/%_hcs_hex.c: $(HCS_DIR)/%.hcs | $(HC_GEN) 76 $(Q)echo gen hdf built-in config 77 $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi 78 $(Q)$(HC_GEN) $(HCB_FLAGS) -o $(subst _hex.c,,$(@)) $< 79 80$(CONFIG_GEN_SRCS): $(CONFIG_OUT_DIR)%.c: $(HCS_DIR)/%.hcs | $(HC_GEN) 81 $(Q)echo gen hdf driver config 82 $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi 83 $(Q)$(HC_GEN) -t -o $@ $< 84 85$(HC_GEN): 86 $(HIDE)make -C $(HC_GEN_DIR) BUILD_DIR=$(dir $@) 87 88$(obj)/$(HCS_MACRO_OBJ): $(HCS_MACRO_SRC) $(HCS_DEP) 89 $(Q)$(CC) $(c_flags) -c -o $@ $< 90 91$(HCS_DEP): $(HC_GEN) 92 $(Q)echo gen hdf built-in config macro 93 $(Q)$(HC_GEN) -m -o $(HCS_MACRO_GEN_FILE) $(HCS_FILE) 94 95obj-$(CONFIG_DRIVERS_HDF) += $(HCS_OBJ) \ 96 $(HCS_MACRO_OBJ) 97