xref: /llvm-project/clang/test/Driver/cl-include.c (revision 3063a5472266f05add4e5b85f34141ba2e66fa2e)
18ea89eafSReid Kleckner // Note: %s must be preceded by --, otherwise it may be interpreted as a
28ea89eafSReid Kleckner // command-line option, e.g. on Mac where %s is commonly under /Users.
38ea89eafSReid Kleckner 
48ea89eafSReid Kleckner // RUN: %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=BUILTIN
5c7a0b672SAlexander Kornienko // BUILTIN: "-internal-isystem" "{{.*lib.*clang.*include}}"
68ea89eafSReid Kleckner 
78ea89eafSReid Kleckner // RUN: %clang_cl -nobuiltininc -### -- %s 2>&1 | FileCheck %s --check-prefix=NOBUILTIN
8c7a0b672SAlexander Kornienko // NOBUILTIN-NOT: "-internal-isystem" "{{.*lib.*clang.*include}}"
98ea89eafSReid Kleckner 
10*3063a547SHans Wennborg // RUN: env INCLUDE=/my/system/inc env EXTERNAL_INCLUDE=/my/system/inc2 %clang_cl -### -- %s 2>&1 | FileCheck %s --check-prefix=STDINC
118ea89eafSReid Kleckner // STDINC: "-internal-isystem" "/my/system/inc"
12*3063a547SHans Wennborg // STDINC: "-internal-isystem" "/my/system/inc2"
138ea89eafSReid Kleckner 
1407f0a52cSNico Weber // -nostdinc suppresses all of %INCLUDE%, clang resource dirs, and -imsvc dirs.
15*3063a547SHans Wennborg // RUN: env INCLUDE=/my/system/inc env EXTERNAL_INCLUDE=/my/system/inc2 %clang_cl -nostdinc -imsvc /my/other/inc -### -- %s 2>&1 | FileCheck %s --check-prefix=NOSTDINC
1607f0a52cSNico Weber // NOSTDINC: argument unused{{.*}}-imsvc
178ea89eafSReid Kleckner // NOSTDINC-NOT: "-internal-isystem" "/my/system/inc"
18*3063a547SHans Wennborg // NOSTDINC-NOT: "-internal-isystem" "/my/system/inc2"
19926bbc02SNico Weber // NOSTDINC-NOT: "-internal-isystem" "{{.*lib.*clang.*include}}"
2007f0a52cSNico Weber // NOSTDINC-NOT: "-internal-isystem" "/my/other/inc"
2107f0a52cSNico Weber 
22*3063a547SHans Wennborg // /X suppresses %INCLUDE% and %EXTERNAL_INCLUDE% but not clang resource dirs, -imsvc dirs, or /external: flags.
23*3063a547SHans Wennborg // RUN: env INCLUDE=/my/system/inc env EXTERNAL_INCLUDE=/my/system/inc2 env FOO=/my/other/inc2 %clang_cl /X -imsvc /my/other/inc /external:env:FOO -### -- %s 2>&1 | FileCheck %s --check-prefix=SLASHX
2407f0a52cSNico Weber // SLASHX-NOT: "argument unused{{.*}}-imsvc"
2507f0a52cSNico Weber // SLASHX-NOT: "-internal-isystem" "/my/system/inc"
26*3063a547SHans Wennborg // SLASHX-NOT: "-internal-isystem" "/my/system/inc2"
27926bbc02SNico Weber // SLASHX: "-internal-isystem" "{{.*lib.*clang.*include}}"
2807f0a52cSNico Weber // SLASHX: "-internal-isystem" "/my/other/inc"
29*3063a547SHans Wennborg // SLASHX: "-internal-isystem" "/my/other/inc2"
30*3063a547SHans Wennborg 
31*3063a547SHans Wennborg // /winsysroot suppresses %EXTERNAL_INCLUDE% but not -imsvc dirs or /external: flags.
32*3063a547SHans Wennborg // RUN: env env EXTERNAL_INCLUDE=/my/system/inc env FOO=/my/other/inc2 %clang_cl /winsysroot /foo -imsvc /my/other/inc /external:env:FOO -### -- %s 2>&1 | FileCheck %s --check-prefix=SYSROOT
33*3063a547SHans Wennborg // SYSROOT-NOT: "argument unused{{.*}}-imsvc"
34*3063a547SHans Wennborg // SYSROOT-NOT: "argument unused{{.*}}/external:"
35*3063a547SHans Wennborg // SYSROOT-NOT: "/my/system/inc"
36*3063a547SHans Wennborg // SYSROOT: "-internal-isystem" "/my/other/inc"
37*3063a547SHans Wennborg // SYSROOT: "-internal-isystem" "/my/other/inc2"
38*3063a547SHans Wennborg // SYSROOT: "-internal-isystem" "/foo{{.*}}"
39*3063a547SHans Wennborg 
40*3063a547SHans Wennborg // RUN: env "FOO=/dir1;/dir2" env "BAR=/dir3" %clang_cl /external:env:FOO /external:env:BAR -### -- %s 2>&1 | FileCheck %s --check-prefix=EXTERNAL_ENV
41*3063a547SHans Wennborg // EXTERNAL_ENV: "-internal-isystem" "/dir1"
42*3063a547SHans Wennborg // EXTERNAL_ENV: "-internal-isystem" "/dir2"
43*3063a547SHans Wennborg // EXTERNAL_ENV: "-internal-isystem" "/dir3"
44