117 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			117 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// (C) Copyright Tobias Schwinger
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Use modification and distribution are subject to the boost Software License,
							 | 
						||
| 
								 | 
							
								// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//------------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
							 | 
						||
| 
								 | 
							
								#define BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/config.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/detail/workaround.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(BOOST_MSVC)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   if BOOST_MSVC < 1310
							 | 
						||
| 
								 | 
							
								#     error "unsupported compiler version"
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // enable clrcall calling covention (call to .NET managed code) when
							 | 
						||
| 
								 | 
							
								      // compiling with /clr 
							 | 
						||
| 
								 | 
							
								#     if BOOST_MSVC >= 1400 && defined(__cplusplus_cli)
							 | 
						||
| 
								 | 
							
								#       ifndef BOOST_FT_CC_CLRCALL
							 | 
						||
| 
								 | 
							
								#       define BOOST_FT_CC_CLRCALL callable_builtin
							 | 
						||
| 
								 | 
							
								#       endif
							 | 
						||
| 
								 | 
							
								#     endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // Intel x86 architecture specific calling conventions
							 | 
						||
| 
								 | 
							
								#     ifdef _M_IX86
							 | 
						||
| 
								 | 
							
								#       define BOOST_FT_COMMON_X86_CCs callable_builtin
							 | 
						||
| 
								 | 
							
								#       if BOOST_MSVC < 1400
							 | 
						||
| 
								 | 
							
								          // version 7.1 is missing a keyword to specify the thiscall cc ...
							 | 
						||
| 
								 | 
							
								#         ifndef BOOST_FT_CC_IMPLICIT_THISCALL
							 | 
						||
| 
								 | 
							
								#         define BOOST_FT_CC_IMPLICIT_THISCALL non_variadic|member|callable_builtin
							 | 
						||
| 
								 | 
							
								#         ifndef BOOST_FT_CONFIG_OK
							 | 
						||
| 
								 | 
							
								#           pragma message("INFO| /Gd /Gr /Gz will compiler options will cause")
							 | 
						||
| 
								 | 
							
								#           pragma message("INFO| a compile error.")
							 | 
						||
| 
								 | 
							
								#           pragma message("INFO| Reconfigure Boost.FunctionTypes in this case.")
							 | 
						||
| 
								 | 
							
								#           pragma message("INFO| This message can be suppressed by defining")
							 | 
						||
| 
								 | 
							
								#           pragma message("INFO| BOOST_FT_CONFIG_OK.")
							 | 
						||
| 
								 | 
							
								#         endif
							 | 
						||
| 
								 | 
							
								#         endif
							 | 
						||
| 
								 | 
							
								#       else 
							 | 
						||
| 
								 | 
							
								          // ...introduced in version 8
							 | 
						||
| 
								 | 
							
								#         ifndef BOOST_FT_CC_THISCALL
							 | 
						||
| 
								 | 
							
								#         define BOOST_FT_CC_THISCALL non_variadic|member|callable_builtin
							 | 
						||
| 
								 | 
							
								#         endif
							 | 
						||
| 
								 | 
							
								#       endif
							 | 
						||
| 
								 | 
							
								#     endif
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#elif defined(__GNUC__) && !defined(BOOST_INTEL_LINUX)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   if __GNUC__ < 3
							 | 
						||
| 
								 | 
							
								#     error "unsupported compiler version"
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#     if defined(__i386__)
							 | 
						||
| 
								 | 
							
								#       // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20439
							 | 
						||
| 
								 | 
							
								#       // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29328
							 | 
						||
| 
								 | 
							
								#       if BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(4))
							 | 
						||
| 
								 | 
							
								#         ifndef BOOST_FT_CC_IMPLICIT 
							 | 
						||
| 
								 | 
							
								#         define BOOST_FT_CC_IMPLICIT member|callable_builtin
							 | 
						||
| 
								 | 
							
								#         endif
							 | 
						||
| 
								 | 
							
								#         define BOOST_FT_COMMON_X86_CCs non_member|callable_builtin
							 | 
						||
| 
								 | 
							
								#       else
							 | 
						||
| 
								 | 
							
								#         define BOOST_FT_COMMON_X86_CCs callable_builtin
							 | 
						||
| 
								 | 
							
								#       endif
							 | 
						||
| 
								 | 
							
								#     else
							 | 
						||
| 
								 | 
							
								#       ifndef BOOST_FT_CC_IMPLICIT
							 | 
						||
| 
								 | 
							
								#       define BOOST_FT_CC_IMPLICIT callable_builtin
							 | 
						||
| 
								 | 
							
								#       endif
							 | 
						||
| 
								 | 
							
								#     endif
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   if (defined(BOOST_FT_CC_CDECL) || defined(BOOST_FT_COMMON_X86_CCs)) \
							 | 
						||
| 
								 | 
							
								        && !defined(__cdecl)
							 | 
						||
| 
								 | 
							
								#     define __cdecl __attribute__((__cdecl__))
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								#   if (defined(BOOST_FT_CC_STDCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \
							 | 
						||
| 
								 | 
							
								        && !defined(__stdcall)
							 | 
						||
| 
								 | 
							
								#     define __stdcall __attribute__((__stdcall__))
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								#   if (defined(BOOST_FT_CC_FASTCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \
							 | 
						||
| 
								 | 
							
								        && !defined(__fastcall)
							 | 
						||
| 
								 | 
							
								#     define __fastcall __attribute__((__fastcall__))
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#elif defined(__BORLANDC__)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   if __BORLANDC__ < 0x550
							 | 
						||
| 
								 | 
							
								#     error "unsupported compiler version"
							 | 
						||
| 
								 | 
							
								#   elif __BORLANDC__ > 0x565
							 | 
						||
| 
								 | 
							
								#     pragma message("WARNING: library untested with this compiler version")
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
							 | 
						||
| 
								 | 
							
								#     define BOOST_FT_COMMON_X86_CCs callable_builtin
							 | 
						||
| 
								 | 
							
								#   endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // syntactic specialities of cc specifier
							 | 
						||
| 
								 | 
							
								#   define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
							 | 
						||
| 
								 | 
							
								                        result() cc_spec() lparen() type_mod() name() rparen()
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								    // only enable default calling convention
							 | 
						||
| 
								 | 
							
								#   define BOOST_FT_CC_IMPLICIT callable_builtin
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 |