| /*===-- llvm-c/Visibility.h - Visibility macros for llvm-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 header defines visibility macros used for the LLVM C interface. These *| |
| |* macros are used to annotate C functions that should be exported as part of *| |
| |* a shared library or DLL. *| |
| |* *| |
| \*===----------------------------------------------------------------------===*/ |
| |
| #ifndef LLVM_C_VISIBILITY_H |
| #define LLVM_C_VISIBILITY_H |
| |
| #include "llvm/Config/llvm-config.h" |
| |
| /// LLVM_C_ABI is the export/visibility macro used to mark symbols declared in |
| /// llvm-c as exported when built as a shared library. |
| |
| #if !defined(LLVM_ABI_GENERATING_ANNOTATIONS) |
| // TODO(https://github.com/llvm/llvm-project/issues/145406): eliminate need for |
| // two preprocessor definitions to gate LLVM_ABI macro definitions. |
| #if defined(LLVM_ENABLE_LLVM_C_EXPORT_ANNOTATIONS) && \ |
| !defined(LLVM_BUILD_STATIC) |
| #if defined(_WIN32) && !defined(__MINGW32__) |
| #if defined(LLVM_EXPORTS) |
| #define LLVM_C_ABI __declspec(dllexport) |
| #else |
| #define LLVM_C_ABI __declspec(dllimport) |
| #endif |
| #elif defined(__has_attribute) && __has_attribute(visibility) |
| #define LLVM_C_ABI __attribute__((visibility("default"))) |
| #endif |
| #endif |
| #if !defined(LLVM_C_ABI) |
| #define LLVM_C_ABI |
| #endif |
| #endif |
| |
| #endif |