1 | // REQUIRES: shell |
2 | |
3 | // Basic test |
4 | // RUN: rm -rf %t.dir |
5 | // RUN: mkdir %t.dir |
6 | // RUN: mkdir %t.dir/a |
7 | // RUN: echo "#ifndef HEADER_A" > %t.dir/a/header.h |
8 | // RUN: echo "#define HEADER_A" >> %t.dir/a/header.h |
9 | // RUN: echo "#endif" >> %t.dir/a/header.h |
10 | // RUN: mkdir %t.dir/system |
11 | // RUN: echo "#define SYSTEM_HEADER" > %t.dir/system/system-header.h |
12 | // RUN: mkdir %t.dir/next-a |
13 | // RUN: echo "#if __has_include_next(<next-header.h>)" > %t.dir/next-a/next-header.h |
14 | // RUN: echo "#endif" >> %t.dir/next-a/next-header.h |
15 | // RUN: mkdir %t.dir/next-b |
16 | // RUN: echo "#define NEXT_HEADER" > %t.dir/next-b/next-header.h |
17 | |
18 | // RUN: %clang -MD -MF %t.dir/file.deps %s -fsyntax-only -I %t.dir -isystem %t.dir/system -I %t.dir/next-a -I %t.dir/next-b |
19 | // RUN: FileCheck -input-file=%t.dir/file.deps %s |
20 | // CHECK: dependency-gen-has-include.o |
21 | // CHECK: dependency-gen-has-include.c |
22 | // CHECK: a/header.h |
23 | // CHECK-NOT: missing/file.h |
24 | // CHECK: system/system-header.h |
25 | // CHECK: next-a/next-header.h |
26 | // CHECK: next-b/next-header.h |
27 | |
28 | // Verify that we ignore system headers in user-only headers mode. |
29 | // RUN: %clang -MMD -MF %t.dir/user-headers.deps %s -fsyntax-only -I %t.dir -isystem %t.dir/system -I %t.dir/next-a -I %t.dir/next-b |
30 | // RUN: FileCheck -input-file=%t.dir/user-headers.deps --check-prefix CHECK-USER-HEADER %s |
31 | // CHECK-USER-HEADER-NOT: system/system-header.h |
32 | |
33 | #if __has_include("a/header.h") |
34 | #endif |
35 | #if __has_include("missing/file.h") |
36 | #endif |
37 | #if __has_include(<system-header.h>) |
38 | #endif |
39 | |
40 | #include <next-header.h> |
41 | |