Home | History | Annotate | Download | only in include
      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
     16 #endif
     17 
     18 #if !defined(__has_attribute)
     19 #define __has_attribute(_attribute_) 0
     20 #endif
     21 
     22 #if defined(_WIN32)
     23  #if defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
     24   #define _LIBCXXABI_HIDDEN
     25   #define _LIBCXXABI_DATA_VIS
     26   #define _LIBCXXABI_FUNC_VIS
     27   #define _LIBCXXABI_TYPE_VIS
     28  #elif defined(_LIBCXXABI_BUILDING_LIBRARY)
     29   #define _LIBCXXABI_HIDDEN
     30   #define _LIBCXXABI_DATA_VIS __declspec(dllexport)
     31   #define _LIBCXXABI_FUNC_VIS __declspec(dllexport)
     32   #define _LIBCXXABI_TYPE_VIS __declspec(dllexport)
     33  #else
     34   #define _LIBCXXABI_HIDDEN
     35   #define _LIBCXXABI_DATA_VIS __declspec(dllimport)
     36   #define _LIBCXXABI_FUNC_VIS __declspec(dllimport)
     37   #define _LIBCXXABI_TYPE_VIS __declspec(dllimport)
     38  #endif
     39 #else
     40  #if !defined(_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
     41   #define _LIBCXXABI_HIDDEN __attribute__((__visibility__("hidden")))
     42   #define _LIBCXXABI_DATA_VIS __attribute__((__visibility__("default")))
     43   #define _LIBCXXABI_FUNC_VIS __attribute__((__visibility__("default")))
     44   #if __has_attribute(__type_visibility__)
     45    #define _LIBCXXABI_TYPE_VIS __attribute__((__type_visibility__("default")))
     46   #else
     47    #define _LIBCXXABI_TYPE_VIS __attribute__((__visibility__("default")))
     48   #endif
     49  #else
     50   #define _LIBCXXABI_HIDDEN
     51   #define _LIBCXXABI_DATA_VIS
     52   #define _LIBCXXABI_FUNC_VIS
     53   #define _LIBCXXABI_TYPE_VIS
     54  #endif
     55 #endif
     56 
     57 #if defined(_WIN32)
     58 #define _LIBCXXABI_WEAK
     59 #else
     60 #define _LIBCXXABI_WEAK __attribute__((__weak__))
     61 #endif
     62 
     63 #endif // ____CXXABI_CONFIG_H
     64