From 6f193bf3578d63d5103b97fbccc98aa903138921 Mon Sep 17 00:00:00 2001 From: Dmitri Makarov Date: Mon, 7 Jun 2021 18:32:23 -0700 Subject: [PATCH] Add separate rules to generate dependencies files for C BPF build --- sdk/bpf/c/bpf.mk | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/sdk/bpf/c/bpf.mk b/sdk/bpf/c/bpf.mk index 076cd5e6c6..d9b109f7d5 100644 --- a/sdk/bpf/c/bpf.mk +++ b/sdk/bpf/c/bpf.mk @@ -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)))) \ ) \