Files
llvm-tms34010/clang/test/Driver/openbsd.cpp
T
Brad Smith 093145f1e2 [clang][Driver] Fix libc++ include path on OpenBSD (#212979)
`clang++` defaults to `-stdlib=libc++` on OpenBSD. When building with both
`clang` and `libcxx` included, the freshly built `clang++` uses the system
version of the `libc++` headers. However, this is from the bundled `libc++`
22.1.8, thus inconsistent with the `libc++` being built.

OpenBSD has its own version of addLibCxxIncludePaths which just includes
`/usr/include/c++/v1`.

This patch removes OpenBSD::addLibCxxIncludePaths in favour of the generic
version in `Gnu.cpp`.

(cherry picked from commit 1204f6b4e9d6bef8ec319d121942dca5cbf94a26)
2026-10-27 18:59:18 +00:00

52 lines
2.9 KiB
C++

// Check libraries used when linking C++
// RUN: %clangxx %s -### -o %t.o --target=amd64-pc-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-CXX %s
// RUN: %clangxx %s -### -o %t.o --target=i686-pc-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-CXX %s
// RUN: %clangxx %s -### -o %t.o --target=aarch64-unknown-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-CXX %s
// RUN: %clangxx %s -### -o %t.o --target=arm-unknown-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-CXX %s
// CHECK-CXX: "-lc++" "-lc++abi" "-lpthread" "-lm"
// Check for profiling variants of libraries when linking C++
// RUN: %clangxx %s -### -pg -o %t.o --target=amd64-pc-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-PG-CXX %s
// RUN: %clangxx %s -### -pg -o %t.o --target=i686-pc-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-PG-CXX %s
// RUN: %clangxx %s -### -pg -o %t.o --target=aarch64-unknown-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-PG-CXX %s
// RUN: %clangxx %s -### -pg -o %t.o --target=arm-unknown-openbsd 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-PG-CXX %s
// CHECK-PG-CXX: "-lc++_p" "-lc++abi_p" "-lpthread_p" "-lm_p"
// Test that OpenBSD prefers install tree libc++ headers over system ones.
// RUN: %clang -### %s --target=amd64-pc-openbsd -r 2>&1 \
// RUN: -ccc-install-dir %S/Inputs/install_tree_with_libcxx/bin \
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree \
// RUN: | FileCheck %s --check-prefix=DRIVER-INSTALL-INCLUDES
// DRIVER-INSTALL-INCLUDES: "-internal-isystem" "{{.*}}bin[[SEP:/|\\\\]]..[[SEP]]include[[SEP]]c++[[SEP]]v1"
// DRIVER-INSTALL-INCLUDES-NOT: "-internal-isystem" "{{.*}}usr[[SEP]]include[[SEP]]c++[[SEP]]v1"
// Test include paths with a sysroot.
// RUN: %clangxx %s -### -fsyntax-only 2>&1 \
// RUN: --target=amd64-pc-openbsd \
// RUN: -ccc-install-dir %S/Inputs/install_tree_without_libcxx/bin \
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree \
// RUN: -resource-dir=%S/Inputs/resource_dir \
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-SYSROOT %s
// CHECK-LIBCXX-SYSROOT: "-cc1"
// CHECK-LIBCXX-SYSROOT-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
// CHECK-LIBCXX-SYSROOT-SAME: "-internal-isystem" "[[SYSROOT]][[SEP:/|\\\\]]usr[[SEP]]include[[SEP]]c++[[SEP]]v1"
// Test include paths when the sysroot path ends with `/`.
// RUN: %clangxx %s -### -fsyntax-only 2>&1 \
// RUN: --target=amd64-pc-openbsd \
// RUN: -ccc-install-dir %S/Inputs/install_tree_without_libcxx/bin \
// RUN: --sysroot=%S/Inputs/basic_openbsd_libcxx_tree/ \
// RUN: -resource-dir=%S/Inputs/resource_dir \
// RUN: | FileCheck --check-prefix=CHECK-LIBCXX-SYSROOT-SLASH %s
// CHECK-LIBCXX-SYSROOT-SLASH: "-cc1"
// CHECK-LIBCXX-SYSROOT-SLASH-SAME: "-isysroot" "[[SYSROOT:[^"]+/]]"
// CHECK-LIBCXX-SYSROOT-SLASH-SAME: "-internal-isystem" "[[SYSROOT]]usr[[SEP:/|\\\\]]include[[SEP]]c++[[SEP]]v1"