
sample: examples\aliyun_iotkit_csdk_mqtt project: board\TencentOS_tiny_EVB_MX_Plus\KEIL\aliyun_iotkit_csdk_mqtt
217 lines
7.3 KiB
Makefile
217 lines
7.3 KiB
Makefile
.PHONY: doc detect config reconfig toolchain sub-mods final-out env cmake one help
|
|
|
|
all: detect config toolchain sub-mods final-out
|
|
$(TOP_Q) \
|
|
if [ -f $(STAMP_PRJ_CFG) ]; then \
|
|
$(RECURSIVE_MAKE) toolchain; \
|
|
rm -f $(STAMP_PRJ_CFG); \
|
|
fi
|
|
@rm -rf $(STAMP_DIR)
|
|
|
|
RESET_ENV_VARS := \
|
|
CROSS_PREFIX \
|
|
CFLAGS \
|
|
HOST \
|
|
LDFLAGS \
|
|
|
|
help:
|
|
@echo -e "\033[1;37m[$(RULE_DIR)/docs]\e[0m"
|
|
@echo ""
|
|
@cat $(RULE_DIR)/docs/Help.md
|
|
@echo ""
|
|
|
|
doc:
|
|
$(TOP_Q)rm -rf $(DOXYGEN_DIR)/html; mkdir -p $(DOXYGEN_DIR)
|
|
$(TOP_Q) \
|
|
$(SED) \
|
|
-e 's:^PROJECT_NAME.*:PROJECT_NAME = $(PRJ_NAME):g;' \
|
|
-e 's:^PROJECT_NUMBER.*:PROJECT_NUMBER = $(PRJ_VERSION):g;' \
|
|
-e 's:^OUTPUT_DIRECTORY.*:OUTPUT_DIRECTORY = $(DOXYGEN_DIR):g;' \
|
|
build-rules/misc/Doxyfile.tpl > $(OUTPUT_DIR)/.doxygen.cfg
|
|
$(TOP_Q)doxygen $(OUTPUT_DIR)/.doxygen.cfg
|
|
|
|
detect:
|
|
@if [ -d .git ]; then \
|
|
mkdir -p .git/hooks; \
|
|
for i in $(RULE_DIR)/hooks/*; do \
|
|
cp -f $$i .git/hooks && chmod a+x .git/hooks/$$(basename $$i); \
|
|
done; \
|
|
fi
|
|
|
|
prune:
|
|
@echo "$(TOP_DIR).pkgs directory removed!"|grep --color ".*"
|
|
@rm -rf $(TOP_DIR).pkgs
|
|
@$(MAKE) --no-print-directory distclean
|
|
|
|
unzip: config $(STAMP_BLD_VAR)
|
|
@echo "Components: "
|
|
@echo ""
|
|
@for i in $(ALL_SUB_DIRS); do \
|
|
$(MAKE) --no-print-directory pre-build target-$${i} ; \
|
|
echo -ne "\r. $${i}"; \
|
|
echo -e " "; \
|
|
done
|
|
@echo ""
|
|
|
|
cmake:
|
|
$(TOP_Q)$(MAKE) -s distclean
|
|
$(TOP_Q)$(MAKE) -s DEFAULT_BLD=$(RULE_DIR)/misc/config.generic.cmake config
|
|
$(TOP_Q)$(foreach V,$(INFO_ENV_VARS),$(V)="$($(V))") CFLAGS=$(CFLAGS) \
|
|
SEP_LIBS="$$(grep -m 1 '^COMP_LIB_FILES' $(STAMP_BLD_ENV) | cut -d' ' -f3-)" \
|
|
bash $(if $(TOP_Q),,-x) $(RULE_DIR)/scripts/gen_top_cmake.sh $(TOP_DIR)/CMakeLists.txt
|
|
$(TOP_Q)for D in $(ALL_SUB_DIRS); do \
|
|
echo "+ $${D}"; \
|
|
$(MAKE) --no-print-directory -C $(OUTPUT_DIR)/$${D} cmake; \
|
|
done
|
|
$(TOP_Q)echo ""
|
|
|
|
one: COMP_LIB_OBJS = $(foreach V,$(COMP_LIB_COMPONENTS),$(foreach U,$(LIB_OBJS_$(V)),$(V)/$(U)))
|
|
one:
|
|
$(TOP_Q)$(foreach V,$(INFO_ENV_VARS),$(V)="$($(V))") \
|
|
CFLAGS="$(subst ",,$(CFLAGS))" \
|
|
ALL_LIBS="$(strip $(foreach V,$(SUBDIRS),$(LIBA_TARGET_$(V))))" \
|
|
ALL_PROG="$(strip $(foreach V,$(SUBDIRS) $(COMP_LIB_COMPONENTS),$(TARGET_$(V))))" \
|
|
COMP_LIB_OBJS="$(COMP_LIB_OBJS)" \
|
|
bash $(RULE_DIR)/scripts/gen_one_makefile.sh
|
|
|
|
config:
|
|
|
|
@mkdir -p $(OUTPUT_DIR) $(STAMP_DIR) $(INSTALL_DIR)
|
|
@mkdir -p $(SYSROOT_BIN) $(SYSROOT_INC) $(SYSROOT_LIB)
|
|
|
|
$(TOP_Q) \
|
|
if [ -f $(STAMP_BLD_VAR) ]; then \
|
|
if [ "$$($(SED) '/[-_/a-zA-Z0-9]* = *..*/d' $(STAMP_BLD_VAR)|wc -l|$(SED) 's:^ *::g')" != "0" ]; then \
|
|
rm -vf $(STAMP_BLD_VAR); \
|
|
fi \
|
|
fi
|
|
|
|
$(TOP_Q)+( \
|
|
if [ -f $(CONFIG_TPL) ]; then \
|
|
if [ "$(filter comp-lib,$(MAKECMDGOALS))" = "" ]; then \
|
|
printf "BUILDING WITH EXISTING CONFIGURATION:\n\n"; \
|
|
command grep -m 1 "VENDOR *:" $(CONFIG_TPL)|cut -c 3-; \
|
|
command grep -m 1 "MODEL *:" $(CONFIG_TPL)|cut -c 3-; \
|
|
echo ""; \
|
|
fi \
|
|
else \
|
|
if ([ "$(MAKECMDGOALS)" = "all" ]) || ([ "$(DEFAULT_BLD)" != "" ] && [ -f $(DEFAULT_BLD) ] && \
|
|
([ "$(DEFAULT_BLD)" = "$(RULE_DIR)/misc/config.generic.default" ] \
|
|
|| [ "$(MAKECMDGOALS)" = "" ] || [ "$(MAKECMDGOALS)" = "config" ])); then \
|
|
printf "# Automatically Generated Section End\n\n" >> $(CONFIG_TPL); \
|
|
printf "# %-10s %s\n" "VENDOR :" $$(basename $(DEFAULT_BLD)|cut -d. -f2) >> $(CONFIG_TPL); \
|
|
printf "# %-10s %s\n" "MODEL :" $$(basename $(DEFAULT_BLD)|cut -d. -f3) >> $(CONFIG_TPL); \
|
|
cat $(DEFAULT_BLD) >> $(CONFIG_TPL); \
|
|
else \
|
|
printf "SELECT A CONFIGURATION:\n\n"; \
|
|
LIST=$$(for i in $(CONFIG_DIR)/config.*.*; do basename $${i}; done|sort); \
|
|
select V in $${LIST}; do \
|
|
echo ""; \
|
|
printf "# Automatically Generated Section End\n\n" >> $(CONFIG_TPL); \
|
|
printf "# %-10s %s\n" "VENDOR :" $$(echo $${V}|cut -d. -f2) >> $(CONFIG_TPL); \
|
|
printf "# %-10s %s\n" "MODEL :" $$(echo $${V}|cut -d. -f3) >> $(CONFIG_TPL); \
|
|
cp -f -P $(IMPORT_DIR)/$$(echo $${V}|cut -d. -f2)/$(PREBUILT_LIBDIR)/*.so* $(SYSROOT_LIB) 2>/dev/null; \
|
|
cat $(CONFIG_DIR)/$${V} >> $(CONFIG_TPL); \
|
|
break; \
|
|
done; \
|
|
fi && \
|
|
printf "SELECTED CONFIGURATION:\n\n" && \
|
|
command grep -m 1 "VENDOR *:" $(CONFIG_TPL)|cut -c 3- && \
|
|
command grep -m 1 "MODEL *:" $(CONFIG_TPL)|cut -c 3- && \
|
|
echo ""; \
|
|
if [ "$(MAKECMDGOALS)" = "config" ]; then true; else \
|
|
if [ "$(DEFAULT_BLD)" = "" ]; then \
|
|
touch $(STAMP_PRJ_CFG); \
|
|
fi; \
|
|
fi; \
|
|
for i in $(RESET_ENV_VARS); do unset $${i}; done; \
|
|
$(MAKE) --no-print-directory -f $(TOP_MAKEFILE) $(STAMP_BLD_VAR) unzip; \
|
|
fi)
|
|
|
|
@$(MAKE) --no-print-directory one
|
|
|
|
DL_TOOLCHAIN_VARS = \
|
|
TOOLCHAIN_DLDIR \
|
|
OUTPUT_DIR \
|
|
|
|
toolchain:
|
|
@$(foreach V,$(DL_TOOLCHAIN_VARS),$(V)=$($(V))) \
|
|
CC=$(shell basename $(CC)) \
|
|
AR=$(shell basename $(AR)) \
|
|
RELPATH=` $(call Relative_TcPath,$(shell basename $(CC))) ` \
|
|
GITPATH=` $(call Gitrepo_TcPath,$(shell basename $(CC))) ` \
|
|
bash $(RULE_DIR)/scripts/gen_cross_toolchain.sh
|
|
|
|
reconfig: distclean
|
|
$(TOP_Q)+( \
|
|
if [ -d $(CONFIG_DIR) ]; then \
|
|
$(RECURSIVE_MAKE) config DEFAULT_BLD=not-exist-actually; \
|
|
else \
|
|
$(RECURSIVE_MAKE) config; \
|
|
fi)
|
|
$(TOP_Q)rm -f $(STAMP_PRJ_CFG)
|
|
|
|
clean:
|
|
$(TOP_Q) \
|
|
|
|
$(TOP_Q) \
|
|
rm -rf \
|
|
$(LIBOBJ_TMPDIR) \
|
|
$(COMPILE_LOG) \
|
|
$(DIST_DIR)/* \
|
|
$(STAMP_DIR) \
|
|
$(STAMP_LCOV) \
|
|
$(SYSROOT_INC)/* $(SYSROOT_LIB)/* $(SYSROOT_LIB)/../bin/* \
|
|
$(shell $(SHELL_DBG) find $(OUTPUT_DIR) -name "$(COMPILE_LOG)" \
|
|
-or -name "$(WARNING_LOG)" \
|
|
-or -name "$(STAMP_BUILD)" \
|
|
-or -name "$(STAMP_INSTALL)" \
|
|
-or -name "$(STAMP_POSTINS)" \
|
|
-or -name "*.so" \
|
|
-or -name "*.a" \
|
|
-or -name "*.o" \
|
|
-or -name "*.d" \
|
|
-or -name "*.gc*" \
|
|
| grep -v '$(OUTPUT_DIR)/compiler' \
|
|
2>/dev/null)
|
|
|
|
distclean:
|
|
$(TOP_Q) \
|
|
rm -rf \
|
|
$(CONFIG_TPL) $(COMPILE_LOG) \
|
|
$(STAMP_PRJ_CFG) $(STAMP_BLD_ENV) $(STAMP_BLD_VAR) $(STAMP_POST_RULE) $(STAMP_LCOV) \
|
|
$(DIST_DIR) $(STAMP_DIR) *.gcda \
|
|
|
|
$(TOP_Q) \
|
|
if [ -d $(OUTPUT_DIR) ]; then \
|
|
cd $(OUTPUT_DIR); \
|
|
if [ "$(CONFIG_TOOLCHAIN_NAME)" = "" ]; then \
|
|
rm -rf *; \
|
|
else \
|
|
rm -rf $$(ls -I $(CONFIG_TOOLCHAIN_NAME)); \
|
|
fi \
|
|
fi
|
|
|
|
ifeq ($(shell uname),Darwin)
|
|
KCONFIG_MCONF := tools/prebuilt/macos/kconfig-frontends-mac/kconfig-mconf
|
|
else
|
|
KCONFIG_MCONF := tools/prebuilt/ubuntu/bin/kconfig-mconf
|
|
endif
|
|
|
|
COMMON_CONFIG_ENV = \
|
|
KCONFIG_CONFIG=mconf.config \
|
|
KCONFIG_AUTOCONFIG=$(OUTPUT_DIR)/auto.conf \
|
|
KCONFIG_AUTOHEADER=$(OUTPUT_DIR)/autoconf.h \
|
|
CONFIG_=FEATURE_ \
|
|
|
|
menuconfig: $(KCONFIG_MCONF)
|
|
$(TOP_Q)chmod a+x $(KCONFIG_MCONF) $(if $(TOP_Q),2>/dev/null) || true
|
|
$(TOP_Q)$(COMMON_CONFIG_ENV) $^ -s $(TOP_DIR)/tools/Config.in $(if $(TOP_Q),2>/dev/null)
|
|
$(TOP_Q) \
|
|
( \
|
|
if [ ! -f mconf.config ]; then exit 0; fi; \
|
|
\
|
|
cp -Lf mconf.config make.settings; \
|
|
rm -f mconf.config*; \
|
|
)
|