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