diff --git a/package/bluez_utils/bluez_utils.mk b/package/bluez_utils/bluez_utils.mk index 91c2905603..1c93f2e5f5 100644 --- a/package/bluez_utils/bluez_utils.mk +++ b/package/bluez_utils/bluez_utils.mk @@ -54,8 +54,7 @@ BLUEZ_UTILS_CONF_OPTS += \ --disable-usb endif -# PIE is broken for m68k -ifeq ($(BR2_m68k),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) BLUEZ_UTILS_CONF_OPTS += --disable-pie endif diff --git a/package/cifs-utils/cifs-utils.mk b/package/cifs-utils/cifs-utils.mk index c90a504103..6cd45e0cfb 100644 --- a/package/cifs-utils/cifs-utils.mk +++ b/package/cifs-utils/cifs-utils.mk @@ -10,7 +10,7 @@ CIFS_UTILS_SITE = http://ftp.samba.org/pub/linux-cifs/cifs-utils CIFS_UTILS_LICENSE = GPLv3+ CIFS_UTILS_LICENSE_FILES = COPYING -ifneq ($(BR2_STATIC_LIBS)$(BR2_m68k),) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) CIFS_UTILS_CONF_OPTS += --disable-pie endif diff --git a/package/libmemcached/libmemcached.mk b/package/libmemcached/libmemcached.mk index a5ea4f5d3e..36d0913962 100644 --- a/package/libmemcached/libmemcached.mk +++ b/package/libmemcached/libmemcached.mk @@ -18,9 +18,7 @@ LIBMEMCACHED_AUTORECONF = YES LIBMEMCACHED_LICENSE = BSD-3c LIBMEMCACHED_LICENSE_FILES = COPYING -# Help libmemcached to understand that -fPIE and -pie should not be -# used when linking statically. -ifeq ($(BR2_STATIC_LIBS),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) LIBMEMCACHED_CONF_ENV += \ ax_cv_check_cflags__Werror__fPIE=no \ ax_cv_check_cflags__Werror__pie=no \ diff --git a/package/libsodium/libsodium.mk b/package/libsodium/libsodium.mk index 13dba8dec3..a8c28a6cf0 100644 --- a/package/libsodium/libsodium.mk +++ b/package/libsodium/libsodium.mk @@ -10,7 +10,7 @@ LIBSODIUM_LICENSE = ISC LIBSODIUM_LICENSE_FILES = LICENSE LIBSODIUM_INSTALL_STAGING = YES -ifeq ($(BR2_arc),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) LIBSODIUM_CONF_OPTS += --disable-pie endif diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk index 0341670491..fed82739ad 100644 --- a/package/lvm2/lvm2.mk +++ b/package/lvm2/lvm2.mk @@ -43,7 +43,7 @@ else LVM2_CONF_OPTS += --disable-applib endif -ifeq ($(BR2_arc)$(BR2_m68k),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) LVM2_CONF_ENV += ac_cv_flag_HAVE_PIE=no endif diff --git a/package/openssh/openssh.mk b/package/openssh/openssh.mk index 856646c073..8f85d0a8f4 100644 --- a/package/openssh/openssh.mk +++ b/package/openssh/openssh.mk @@ -22,12 +22,7 @@ define OPENSSH_USERS sshd -1 sshd -1 * - - - SSH drop priv user endef -# uClibc toolchain for ARC doesn't support PIE at the moment -ifeq ($(BR2_arc),y) -OPENSSH_CONF_OPTS += --without-pie -endif -# PIE and static does not work on Linux -ifeq ($(BR2_STATIC_LIBS),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) OPENSSH_CONF_OPTS += --without-pie endif diff --git a/package/openswan/openswan.mk b/package/openswan/openswan.mk index 54bd4b3eff..5c8e143b4c 100644 --- a/package/openswan/openswan.mk +++ b/package/openswan/openswan.mk @@ -11,8 +11,8 @@ OPENSWAN_LICENSE_FILES = COPYING LICENSE OPENSWAN_DEPENDENCIES = host-bison host-flex gmp iproute2 OPENSWAN_MAKE_OPTS = ARCH=$(BR2_ARCH) CC="$(TARGET_CC)" \ - USERCOMPILE="$(TARGET_CFLAGS) $(if $(BR2_STATIC_LIBS),,-fPIE)" \ - USERLINK="$(TARGET_LDFLAGS) $(if $(BR2_STATIC_LIBS),,-fPIE)" \ + USERCOMPILE="$(TARGET_CFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)" \ + USERLINK="$(TARGET_LDFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)" \ INC_USRLOCAL=/usr USE_KLIPS=false USE_MAST=false USE_NM=false ifeq ($(BR2_PACKAGE_LIBCURL),y) diff --git a/package/pure-ftpd/pure-ftpd.mk b/package/pure-ftpd/pure-ftpd.mk index e1040fa159..ba4096c281 100644 --- a/package/pure-ftpd/pure-ftpd.mk +++ b/package/pure-ftpd/pure-ftpd.mk @@ -41,7 +41,7 @@ else PURE_FTPD_CONF_OPTS += --without-tls endif -ifeq ($(BR2_arc),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) PURE_FTPD_CONF_ENV += ax_cv_check_cflags___fPIE=no ax_cv_check_ldflags___fPIE=no endif diff --git a/package/quagga/quagga.mk b/package/quagga/quagga.mk index 1bbc72dee7..ad2aff4ea8 100644 --- a/package/quagga/quagga.mk +++ b/package/quagga/quagga.mk @@ -68,7 +68,7 @@ else QUAGGA_CONF_OPTS += --disable-vtysh endif -ifeq ($(BR2_arc),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) QUAGGA_CONF_OPTS += --disable-pie endif diff --git a/package/tinc/tinc.mk b/package/tinc/tinc.mk index cb0785ba34..fb15c34b74 100644 --- a/package/tinc/tinc.mk +++ b/package/tinc/tinc.mk @@ -11,7 +11,7 @@ TINC_LICENSE = GPLv2+ with OpenSSL exception TINC_LICENSE_FILES = COPYING COPYING.README TINC_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=c99" -ifeq ($(BR2_arc),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) TINC_CONF_ENV += \ ax_cv_check_cflags___fPIE=no \ ax_cv_check_ldflags___pie=no diff --git a/package/trousers/trousers.mk b/package/trousers/trousers.mk index 70daa88172..be6ce390a7 100644 --- a/package/trousers/trousers.mk +++ b/package/trousers/trousers.mk @@ -23,8 +23,7 @@ endif # workaround. TROUSERS_CONF_OPTS += --disable-usercheck -# uClibc toolchain for ARC doesn't support PIE at the moment -ifeq ($(BR2_arc),y) +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) TROUSERS_CONF_ENV += \ ax_cv_check_cflags___fPIE__DPIE=no \ ax_cv_check_ldflags___pie=no diff --git a/toolchain/Config.in b/toolchain/Config.in index a7255566f8..57523805ac 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -15,9 +15,11 @@ config BR2_TOOLCHAIN_USES_GLIBC select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_TOOLCHAIN_HAS_THREADS_NPTL select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS + select BR2_TOOLCHAIN_SUPPORTS_PIE config BR2_TOOLCHAIN_USES_UCLIBC bool + select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_arc && !BR2_m68k && !BR2_STATIC_LIBS config BR2_TOOLCHAIN_USES_MUSL bool @@ -26,6 +28,7 @@ config BR2_TOOLCHAIN_USES_MUSL select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_SUPPORTS_PIE choice prompt "Toolchain type" diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in index 65df31be9b..d69acf2644 100644 --- a/toolchain/toolchain-common.in +++ b/toolchain/toolchain-common.in @@ -39,6 +39,9 @@ config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS config BR2_TOOLCHAIN_HAS_SSP bool +config BR2_TOOLCHAIN_SUPPORTS_PIE + bool + config BR2_ENABLE_LOCALE_PURGE bool "Purge unwanted locales" help