mirror of
https://github.com/systemd/systemd.git
synced 2025-03-22 06:50:18 +03:00
Merge pull request #21727 from medhefgo/ld
ci: Build test with different linkers
This commit is contained in:
commit
b5d2163b8e
8
.github/workflows/build_test.sh
vendored
8
.github/workflows/build_test.sh
vendored
@ -62,6 +62,7 @@ PACKAGES=(
|
||||
)
|
||||
COMPILER="${COMPILER:?}"
|
||||
COMPILER_VERSION="${COMPILER_VERSION:?}"
|
||||
LINKER="${LINKER:?}"
|
||||
RELEASE="$(lsb_release -cs)"
|
||||
|
||||
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
|
||||
@ -117,7 +118,12 @@ for args in "${ARGS[@]}"; do
|
||||
|
||||
info "Checking build with $args"
|
||||
# shellcheck disable=SC2086
|
||||
if ! AR="$AR" CC="$CC" CXX="$CXX" CFLAGS="-Werror" CXXFLAGS="-Werror" meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror $args build; then
|
||||
if ! AR="$AR" \
|
||||
CC="$CC" CC_LD="$LINKER" CFLAGS="-Werror" \
|
||||
CXX="$CXX" CXX_LD="$LINKER" CXXFLAGS="-Werror" \
|
||||
meson -Dtests=unsafe -Dslow-tests=true -Dfuzz-tests=true --werror \
|
||||
$args build; then
|
||||
|
||||
fatal "meson failed with $args"
|
||||
fi
|
||||
|
||||
|
14
.github/workflows/build_test.yml
vendored
14
.github/workflows/build_test.yml
vendored
@ -19,20 +19,20 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ matrix.env.COMPILER }}-${{ matrix.env.COMPILER_VERSION }}-${{ github.ref }}
|
||||
group: ${{ github.workflow }}-${{ matrix.env.COMPILER }}-${{ matrix.env.COMPILER_VERSION }}-${{ matrix.env.LINKER }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
env:
|
||||
- { COMPILER: "gcc", COMPILER_VERSION: "10" }
|
||||
- { COMPILER: "gcc", COMPILER_VERSION: "11" }
|
||||
- { COMPILER: "clang", COMPILER_VERSION: "11" }
|
||||
- { COMPILER: "clang", COMPILER_VERSION: "12" }
|
||||
- { COMPILER: "clang", COMPILER_VERSION: "13" }
|
||||
- { COMPILER: "gcc", COMPILER_VERSION: "10", LINKER: "bfd" }
|
||||
- { COMPILER: "gcc", COMPILER_VERSION: "11", LINKER: "gold" }
|
||||
- { COMPILER: "clang", COMPILER_VERSION: "11", LINKER: "bfd" }
|
||||
- { COMPILER: "clang", COMPILER_VERSION: "12", LINKER: "gold" }
|
||||
- { COMPILER: "clang", COMPILER_VERSION: "13", LINKER: "lld" }
|
||||
env: ${{ matrix.env }}
|
||||
steps:
|
||||
- name: Repository checkout
|
||||
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
|
||||
- name: Build check (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
|
||||
- name: Build check (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }}-${{ env.LINKER }})
|
||||
run: sudo -E .github/workflows/build_test.sh
|
||||
|
@ -3912,6 +3912,7 @@ if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_GNU_EFI') == 1
|
||||
summary({
|
||||
'EFI machine type' : efi_arch[0],
|
||||
'EFI CC' : '@0@'.format(' '.join(efi_cc)),
|
||||
'EFI LD' : efi_ld,
|
||||
'EFI lds' : efi_lds,
|
||||
'EFI crt0' : efi_crt0,
|
||||
'EFI include directory' : efi_incdir},
|
||||
|
@ -415,7 +415,7 @@ option('efi-cc', type : 'array',
|
||||
description : 'the compiler to use for EFI modules')
|
||||
# Note that LLD does not support PE/COFF relocations
|
||||
# https://lists.llvm.org/pipermail/llvm-dev/2021-March/149234.html
|
||||
option('efi-ld', type : 'combo', choices : ['bfd', 'gold'],
|
||||
option('efi-ld', type : 'combo', choices : ['auto', 'bfd', 'gold'],
|
||||
description : 'the linker to use for EFI modules')
|
||||
option('efi-libdir', type : 'string',
|
||||
description : 'path to the EFI lib directory')
|
||||
|
@ -48,6 +48,15 @@ if efi_cc.length() == 0
|
||||
efi_cc = cc.cmd_array()
|
||||
endif
|
||||
|
||||
efi_ld = get_option('efi-ld')
|
||||
if efi_ld == 'auto'
|
||||
efi_ld = cc.get_linker_id().split('.')[1]
|
||||
if efi_ld not in ['bfd', 'gold']
|
||||
warning('Not using @0@ as efi-ld, falling back to bfd'.format(efi_ld))
|
||||
efi_ld = 'bfd'
|
||||
endif
|
||||
endif
|
||||
|
||||
efi_libdir = ''
|
||||
foreach dir : [get_option('efi-libdir'),
|
||||
'/usr/lib/gnuefi' / efi_arch[0],
|
||||
@ -256,7 +265,7 @@ foreach arg : get_option('c_args')
|
||||
endforeach
|
||||
|
||||
efi_ldflags = [
|
||||
'-fuse-ld=' + get_option('efi-ld'),
|
||||
'-fuse-ld=' + efi_ld,
|
||||
'-L', efi_libdir,
|
||||
'-nostdlib',
|
||||
'-T', efi_lds,
|
||||
@ -276,7 +285,7 @@ if efi_arch[1] in ['aarch64', 'arm', 'riscv64']
|
||||
efi_format = ['-O', 'binary']
|
||||
else
|
||||
efi_ldflags += ['-pie']
|
||||
if get_option('efi-ld') == 'bfd'
|
||||
if efi_ld == 'bfd'
|
||||
efi_ldflags += '-Wl,--no-dynamic-linker'
|
||||
endif
|
||||
efi_format = ['--target=efi-app-@0@'.format(efi_arch[1])]
|
||||
|
Loading…
x
Reference in New Issue
Block a user