| 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 | |