From 4e22be8937f0f240f7889c473503945a0548e579 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Thu, 7 Mar 2019 14:34:52 +0800 Subject: now makefile works --- tools/rtthread.mk | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 tools/rtthread.mk (limited to 'tools/rtthread.mk') diff --git a/tools/rtthread.mk b/tools/rtthread.mk new file mode 100644 index 0000000000..bff3b2bbe2 --- /dev/null +++ b/tools/rtthread.mk @@ -0,0 +1,124 @@ +$(if $(strip $(TARGET)),,$(error TARGET not defined)) +$(if $(strip $(SRC_FILES)),,$(error No source files)) +$(if $(strip $(BSP_ROOT)),,$(error BSP_ROOT not defined)) + +ifneq ($(MAKE_LIB),1) +BUILD_DIR := $(BSP_ROOT)/build +endif + +$(if $(strip $(BUILD_DIR)),,$(error BUILD_DIR not defined)) + +RTT_BUILD_DIR := RT-THREAD_OBJS +BSP_BUILD_DIR := BSP_OBJS + +################# + +define add_c_file +$(eval COBJ := $(1:%.c=%.o)) \ +$(eval COBJ := $(COBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ +$(eval COBJ := $(COBJ:$(BSP_ROOT)/%=$(BSP_BUILD_DIR)/%)) \ +$(eval VPATH += $(dir $1)) \ +$(eval CSRCS += $1) \ +$(eval LOCALC := $(addprefix $(BUILD_DIR)/,$(COBJ))) \ +$(eval OBJS += $(LOCALC)) \ +$(if $(strip $(LOCALC)),$(eval $(LOCALC): $1 + @if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi + @echo cc $$@ + @$(CROSS_COMPILE)gcc $$(CFLAGS) -c $$< -o $$@)) +endef + +define add_cxx_file +$(eval CXXOBJ := $(1:%.cpp=%.o)) \ +$(eval CXXOBJ := $(CXXOBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ +$(eval CXXOBJ := $(CXXOBJ:$(BSP_ROOT)/%=$(BSP_BUILD_DIR)/%)) \ +$(eval VPATH += $(dir $1)) \ +$(eval CXXSRCS += $1) \ +$(eval LOCALCXX := $(addprefix $(BUILD_DIR)/,$(CXXOBJ))) \ +$(eval OBJS += $(LOCALCXX)) \ +$(if $(strip $(LOCALCXX)),$(eval $(LOCALCXX): $1 + @if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi + @echo cc $$@ + @$(CROSS_COMPILE)g++ $$(CXXFLAGS) -c $$< -o $$@)) +endef + +define add_S_file +$(eval SOBJ := $(1:%.S=%.o)) \ +$(eval SOBJ := $(SOBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ +$(eval SOBJ := $(SOBJ:$(BSP_ROOT)/%=$(BSP_BUILD_DIR)/%)) \ +$(eval VPATH += $(dir $1)) \ +$(eval SSRCS += $(1)) \ +$(eval LOCALS := $(addprefix $(BUILD_DIR)/,$(SOBJ))) \ +$(eval OBJS += $(LOCALS)) \ +$(if $(strip $(LOCALS)),$(eval $(LOCALS): $1 + @if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi + @echo cc $$@ + @$(CROSS_COMPILE)gcc $$(AFLAGS) -c $$< -o $$@)) +endef + +add_flg = $(eval CFLAGS += $1) \ + $(eval AFLAGS += $1) \ + $(eval CXXFLAGS += $1) + +add_inc = $(eval CFLAGS += -I$1) \ + $(eval AFLAGS += -I$1) \ + $(eval CXXFLAGS += -I$1) + +add_def = $(eval CFLAGS += -D$1) \ + $(eval AFLAGS += -D$1) \ + $(eval CXXFLAGS += -D$1) + +OBJS := +CSRCS := +CXXSRCS := +SSRCS := +VPATH := + +CONFIG_FLG := $(strip $(EXTERN_FLAGS)) +$(if $(CONFIG_FLG),$(foreach f,$(CONFIG_FLG),$(call add_flg,$(f)))) + +CONFIG_DEF := $(strip $(PROJECT_DEFS)) +$(if $(CONFIG_DEF),$(foreach d,$(CONFIG_DEF),$(call add_def,$(d)))) + +CONFIG_INC := $(strip $(INCLUDE_PATH)) +$(if $(CONFIG_INC),$(foreach i,$(CONFIG_INC),$(call add_inc,$(i)))) + +SRCS := $(strip $(filter %.c,$(SRC_FILES))) +$(if $(SRCS),$(foreach f,$(SRCS),$(call add_c_file,$(f)))) + +SRCS := $(strip $(filter %.cpp,$(SRC_FILES))) +$(if $(SRCS),$(foreach f,$(SRCS),$(call add_cxx_file,$(f)))) + +SRCS := $(strip $(filter %.S,$(SRC_FILES))) +$(if $(SRCS),$(foreach f,$(SRCS),$(call add_S_file,$(f)))) + +CFLAGS += $(CPPPATHS) +CXXFLAGS += $(CPPPATHS) +AFLAGS += $(CPPPATHS) + +CFLAGS += $(DEFINES) +CXXFLAGS += $(DEFINES) +AFLAGS += $(DEFINES) + +all: $(TARGET) + +ifeq ($(MAKE_LIB),1) +$(TARGET): $(OBJS) + @echo ------------------------------------------------ + @echo ar $(TARGET) + @$(CROSS_COMPILE)ar -rv $@ $(OBJS) +else +$(TARGET): $(OBJS) $(EXTERN_LIB) + @echo ------------------------------------------------ + @echo link $(TARGET) + @$(CROSS_COMPILE)g++ -o $@ $(LFLAGS) $(OBJS) $(EXTERN_LIB) -lc -lm + @echo ------------------------------------------------ + @$(CROSS_COMPILE)objcopy -O binary $@ rtthread.bin + @$(CROSS_COMPILE)size $@ +endif + +phony += clean +clean: + @echo clean + @rm -rf $(TARGET) $(BUILD_DIR) + +.PHONY: $(phony) -- cgit v1.3.1 From b6055df950cb73127fd45c910d14902bfef7ce4f Mon Sep 17 00:00:00 2001 From: Bernard Xiong Date: Sat, 23 Mar 2019 19:36:40 +0800 Subject: [Tools] Fix the directory issue for Makefile --- tools/rtthread.mk | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) (limited to 'tools/rtthread.mk') diff --git a/tools/rtthread.mk b/tools/rtthread.mk index bff3b2bbe2..fdc96d4156 100644 --- a/tools/rtthread.mk +++ b/tools/rtthread.mk @@ -8,50 +8,50 @@ endif $(if $(strip $(BUILD_DIR)),,$(error BUILD_DIR not defined)) -RTT_BUILD_DIR := RT-THREAD_OBJS -BSP_BUILD_DIR := BSP_OBJS +RTT_BUILD_DIR := . +BSP_BUILD_DIR := bsp ################# define add_c_file +$(eval C_SRC := $(1:$(BSP_ROOT)/%=%)) \ +$(eval C_SRC := $(C_SRC:$(RTT_ROOT)/%=%)) \ $(eval COBJ := $(1:%.c=%.o)) \ -$(eval COBJ := $(COBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ $(eval COBJ := $(COBJ:$(BSP_ROOT)/%=$(BSP_BUILD_DIR)/%)) \ -$(eval VPATH += $(dir $1)) \ -$(eval CSRCS += $1) \ +$(eval COBJ := $(COBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ $(eval LOCALC := $(addprefix $(BUILD_DIR)/,$(COBJ))) \ $(eval OBJS += $(LOCALC)) \ -$(if $(strip $(LOCALC)),$(eval $(LOCALC): $1 +$(if $(strip $(LOCALC)),$(eval $(LOCALC): $(C_SRC) @if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi - @echo cc $$@ + @echo cc $$< @$(CROSS_COMPILE)gcc $$(CFLAGS) -c $$< -o $$@)) endef define add_cxx_file +$(eval CXX_SRC := $(1:$(BSP_ROOT)/%=%)) \ +$(eval CXX_SRC := $(CXX_SRC:$(RTT_ROOT)/%=%)) \ $(eval CXXOBJ := $(1:%.cpp=%.o)) \ -$(eval CXXOBJ := $(CXXOBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ $(eval CXXOBJ := $(CXXOBJ:$(BSP_ROOT)/%=$(BSP_BUILD_DIR)/%)) \ -$(eval VPATH += $(dir $1)) \ -$(eval CXXSRCS += $1) \ +$(eval CXXOBJ := $(CXXOBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ $(eval LOCALCXX := $(addprefix $(BUILD_DIR)/,$(CXXOBJ))) \ $(eval OBJS += $(LOCALCXX)) \ -$(if $(strip $(LOCALCXX)),$(eval $(LOCALCXX): $1 +$(if $(strip $(LOCALCXX)),$(eval $(LOCALCXX): $(CXX_SRC) @if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi - @echo cc $$@ + @echo cc $$< @$(CROSS_COMPILE)g++ $$(CXXFLAGS) -c $$< -o $$@)) endef define add_S_file +$(eval S_SRC := $(1:$(BSP_ROOT)/%=%)) \ +$(eval S_SRC := $(S_SRC:$(RTT_ROOT)/%=%)) \ $(eval SOBJ := $(1:%.S=%.o)) \ -$(eval SOBJ := $(SOBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ $(eval SOBJ := $(SOBJ:$(BSP_ROOT)/%=$(BSP_BUILD_DIR)/%)) \ -$(eval VPATH += $(dir $1)) \ -$(eval SSRCS += $(1)) \ +$(eval SOBJ := $(SOBJ:$(RTT_ROOT)/%=$(RTT_BUILD_DIR)/%)) \ $(eval LOCALS := $(addprefix $(BUILD_DIR)/,$(SOBJ))) \ $(eval OBJS += $(LOCALS)) \ -$(if $(strip $(LOCALS)),$(eval $(LOCALS): $1 +$(if $(strip $(LOCALS)),$(eval $(LOCALS): $(S_SRC) @if [ ! -d $$(@D) ]; then mkdir -p $$(@D); fi - @echo cc $$@ + @echo cc $$< @$(CROSS_COMPILE)gcc $$(AFLAGS) -c $$< -o $$@)) endef @@ -68,10 +68,8 @@ add_def = $(eval CFLAGS += -D$1) \ $(eval CXXFLAGS += -D$1) OBJS := -CSRCS := -CXXSRCS := -SSRCS := -VPATH := +#VPATH := $(BSP_ROOT) $(RTT_ROOT) +VPATH := $(RTT_ROOT) CONFIG_FLG := $(strip $(EXTERN_FLAGS)) $(if $(CONFIG_FLG),$(foreach f,$(CONFIG_FLG),$(call add_flg,$(f)))) -- cgit v1.3.1