mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-25 14:28:54 -04:00

It's possible for a header to be a symlink to another header. In this case both will be represented by clang::FileEntry with the same UID and they'll use the same clang::HeaderFileInfo. If you include both headers and use some single-inclusion mechanism like a header guard or #import, one header will get a FileChanged callback, and another FileSkipped. So that we get an accurate dependency file, we therefore need to also implement the FileSkipped callback in dependency scanning. Patch by Pete Cooper. Reviewers: bruno, pete Reviewed By: bruno Subscribers: cfe-commits, jkorous, vsapsai Differential Revision: https://reviews.llvm.org/D30881 llvm-svn: 331319
25 lines
809 B
C
25 lines
809 B
C
// REQUIRES: shell
|
|
|
|
// Basic test
|
|
// RUN: rm -rf %t.dir
|
|
// RUN: mkdir %t.dir
|
|
// RUN: mkdir %t.dir/a
|
|
// RUN: mkdir %t.dir/b
|
|
// RUN: echo "#ifndef HEADER_A" > %t.dir/a/header.h
|
|
// RUN: echo "#define HEADER_A" >> %t.dir/a/header.h
|
|
// RUN: echo "#endif" >> %t.dir/a/header.h
|
|
// RUN: ln -s %t.dir/a/header.h %t.dir/b/header.h
|
|
|
|
// RUN: %clang_cc1 -dependency-file %t.dir/file.deps -MT %s.o %s -fsyntax-only -I %t.dir -isystem %S/Inputs/SystemHeaderPrefix
|
|
// RUN: FileCheck -input-file=%t.dir/file.deps %s
|
|
// CHECK: dependency-gen-symlink.c.o
|
|
// CHECK: dependency-gen-symlink.c
|
|
// CHECK: a/header.h
|
|
// CHECK: b/header.h
|
|
// CHECK-NOT: with-header-guard.h
|
|
#include "a/header.h"
|
|
#include "b/header.h"
|
|
// System header shouldn't be included in dependencies.
|
|
#include <with-header-guard.h>
|
|
#include <with-header-guard.h>
|