Files
TencentOS-tiny/components/connectivity/iotkit-embedded-3.0.1/3rdparty/tools/build-rules/funcs.mk
dcxajichu 8c24d921b0 support aliyun sdk on TencentOS tiny
sample: examples\aliyun_iotkit_csdk_mqtt
project: board\TencentOS_tiny_EVB_MX_Plus\KEIL\aliyun_iotkit_csdk_mqtt
2019-10-31 16:36:28 +08:00

260 lines
7.5 KiB
Makefile

define Append_Conditional
$(if $(strip $(foreach V,$(4),$(filter -D$(V),$(CFLAGS)))),, \
$(if \
$(if $(strip $(3)),,x)$(findstring $(foreach U,$(3),-D$(U)),$(foreach U,$(3),$(filter -D$(U),$(CFLAGS)))), \
$(eval $(strip $(1)) += $(2)) \
) \
)
endef
define Dump_Var
NUM=`echo "$(strip $($(1)))"|awk '{ print NF }'`; \
if (( $${NUM} \> 1 )); then \
printf -- "-----------------------------------------------------------------\n"; \
printf "%-24s| %s\n" ". $(1)" `echo "$(strip $($(1)))"|cut -d' ' -f1|$(SED) 's/^ *//'`; \
for i in `echo "$(strip $($(1)))"|cut -d' ' -f2-`; do \
printf "%-24s| %s\n" "" "$${i}"; \
done; \
printf -- "-----------------------------------------------------------------\n"; \
else \
printf "%-24s| %s\n" ". $(1)" "$(strip $($(1)))"; \
fi;
endef
ifneq (,$(Q))
define Inspect_Env
endef
else
define Inspect_Env
@printf -- "-----------------------------------------------------------------\n"
@printf "%-20s| %s\n" ". BUILDING_TARGET" "$@"
@printf -- "-----------------------------------------------------------------\n"
@printf "%-20s| %s\n" ". BUILDING_DEPEND" "$(filter-out FORCE,$^)"
@printf -- "-----------------------------------------------------------------\n"
@$(foreach var,$(1),$(call Dump_Var,$(var)))
@printf -- "-----------------------------------------------------------------\n"
endef
endif
# 31, red. 32, green. 33, yellow. 34, blue. 35, magenta. 36, cyan. 37, white.
define Brief_Log
( \
if [ "$1" = "CC" ]; then \
if echo "$@"|grep -q "\.so$$"; then \
COLOR_MARK="\033[1;32m"; \
elif echo "$@"|grep -q "\.ko$$"; then \
COLOR_MARK="\033[1;35m"; \
else \
COLOR_MARK="\033[1;36m"; \
fi \
elif [ "$1" = "AR" ]; then \
COLOR_MARK="\033[1;33m"; \
elif [ "$1" = "LD" ]; then \
COLOR_MARK="\033[1;31m"; \
elif [ "$1" = "ST" ]; then \
COLOR_MARK="\033[0;33m"; \
fi; \
if [ "$(PLAIN_LOG)" != "1" ]; then \
echo -ne "$${COLOR_MARK}"; \
fi; \
if [ "$2" = "" ]; then \
FIRST_DEP="$(firstword $(filter-out FORCE,$?))"; \
SPACE_BAR=" "; \
if [ "$${FIRST_DEP}" != "" ]; then \
FIRST_DEP="$$(basename $${FIRST_DEP})"; \
fi; \
printf "\r%-40s%s%s$(3)\n" "[$1] $$(echo -n "$$(basename $@)" | cut -c1-28)" "<= $${FIRST_DEP} $${SPACE_BAR}"; \
else \
printf "\r%-40s%s%s$(3)\n" "[$1] $$(echo -n "$(2)" | cut -c1-28)" "<= $${FIRST_DEP} $${SPACE_BAR}"; \
fi; \
if [ "$3" != "..." ]; then \
for i in $(wordlist 2,150,$(filter-out FORCE,$?)); do \
if [ "$$(echo $${i}|cut -c1)" != "/" ]; then \
printf "%-40s%s$(3)\n" "" " $$(basename $${i})"; \
fi \
done; \
fi; \
if [ "$(PLAIN_LOG)" != "1" ]; then \
echo -ne "\033[0m"; \
fi; \
)
endef
define Copy_Headers
$(Q) \
if [ "$(strip $(1))" != "" ]; then \
mkdir -p $(2)/$(3); \
for hdr in $(1); do \
if [ ! -f $(2)/$(3)/$${hdr} ] || [ $${PWD}/$${hdr} -nt $(2)/$(3)/$${hdr} ]; then \
mkdir -p $(2)/$(3); \
cp -f $(TOP_DIR)/$(MODULE_NAME)/$${hdr} $(2)/$(3)/$$(basename $${hdr}); \
fi; \
done \
fi
endef
define Update_Extra_Srcs
( \
for ELEM in $(strip $(1)); do \
DST=$(OUTPUT_DIR)/$(2)/$$(basename $${ELEM}); \
if [ $${ELEM} -nt $${DST} ]; then \
cp -Lf $${ELEM} $${DST}; \
fi; \
done \
)
endef
define Require_Build
( \
SW=$$(grep -m 1 "^PKG_SWITCH_$(1) =" $(STAMP_BLD_VAR)|awk '{ print $$NF }'); \
[ "$${SW}" != "y" ] && \
echo "FALSE" && exit; set +x; \
\
[ "$(LIBA_TARGET_$(1))" != "" ] && \
$(foreach L,$(LIBA_TARGET_$(1)),[ -f $(IMPORT_VDRDIR)/$(PREBUILT_LIBDIR)/$(L) ] && ) \
echo "FALSE" && exit; \
\
[ "$(LIBSO_TARGET_$(1))" != "" ] && \
[ -f $(IMPORT_VDRDIR)/$(PREBUILT_LIBDIR)/$(LIBSO_TARGET_$(1)) ] && \
echo "FALSE" && exit; \
\
echo "TRUE"; \
)
endef
define Build_Depends
( \
set -o pipefail && \
for i in $(DEPENDS_$(1)); do \
STAMP=$(STAMP_DIR)/$$(echo $${i}|$(SED) 's:/:~:g').build.done; \
if [ -f $${STAMP} ]; then \
continue; \
fi; \
$(MAKE) --no-print-directory $${i} \
$(if $(Q),,2>&1|tee -a $(OUTPUT_DIR)/$${i}/$(COMPILE_LOG)) \
$(if $(Q),,2>&1|tee -a $(OUTPUT_DIR)/$(COMPILE_LOG)); \
RETVAL=$$?; \
if [ $${RETVAL} != 0 ]; then \
exit $${RETVAL}; \
fi; \
done \
\
)
endef
#
# ($(foreach d,$(COMP_LIB_COMPONENTS), \
#
# $(RECURSIVE_MAKE) pre-build target-$(d) && \
# $(MAKE) --no-print-directory -C $(OUTPUT_DIR)/$(d) $(LIBA_TARGET_$(d)) \
# $(if $(Q),,2>&1|tee -a $(OUTPUT_DIR)/$(d)/$(COMPILE_LOG)) \
# $(if $(Q),,2>&1|tee -a $(OUTPUT_DIR)/$(COMPILE_LOG)) \
# ; \
#
# if [ $$? != 0 ]; then \
#
# KEEP SEPA-LIBS:
#
# rm -f $(SYSROOT_LIB)/$(firstword $(LIBA_TARGET_$(d))) $(SYSROOT_LIB)/$(firstword $(LIBSO_TARGET_$(d))) 2>/dev/null; \
#
ifdef COMP_LIB
define Build_CompLib
( \
if [ "$(strip $(1))" = "FORCE" ] || \
[ "$$(echo $(LDFLAGS_$(strip $(1)))|grep -wo -- '-l$(COMP_LIB_NAME)')" != "" ]; then \
( \
$(foreach d,$(COMP_LIB_COMPONENTS), \
[ -f $(STAMP_DIR)/$(subst /,~,$(d)).build.done ] || \
set -o pipefail && \
$(MAKE) --no-print-directory -C $(OUTPUT_DIR)/$(d) $(firstword $(LIBA_TARGET_$(d))) $(firstword $(LIBSO_TARGET_$(d))) && set +x; \
RETVAL=$$?; \
if [ $${RETVAL} != 0 ]; then \
exit $${RETVAL}; \
fi; \
) \
); \
if [ ! -f $(SYSROOT_LIB)/$(COMP_LIB) ]; then \
$(call Info_CompLib,$(COMP_LIB_NAME),$(COMP_LIB_OBJS)); \
fi; \
$(call Finalize_CompLib,$(COMP_LIB_OBJS),$(SYSROOT_LIB),$(COMP_LIB_NAME)); \
fi \
)
endef
else
define Build_CompLib
true
endef
endif
define Relative_TcPath
( \
case $(1) in \
xtensa-lx106-elf-gcc ) \
echo "gcc-xtensa-lx106-linux/main/bin" ;; \
arm-none-eabi-gcc ) \
echo "gcc-arm-none-eabi-linux/main/bin" ;; \
esac \
)
endef
define Gitrepo_TcPath
( \
case $(1) in \
xtensa-lx106-elf-gcc ) \
echo "gcc-xtensa-lx106-linux" ;; \
arm-none-eabi-gcc ) \
echo "gcc-arm-none-eabi-linux" ;; \
esac \
)
endef
define CompLib_Map
$(eval \
COMP_LIB_COMPONENTS += \
$(if \
$(filter y,$($(strip $(1)))),$(foreach M,$(strip $(2)),$(if $(filter $(strip $(M)),$(COMP_LIB_COMPONENTS)),,$(strip $(M)))) \
) \
)
endef
OMIT_GOALS := distclean clean env help config reconfig menuconfig
ifeq (,$(filter $(OMIT_GOALS),$(MAKECMDGOALS)))
define Conflict_Relation
$(if $(filter y,$($(strip $(1)))), \
$(if $(filter y,$($(strip $(2)))), \
$(error INVALID CONFIG: '$(strip $(1)) = $($(strip $(1)))' conflicts with '$(strip $(2)) = $($(strip $(2)))' at same time!), \
), \
)
endef
define Present1_Relation
$(if $(filter n,$($(strip $(1)))), \
$(if $(filter n,$($(strip $(2)))), \
$(error INVALID CONFIG: '$(strip $(1)) = $($(strip $(1)))' conflicts with '$(strip $(2)) = $($(strip $(2)))' at same time!), \
), \
)
endef
define Requires_Relation
$(if $(filter y,$($(strip $(1)))), \
$(if $(filter y,$($(strip $(2)))),, \
$(error INVALID CONFIG: '$(strip $(2)) = $($(strip $(2)))' breaks dependency since '$(strip $(1)) = $($(strip $(1)))'!), \
), \
)
endef
else # ifeq (,$(filter $(OMIT_GOALS),$(MAKECMDGOALS)))
define Conflict_Relation
endef
define Present1_Relation
endef
define Requires_Relation
endef
endif # ifeq (,$(filter $(OMIT_GOALS),$(MAKECMDGOALS)))