diff options
Diffstat (limited to 'scripts/build/probe-toolchain.sh')
| -rwxr-xr-x | scripts/build/probe-toolchain.sh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/scripts/build/probe-toolchain.sh b/scripts/build/probe-toolchain.sh index 2f1f600..218a821 100755 --- a/scripts/build/probe-toolchain.sh +++ b/scripts/build/probe-toolchain.sh @@ -10,6 +10,12 @@ family=$5 target=$6 gcc_toolchain=$7 sysroot=$8 +ktl_include=$9 +ktl_after_include=${10} +libc_include=${11} +libc_after_include=${12} +libcxx_include=${13} +compiler_resource_include=${14} set -- if [ "$family" = clang ]; then @@ -28,6 +34,22 @@ probe() { -fsyntax-only - >/dev/null 2>&1 } +probe_libcxx() { + printf '%s\n' \ + '#include <ktl/array.h>' \ + '#include <ktl/atomic.h>' \ + '#include <ktl/optional.h>' \ + '#include <ktl/span.h>' \ + '#include <ktl/string_view.h>' \ + 'constexpr ktl::array<int, 2> values{1, 2};' \ + 'static_assert(values[1] == 2);' | \ + "$cxx" "$@" -std=c++23 -ffreestanding -fno-exceptions -fno-rtti \ + -nostdinc -I include -I "$ktl_include" -I "$libc_include" \ + -isystem "$compiler_resource_include" \ + -isystem "$libcxx_include" -idirafter "$ktl_after_include" \ + -idirafter "$libc_after_include" -fsyntax-only -x c++ - >/dev/null 2>&1 +} + tmp="$output.tmp.$$" mkdir -p "$(dirname "$output")" { @@ -37,6 +59,7 @@ mkdir -p "$(dirname "$output")" echo "target=$target" printf 'c23='; if probe c gnu23 "$@"; then echo yes; else echo no; fi printf 'cxx23='; if probe c++ c++23 "$@"; then echo yes; else echo no; fi + printf 'libcxx-headers='; if probe_libcxx "$@"; then echo yes; else echo no; fi printf 'fno-pie='; if probe c++ c++23 "$@" -fno-pie; then echo yes; else echo no; fi printf 'mcmodel-medany='; if probe c++ c++23 "$@" -mcmodel=medany; then echo yes; else echo no; fi } > "$tmp" @@ -44,5 +67,6 @@ mv -f "$tmp" "$output" grep -q '^c23=yes$' "$output" grep -q '^cxx23=yes$' "$output" +grep -q '^libcxx-headers=yes$' "$output" grep -q '^fno-pie=yes$' "$output" grep -q '^mcmodel-medany=yes$' "$output" |
