From c2bd01c8d357dbf6c4db886f10c7e3c514cf45d5 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Mon, 10 Nov 2014 11:15:53 +0100 Subject: [PATCH] xbps-src: introduce build profiles and use it by default. common/build-profiles contains the compilation flags used in native builds, and are defined per architecture: - x86_64 (glibc) - x86_64-musl (musl) If XBPS_CFLAGS or XBPS_CXXFLAGS are set in `etc/conf`, the settings from the build profile will be overrided. --- common/build-profiles/armv6l-musl.sh | 2 ++ common/build-profiles/armv6l.sh | 2 ++ common/build-profiles/armv7l-musl.sh | 2 ++ common/build-profiles/armv7l.sh | 2 ++ common/build-profiles/i686-musl.sh | 2 ++ common/build-profiles/i686.sh | 2 ++ common/build-profiles/x86_64-musl.sh | 2 ++ common/build-profiles/x86_64.sh | 2 ++ common/xbps-src/shutils/common.sh | 5 +++++ etc/defaults.conf | 7 ++++--- xbps-src | 3 ++- 11 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 common/build-profiles/armv6l-musl.sh create mode 100644 common/build-profiles/armv6l.sh create mode 100644 common/build-profiles/armv7l-musl.sh create mode 100644 common/build-profiles/armv7l.sh create mode 100644 common/build-profiles/i686-musl.sh create mode 100644 common/build-profiles/i686.sh create mode 100644 common/build-profiles/x86_64-musl.sh create mode 100644 common/build-profiles/x86_64.sh diff --git a/common/build-profiles/armv6l-musl.sh b/common/build-profiles/armv6l-musl.sh new file mode 100644 index 00000000000..ccb6765d619 --- /dev/null +++ b/common/build-profiles/armv6l-musl.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -fstack-protector -march=armv6 -mfpu=vfp -mfloat-abi=hard" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/armv6l.sh b/common/build-profiles/armv6l.sh new file mode 100644 index 00000000000..ccdc79f4fcb --- /dev/null +++ b/common/build-profiles/armv6l.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong -march=armv6 -mfpu=vfp -mfloat-abi=hard" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/armv7l-musl.sh b/common/build-profiles/armv7l-musl.sh new file mode 100644 index 00000000000..6f992895c18 --- /dev/null +++ b/common/build-profiles/armv7l-musl.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -fstack-protector -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/armv7l.sh b/common/build-profiles/armv7l.sh new file mode 100644 index 00000000000..75979b23745 --- /dev/null +++ b/common/build-profiles/armv7l.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/i686-musl.sh b/common/build-profiles/i686-musl.sh new file mode 100644 index 00000000000..3e55b0ed94f --- /dev/null +++ b/common/build-profiles/i686-musl.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -mtune=i686 -fstack-protector" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/i686.sh b/common/build-profiles/i686.sh new file mode 100644 index 00000000000..d57bcb64dde --- /dev/null +++ b/common/build-profiles/i686.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -mtune=i686 -fstack-protector-strong" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/x86_64-musl.sh b/common/build-profiles/x86_64-musl.sh new file mode 100644 index 00000000000..9d75b3f8b6a --- /dev/null +++ b/common/build-profiles/x86_64-musl.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -fstack-protector" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/build-profiles/x86_64.sh b/common/build-profiles/x86_64.sh new file mode 100644 index 00000000000..f19bcfb52ee --- /dev/null +++ b/common/build-profiles/x86_64.sh @@ -0,0 +1,2 @@ +XBPS_CFLAGS="-O2 -pipe -fstack-protector-strong" +XBPS_CXXFLAGS="$XBPS_CFLAGS" diff --git a/common/xbps-src/shutils/common.sh b/common/xbps-src/shutils/common.sh index 008675e9394..f150754bd1d 100644 --- a/common/xbps-src/shutils/common.sh +++ b/common/xbps-src/shutils/common.sh @@ -331,6 +331,11 @@ setup_pkg() { dbgflags="-g" fi + if [ -z "$XBPS_CFLAGS" -a -z "$XBPS_CXXFLAGS" -a -z "$bootstrap" ]; then + if [ -s ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh ]; then + . ${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" diff --git a/etc/defaults.conf b/etc/defaults.conf index a26337b9664..1264aa5451c 100644 --- a/etc/defaults.conf +++ b/etc/defaults.conf @@ -21,10 +21,11 @@ XBPS_INSTALL_ARGS="--repository=http://repo.voidlinux.eu/current" # [OPTIONAL] -# Compilation flags for C and C++. +# 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}" # [OPTIONAL] # Linker flags passed to the compiler. By default we use --as-needed to diff --git a/xbps-src b/xbps-src index b2561b439fa..a128fa424f5 100755 --- a/xbps-src +++ b/xbps-src @@ -308,7 +308,7 @@ readonly XBPS_VERSION_REQ="0.41" readonly XBPS_VERSION=$(xbps-uhelper -V|awk '{print $2}') readonly XBPS_SRC_VERSION="113" -readonly XBPS_MACHINE=$(uname -m) +export XBPS_MACHINE=$(uname -m) # # main() @@ -447,6 +447,7 @@ fi if [ -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then export XBPS_ARCH=$(cat $XBPS_MASTERDIR/.xbps_chroot_init) + export XBPS_MACHINE=$XBPS_ARCH if [ "$XBPS_MACHINE" = "x86_64" -a "$XBPS_ARCH" = "i686" -a -z "$IN_CHROOT" ]; then # reconfigure pkgs via linux32 linux32 xbps-reconfigure -r ${XBPS_MASTERDIR} -a &>/dev/null