Files
Evan Wilde 3f08f4f53c Fix RemoteInspection LLVM header location
This patch fixes the location of the llvm remote inspection headers for
MSVC header lookup. MSVC appears to search in the directory of the
current header before returning to the specified header search
directories. When building SwiftRemoteMirror, the file contains a
reference to `swift/RemoteInspection/ReflectionContext.h`. Under
RelfectionContext.h, there is an include of "llvm/BinaryFormat/COFF.h".
Because there is an `llvm` and `llvm-c` directory inside of
`swift/RemoteInspection/`, and `ReflectionContext.h` is in that
directory, MSVC is expanding the `COFF.h` inside of the
RemoteInspection headers instead of the copy in LLVM itself, resulting
in eventually finding usages of `countPopulation` instead of using the
new `llvm::popcount` API, ultimately resulting in a build failure.

The fix is to ensure that the `llvm` header directory does not live
immediately next to the headers in RemoteInspection, but instead offset
them by one. The LLVM headers copied into RemoteInspection are supposed
to be used when compiling the runtime libraries, so I chose the name
"RuntimeHeaders".
2023-08-30 10:00:05 -07:00

40 lines
1.9 KiB
C

/*===- llvm-c/ExternC.h - Wrapper for 'extern "C"' ----------------*- C -*-===*\
|* *|
|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
|* Exceptions. *|
|* See https://llvm.org/LICENSE.txt for license information. *|
|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
|* This file defines an 'extern "C"' wrapper *|
|* *|
\*===----------------------------------------------------------------------===*/
#ifndef LLVM_C_EXTERNC_H
#define LLVM_C_EXTERNC_H
#ifdef __clang__
#define LLVM_C_STRICT_PROTOTYPES_BEGIN \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic error \"-Wstrict-prototypes\"")
#define LLVM_C_STRICT_PROTOTYPES_END _Pragma("clang diagnostic pop")
#else
#define LLVM_C_STRICT_PROTOTYPES_BEGIN
#define LLVM_C_STRICT_PROTOTYPES_END
#endif
#ifdef __cplusplus
#define LLVM_C_EXTERN_C_BEGIN \
extern "C" { \
LLVM_C_STRICT_PROTOTYPES_BEGIN
#define LLVM_C_EXTERN_C_END \
LLVM_C_STRICT_PROTOTYPES_END \
}
#else
#define LLVM_C_EXTERN_C_BEGIN LLVM_C_STRICT_PROTOTYPES_BEGIN
#define LLVM_C_EXTERN_C_END LLVM_C_STRICT_PROTOTYPES_END
#endif
#endif