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 Justin Starry
parent 3a1b2c8c9e
commit c8d9e6c8c8

View File

@ -147,14 +147,28 @@ define C_RULE
$1: $2 $1: $2
@echo "[cc] $1 ($2)" @echo "[cc] $1 ($2)"
$(_@)mkdir -p $(dir $1) $(_@)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 endef
define CC_RULE define CC_RULE
$1: $2 $1: $2
@echo "[cxx] $1 ($2)" @echo "[cxx] $1 ($2)"
$(_@)mkdir -p $(dir $1) $(_@)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 endef
define O_RULE define O_RULE
@ -180,7 +194,7 @@ define TEST_C_RULE
$1: $2 $1: $2
@echo "[test cc] $1 ($2)" @echo "[test cc] $1 ($2)"
$(_@)mkdir -p $(dir $1) $(_@)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 $(_@)$(MACOS_ADJUST_TEST_DYLIB) $1
endef endef
@ -188,10 +202,24 @@ define TEST_CC_RULE
$1: $2 $1: $2
@echo "[test cxx] $1 ($2)" @echo "[test cxx] $1 ($2)"
$(_@)mkdir -p $(dir $1) $(_@)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 $(_@)$(MACOS_ADJUST_TEST_DYLIB) $1
endef 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 define TEST_EXEC_RULE
$1: $2 $1: $2
LD_LIBRARY_PATH=$(TESTFRAMEWORK_RPATH) \ LD_LIBRARY_PATH=$(TESTFRAMEWORK_RPATH) \
@ -224,8 +252,10 @@ $(foreach PROGRAM, $(PROGRAM_NAMES), \
$(eval $($(PROGRAM)_SRCS): $(INSTALL_SH)) \ $(eval $($(PROGRAM)_SRCS): $(INSTALL_SH)) \
$(eval $(call SO_RULE,$(OUT_DIR)/$(PROGRAM).so,$($(PROGRAM)_OBJS))) \ $(eval $(call SO_RULE,$(OUT_DIR)/$(PROGRAM).so,$($(PROGRAM)_OBJS))) \
$(foreach _,$(filter %.c,$($(PROGRAM)_SRCS)), \ $(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)),$_))) \ $(eval $(call C_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.c=%.o)),$_))) \
$(foreach _,$(filter %.cc,$($(PROGRAM)_SRCS)), \ $(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 $(call CC_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.cc=%.o)),$_))) \
\ \
$(eval TESTS := $(notdir $(basename $(wildcard $(SRC_DIR)/$(PROGRAM)/$(TEST_PREFIX)*.c)))) \ $(eval TESTS := $(notdir $(basename $(wildcard $(SRC_DIR)/$(PROGRAM)/$(TEST_PREFIX)*.c)))) \
@ -237,8 +267,10 @@ $(foreach PROGRAM, $(PROGRAM_NAMES), \
$(notdir $(wildcard $(SRC_DIR)/$(PROGRAM)/$(TEST).c $(SRC_DIR)/$(PROGRAM)/$(TEST).cc)))) \ $(notdir $(wildcard $(SRC_DIR)/$(PROGRAM)/$(TEST).c $(SRC_DIR)/$(PROGRAM)/$(TEST).cc)))) \
$(eval $($(TEST)_SRCS): $(INSTALL_SH)) \ $(eval $($(TEST)_SRCS): $(INSTALL_SH)) \
$(foreach _,$(filter %.c,$($(TEST)_SRCS)), \ $(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=%)),$_))) \ $(eval $(call TEST_C_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.c=%)),$_))) \
$(foreach _,$(filter %.cc, $($(TEST)_SRCS)), \ $(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_CC_RULE,$(subst $(SRC_DIR),$(OUT_DIR),$(_:%.cc=%)),$_))) \
$(eval $(call TEST_EXEC_RULE,$(TEST),$(addprefix $(OUT_DIR)/$(PROGRAM)/, $(TEST)))) \ $(eval $(call TEST_EXEC_RULE,$(TEST),$(addprefix $(OUT_DIR)/$(PROGRAM)/, $(TEST)))) \
) \ ) \