systemd/tools/meson-build.sh
Frantisek Sumsal 17ee59c9c9 fuzz: pass -Dc_args=/-Dcpp_args= to fuzzer targets
Prompted by #29972, because right now it's practically impossible to pass
-fno-sanitize=function to the fuzzer targets without some extensive
sed'ing.

This splits both c_args and cpp_args to separate arguments for
tools/meson-build.sh, because the other way would be to use `eval`, so
the space-separated but quoted strings passed to these options are not
split where they shouldn't, and I'd rather avoid using `eval` if
possible.

Also, this switches the positional arguments we pass to `meson setup`,
as they were in incorrect order (docs say it should be buildir followed
by sourcedir); meson is apparently clever enough to figure this out and
switch the arguments around if necessary, so it didn't complain.
2023-11-10 17:22:08 +00:00

22 lines
585 B
Bash
Executable file

#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eux
sourcedir="${1:?}"
builddir="${2:?}"
target="${3:?}"
c_args="${4:?}"
cpp_args="${5:?}"
options="${6:?}"
CC="${7:?}"
CXX="${8:?}"
if [ ! -f "$builddir/build.ninja" ]; then
# shellcheck disable=SC2086
CC="$CC" CXX="$CXX" meson setup -Dc_args="$c_args" -Dcpp_args="$cpp_args" "$builddir" "$sourcedir" $options
fi
# Locate ninja binary, on CentOS 7 it is called ninja-build, so use that name if available.
command -v ninja-build >/dev/null && ninja="ninja-build" || ninja="ninja"
"$ninja" -C "$builddir" "$target"