Merge branch 'build_flags_WIP' into 'master'
Draft: Build flags See merge request pacman/pacman!116
This commit is contained in:
commit
283ac6e5da
7 changed files with 86 additions and 44 deletions
|
@ -3,7 +3,7 @@
|
|||
# buildenv.sh - functions for altering the build environment before
|
||||
# compilation
|
||||
#
|
||||
# Copyright (c) 2015-2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
# Copyright (c) 2015-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -24,8 +24,9 @@ LIBMAKEPKG_BUILDENV_SH=1
|
|||
|
||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
declare -a buildenv_functions build_options
|
||||
buildenv_vars=('CPPFLAGS' 'CFLAGS' 'CXXFLAGS' 'LDFLAGS' 'MAKEFLAGS' 'CHOST')
|
||||
declare -a buildenv_functions buildenv_vars build_options
|
||||
buildenv_vars_exported=('LDFLAGS' 'MAKEFLAGS' 'CHOST')
|
||||
build_options+=('buildflags')
|
||||
|
||||
for lib in "$MAKEPKG_LIBRARY/buildenv/"*.sh; do
|
||||
source "$lib"
|
||||
|
@ -33,14 +34,28 @@ done
|
|||
|
||||
readonly -a buildenv_functions buildenv_vars build_options
|
||||
|
||||
check_append_debug_flags() {
|
||||
local -n flag=$1
|
||||
local -n debug_flag=$2
|
||||
|
||||
if check_option "debug" "y" && ! check_option "buildflags" "n"; then
|
||||
if [[ $# -gt 1 ]]; then
|
||||
local debug_extra=$3
|
||||
append_once debug_flag "$debug_extra"
|
||||
fi
|
||||
append_once flag "$debug_flag"
|
||||
fi
|
||||
}
|
||||
|
||||
prepare_buildenv() {
|
||||
# ensure this function runs first
|
||||
buildenv_buildflags
|
||||
if check_option "buildflags" "n"; then
|
||||
unset ${buildenv_vars_exported[@]}
|
||||
fi
|
||||
|
||||
for func in ${buildenv_functions[@]}; do
|
||||
$func
|
||||
done
|
||||
|
||||
# ensure all necessary build variables are exported
|
||||
export ${buildenv_vars[@]}
|
||||
export ${buildenv_vars_exported[@]}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#!/usr/bin/bash
|
||||
#
|
||||
# debugflags.sh - Specify flags for building a package with debugging
|
||||
# symbols
|
||||
# c.sh - Specify flags for building a package with C
|
||||
#
|
||||
# Copyright (c) 2012-2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
# Copyright (c) 2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -19,21 +18,18 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[[ -n "$LIBMAKEPKG_BUILDENV_DEBUGFLAGS_SH" ]] && return
|
||||
LIBMAKEPKG_BUILDENV_DEBUGFLAGS_SH=1
|
||||
[[ -n "$LIBMAKEPKG_BUILDENV_C_SH" ]] && return
|
||||
LIBMAKEPKG_BUILDENV_C_SH=1
|
||||
|
||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
source "$MAKEPKG_LIBRARY/util/option.sh"
|
||||
source "$MAKEPKG_LIBRARY/util/util.sh"
|
||||
|
||||
buildenv_functions+=('buildenv_debugflags')
|
||||
buildenv_vars+=('DEBUG_CFLAGS')
|
||||
buildenv_vars_exported+=('CFLAGS')
|
||||
buildenv_functions+=('buildenv_c')
|
||||
|
||||
buildenv_debugflags() {
|
||||
if check_option "debug" "y" && ! check_option "buildflags" "n"; then
|
||||
append_once DEBUG_CFLAGS "-ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
||||
append_once DEBUG_CXXFLAGS "-ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
||||
append_once CFLAGS "$DEBUG_CFLAGS"
|
||||
append_once CXXFLAGS "$DEBUG_CXXFLAGS"
|
||||
fi
|
||||
buildenv_c() {
|
||||
check_append_debug_flags CFLAGS DEBUG_CFLAGS "-ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/bash
|
||||
#
|
||||
# buildflags.sh - Clear user-specified buildflags if requested
|
||||
# rust.sh - Specify flags for building a package with rust
|
||||
#
|
||||
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
# Copyright (c) 2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -18,17 +18,13 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[[ -n "$LIBMAKEPKG_BUILDENV_BUILDFLAGS_SH" ]] && return
|
||||
LIBMAKEPKG_BUILDENV_BUILDFLAGS_SH=1
|
||||
[[ -n "$LIBMAKEPKG_BUILDENV_CPP_SH" ]] && return
|
||||
LIBMAKEPKG_BUILDENV_CPP_SH=1
|
||||
|
||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
source "$MAKEPKG_LIBRARY/util/option.sh"
|
||||
source "$MAKEPKG_LIBRARY/util/util.sh"
|
||||
|
||||
build_options+=('buildflags')
|
||||
|
||||
buildenv_buildflags() {
|
||||
if check_option "buildflags" "n"; then
|
||||
unset ${buildenv_vars[@]}
|
||||
fi
|
||||
}
|
||||
buildenv_vars_exported+=('CPPFLAGS')
|
||||
buildenv_functions+=('buildenv_rust')
|
35
scripts/libmakepkg/buildenv/cxx.sh.in
Normal file
35
scripts/libmakepkg/buildenv/cxx.sh.in
Normal file
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/bash
|
||||
#
|
||||
# cxx.sh - Specify flags for building a package with C++
|
||||
#
|
||||
# Copyright (c) 2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
[[ -n "$LIBMAKEPKG_BUILDENV_CXX_SH" ]] && return
|
||||
LIBMAKEPKG_BUILDENV_CXX_SH=1
|
||||
|
||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
source "$MAKEPKG_LIBRARY/util/option.sh"
|
||||
source "$MAKEPKG_LIBRARY/util/util.sh"
|
||||
|
||||
buildenv_vars+=('DEBUG_CXXFLAGS')
|
||||
buildenv_vars_exported+=('CXXFLAGS')
|
||||
buildenv_functions+=('buildenv_cxx')
|
||||
|
||||
buildenv_cxx() {
|
||||
check_append_debug_flags CXXFLAGS DEBUG_CXXFLAGS "-ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
||||
}
|
|
@ -1,9 +1,10 @@
|
|||
libmakepkg_module = 'buildenv'
|
||||
|
||||
sources = [
|
||||
'buildflags.sh.in',
|
||||
'c.sh.in',
|
||||
'compiler.sh.in',
|
||||
'debugflags.sh.in',
|
||||
'cpp.sh.in',
|
||||
'cxx.sh.in',
|
||||
'lto.sh.in',
|
||||
'makeflags.sh.in',
|
||||
'rust.sh.in',
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# rust.sh - Specify flags for building a package with rust
|
||||
#
|
||||
# Copyright (c) 2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
# Copyright (c) 2022-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -26,12 +26,10 @@ MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
|
|||
source "$MAKEPKG_LIBRARY/util/option.sh"
|
||||
source "$MAKEPKG_LIBRARY/util/util.sh"
|
||||
|
||||
buildenv_vars+=('RUSTFLAGS' 'DEBUG_RUSTFLAGS')
|
||||
buildenv_vars+=('DEBUG_RUSTFLAGS')
|
||||
buildenv_vars_exported+=('RUSTFLAGS')
|
||||
buildenv_functions+=('buildenv_rust')
|
||||
|
||||
buildenv_rust() {
|
||||
if check_option "debug" "y" && ! check_option "buildflags" "n"; then
|
||||
append_once DEBUG_RUSTFLAGS "--remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
||||
append_once RUSTFLAGS "$DEBUG_RUSTFLAGS"
|
||||
fi
|
||||
check_append_debug_flags RUSTFLAGS DEBUG_RUSTFLAGS "--remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# variable.sh - Check that variables are or are not arrays as appropriate
|
||||
#
|
||||
# Copyright (c) 2018-2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
# Copyright (c) 2018-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -24,6 +24,7 @@ LIBMAKEPKG_LINT_CONFIG_VARIABLE_SH=1
|
|||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
|
||||
|
||||
source "$MAKEPKG_LIBRARY/util/message.sh"
|
||||
source "$MAKEPKG_LIBRARY/buildenv.sh"
|
||||
|
||||
lint_config_functions+=('lint_config_variables')
|
||||
|
||||
|
@ -32,10 +33,10 @@ lint_config_variables() {
|
|||
local array=(DLAGENTS VCSCLIENTS BUILDENV OPTIONS INTEGRITY_CHECK MAN_DIRS
|
||||
DOC_DIRS PURGE_TARGETS COMPRESSGZ COMPRESSBZ2 COMPRESSXZ
|
||||
COMPRESSLRZ COMPRESSLZO COMPRESSZ)
|
||||
local string=(CARCH CHOST CPPFLAGS CFLAGS CXXFLAGS LDFLAGS LTOFLAGS DEBUG_CFLAGS
|
||||
DEBUG_CXXFLAGS DISTCC_HOSTS BUILDDIR STRIP_BINARIES STRIP_SHARED
|
||||
STRIP_STATIC PKGDEST SRCDEST SRCPKGDEST LOGDEST PACKAGER GPGKEY
|
||||
PKGEXT SRCEXT)
|
||||
local string=(CARCH CHOST LDFLAGS LTOFLAGS DISTCC_HOSTS BUILDDIR
|
||||
STRIP_BINARIES STRIP_SHARED STRIP_STATIC PKGDEST SRCDEST
|
||||
SRCPKGDEST LOGDEST PACKAGER GPGKEY PKGEXT SRCEXT
|
||||
${buildenv_vars[@]} ${buildenv_vars_exported[@]})
|
||||
|
||||
local i keys ret=0
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue