1b50e8c59SShoaib Meenai // Backslash escaping makes matching against the installation directory fail on
2b50e8c59SShoaib Meenai // Windows. Temporarily disable the test there until we add an option to print
3b50e8c59SShoaib Meenai // the installation directory unescaped.
4b50e8c59SShoaib Meenai // UNSUPPORTED: system-windows
5b50e8c59SShoaib Meenai 
6b50e8c59SShoaib Meenai // By default, we should search for libc++ next to the driver.
7b50e8c59SShoaib Meenai // RUN: mkdir -p %t/bin
8b50e8c59SShoaib Meenai // RUN: mkdir -p %t/include/c++/v1
9bab98499SPeter Collingbourne // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
10b50e8c59SShoaib Meenai // RUN:   -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
11b50e8c59SShoaib Meenai // RUN:   FileCheck -check-prefix=LIBCXX %s
12b50e8c59SShoaib Meenai // RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
13b50e8c59SShoaib Meenai // RUN:   -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
14b50e8c59SShoaib Meenai // RUN:   FileCheck -check-prefix=LIBCXX %s
15b50e8c59SShoaib Meenai // LIBCXX: InstalledDir: [[INSTALLDIR:.+$]]
16b50e8c59SShoaib Meenai // LIBCXX: "-internal-isystem" "[[INSTALLDIR]]/../include/c++/v1"
17b50e8c59SShoaib Meenai 
18b50e8c59SShoaib Meenai // Passing -stdlib++-isystem should suppress the default search.
19bab98499SPeter Collingbourne // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
20b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
21b50e8c59SShoaib Meenai // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NODEFAULT %s
22b50e8c59SShoaib Meenai // RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
23b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
24b50e8c59SShoaib Meenai // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NODEFAULT %s
25b50e8c59SShoaib Meenai // NODEFAULT: InstalledDir: [[INSTALLDIR:.+$]]
26b50e8c59SShoaib Meenai // NODEFAULT-NOT: "-internal-isystem" "[[INSTALLDIR]]/../include/c++/v1"
27b50e8c59SShoaib Meenai 
28b50e8c59SShoaib Meenai // And we should add it as an -internal-isystem.
29bab98499SPeter Collingbourne // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
30b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
31b50e8c59SShoaib Meenai // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=INCPATH %s
32b50e8c59SShoaib Meenai // RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
33b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -stdlib=libc++ \
34b50e8c59SShoaib Meenai // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=INCPATH %s
35b50e8c59SShoaib Meenai // INCPATH: "-internal-isystem" "/tmp/foo" "-internal-isystem" "/tmp/bar"
36b50e8c59SShoaib Meenai 
37b50e8c59SShoaib Meenai // We shouldn't pass the -stdlib++-isystem to cc1.
38bab98499SPeter Collingbourne // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
39b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
40b50e8c59SShoaib Meenai // RUN:   FileCheck -check-prefix=NOCC1 %s
41b50e8c59SShoaib Meenai // RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
42b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp -stdlib=libc++ -fsyntax-only %s -### 2>&1 | \
43b50e8c59SShoaib Meenai // RUN:   FileCheck -check-prefix=NOCC1 %s
44b50e8c59SShoaib Meenai // NOCC1-NOT: "-stdlib++-isystem" "/tmp"
45b50e8c59SShoaib Meenai 
46*53c98d85SFangrui Song // It should respect -nostdinc++
47bab98499SPeter Collingbourne // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
48b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdinc++ \
49b50e8c59SShoaib Meenai // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NOSTDINCXX %s
50b50e8c59SShoaib Meenai // RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \
51b50e8c59SShoaib Meenai // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdinc++ \
52b50e8c59SShoaib Meenai // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NOSTDINCXX %s
53*53c98d85SFangrui Song 
54*53c98d85SFangrui Song // ... and -nostdinc and -nostdlibinc.
55*53c98d85SFangrui Song // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
56*53c98d85SFangrui Song // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdinc \
57*53c98d85SFangrui Song // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck --check-prefix=NOSTDINCXX %s
58*53c98d85SFangrui Song // RUN: %clang -target aarch64-linux-gnu -ccc-install-dir %t/bin \
59*53c98d85SFangrui Song // RUN:   -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdlibinc \
60*53c98d85SFangrui Song // RUN:   -fsyntax-only %s -### 2>&1 | FileCheck --check-prefix=NOSTDINCXX %s
61b50e8c59SShoaib Meenai // NOSTDINCXX-NOT: "-internal-isystem" "/tmp/foo" "-internal-isystem" "/tmp/bar"
62