
sample: examples\aliyun_iotkit_csdk_mqtt project: board\TencentOS_tiny_EVB_MX_Plus\KEIL\aliyun_iotkit_csdk_mqtt
149 lines
3.8 KiB
Makefile
149 lines
3.8 KiB
Makefile
ifneq ($(TOP_DIR),$(CURDIR))
|
|
INTERNAL_INCLUDES += -I$(SYSROOT_INC)
|
|
INTERNAL_INCLUDES += $(foreach d, $(shell find $(SYSROOT_INC) -type d), -I$(d))
|
|
INTERNAL_INCLUDES += -I$(TOP_DIR)
|
|
INTERNAL_INCLUDES += $(foreach d, $(shell find -L $(TOP_DIR)/$(EXPORT_DIR) -type d -not -path "*/.*" -not -path "$(TOP_DIR)/$(SHADOW_DIR)*"), -I$(d))
|
|
INTERNAL_INCLUDES += \
|
|
$(foreach d, \
|
|
$(shell [ -d $(IMPORT_DIR)/$(CONFIG_VENDOR)/include ] && find -L $(IMPORT_DIR)/$(CONFIG_VENDOR)/include -type d), \
|
|
-I$(d) \
|
|
)
|
|
INTERNAL_INCLUDES += $(foreach mod, $(MODULE_NAME) $(HDR_REFS), \
|
|
$(foreach d, \
|
|
$(shell [ -d $(TOP_DIR)/$(mod) ] && \
|
|
find -L $(TOP_DIR)/$(mod)/ -type d \
|
|
-a -name "[^.]*" \
|
|
-not -path "*.git*"), \
|
|
-I$(d) \
|
|
) \
|
|
)
|
|
|
|
# INTERNAL_INCLUDES += \
|
|
$(foreach d, \
|
|
$(shell find $(OUTPUT_DIR)/$(MODULE_NAME) -type d -a -name "[^.]*"), \
|
|
-I$(d) \
|
|
)
|
|
|
|
INTERNAL_INCLUDES := $(strip $(sort $(INTERNAL_INCLUDES)))
|
|
|
|
EXTERNAL_INCLUDES += $(foreach mod, $(DEPENDS), \
|
|
$(foreach d, \
|
|
$(shell $(SHELL_DBG) find \
|
|
$(SYSROOT_INC)/$(mod)/ -maxdepth 2 -type d 2>/dev/null) \
|
|
$(shell $(SHELL_DBG) find \
|
|
$(IMPORT_VDRDIR)/include/$(mod)/ -maxdepth 2 -type d 2>/dev/null), \
|
|
-I$(d) \
|
|
) \
|
|
)
|
|
EXTERNAL_INCLUDES := $(strip $(EXTERNAL_INCLUDES))
|
|
endif # ifneq ($(TOP_DIR),$(CURDIR))
|
|
|
|
ifeq (dynamic,$(strip $(CONFIG_LIB_EXPORT)))
|
|
CFLAGS += -fPIC
|
|
endif
|
|
|
|
#CFLAGS := $(sort $(strip $(CFLAGS)))
|
|
|
|
LDFLAGS += -L$(SYSROOT_LIB)
|
|
ifeq (y,$(shell [ -e $(TOP_DIR)/$(IMPORT_VDRDIR)/$(PREBUILT_LIBDIR) ] && echo y))
|
|
LDFLAGS += -L$(TOP_DIR)/$(IMPORT_VDRDIR)/$(PREBUILT_LIBDIR)
|
|
endif
|
|
|
|
LDFLAGS += $(foreach d,$(DEPENDS_$(MODULE_NAME)),$(REF_LDFLAGS_$(d)))
|
|
|
|
WATCHED_VARS = \
|
|
TARGET \
|
|
CFLAGS \
|
|
CC \
|
|
LDFLAGS \
|
|
CURDIR \
|
|
INTERNAL_INCLUDES \
|
|
DEPENDS \
|
|
MAKECMDGOALS \
|
|
EXTERNAL_INCLUDES \
|
|
LIBA_TARGET \
|
|
LIBSO_TARGET \
|
|
|
|
ALL_TARGETS := $(TARGET) $(LIBSO_TARGET) $(LIBA_TARGET) $(firstword $(KMOD_TARGET))
|
|
|
|
ifneq (,$(strip $(PKG_SWITCH)))
|
|
all: $(ALL_TARGETS)
|
|
else
|
|
all:
|
|
$(Q)true
|
|
endif
|
|
|
|
clean:
|
|
$(Q)rm -f \
|
|
$(strip \
|
|
$(ALL_TARGETS) $(OBJS) $(LIB_OBJS) \
|
|
$(OBJS:.o=.d) $(LIB_OBJS:.o=.d) \
|
|
$(LIB_OBJS:.o=.gcno) $(LIB_OBJS:.o=.gcda) \
|
|
) \
|
|
*.o.e *.d *.o *.a *.so *.log *.gc*
|
|
|
|
%.o: %.c $(HD_MAKEFILE)
|
|
@$(call Brief_Log,"CC")
|
|
$(call Inspect_Env,$(WATCHED_VARS))
|
|
$(Q) \
|
|
set -o pipefail; \
|
|
$(CC) -I$(CURDIR) \
|
|
$(INTERNAL_INCLUDES) \
|
|
$(EXTERNAL_INCLUDES) \
|
|
$(CFLAGS) \
|
|
-c -o $@ $<
|
|
ifneq (,$(OBJCOPY_FLAGS))
|
|
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) $@
|
|
endif
|
|
|
|
NODEP_LIST = \
|
|
$(SYSROOT_INC)/git_version.h \
|
|
$(SYSROOT_INC)/platform.h \
|
|
$(SYSROOT_INC)/product.h \
|
|
$(SYSROOT_INC)/product_config.h \
|
|
|
|
ifneq (,$(findstring gcc,$(CC)))
|
|
ifeq (,$(filter modinfo,$(MAKECMDGOALS)))
|
|
%.d: %.c
|
|
@ \
|
|
( \
|
|
D=$$(dirname $<|$(SED) 's,$(TOP_DIR),$(OUTPUT_DIR),1'); \
|
|
F=$$(basename $<); \
|
|
mkdir -p $${D}; \
|
|
$(CC) -MM -I$(CURDIR) \
|
|
$(INTERNAL_INCLUDES) \
|
|
$(EXTERNAL_INCLUDES) \
|
|
$(CFLAGS) \
|
|
$< > $${D}/$${F}.$$$$; \
|
|
$(SED) -i 's!$(shell basename $*)\.o[ :]!$*.o:!1' $${D}/$${F}.$$$$; \
|
|
mv $${D}/$${F}.$$$$ $@; \
|
|
)
|
|
endif
|
|
endif
|
|
|
|
%.o: %.cpp
|
|
@$(call Brief_Log,"CC")
|
|
$(call Inspect_Env,$(WATCHED_VARS))
|
|
$(Q)$(CXX) -I$(CURDIR) \
|
|
$(INTERNAL_INCLUDES) \
|
|
$(EXTERNAL_INCLUDES) \
|
|
$(CFLAGS) \
|
|
-c -o $@ $<
|
|
|
|
ifneq (,$(findstring gcc,$(CC)))
|
|
%.d: %.cpp
|
|
@ \
|
|
$(CXX) -MM -I$(CURDIR) \
|
|
$(INTERNAL_INCLUDES) \
|
|
$(EXTERNAL_INCLUDES) \
|
|
$(CFLAGS) \
|
|
$< > $@.$$$$; \
|
|
$(foreach D,$(NODEP_LIST),$(SED) -i 's,$(D),,g' $@.$$$$;) \
|
|
$(SED) 's,\($*\)\.o[ :]*,\1.o $@: ,g' < $@.$$$$ > $@; \
|
|
rm -f $@.$$$$;
|
|
endif
|
|
|
|
include $(RULE_DIR)/_rules-libs.mk
|
|
include $(RULE_DIR)/_rules-prog.mk
|
|
include $(RULE_DIR)/_rules-kmod.mk
|