You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							310 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							310 lines
						
					
					
						
							11 KiB
						
					
					
				
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * File:    shwild/implicit_link.h
							 | 
						|
								 *
							 | 
						|
								 * Purpose: Implicit linking for the shwild API.
							 | 
						|
								 *
							 | 
						|
								 * Created: 27th April 2006
							 | 
						|
								 * Updated: 19th December 2011
							 | 
						|
								 *
							 | 
						|
								 * Home:    http://synesis.com.au/software/
							 | 
						|
								 *
							 | 
						|
								 * Copyright (c) 2006-2011, Matthew Wilson and Synesis Software
							 | 
						|
								 * All rights reserved.
							 | 
						|
								 *
							 | 
						|
								 * Redistribution and use in source and binary forms, with or without 
							 | 
						|
								 * modification, are permitted provided that the following conditions are
							 | 
						|
								 * met:
							 | 
						|
								 *
							 | 
						|
								 * - Redistributions of source code must retain the above copyright notice,
							 | 
						|
								 *   this list of conditions and the following disclaimer.
							 | 
						|
								 * - Redistributions in binary form must reproduce the above copyright
							 | 
						|
								 *   notice, this list of conditions and the following disclaimer in the
							 | 
						|
								 *   documentation and/or other materials provided with the distribution.
							 | 
						|
								 * - Neither the names of Matthew Wilson and Synesis Software nor the names
							 | 
						|
								 *   of any contributors may be used to endorse or promote products derived
							 | 
						|
								 *   from this software without specific prior written permission.
							 | 
						|
								 *
							 | 
						|
								 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
							 | 
						|
								 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
							 | 
						|
								 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
							 | 
						|
								 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
							 | 
						|
								 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
							 | 
						|
								 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
							 | 
						|
								 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
							 | 
						|
								 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
							 | 
						|
								 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
							 | 
						|
								 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
							 | 
						|
								 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
							 | 
						|
								 *
							 | 
						|
								 * ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/** \file shwild/implicit_link.h \brief [C/C++] Implicit linking for the shwild API
							 | 
						|
								 *
							 | 
						|
								 * Inclusion of this file causes the appropriate library file to be automatically
							 | 
						|
								 * linked for compilers that support implicit linking: Borland, Metrowerks
							 | 
						|
								 * CodeWarrior, Intel, and Visual C++.
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#ifndef SHWILD_INCL_SHWILD_H_IMPLICIT_LINK
							 | 
						|
								#define SHWILD_INCL_SHWILD_H_IMPLICIT_LINK
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Version
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#ifndef SHWILD_DOCUMENTATION_SKIP_SECTION
							 | 
						|
								# define SHWILD_VER_SHWILD_H_IMPLICIT_LINK_MAJOR      1
							 | 
						|
								# define SHWILD_VER_SHWILD_H_IMPLICIT_LINK_MINOR      4
							 | 
						|
								# define SHWILD_VER_SHWILD_H_IMPLICIT_LINK_REVISION   1
							 | 
						|
								# define SHWILD_VER_SHWILD_H_IMPLICIT_LINK_EDIT       11
							 | 
						|
								#endif /* !SHWILD_DOCUMENTATION_SKIP_SECTION */
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Includes
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#ifndef SHWILD_INCL_SHWILD_H_SHWILD
							 | 
						|
								# include <shwild/shwild.h>
							 | 
						|
								#endif /* !SHWILD_INCL_SHWILD_H_SHWILD */
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Macros and definitions
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#define SHWILD_IMPL_LINK_STRINGIZE_2_(x)    #x
							 | 
						|
								#define SHWILD_IMPL_LINK_STRINGIZE_1_(x)    SHWILD_IMPL_LINK_STRINGIZE_2_(x)
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Implicit linking
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#if defined(_WIN32) || \
							 | 
						|
								    defined(_WIN64)
							 | 
						|
								
							 | 
						|
								# if defined(__BORLANDC__) || \
							 | 
						|
								     /* defined(__DMC__) || */ \
							 | 
						|
								     defined(__INTEL_COMPILER) || \
							 | 
						|
								     defined(__MWERKS__) || \
							 | 
						|
								     defined(_MSC_VER)
							 | 
						|
								#  if !defined(__COMO__)
							 | 
						|
								#   define SHWILD_IMPLICIT_LINK_SUPPORT
							 | 
						|
								#  endif /* compiler */
							 | 
						|
								# endif /* compiler */
							 | 
						|
								
							 | 
						|
								#if defined(SHWILD_IMPLICIT_LINK_SUPPORT) && \
							 | 
						|
								    defined(SHWILD_NO_IMPLICIT_LINK)
							 | 
						|
								# undef SHWILD_IMPLICIT_LINK_SUPPORT
							 | 
						|
								#endif /* SHWILD_IMPLICIT_LINK_SUPPORT && SHWILD_NO_IMPLICIT_LINK */
							 | 
						|
								
							 | 
						|
								# if defined(SHWILD_IMPLICIT_LINK_SUPPORT)
							 | 
						|
								
							 | 
						|
								  /* prefix */
							 | 
						|
								
							 | 
						|
								#  define SHWILD_IMPL_LINK_PREFIX
							 | 
						|
								
							 | 
						|
								  /* library basename */
							 | 
						|
								
							 | 
						|
								#  define SHWILD_IMPL_LINK_LIBRARY_BASENAME         "shwild"
							 | 
						|
								
							 | 
						|
								  /* major version */
							 | 
						|
								
							 | 
						|
								#  define SHWILD_IMPL_LINK_MAJOR_VERSION            "." SHWILD_IMPL_LINK_STRINGIZE_1_(SHWILD_VER_MAJOR)
							 | 
						|
								
							 | 
						|
								  /* module name */
							 | 
						|
								
							 | 
						|
								#  define SHWILD_IMPL_LINK_MODULE_NAME              /* ".core" */
							 | 
						|
								
							 | 
						|
								  /* compiler tag */
							 | 
						|
								    
							 | 
						|
								#  if defined(__BORLANDC__)
							 | 
						|
								#   if __BORLANDC__ == 0x0550
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc55"
							 | 
						|
								#   elif (__BORLANDC__ == 0x0551)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc551"
							 | 
						|
								#   elif (__BORLANDC__ == 0x0560)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc56"
							 | 
						|
								#   elif (__BORLANDC__ == 0x0564)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc564"
							 | 
						|
								#   elif (__BORLANDC__ == 0x0582)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc582"
							 | 
						|
								#   elif (0x0590 == (__BORLANDC__ & 0xfff0))
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc59x"
							 | 
						|
								#   elif (0x0610 == (__BORLANDC__ & 0xfff0))
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "bc61x"
							 | 
						|
								#   else /* ? __BORLANDC__ */
							 | 
						|
								#    error Unrecognised value of __BORLANDC__
							 | 
						|
								#   endif /* __BORLANDC__ */
							 | 
						|
								
							 | 
						|
								/*
							 | 
						|
								#  elif defined(__DMC__)
							 | 
						|
								#   define SHWILD_IMPL_LINK_COMPILER_NAME           "dm"
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#  elif defined(__INTEL_COMPILER)
							 | 
						|
								#   if (__INTEL_COMPILER == 600)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "icl6"
							 | 
						|
								#   elif (__INTEL_COMPILER == 700)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "icl7"
							 | 
						|
								#   elif (__INTEL_COMPILER == 800)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "icl8"
							 | 
						|
								#   elif (__INTEL_COMPILER == 900)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "icl9"
							 | 
						|
								#   elif (__INTEL_COMPILER == 1000)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "icl10"
							 | 
						|
								#   elif (__INTEL_COMPILER == 1100)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "icl11"
							 | 
						|
								#   else /* ? __INTEL_COMPILER */
							 | 
						|
								#    error Unrecognised value of __INTEL_COMPILER
							 | 
						|
								#   endif /* __INTEL_COMPILER */
							 | 
						|
								
							 | 
						|
								#  elif defined(__MWERKS__)
							 | 
						|
								#   if ((__MWERKS__ & 0xFF00) == 0x2400)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "cw7"
							 | 
						|
								#   elif ((__MWERKS__ & 0xFF00) == 0x3000)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "cw8"
							 | 
						|
								#   elif ((__MWERKS__ & 0xFF00) == 0x3200)
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "cw9"
							 | 
						|
								#   else /* ? __MWERKS__ */
							 | 
						|
								#    error Unrecognised value of __MWERKS__
							 | 
						|
								#   endif /* __MWERKS__ */
							 | 
						|
								
							 | 
						|
								#  elif defined(_MSC_VER)
							 | 
						|
								#   if _MSC_VER == 1000
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc4"
							 | 
						|
								#   elif _MSC_VER == 1020
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc42"
							 | 
						|
								#   elif _MSC_VER == 1100
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc5"
							 | 
						|
								#   elif _MSC_VER == 1200
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc6"
							 | 
						|
								#   elif _MSC_VER == 1300
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc7"
							 | 
						|
								#   elif _MSC_VER == 1310
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc71"
							 | 
						|
								#   elif _MSC_VER == 1400
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc8"
							 | 
						|
								#   elif _MSC_VER == 1500
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc9"
							 | 
						|
								#   elif _MSC_VER == 1600
							 | 
						|
								#    define SHWILD_IMPL_LINK_COMPILER_NAME          "vc10"
							 | 
						|
								#   else /* ? _MSC_VER */
							 | 
						|
								#    error Unrecognised value of _MSC_VER
							 | 
						|
								#   endif /* _MSC_VER */
							 | 
						|
								
							 | 
						|
								#  else /* ? compiler */
							 | 
						|
								#   error Unrecognised compiler
							 | 
						|
								#  endif /* compiler */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /* operating system tag */
							 | 
						|
								
							 | 
						|
								#  if defined(_STLSOFT_FORCE_ANY_COMPILER) && \
							 | 
						|
								      defined(PLATFORMSTL_OS_IS_UNIX) && \
							 | 
						|
								      defined(_WIN32)
							 | 
						|
								#   define SHWILD_IMPL_LINK_OS_TAG                  ".unix"
							 | 
						|
								#  endif /* pseudo UNIX */
							 | 
						|
								
							 | 
						|
								#  if !defined(SHWILD_IMPL_LINK_OS_TAG)
							 | 
						|
								#   define SHWILD_IMPL_LINK_OS_TAG                  ""
							 | 
						|
								#  endif /* !SHWILD_IMPL_LINK_OS_TAG */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /* architecture tag */
							 | 
						|
								
							 | 
						|
								#  if defined(PLATFORMSTL_ARCH_IS_X86)
							 | 
						|
								#   define SHWILD_IMPL_LINK_ARCH_TAG                ""
							 | 
						|
								#  elif defined(PLATFORMSTL_ARCH_IS_X64)            
							 | 
						|
								#   define SHWILD_IMPL_LINK_ARCH_TAG                ".x64"
							 | 
						|
								#  elif defined(PLATFORMSTL_ARCH_IS_IA64)           
							 | 
						|
								#   define SHWILD_IMPL_LINK_ARCH_TAG                ".ia64"
							 | 
						|
								#  endif /* arch */                                 
							 | 
						|
								                                                    
							 | 
						|
								#  if !defined(SHWILD_IMPL_LINK_ARCH_TAG)           
							 | 
						|
								#   define SHWILD_IMPL_LINK_ARCH_TAG                ""
							 | 
						|
								#  endif /* !SHWILD_IMPL_LINK_ARCH_TAG */           
							 | 
						|
								                                                    
							 | 
						|
								                                                    
							 | 
						|
								  /* encoding tag */                                
							 | 
						|
								                                                    
							 | 
						|
								#  if defined(SHWILD_USE_WIDE_STRINGS)              
							 | 
						|
								#   define SHWILD_IMPL_LINK_ENCODING_TAG            ".widestring"
							 | 
						|
								#  else /* ? SHWILD_USE_WIDE_STRINGS */             
							 | 
						|
								#   define SHWILD_IMPL_LINK_ENCODING_TAG            ""
							 | 
						|
								#  endif /* SHWILD_USE_WIDE_STRINGS */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /* threading tag */
							 | 
						|
								
							 | 
						|
								#  if defined(__MT__) || \
							 | 
						|
								      defined(_REENTRANT) || \
							 | 
						|
								      defined(_MT)
							 | 
						|
								#   if defined(_DLL) || \
							 | 
						|
								       defined(__DLL)
							 | 
						|
								#    define SHWILD_IMPL_LINK_THREADING_TAG          ".dll"
							 | 
						|
								#   else /* ? dll */
							 | 
						|
								#    define SHWILD_IMPL_LINK_THREADING_TAG          ".mt"
							 | 
						|
								#   endif /* dll */
							 | 
						|
								#  else /* ? mt */
							 | 
						|
								#   define SHWILD_IMPL_LINK_THREADING_TAG           ""
							 | 
						|
								#  endif /* mt */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /* NoX */
							 | 
						|
								
							 | 
						|
								#  if defined(SHWILD_CF_NOX)
							 | 
						|
								#   define SHWILD_IMPL_LINK_NOX_TYPE                ".nox"
							 | 
						|
								#  else /* ? SHWILD_CF_NOX */
							 | 
						|
								#   define SHWILD_IMPL_LINK_NOX_TYPE                ""
							 | 
						|
								#  endif /* SHWILD_CF_NOX */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /* debug tag */
							 | 
						|
								
							 | 
						|
								#  if defined(SHWILD_VARIANT_TEST)
							 | 
						|
								#   define SHWILD_IMPL_LINK_DEBUG_TAG               ".test"
							 | 
						|
								#  elif !defined(NDEBUG) && \
							 | 
						|
								     defined(_DEBUG)
							 | 
						|
								#   define SHWILD_IMPL_LINK_DEBUG_TAG               ".debug"
							 | 
						|
								#  else /* ? debug */
							 | 
						|
								#   define SHWILD_IMPL_LINK_DEBUG_TAG               ""
							 | 
						|
								#  endif /* debug */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /* suffix */
							 | 
						|
								
							 | 
						|
								#  define SHWILD_IMPL_LINK_SUFFIX                   ".lib"
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								   /* Library name is:
							 | 
						|
								    *
							 | 
						|
								    * [lib]<library-basename>.<major-version>.<module-name>.<compiler-name>[.<os-arch-tag>][.<char-encoding-tag>][.<threading-tag>][.<nox-tag>][.<debug-tag>].{a|lib}
							 | 
						|
								    */
							 | 
						|
								
							 | 
						|
								#  define SHWILD_IMPL_LINK_LIBRARY_NAME             SHWILD_IMPL_LINK_PREFIX \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_LIBRARY_BASENAME \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_MAJOR_VERSION \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_MODULE_NAME \
							 | 
						|
								                                                    "." SHWILD_IMPL_LINK_COMPILER_NAME \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_OS_TAG \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_ARCH_TAG \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_ENCODING_TAG \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_THREADING_TAG \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_NOX_TYPE \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_DEBUG_TAG \
							 | 
						|
								                                                    SHWILD_IMPL_LINK_SUFFIX
							 | 
						|
								                                                        
							 | 
						|
								
							 | 
						|
								#  pragma message("lib: " SHWILD_IMPL_LINK_LIBRARY_NAME)
							 | 
						|
								
							 | 
						|
								#  pragma comment(lib, SHWILD_IMPL_LINK_LIBRARY_NAME)
							 | 
						|
								
							 | 
						|
								# endif /* SHWILD_IMPLICIT_LINK_SUPPORT */
							 | 
						|
								
							 | 
						|
								#endif /* Win-32 || Win-64 */
							 | 
						|
								
							 | 
						|
								/* ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								#endif /* SHWILD_INCL_SHWILD_H_IMPLICIT_LINK */
							 | 
						|
								
							 | 
						|
								/* ///////////////////////////// end of file //////////////////////////// */
							 |