From b953f8f781b56640d87b6ed4c611f7c22303d8f8 Mon Sep 17 00:00:00 2001 From: Artemis Tosini Date: Fri, 7 Jun 2024 03:50:31 +0000 Subject: [PATCH] meson.build: Allow undefined symbols on FreeBSD The linker cannot find environ while linking libutil. Fix build by allowing undefined symbols Change-Id: Iba319126284d48454b50db40d3aadf37e0339668 --- meson.build | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meson.build b/meson.build index 7fd29bdf5..3e89cf829 100644 --- a/meson.build +++ b/meson.build @@ -167,6 +167,7 @@ message('canonical Nix system name:', host_system) is_linux = host_machine.system() == 'linux' is_darwin = host_machine.system() == 'darwin' +is_freebsd = host_machine.system() == 'freebsd' is_x64 = host_machine.cpu_family() == 'x86_64' # Per-platform arguments that you should probably pass to shared_module() invocations. @@ -483,6 +484,12 @@ if cxx.get_linker_id() in ['ld.bfd', 'ld.gold'] add_project_link_arguments('-Wl,--no-copy-dt-needed-entries', language : 'cpp') endif +if is_freebsd + # FreeBSD's `environ` is defined in `crt1.o`, not `libc.so`, + # so the linker thinks it's undefined + add_project_link_arguments('-Wl,-z,undefs', language: 'cpp') +endif + # Generate Chromium tracing files for each compiled file, which enables # maintainers/buildtime_report.sh BUILD-DIR to simply work in clang builds. #