confvar=$(call merge,$(foreach v,$(1),$(if $($(v)),y,n)))
strip_last=$(patsubst %.$(lastword $(subst .,$(space),$(1))),%,$(1))
+define sep
+
+endef
+
_SINGLE=export MAKEFLAGS=$(space);
CFLAGS:=
ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))
HOST_FPIC:=-fPIC
ARCH_SUFFIX:=
+GCC_ARCH:=
+
+ifneq ($(filter -march=armv%,$(TARGET_OPTIMIZATION)),)
+ ARCH_SUFFIX:=_$(patsubst -march=arm%,%,$(filter -march=armv%,$(TARGET_OPTIMIZATION)))
+ GCC_ARCH:=$(patsubst -march=%,%,$(filter -march=armv%,$(TARGET_OPTIMIZATION)))
+endif
ifneq ($(findstring -mips32r2,$(TARGET_OPTIMIZATION)),)
ARCH_SUFFIX:=_r2
endif
-ifneq ($(findstring -march=armv4,$(TARGET_OPTIMIZATION)),)
- ARCH_SUFFIX:=_v4
-endif
-ifneq ($(findstring -march=armv4t,$(TARGET_OPTIMIZATION)),)
- ARCH_SUFFIX:=_v4t
-endif
-ifneq ($(findstring -march=armv5t,$(TARGET_OPTIMIZATION)),)
- ARCH_SUFFIX:=_v5t
-endif
-ifneq ($(findstring -march=armv5te,$(TARGET_OPTIMIZATION)),)
- ARCH_SUFFIX:=_v5te
+ifdef CONFIG_HAS_SPE_FPU
+ TARGET_SUFFIX:=$(TARGET_SUFFIX)spe
endif
DL_DIR:=$(if $(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(TOPDIR)/dl)
LIBCV:=$(call qstrip,$(CONFIG_LIBC_VERSION))
REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))
GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux
- DIR_SUFFIX:=_$(LIBC)-$(LIBCV)$(if $(CONFIG_EABI_SUPPORT),_eabi)
+ DIR_SUFFIX:=_$(LIBC)-$(LIBCV)$(if $(CONFIG_arm),_eabi)
BUILD_DIR:=$(BUILD_DIR_BASE)/target-$(ARCH)$(ARCH_SUFFIX)$(DIR_SUFFIX)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
STAGING_DIR:=$(TOPDIR)/staging_dir/target-$(ARCH)$(ARCH_SUFFIX)$(DIR_SUFFIX)
BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)$(DIR_SUFFIX)
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3)
TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
TARGET_LDFLAGS:=-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
+ifneq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
+LIBGCC_S_PATH=$(realpath $(wildcard $(call qstrip,$(CONFIG_LIBGCC_ROOT_DIR))/$(call qstrip,$(CONFIG_LIBGCC_FILE_SPEC))))
+LIBGCC_S=$(if $(LIBGCC_S_PATH),-L$(dir $(LIBGCC_S_PATH)) -lgcc_s)
+else
LIBGCC_S=$(if $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so),-L$(TOOLCHAIN_DIR)/lib -lgcc_s,$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.a))
+endif
+ifdef CONFIG_USE_UCLIBC
+LIBRPC=-lrpc
+endif
+LIBRPC_DEPENDS=+USE_UCLIBC:librpc
ifndef DUMP
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
ifneq ($(TOOLCHAIN_LIB_DIRS),)
TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS))
endif
+ TOOLCHAIN_DIR:=$(TOOLCHAIN_ROOT_DIR)
endif
endif
endif
INSTALL_CONF:=install -m0600
ifneq ($(CONFIG_CCACHE),)
- # FIXME: move this variable to a better location
- export CCACHE_DIR=$(STAGING_DIR)/ccache
TARGET_CC:= ccache $(TARGET_CC)
TARGET_CXX:= ccache $(TARGET_CXX)
endif
RSTRIP:= \
NM="$(TARGET_CROSS)nm" \
STRIP="$(STRIP)" \
- STRIP_KMOD="$(TARGET_CROSS)strip --strip-unneeded --remove-section=.comment --remove-section=.pdr --remove-section=.mdebug.abi32" \
+ STRIP_KMOD="$(TARGET_CROSS)strip --strip-unneeded -R .comment -R .pdr -R .mdebug.abi32 -R .note.gnu.build-id -R .gnu.attributes -R .reginfo -x" \
$(SCRIPT_DIR)/rstrip.sh
endif
DISABLE_IPV6:=--disable-ipv6
endif
-ifeq ($(CONFIG_LARGEFILE),y)
- DISABLE_LARGEFILE:=
-else
- DISABLE_LARGEFILE:=--disable-largefile
-endif
-
ifeq ($(CONFIG_TAR_VERBOSITY),y)
TAR_OPTIONS:=-xvf -
else
TAR_OPTIONS:=-xf -
endif
+ifeq ($(CONFIG_BUILD_LOG),y)
+ BUILD_LOG:=1
+endif
+
define shvar
V_$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
endef
# Execute commands under flock
# $(1) => The shell expression.
# $(2) => The lock name. If not given, the global lock will be used.
-# $(3) => The filedescriptor used for the lock. Defaults to 1023.
define locked
- ( $(STAGING_DIR_HOST)/bin/flock -x $(if $(3),$(3),1023) && \
- $(1) \
- ) $(if $(3),$(strip $(3)),1023)>$(TMP_DIR)/.$(if $(2),$(strip $(2)),global).flock
+ SHELL= \
+ $(STAGING_DIR_HOST)/bin/flock \
+ $(TMP_DIR)/.$(if $(2),$(strip $(2)),global).flock \
+ -c '$(subst ','\'',$(1))'
endef
# file extension