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 //////////////////////////// */
 |