File indexing completed on 2025-01-18 09:30:55
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
0010 #define BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
0011
0012 #include <boost/config.hpp>
0013 #include <boost/detail/workaround.hpp>
0014
0015 #if defined(BOOST_MSVC)
0016
0017 # if BOOST_MSVC < 1310
0018 # error "unsupported compiler version"
0019 # endif
0020
0021 # ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
0022
0023
0024
0025 # if BOOST_MSVC >= 1400 && defined(__cplusplus_cli)
0026 # ifndef BOOST_FT_CC_CLRCALL
0027 # define BOOST_FT_CC_CLRCALL callable_builtin
0028 # endif
0029 # endif
0030
0031
0032 # ifdef _M_IX86
0033 # define BOOST_FT_COMMON_X86_CCs callable_builtin
0034 # if BOOST_MSVC < 1400
0035
0036 # ifndef BOOST_FT_CC_IMPLICIT_THISCALL
0037 # define BOOST_FT_CC_IMPLICIT_THISCALL non_variadic|member|callable_builtin
0038 # ifndef BOOST_FT_CONFIG_OK
0039 # pragma message("INFO| /Gd /Gr /Gz will compiler options will cause")
0040 # pragma message("INFO| a compile error.")
0041 # pragma message("INFO| Reconfigure Boost.FunctionTypes in this case.")
0042 # pragma message("INFO| This message can be suppressed by defining")
0043 # pragma message("INFO| BOOST_FT_CONFIG_OK.")
0044 # endif
0045 # endif
0046 # else
0047
0048 # ifndef BOOST_FT_CC_THISCALL
0049 # define BOOST_FT_CC_THISCALL non_variadic|member|callable_builtin
0050 # endif
0051 # endif
0052 # endif
0053 # endif
0054
0055 #elif defined(__GNUC__) && !defined(BOOST_INTEL_LINUX)
0056
0057 # if __GNUC__ < 3
0058 # error "unsupported compiler version"
0059 # endif
0060
0061 # ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
0062
0063 # if defined(__i386__)
0064 #
0065 #
0066 # if BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(4))
0067 # ifndef BOOST_FT_CC_IMPLICIT
0068 # define BOOST_FT_CC_IMPLICIT member|callable_builtin
0069 # endif
0070 # define BOOST_FT_COMMON_X86_CCs non_member|callable_builtin
0071 # else
0072 # define BOOST_FT_COMMON_X86_CCs callable_builtin
0073 # endif
0074 # else
0075 # ifndef BOOST_FT_CC_IMPLICIT
0076 # define BOOST_FT_CC_IMPLICIT callable_builtin
0077 # endif
0078 # endif
0079 # endif
0080
0081 # if (defined(BOOST_FT_CC_CDECL) || defined(BOOST_FT_COMMON_X86_CCs)) \
0082 && !defined(__cdecl)
0083 # define __cdecl __attribute__((__cdecl__))
0084 # endif
0085 # if (defined(BOOST_FT_CC_STDCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \
0086 && !defined(__stdcall)
0087 # define __stdcall __attribute__((__stdcall__))
0088 # endif
0089 # if (defined(BOOST_FT_CC_FASTCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \
0090 && !defined(__fastcall)
0091 # define __fastcall __attribute__((__fastcall__))
0092 # endif
0093
0094 #elif defined(BOOST_BORLANDC)
0095
0096 # if BOOST_BORLANDC < 0x550
0097 # error "unsupported compiler version"
0098 # elif BOOST_BORLANDC > 0x565
0099 # pragma message("WARNING: library untested with this compiler version")
0100 # endif
0101
0102 # ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
0103 # define BOOST_FT_COMMON_X86_CCs callable_builtin
0104 # endif
0105
0106
0107 # define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
0108 result() cc_spec() lparen() type_mod() name() rparen()
0109 #else
0110
0111 # define BOOST_FT_CC_IMPLICIT callable_builtin
0112 #endif
0113
0114
0115 #endif
0116