1#
2# Copyright (c) 2020-2022 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
15ifeq ($(LOCAL_HCS_ROOT),)
16  LOCAL_HCS_ROOT := $(PRODUCT_PATH)
17endif
18CURRENT_DIR := $(abspath $(dir $(realpath $(lastword $(MAKEFILE_LIST)))))
19SOURCE_ROOT := $(abspath $(CURRENT_DIR)/../../../../../)
20
21HC_GEN_DIR := $(abspath $(SOURCE_ROOT)/drivers/hdf_core/framework/tools/hc-gen)
22ifneq ($(OUT_DIR),)
23HC_GEN := $(OUT_DIR)/kernel/OBJ/${KERNEL_VERSION}/drivers/hdf/khdf/hc_gen_build/hc-gen
24else
25HC_GEN := $(HC_GEN_DIR)/build/hc-gen
26endif
27LOCAL_HCS_ROOT := $(CURRENT_DIR)
28
29HCS_DIR := $(LOCAL_HCS_ROOT)
30
31ifneq ($(TARGET_BOARD_PLATFORM),)
32  HCS_DIR := $(LOCAL_HCS_ROOT)/$(TARGET_BOARD_PLATFORM)
33else
34  ifneq ($(CONFIG_ARCH_HI3516DV300),)
35    HCS_DIR := $(LOCAL_HCS_ROOT)
36  endif
37  ifneq ($(CONFIG_ARCH_HI3518EV300),)
38    HCS_DIR := $(LOCAL_HCS_ROOT)
39  endif
40  ifneq ($(CONFIG_ARCH_HI3751V350),)
41    HCS_DIR := $(LOCAL_HCS_ROOT)
42  endif
43endif
44$(info HCS_DIR = $(HCS_DIR))
45HCB_FLAGS := -b -i -a
46
47HCS_OBJ := hdf_hcs_hex.o
48HCS_OBJ_SRC := $(subst .o,.c,$(notdir $(HCS_OBJ)))
49
50CONFIG_GEN_HEX_SRC := $(addprefix $(LOCAL_HCS_ROOT)/, $(HCS_OBJ_SRC))
51CONFIG_HCS_SRC := $(subst _hcs_hex.o,.hcs,$(addprefix $(HCS_DIR)/, $(HCS_OBJ)))
52
53$(obj)/$(HCS_OBJ): $(CONFIG_GEN_HEX_SRC)
54	$(Q)$(CC) $(c_flags) -c -o $@ $<
55	$(Q)rm -f $<
56
57$(CONFIG_GEN_HEX_SRC):  $(LOCAL_HCS_ROOT)/%_hcs_hex.c: $(HCS_DIR)/%.hcs | $(HC_GEN)
58	$(Q)echo gen hdf built-in config
59	$(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi
60	$(Q)$(HC_GEN) $(HCB_FLAGS) -o $(subst _hex.c,,$(@)) $<
61
62$(CONFIG_GEN_SRCS): $(CONFIG_OUT_DIR)%.c: $(HCS_DIR)/%.hcs | $(HC_GEN)
63	$(Q)echo gen hdf driver config
64	$(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi
65	$(Q)$(HC_GEN) -t -o $@ $<
66
67$(HC_GEN):
68	$(HIDE)make -C $(HC_GEN_DIR) BUILD_DIR=$(dir $@)
69
70obj-$(CONFIG_DRIVERS_HDF) += $(HCS_OBJ)
71