Add separate rules to generate dependencies files for C BPF build

This commit is contained in:
Dmitri Makarov 2021-06-07 18:32:23 -07:00 committed by Dmitri Makarov
parent 86850ceac4
commit 6f193bf357
1 changed files with 36 additions and 4 deletions

View File

@ -147,14 +147,28 @@ define C_RULE
$1: $2
@echo "[cc] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CC) $(BPF_C_FLAGS) -o $1 -c $2 -MD -MF $(1:.o=.d)
$(_@)$(CC) $(BPF_C_FLAGS) -o $1 -c $2
endef
define CC_RULE
$1: $2
@echo "[cxx] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CXX) $(BPF_CXX_FLAGS) -o $1 -c $2 -MD -MF $(1:.o=.d)
$(_@)$(CXX) $(BPF_CXX_FLAGS) -o $1 -c $2
endef
define D_RULE
$1: $2 $(LOCAL_PATH)/bpf.mk
@echo "[GEN] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CC) -M -MT '$(basename $1).o' $(BPF_C_FLAGS) $2 | sed 's,\($(basename $1)\)\.o[ :]*,\1.o $1 : ,g' > $1
endef
define DXX_RULE
$1: $2 $(LOCAL_PATH)/bpf.mk
@echo "[GEN] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CXX) -M -MT '$(basename $1).o' $(BPF_CXX_FLAGS) $2 | sed 's,\($(basename $1)\)\.o[ :]*,\1.o $1 : ,g' > $1
endef
define O_RULE
@ -180,7 +194,7 @@ define TEST_C_RULE
$1: $2
@echo "[test cc] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CC) $(TEST_C_FLAGS) -o $1 $2 -MD -MF $(1:.o=.d)
$(_@)$(CC) $(TEST_C_FLAGS) -o $1 $2
$(_@)$(MACOS_ADJUST_TEST_DYLIB) $1
endef
@ -188,10 +202,24 @@ define TEST_CC_RULE
$1: $2
@echo "[test cxx] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CXX) $(TEST_CXX_FLAGS) -o $1 $2 -MD -MF $(1:.o=.d)
$(_@)$(CXX) $(TEST_CXX_FLAGS) -o $1 $2
$(_@)$(MACOS_ADJUST_TEST_DYLIB) $1
endef
define TEST_D_RULE
$1: $2 $(LOCAL_PATH)/bpf.mk
@echo "[GEN] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CC) -M -MT '$(basename $1)' $(TEST_C_FLAGS) $2 | sed 's,\($(basename $1)\)[ :]*,\1 $1 : ,g' > $1
endef
define TEST_DXX_RULE
$1: $2 $(LOCAL_PATH)/bpf.mk
@echo "[GEN] $1 ($2)"
$(_@)mkdir -p $(dir $1)
$(_@)$(CXX) -M -MT '$(basename $1)' $(TEST_CXX_FLAGS) $2 | sed 's,\($(basename $1)\)[ :]*,\1 $1 : ,g' > $1
endef
define TEST_EXEC_RULE
$1: $2
$2$(\n)
@ -223,8 +251,10 @@ $(foreach PROGRAM, $(PROGRAM_NAMES), \
$(eval $($(PROGRAM)_SRCS): $(INSTALL_SH)) \
$(eval $(call SO_RULE,$(OUT_DIR)/$(PROGRAM).so,$($(PROGRAM)_OBJS))) \
$(foreach _,$(filter %.c,$($(PROGRAM)_SRCS)), \
$(eval $(call D_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.c=%.d)),$_)) \
$(eval $(call C_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.c=%.o)),$_))) \
$(foreach _,$(filter %.cc,$($(PROGRAM)_SRCS)), \
$(eval $(call DXX_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.cc=%.d)),$_)) \
$(eval $(call CC_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.cc=%.o)),$_))) \
\
$(eval TESTS := $(notdir $(basename $(wildcard $(SRC_DIR)/$(PROGRAM)/$(TEST_PREFIX)*.c)))) \
@ -236,8 +266,10 @@ $(foreach PROGRAM, $(PROGRAM_NAMES), \
$(notdir $(wildcard $(SRC_DIR)/$(PROGRAM)/$(TEST).c $(SRC_DIR)/$(PROGRAM)/$(TEST).cc)))) \
$(eval $($(TEST)_SRCS): $(INSTALL_SH)) \
$(foreach _,$(filter %.c,$($(TEST)_SRCS)), \
$(eval $(call TEST_D_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.c=%.d)),$_)) \
$(eval $(call TEST_C_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.c=%)),$_))) \
$(foreach _,$(filter %.cc, $($(TEST)_SRCS)), \
$(eval $(call TEST_DXX_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.cc=%.d)),$_)) \
$(eval $(call TEST_CC_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.cc=%)),$_))) \
$(eval $(call TEST_EXEC_RULE,$(TEST),$(addprefix $(OUT_DIR)/$(PROGRAM)/, $(TEST)))) \
) \