From 50a116d27a4a960706f06150d8fba9ff6e5b5d9c Mon Sep 17 00:00:00 2001 From: Juan RP Date: Wed, 4 Mar 2015 15:17:05 +0100 Subject: [PATCH] xbps-src: set default compiler/preprocessor/linker flags via etc/conf. Rather than setting them in the build profile, just set them in etc/defaults.conf (overridable via etc/conf) to simplify the code. - Also enable _FORTIFY_SOURCE=2 in CPPFLAGS. - Also enable -z,relro in LDFLAGS. As suggested by @chneukirchen. --- common/build-profiles/armv6l-musl.sh | 4 ++-- common/build-profiles/armv6l.sh | 4 ++-- common/build-profiles/armv7l-musl.sh | 4 ++-- common/build-profiles/armv7l.sh | 4 ++-- common/build-profiles/i686-musl.sh | 4 ++-- common/build-profiles/i686.sh | 4 ++-- common/build-profiles/x86_64-musl.sh | 4 ++-- common/build-profiles/x86_64.sh | 4 ++-- common/cross-profiles/armv5te.sh | 2 -- common/cross-profiles/armv6hf-musl.sh | 2 -- common/cross-profiles/armv6hf.sh | 2 -- common/cross-profiles/armv7hf-musl.sh | 2 -- common/cross-profiles/armv7hf.sh | 2 -- common/cross-profiles/i686-musl.sh | 2 -- common/cross-profiles/i686.sh | 2 -- common/cross-profiles/mips.sh | 2 -- common/cross-profiles/mipsel.sh | 2 -- common/cross-profiles/x86_64-musl.sh | 2 -- common/xbps-src/shutils/common.sh | 11 ++++++----- etc/defaults.conf | 7 ++++--- xbps-src | 2 +- 21 files changed, 27 insertions(+), 45 deletions(-) diff --git a/common/build-profiles/armv6l-musl.sh b/common/build-profiles/armv6l-musl.sh index f46aea157f8..b34a926985a 100644 --- a/common/build-profiles/armv6l-musl.sh +++ b/common/build-profiles/armv6l-musl.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong -march=armv6 -mfpu=vfp -mfloat-abi=hard" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv6l-unknown-linux-musleabi" diff --git a/common/build-profiles/armv6l.sh b/common/build-profiles/armv6l.sh index 4385354359a..873be80a375 100644 --- a/common/build-profiles/armv6l.sh +++ b/common/build-profiles/armv6l.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong -march=armv6 -mfpu=vfp -mfloat-abi=hard" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv6l-unknown-linux-gnueabihf" diff --git a/common/build-profiles/armv7l-musl.sh b/common/build-profiles/armv7l-musl.sh index da4c4a903f1..5fc454c05f6 100644 --- a/common/build-profiles/armv7l-musl.sh +++ b/common/build-profiles/armv7l-musl.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_CXXFLAGS" XBPS_TRIPLET="armv7l-unknown-linux-musleabi" diff --git a/common/build-profiles/armv7l.sh b/common/build-profiles/armv7l.sh index 7b4fd6d34c7..87bed5995df 100644 --- a/common/build-profiles/armv7l.sh +++ b/common/build-profiles/armv7l.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv7l-unknown-linux-gnueabihf" diff --git a/common/build-profiles/i686-musl.sh b/common/build-profiles/i686-musl.sh index a086b5b4d4f..605e92595be 100644 --- a/common/build-profiles/i686-musl.sh +++ b/common/build-profiles/i686-musl.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -pipe -mtune=i686 -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-mtune=i686" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_HOST_TRIPLET="i686-unknown-linux-musl" diff --git a/common/build-profiles/i686.sh b/common/build-profiles/i686.sh index 042575d8e17..45a9117413b 100644 --- a/common/build-profiles/i686.sh +++ b/common/build-profiles/i686.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -pipe -mtune=i686 -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-mtune=i686" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="i686-pc-linux-gnu" diff --git a/common/build-profiles/x86_64-musl.sh b/common/build-profiles/x86_64-musl.sh index 973635ad67f..7f06682ceb2 100644 --- a/common/build-profiles/x86_64-musl.sh +++ b/common/build-profiles/x86_64-musl.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -mtune=generic -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-mtune=generic" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="x86_64-unknown-linux-musl" diff --git a/common/build-profiles/x86_64.sh b/common/build-profiles/x86_64.sh index 5e95cbd1060..dee94e16947 100644 --- a/common/build-profiles/x86_64.sh +++ b/common/build-profiles/x86_64.sh @@ -1,3 +1,3 @@ -XBPS_CFLAGS="-O2 -mtune=generic -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_TARGET_CFLAGS="-mtune=generic" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="x86_64-unknown-linux-gnu" diff --git a/common/cross-profiles/armv5te.sh b/common/cross-profiles/armv5te.sh index 41865026b15..b0fe7015bc1 100644 --- a/common/cross-profiles/armv5te.sh +++ b/common/cross-profiles/armv5te.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="armv5tel" XBPS_CROSS_TRIPLET="arm-linux-gnueabi" -XBPS_CFLAGS="-O2 -pipe" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=armv5te -msoft-float -mfloat-abi=soft" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/armv6hf-musl.sh b/common/cross-profiles/armv6hf-musl.sh index 5d3c62ee2bc..18aa5a7a28d 100644 --- a/common/cross-profiles/armv6hf-musl.sh +++ b/common/cross-profiles/armv6hf-musl.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="armv6l-musl" XBPS_CROSS_TRIPLET="arm-linux-musleabi" -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/armv6hf.sh b/common/cross-profiles/armv6hf.sh index e7400bf01d4..b228c1d4d04 100644 --- a/common/cross-profiles/armv6hf.sh +++ b/common/cross-profiles/armv6hf.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="armv6l" XBPS_CROSS_TRIPLET="arm-linux-gnueabihf" -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/armv7hf-musl.sh b/common/cross-profiles/armv7hf-musl.sh index e4288803cc0..f3899411778 100644 --- a/common/cross-profiles/armv7hf-musl.sh +++ b/common/cross-profiles/armv7hf-musl.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="armv7l-musl" XBPS_CROSS_TRIPLET="arm-linux-musleabi" -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/armv7hf.sh b/common/cross-profiles/armv7hf.sh index c6b1519d501..ebe274fe5db 100644 --- a/common/cross-profiles/armv7hf.sh +++ b/common/cross-profiles/armv7hf.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="armv7l" XBPS_CROSS_TRIPLET="arm-linux-gnueabihf7" -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/i686-musl.sh b/common/cross-profiles/i686-musl.sh index ab806a72867..65670d9d172 100644 --- a/common/cross-profiles/i686-musl.sh +++ b/common/cross-profiles/i686-musl.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="i686-musl" XBPS_CROSS_TRIPLET="i686-linux-musl" -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=i686" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/i686.sh b/common/cross-profiles/i686.sh index 2cf14e80e99..beff7c05285 100644 --- a/common/cross-profiles/i686.sh +++ b/common/cross-profiles/i686.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="i686" XBPS_CROSS_TRIPLET="i686-pc-linux-gnu" -XBPS_CFLAGS="-O2 -pipe" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-march=i686 -mtune=generic" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/mips.sh b/common/cross-profiles/mips.sh index 74e14a66e6a..9a79e19bdf5 100644 --- a/common/cross-profiles/mips.sh +++ b/common/cross-profiles/mips.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="mips" XBPS_CROSS_TRIPLET="mips-softfloat-linux-gnu" -XBPS_CFLAGS="-O2 -pipe" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-mtune=mips32r2 -mabi=32 -msoft-float" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/mipsel.sh b/common/cross-profiles/mipsel.sh index 7335138b946..4859250e904 100644 --- a/common/cross-profiles/mipsel.sh +++ b/common/cross-profiles/mipsel.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="mipsel" XBPS_CROSS_TRIPLET="mipsel-softfloat-linux-gnu" -XBPS_CFLAGS="-O2 -pipe" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-mtune=mips32r2 -mabi=32 -msoft-float" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/cross-profiles/x86_64-musl.sh b/common/cross-profiles/x86_64-musl.sh index d36c60f5e3a..981734179ea 100644 --- a/common/cross-profiles/x86_64-musl.sh +++ b/common/cross-profiles/x86_64-musl.sh @@ -2,7 +2,5 @@ XBPS_TARGET_ARCH="x86_64-musl" XBPS_CROSS_TRIPLET="x86_64-linux-musl" -XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -XBPS_CXXFLAGS="$XBPS_CFLAGS" XBPS_CROSS_CFLAGS="-mtune=generic" XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" diff --git a/common/xbps-src/shutils/common.sh b/common/xbps-src/shutils/common.sh index 66fc25c293a..60f6d919f67 100644 --- a/common/xbps-src/shutils/common.sh +++ b/common/xbps-src/shutils/common.sh @@ -352,17 +352,18 @@ setup_pkg() { dbgflags="-g" fi - if [ -z "$XBPS_CFLAGS" -a -z "$XBPS_CXXFLAGS" ]; then + if [ -z "$cross" ]; then if [ -z "$CHROOT_READY" ]; then source_file ${XBPS_COMMONDIR}/build-profiles/bootstrap.sh else source_file ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh fi fi - export CFLAGS="$XBPS_CFLAGS $XBPS_CROSS_CFLAGS $CFLAGS $dbgflags" - export CXXFLAGS="$XBPS_CXXFLAGS $XBPS_CROSS_CXXFLAGS $CXXFLAGS $dbgflags" - export CPPFLAGS="$XBPS_CPPFLAGS $XBPS_CROSS_CPPFLAGS $CPPFLAGS" - export LDFLAGS="$XBPS_LDFLAGS $XBPS_CROSS_LDFLAGS $LDFLAGS" + + export CFLAGS="$XBPS_TARGET_CFLAGS $XBPS_CFLAGS $XBPS_CROSS_CFLAGS $CFLAGS $dbgflags" + export CXXFLAGS="$XBPS_TARGET_CXXFLAGS $XBPS_CXXFLAGS $XBPS_CROSS_CXXFLAGS $CXXFLAGS $dbgflags" + export CPPFLAGS="$XBPS_TARGET_CPPFLAGS $XBPS_CPPFLAGS $XBPS_CROSS_CPPFLAGS $CPPFLAGS" + export LDFLAGS="$XBPS_TARGET_LDFLAGS $XBPS_LDFLAGS $XBPS_CROSS_LDFLAGS $LDFLAGS" if [ -n "$broken_as_needed" ]; then LDFLAGS="${LDFLAGS/-Wl,--as-needed/}" diff --git a/etc/defaults.conf b/etc/defaults.conf index 1264aa5451c..a8b838e3c18 100644 --- a/etc/defaults.conf +++ b/etc/defaults.conf @@ -24,15 +24,16 @@ XBPS_INSTALL_ARGS="--repository=http://repo.voidlinux.eu/current" # Native Compilation flags for C and C++. Note that these settings override # the pre-defined for the target architecture in common/build-profiles/arch.sh. # -#XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" -#XBPS_CXXFLAGS="${XBPS_CFLAGS}" +XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" +XBPS_CXXFLAGS="${XBPS_CFLAGS}" +XBPS_CPPFLAGS="-D_FORTIFY_SOURCE=2" # [OPTIONAL] # Linker flags passed to the compiler. By default we use --as-needed to # avoid linking extra libraries into binaries. See the following link # for info: http://www.gentoo.org/proj/en/qa/asneeded.xml # -XBPS_LDFLAGS="-Wl,--as-needed" +XBPS_LDFLAGS="-Wl,--as-needed -Wl,-z,relro" # [REQUIRED] # Command to execute to gain root privileges when using the `update-sys` diff --git a/xbps-src b/xbps-src index 8f055810be5..4d25fa94578 100755 --- a/xbps-src +++ b/xbps-src @@ -499,7 +499,7 @@ export XBPS_SHUTILSDIR XBPS_CROSSPFDIR XBPS_TRIGGERSDIR \ XBPS_UHELPER_CMD XBPS_INSTALL_CMD XBPS_QUERY_CMD \ XBPS_RINDEX_CMD XBPS_RECONFIGURE_CMD XBPS_REMOVE_CMD \ XBPS_CMPVER_CMD XBPS_FETCH_CMD XBPS_VERSION XBPS_APIVER \ - XBPS_BUILDSTYLEDIR XBPS_CFLAGS XBPS_CXXFLAGS XBPS_LDFLAGS \ + XBPS_BUILDSTYLEDIR XBPS_CPPFLAGS XBPS_CFLAGS XBPS_CXXFLAGS XBPS_LDFLAGS \ XBPS_MAKEJOBS XBPS_BUILD_FORCEMODE XBPS_USE_GIT_REVS XBPS_DEBUG_PKGS \ XBPS_CCACHE XBPS_DISTCC XBPS_DISTCC_HOSTS XBPS_SKIP_DEPS \ XBPS_SKIP_REMOTEREPOS XBPS_CROSS_BUILD XBPS_PKG_OPTIONS \