
sample: examples\aliyun_iotkit_csdk_mqtt project: board\TencentOS_tiny_EVB_MX_Plus\KEIL\aliyun_iotkit_csdk_mqtt
198 lines
6.4 KiB
Makefile
198 lines
6.4 KiB
Makefile
include $(RULE_DIR)/settings.mk
|
|
sinclude $(CONFIG_TPL)
|
|
|
|
export PATH := $(PATH):$(TOOLCHAIN_DLDIR)/main/bin
|
|
unexport VERBOSE
|
|
unexport DEBUG
|
|
|
|
TOPDIR_NAME := $(shell $(SHELL_DBG) basename $(TOP_DIR))
|
|
LIBOBJ_TMPDIR := $(OUTPUT_DIR)/lib$(TOPDIR_NAME).objs
|
|
|
|
SYSROOT_BIN := $(OUTPUT_DIR)${bindir}
|
|
SYSROOT_INC := $(OUTPUT_DIR)${incdir}
|
|
SYSROOT_LIB := $(OUTPUT_DIR)${libdir}
|
|
CONFIG_VENDOR := $(shell grep -m 1 "VENDOR *:" $(CONFIG_TPL) 2>/dev/null|awk '{ print $$NF }')
|
|
IMPORT_VDRDIR := $(IMPORT_DIR)/$(CONFIG_VENDOR)
|
|
|
|
HOST_ARCH_BITS := $(shell [ "$$(uname -m)" = "x86_64" ] && echo -n "64" || echo -n "32")
|
|
PREBUILT_LIBDIR := $(if $(strip $(filter 64,$(HOST_ARCH_BITS)) $(CROSS_PREFIX)),libs,32bit-libs)
|
|
PREBUILT_BINDIR := $(if $(strip $(filter 64,$(HOST_ARCH_BITS)) $(CROSS_PREFIX)),bin,32bit-bin)
|
|
|
|
CONFIG_VSP_WEBSITE ?= http://gitlab.alibaba-inc.com/yusheng.yx/alink-vendor-support-package
|
|
|
|
ifeq ($(shell uname), Linux)
|
|
RPATH_CFLAGS += -Wl,-rpath='$$''ORIGIN/../lib'
|
|
endif
|
|
|
|
# CFLAGS contains '$' causes ./configure failure in ORIGIN packages
|
|
#
|
|
# Instead of:
|
|
#
|
|
# ifeq ($(shell uname), Linux)
|
|
# CFLAGS += -Wl,-rpath='$$''ORIGIN/../lib'
|
|
# CFLAGS := $(sort $(CFLAGS))
|
|
# endif
|
|
#
|
|
# Write @ package's makefile:
|
|
#
|
|
# ./configure \
|
|
# CFLAGS='$(CFLAGS) -Wl,-rpath='\''$$$$'\''ORIGIN/../lib' \
|
|
# --prefix=...
|
|
#
|
|
# To pass in RPATH related link flags
|
|
|
|
COMP_LIB_NAME := $(subst lib,,$(subst .so,,$(subst .a,,$(COMP_LIB))))
|
|
COMP_LIB_OBJS = $(foreach d,$(COMP_LIB_COMPONENTS),$(LIBOBJ_TMPDIR)/$(d)/*.o)
|
|
RECURSIVE_MAKE := $(MAKE) $(if $(TOP_Q),-s) -C $(TOP_DIR) -f $(TOP_MAKEFILE)
|
|
ALL_SUB_DIRS := $(shell find -L $(TOP_DIR) \
|
|
! -path "$(OUTPUT_DIR)/*" \
|
|
! -path "$(TOP_DIR)/$(SHADOW_DIR)/*" \
|
|
-name "$(MAKE_SEGMENT)" 2>/dev/null \
|
|
| $(SED) 's,$(TOP_DIR)[/]*,,;s,[/]*$(MAKE_SEGMENT),,')
|
|
|
|
SHOW_ENV_VARS := \
|
|
MODULE_NAME SUBDIRS PKG_NAME PKG_RPATH PKG_SOURCE PKG_SWITCH_V PKG_SWITCH \
|
|
HOST_ARCH_BITS PREBUILT_LIBDIR RPATH_CFLAGS EXTRA_INCLUDE_DIRS \
|
|
CROSS_PREFIX DEPENDS CFLAGS CCLD LDFLAGS \
|
|
CC LD AR STRIP OBJCOPY COMP_LIB ALL_SUB_DIRS LIBOBJ_TMPDIR \
|
|
MAKE_ENV_VARS DEFAULT_BLD EXTRA_CFLAGS \
|
|
LIBA_TARGET LIBSO_TARGET TARGET KMOD_TARGET \
|
|
SRCS OBJS LIB_SRCS LIB_OBJS LIB_HDRS_DIR LIB_HEADERS EXTRA_SRCS \
|
|
$(foreach M,$(LIBA_TARGET),LIB_SRCS_$(subst .a,,$(subst lib,,$(M)))) \
|
|
INTERNAL_INCLUDES TOP_DIR PRJ_NAME PRJ_VERSION COMP_LIB_COMPONENTS \
|
|
IMPORT_DIR IMPORT_VDRDIR CONFIG_DIR PACKAGE_DIR EXTERNAL_INCLUDES \
|
|
CONFIG_LIB_EXPORT OBJCOPY_FLAGS CONFIG_VENDOR COVERAGE_PROGS COVERAGE_CMD \
|
|
|
|
INFO_ENV_VARS := $(SHOW_ENV_VARS) \
|
|
ALL_SUB_DIRS SED RULE_DIR OUTPUT_DIR MAKE_SEGMENT COMP_LIB_NAME LIBOBJ_TMPDIR \
|
|
COMP_LIB_FILES STAMP_BLD_ENV STAMP_BLD_VAR EXTRA_INSTALL_HDRS FINAL_DIR DIST_DIR \
|
|
WIN32_CMAKE_SKIP EXTRA_INCLUDE_DIRS NOEXEC_CMAKE_DIRS COMP_LIB \
|
|
WITH_LCOV LCOV_DIR UTEST_PROG COVERAGE_CMD STAMP_LCOV CMAKE_EXPORT_LIBS \
|
|
|
|
INFO_ENV_VARS := $(filter-out CFLAGS,$(INFO_ENV_VARS))
|
|
|
|
ifndef CONFIG_LIB_EXPORT
|
|
ifeq (y,$(strip $(CONFIG_EMB_GATEWAY_SDK)))
|
|
CONFIG_LIB_EXPORT := dynamic
|
|
else
|
|
ifeq (y,$(strip $(CONFIG_EMB_BASIC_SDK)))
|
|
CONFIG_LIB_EXPORT := static
|
|
else
|
|
ifeq (y,$(strip $(CONFIG_EMB_ROUTER_SDK)))
|
|
CONFIG_LIB_EXPORT := dynamic
|
|
endif # ROUTER
|
|
endif # BASIC
|
|
endif # GATEWAY
|
|
else
|
|
ifneq (static,$(CONFIG_LIB_EXPORT))
|
|
ifneq (dynamic,$(CONFIG_LIB_EXPORT))
|
|
$(error CONFIG_LIB_EXPORT($(CONFIG_LIB_EXPORT)) is neither 'static' or 'dynamic')
|
|
endif # dynamic
|
|
endif # static
|
|
endif # CONFIG_LIB_EXPORT
|
|
|
|
ifneq (,$(shell ls $(STAMP_BLD_VAR) 2>/dev/null))
|
|
ifeq (,$(filter reconfig distclean,$(MAKECMDGOALS)))
|
|
ifeq (0,$(strip $(shell $(SED) '/[-_/a-zA-Z0-9]* = *..*/d' $(STAMP_BLD_VAR)|wc -l)))
|
|
include $(STAMP_BLD_VAR)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
.PHONY: all clean FORCE
|
|
|
|
ifdef SUBDIRS
|
|
include $(RULE_DIR)/_rules-top.mk
|
|
include $(RULE_DIR)/_rules-prefix.mk
|
|
include $(RULE_DIR)/_rules-repo.mk
|
|
|
|
CROSS_CANDIDATES := CC CXX AR LD STRIP OBJCOPY
|
|
export CC := $(strip $(if $(OVERRIDE_CC), $(OVERRIDE_CC), $(CROSS_PREFIX)gcc))
|
|
export CXX := $(strip $(if $(OVERRIDE_CXX), $(OVERRIDE_CXX), $(CROSS_PREFIX)g++))
|
|
export AR := $(strip $(if $(OVERRIDE_AR), $(OVERRIDE_AR), $(CROSS_PREFIX)ar))
|
|
export LD := $(strip $(if $(OVERRIDE_LD), $(OVERRIDE_LD), $(CROSS_PREFIX)ld))
|
|
export OBJCOPY := $(strip $(if $(OVERRIDE_OBJCOPY),$(OVERRIDE_OBJCOPY),$(CROSS_PREFIX)objcopy))
|
|
|
|
ifneq (,$(OVERRIDE_STRIP))
|
|
export STRIP := $(OVERRIDE_STRIP)
|
|
else
|
|
ifneq (,$(CROSS_PREFIX))
|
|
export STRIP := $(CROSS_PREFIX)strip
|
|
else
|
|
export STRIP := true
|
|
endif
|
|
endif
|
|
|
|
ifeq (gcc,$(strip $(CC)))
|
|
export STRIP := strip
|
|
endif
|
|
|
|
ifneq (y,$(shell which $(CC) > /dev/null 2>&1 && echo 'y'))
|
|
LOCAL_TCDIR := $(TOOLCHAIN_DLDIR)/$(shell $(call Relative_TcPath,$(CC)))
|
|
export CC := $(LOCAL_TCDIR)/$(CC)
|
|
export AR := $(LOCAL_TCDIR)/$(AR)
|
|
export LD := $(LOCAL_TCDIR)/$(LD)
|
|
export OBJCOPY := $(LOCAL_TCDIR)/$(OBJCOPY)
|
|
export STRIP := $(LOCAL_TCDIR)/$(STRIP)
|
|
endif
|
|
|
|
ifneq (,$(filter -m32,$(strip $(CFLAGS))))
|
|
PREBUILT_LIBDIR := 32bit-libs
|
|
PREBUILT_BINDIR := 32bit-bin
|
|
endif
|
|
|
|
include $(RULE_DIR)/_rules-dist.mk
|
|
include $(RULE_DIR)/_rules-complib.mk
|
|
include $(RULE_DIR)/_rules-submods.mk
|
|
|
|
env:
|
|
$(TOP_Q)echo ""
|
|
$(TOP_Q)printf -- "-----------------------------------------------------------------\n"
|
|
$(TOP_Q)$(foreach var,$(SHOW_ENV_VARS),$(call Dump_Var,$(var)))
|
|
$(TOP_Q)printf -- "-----------------------------------------------------------------\n"
|
|
$(TOP_Q)echo ""
|
|
$(TOP_Q)$(call $(POST_ENV_HOOK))
|
|
|
|
else # ifdef SUBDIRS
|
|
|
|
PKG_RPATH := $(shell echo $(CURDIR)|$(SED) 's,$(OUTPUT_DIR)/*,,g')
|
|
PKG_NAME ?= $(shell basename $(CURDIR))
|
|
PKG_SOURCE ?= $(shell [ -d $(PACKAGE_DIR) ] && find $(PACKAGE_DIR) -name "$(PKG_NAME)*" | head -1)
|
|
|
|
DEPENDS += $(DEPENDS_$(MODULE_NAME))
|
|
DEPENDS := $(sort $(strip $(DEPENDS)))
|
|
|
|
ifdef CONFIG_SWITCH
|
|
PKG_SWITCH_V = $(CONFIG_SWITCH)
|
|
else
|
|
PKG_SWITCH_V := CONFIG_$(PKG_RPATH)
|
|
endif
|
|
PKG_SWITCH = $($(PKG_SWITCH_V))
|
|
|
|
ifdef ORIGIN
|
|
|
|
include $(RULE_DIR)/_rules-origin.mk
|
|
|
|
else # ifdef ORIGIN
|
|
|
|
ifneq (,$(filter -m32,$(strip $(CFLAGS))))
|
|
PREBUILT_LIBDIR := 32bit-libs
|
|
PREBUILT_BINDIR := 32bit-bin
|
|
endif
|
|
|
|
include $(RULE_DIR)/_rules-flat.mk
|
|
|
|
endif # ifdef ORIGIN
|
|
|
|
include $(RULE_DIR)/_rules-modinfo.mk
|
|
|
|
endif # ifdef SUBDIRS
|
|
|
|
sinclude $(STAMP_POST_RULE)
|
|
|
|
ifdef UTEST_PROG
|
|
COVERAGE_LIST += \"./$(strip $(UTEST_PROG) --list)\"
|
|
COVERAGE_LIST += \"./$(strip $(UTEST_PROG) --verbose=4)\"
|
|
include $(RULE_DIR)/_rules-coverage.mk
|
|
endif
|