| // 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. | |
| // 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 | |
| // NOSTDINCXX-NOT: "-internal-isystem" "/tmp/foo" "-internal-isystem" "/tmp/bar" | |
| // It should take effect even if -nostdinc or -nostdlibinc are specified; only | |
| // -nostdinc++ should suppress it. | |
| // 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=NOSTDINC %s | |
| // RUN: %clang -target x86_64-apple-darwin -ccc-install-dir %t/bin \ | |
| // RUN: -stdlib++-isystem /tmp/foo -stdlib++-isystem /tmp/bar -nostdlibinc \ | |
| // RUN: -fsyntax-only %s -### 2>&1 | FileCheck -check-prefix=NOSTDINC %s | |
| // NOSTDINC: "-internal-isystem" "/tmp/foo" "-internal-isystem" "/tmp/bar" |