xref: /freebsd-src/contrib/llvm-project/clang/include/clang-c/Platform.h (revision e25152834cdf3b353892835a4f3b157e066a8ed4)
10b57cec5SDimitry Andric /*===-- clang-c/Platform.h - C Index platform decls   -------------*- C -*-===*\
20b57cec5SDimitry Andric |*                                                                            *|
30b57cec5SDimitry Andric |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *|
40b57cec5SDimitry Andric |* Exceptions.                                                                *|
50b57cec5SDimitry Andric |* See https://llvm.org/LICENSE.txt for license information.                  *|
60b57cec5SDimitry Andric |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *|
70b57cec5SDimitry Andric |*                                                                            *|
80b57cec5SDimitry Andric |*===----------------------------------------------------------------------===*|
90b57cec5SDimitry Andric |*                                                                            *|
100b57cec5SDimitry Andric |* This header provides platform specific macros (dllimport, deprecated, ...) *|
110b57cec5SDimitry Andric |*                                                                            *|
120b57cec5SDimitry Andric \*===----------------------------------------------------------------------===*/
130b57cec5SDimitry Andric 
140b57cec5SDimitry Andric #ifndef LLVM_CLANG_C_PLATFORM_H
150b57cec5SDimitry Andric #define LLVM_CLANG_C_PLATFORM_H
160b57cec5SDimitry Andric 
17480093f4SDimitry Andric #include "clang-c/ExternC.h"
18480093f4SDimitry Andric 
19480093f4SDimitry Andric LLVM_CLANG_C_EXTERN_C_BEGIN
200b57cec5SDimitry Andric 
21*5ffd83dbSDimitry Andric /* Windows DLL import/export. */
22*5ffd83dbSDimitry Andric #ifndef CINDEX_NO_EXPORTS
23*5ffd83dbSDimitry Andric   #define CINDEX_EXPORTS
24*5ffd83dbSDimitry Andric #endif
25*5ffd83dbSDimitry Andric #ifdef _WIN32
26*5ffd83dbSDimitry Andric   #ifdef CINDEX_EXPORTS
270b57cec5SDimitry Andric     #ifdef _CINDEX_LIB_
280b57cec5SDimitry Andric       #define CINDEX_LINKAGE __declspec(dllexport)
290b57cec5SDimitry Andric     #else
300b57cec5SDimitry Andric       #define CINDEX_LINKAGE __declspec(dllimport)
310b57cec5SDimitry Andric     #endif
32*5ffd83dbSDimitry Andric   #endif
33*5ffd83dbSDimitry Andric #elif defined(CINDEX_EXPORTS) && defined(__GNUC__)
34*5ffd83dbSDimitry Andric   #define CINDEX_LINKAGE __attribute__((visibility("default")))
35*5ffd83dbSDimitry Andric #endif
36*5ffd83dbSDimitry Andric 
37*5ffd83dbSDimitry Andric #ifndef CINDEX_LINKAGE
380b57cec5SDimitry Andric   #define CINDEX_LINKAGE
390b57cec5SDimitry Andric #endif
400b57cec5SDimitry Andric 
410b57cec5SDimitry Andric #ifdef __GNUC__
420b57cec5SDimitry Andric   #define CINDEX_DEPRECATED __attribute__((deprecated))
430b57cec5SDimitry Andric #else
440b57cec5SDimitry Andric   #ifdef _MSC_VER
450b57cec5SDimitry Andric     #define CINDEX_DEPRECATED __declspec(deprecated)
460b57cec5SDimitry Andric   #else
470b57cec5SDimitry Andric     #define CINDEX_DEPRECATED
480b57cec5SDimitry Andric   #endif
490b57cec5SDimitry Andric #endif
500b57cec5SDimitry Andric 
51480093f4SDimitry Andric LLVM_CLANG_C_EXTERN_C_END
52480093f4SDimitry Andric 
530b57cec5SDimitry Andric #endif
54