// Backslash escaping makes matching against the installation directory fail on
// Windows. Temporarily disable the test there until we add an option to print
// the installation directory unescaped.
// UNSUPPORTED: system-windows

// By default, we should search for libc++ next to the driver.
// RUN: mkdir -p %t/bin
// RUN: mkdir -p %t/include/c++/v1
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
// RUN:   FileCheck -check-prefix=LIBCXX %s
// RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
// RUN:   -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
// RUN:   FileCheck -check-prefix=LIBCXX %s
// LIBCXX: InstalledDir: [[INSTALLDIR:.+$]]
// LIBCXX: "-internal-isystem" "[[INSTALLDIR]]/../include/c++/v1"

// Passing -stdlib++-isystem should suppress the default search.
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NODEFAULT %s
// RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NODEFAULT %s
// NODEFAULT: InstalledDir: [[INSTALLDIR:.+$]]
// NODEFAULT-NOT: "-internal-isystem" "[[INSTALLDIR]]/../include/c++/v1"

// And we should add it as an -internal-isystem.
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=INCPATH %s
// RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=INCPATH %s
// INCPATH: "-internal-isystem" "/tmp/foo" "-internal-isystem" "/tmp/bar"

// We shouldn't pass the -stdlib++-isystem to cc1.
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
// RUN:   FileCheck -check-prefix=NOCC1 %s
// RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
// RUN:   FileCheck -check-prefix=NOCC1 %s
// NOCC1-NOT: "-stdlib++-isystem" "/tmp"

// It should respect -nostdinc++
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdinc++ \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NOSTDINCXX %s
// RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdinc++ \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NOSTDINCXX %s

// ... and -nostdinc and -nostdlibinc.
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdinc \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck --check-prefix=NOSTDINCXX %s
// RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
// RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdlibinc \
// RUN:   -fsyntax-only %s -### 2>&1 | FileCheck --check-prefix=NOSTDINCXX %s
// NOSTDINCXX-NOT: "-internal-isystem" "/tmp/foo" "-internal-isystem" "/tmp/bar"
