1 //===-------------------------- __cxxabi_config.h -------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef ____CXXABI_CONFIG_H 11 #define ____CXXABI_CONFIG_H 12 13 #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \ 14 !defined(__ARM_DWARF_EH__) 15 #define LIBCXXABI_ARM_EHABI 1 16 #else 17 #define LIBCXXABI_ARM_EHABI 0 18 #endif 19 20 #if !defined(__has_attribute) 21 #define __has_attribute(_attribute_) 0 22 #endif 23 24 #if defined(_WIN32) 25 #if defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS) 26 #define _LIBCXXABI_HIDDEN 27 #define _LIBCXXABI_DATA_VIS 28 #define _LIBCXXABI_FUNC_VIS 29 #define _LIBCXXABI_TYPE_VIS 30 #elif defined(_LIBCXXABI_BUILDING_LIBRARY) 31 #define _LIBCXXABI_HIDDEN 32 #define _LIBCXXABI_DATA_VIS __declspec(dllexport) 33 #define _LIBCXXABI_FUNC_VIS __declspec(dllexport) 34 #define _LIBCXXABI_TYPE_VIS __declspec(dllexport) 35 #else 36 #define _LIBCXXABI_HIDDEN 37 #define _LIBCXXABI_DATA_VIS __declspec(dllimport) 38 #define _LIBCXXABI_FUNC_VIS __declspec(dllimport) 39 #define _LIBCXXABI_TYPE_VIS __declspec(dllimport) 40 #endif 41 #else 42 #if !defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS) 43 #define _LIBCXXABI_HIDDEN __attribute__((__visibility__("hidden"))) 44 #define _LIBCXXABI_DATA_VIS __attribute__((__visibility__("default"))) 45 #define _LIBCXXABI_FUNC_VIS __attribute__((__visibility__("default"))) 46 #if __has_attribute(__type_visibility__) 47 #define _LIBCXXABI_TYPE_VIS __attribute__((__type_visibility__("default"))) 48 #else 49 #define _LIBCXXABI_TYPE_VIS __attribute__((__visibility__("default"))) 50 #endif 51 #else 52 #define _LIBCXXABI_HIDDEN 53 #define _LIBCXXABI_DATA_VIS 54 #define _LIBCXXABI_FUNC_VIS 55 #define _LIBCXXABI_TYPE_VIS 56 #endif 57 #endif 58 59 #endif // ____CXXABI_CONFIG_H 60