Synesis Software STLSoft - ... Robust, Lightweight, Cross-platform, Template Software ...

xtests/implicit_link.h

Go to the documentation of this file.
00001 /* /////////////////////////////////////////////////////////////////////////
00002  * File:    xtests/implicit_link.h (formerly xtests/xtests_implicit_link.h)
00003  *
00004  * Purpose: Implicit linking for the xTests API
00005  *
00006  * Created: 3rd March 2003
00007  * Updated: 25th April 2009
00008  *
00009  * Home:    http://xtests.org/
00010  *
00011  * Copyright (c) 2003-2009, Matthew Wilson and Synesis Software
00012  * All rights reserved.
00013  *
00014  * Redistribution and use in source and binary forms, with or without
00015  * modification, are permitted provided that the following conditions are
00016  * met:
00017  *
00018  * - Redistributions of source code must retain the above copyright notice,
00019  *   this list of conditions and the following disclaimer.
00020  * - Redistributions in binary form must reproduce the above copyright
00021  *   notice, this list of conditions and the following disclaimer in the
00022  *   documentation and/or other materials provided with the distribution.
00023  * - Neither the name(s) of Matthew Wilson and Synesis Software nor the
00024  *   names of any contributors may be used to endorse or promote products
00025  *   derived from this software without specific prior written permission.
00026  *
00027  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
00028  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
00029  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00030  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
00031  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00032  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00033  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00034  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00035  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00036  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00037  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00038  *
00039  * ////////////////////////////////////////////////////////////////////// */
00040 
00041 
00054 #ifndef XTESTS_INCL_XTESTS_H_IMPLICIT_LINK
00055 #define XTESTS_INCL_XTESTS_H_IMPLICIT_LINK
00056 
00057 /* /////////////////////////////////////////////////////////////////////////
00058  * Version information
00059  */
00060 
00061 #ifndef XTESTS_DOCUMENTATION_SKIP_SECTION
00062 # define XTESTS_VER_XTESTS_H_IMPLICIT_LINK_MAJOR    1
00063 # define XTESTS_VER_XTESTS_H_IMPLICIT_LINK_MINOR    8
00064 # define XTESTS_VER_XTESTS_H_IMPLICIT_LINK_REVISION 1
00065 # define XTESTS_VER_XTESTS_H_IMPLICIT_LINK_EDIT     28
00066 #endif /* !XTESTS_DOCUMENTATION_SKIP_SECTION */
00067 
00068 /* /////////////////////////////////////////////////////////////////////////
00069  * Includes
00070  */
00071 
00072 #ifndef XTESTS_INCL_XTESTS_H_XTESTS
00073 # include <xtests/xtests.h>
00074 #endif /* !XTESTS_INCL_XTESTS_H_XTESTS */
00075 
00076 #include <platformstl/platformstl.h>
00077 
00078 /* /////////////////////////////////////////////////////////////////////////
00079  * Implicit linking
00080  */
00081 
00082 #if defined(_WIN32) || \
00083     defined(_WIN64)
00084 
00085 # if defined(__BORLANDC__) || \
00086      /* defined(__DMC__) || */ \
00087      defined(__INTEL_COMPILER) || \
00088      defined(__MWERKS__) || \
00089      defined(_MSC_VER)
00090 #  if !defined(__COMO__)
00091 #   define XTESTS_IMPLICIT_LINK_SUPPORT
00092 #  endif /* compiler */
00093 # endif /* compiler */
00094 
00095 # if defined(XTESTS_IMPLICIT_LINK_SUPPORT) && \
00096      defined(XTESTS_NO_IMPLICIT_LINK)
00097 #  undef XTESTS_IMPLICIT_LINK_SUPPORT
00098 # endif /* XTESTS_IMPLICIT_LINK_SUPPORT && XTESTS_NO_IMPLICIT_LINK */
00099 
00100 # if defined(XTESTS_IMPLICIT_LINK_SUPPORT)
00101 
00102   /* prefix */
00103 
00104 #  define XTESTS_IMPL_LINK_PREFIX
00105 
00106   /* library basename */
00107 
00108 #  define XTESTS_IMPL_LINK_LIBRARY_BASENAME     "xtests"
00109 
00110   /* major version */
00111 
00112 #  define XTESTS_IMPL_LINK_MAJOR_VERSION        "." STLSOFT_STRINGIZE(_XTESTS_VER_MAJOR)
00113 
00114   /* module name */
00115 
00116 #  define XTESTS_IMPL_LINK_MODULE_NAME          ".core"
00117 
00118   /* compiler tag */
00119 
00120 #  if defined(__BORLANDC__)
00121 #   if __BORLANDC__ == 0x0550
00122 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc55"
00123 #   elif (__BORLANDC__ == 0x0551)
00124 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc551"
00125 #   elif (__BORLANDC__ == 0x0560)
00126 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc56"
00127 #   elif (__BORLANDC__ == 0x0564)
00128 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc564"
00129 #   elif (__BORLANDC__ == 0x0582)
00130 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc582"
00131 #   elif (0x0590 == (__BORLANDC__ & 0xfff0))
00132 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc59x"
00133 #   elif (0x0610 == (__BORLANDC__ & 0xfff0))
00134 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "bc61x"
00135 #   else /* ? __BORLANDC__ */
00136 #    error Unrecognised value of __BORLANDC__
00137 #   endif /* __BORLANDC__ */
00138 
00139 /*
00140 #  elif defined(__DMC__)
00141 #   define XTESTS_IMPL_LINK_COMPILER_NAME       "dm"
00142  */
00143 
00144 #  elif defined(__INTEL_COMPILER)
00145 #   if __INTEL_COMPILER == 600
00146 #    define   XTESTS_IMPL_LINK_COMPILER_NAME    "icl6"
00147 #   elif __INTEL_COMPILER == 700
00148 #    define   XTESTS_IMPL_LINK_COMPILER_NAME    "icl7"
00149 #   elif __INTEL_COMPILER == 800
00150 #    define   XTESTS_IMPL_LINK_COMPILER_NAME    "icl8"
00151 #   elif __INTEL_COMPILER == 900
00152 #    define   XTESTS_IMPL_LINK_COMPILER_NAME    "icl9"
00153 #   elif __INTEL_COMPILER == 1000
00154 #    define   XTESTS_IMPL_LINK_COMPILER_NAME    "icl10"
00155 #   elif __INTEL_COMPILER == 1100
00156 #    define   XTESTS_IMPL_LINK_COMPILER_NAME    "icl11"
00157 #   else /* ? __INTEL_COMPILER */
00158 #    error Intel C/C++ version not supported
00159 #   endif /* __INTEL_COMPILER */
00160 
00161 #  elif defined(__MWERKS__)
00162 #   if ((__MWERKS__ & 0xFF00) == 0x2400)
00163 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "cw7"
00164 #   elif ((__MWERKS__ & 0xFF00) == 0x3000)
00165 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "cw8"
00166 #   elif ((__MWERKS__ & 0xFF00) == 0x3200)
00167 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "cw9"
00168 #   else /* ? __MWERKS__ */
00169 #    error Unrecognised value of __MWERKS__
00170 #   endif /* __MWERKS__ */
00171 
00172 #  elif defined(_MSC_VER)
00173 #   if _MSC_VER == 1000
00174 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc4"
00175 #   elif _MSC_VER == 1020
00176 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc42"
00177 #   elif _MSC_VER == 1100
00178 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc5"
00179 #   elif _MSC_VER == 1200
00180 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc6"
00181 #   elif _MSC_VER == 1300
00182 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc7"
00183 #   elif _MSC_VER == 1310
00184 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc71"
00185 #   elif _MSC_VER == 1400
00186 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc8"
00187 #   elif _MSC_VER == 1500
00188 #    define XTESTS_IMPL_LINK_COMPILER_NAME      "vc9"
00189 #   else /* ? _MSC_VER */
00190 #    error Visual C++ version not supported
00191 #   endif /* _MSC_VER */
00192 
00193 #  else /* ? compiler */
00194 #   error Unrecognised compiler
00195 #  endif /* compiler */
00196 
00197 
00198   /* operating system tag */
00199 
00200 #  if defined(_STLSOFT_FORCE_ANY_COMPILER) && \
00201       defined(PLATFORMSTL_OS_IS_UNIX) && \
00202       defined(_WIN32)
00203 #   define XTESTS_IMPL_LINK_OS_TAG              ".unix"
00204 #  endif /* pseudo UNIX */
00205 
00206 #  if !defined(XTESTS_IMPL_LINK_OS_TAG)
00207 #   define XTESTS_IMPL_LINK_OS_TAG              ""
00208 #  endif /* !XTESTS_IMPL_LINK_OS_TAG */
00209 
00210 
00211   /* architecture tag */
00212 
00213 #  if defined(PLATFORMSTL_ARCH_IS_X86)
00214 #   define XTESTS_IMPL_LINK_ARCH_TAG            ""
00215 #  elif defined(PLATFORMSTL_ARCH_IS_X64)
00216 #   define XTESTS_IMPL_LINK_ARCH_TAG            ".x64"
00217 #  elif defined(PLATFORMSTL_ARCH_IS_IA64)
00218 #   define XTESTS_IMPL_LINK_ARCH_TAG            ".ia64"
00219 #  endif /* arch */
00220 
00221 #  if !defined(XTESTS_IMPL_LINK_ARCH_TAG)
00222 #   define XTESTS_IMPL_LINK_ARCH_TAG            ""
00223 #  endif /* !XTESTS_IMPL_LINK_ARCH_TAG */
00224 
00225 
00226   /* encoding tag */
00227 
00228 #  if defined(XTESTS_USE_WIDE_STRINGS)
00229 #   define XTESTS_IMPL_LINK_ENCODING_TAG        ".widestring"
00230 #  else /* ? XTESTS_USE_WIDE_STRINGS */
00231 #   define XTESTS_IMPL_LINK_ENCODING_TAG        ""
00232 #  endif /* XTESTS_USE_WIDE_STRINGS */
00233 
00234 
00235   /* threading tag */
00236 
00237 #  if defined(__MT__) || \
00238       defined(_REENTRANT) || \
00239       defined(_MT)
00240 #   if defined(_DLL) || \
00241        defined(__DLL)
00242 #    define XTESTS_IMPL_LINK_THREADING_TAG      ".dll"
00243 #   else /* ? dll */
00244 #    define XTESTS_IMPL_LINK_THREADING_TAG      ".mt"
00245 #   endif /* dll */
00246 #  else /* ? mt */
00247 #    define XTESTS_IMPL_LINK_THREADING_TAG      ""
00248 #  endif /* mt */
00249 
00250 
00251   /* NoX */
00252 
00253 #  if defined(XTESTS_CF_NOX)
00254 #   define XTESTS_IMPL_LINK_NOX_TAG             ".nox"
00255 #  else /* ? XTESTS_CF_NOX */
00256 #   define XTESTS_IMPL_LINK_NOX_TAG             ""
00257 #  endif /* XTESTS_CF_NOX */
00258 
00259 
00260   /* debug tag */
00261 
00262 #  if !defined(NDEBUG) && \
00263       defined(_DEBUG)
00264 #   define XTESTS_IMPL_LINK_DEBUG_TAG           ".debug"
00265 #  else /* ? _DEBUG */
00266 #   define XTESTS_IMPL_LINK_DEBUG_TAG           ""
00267 #  endif /* _DEBUG */
00268 
00269 
00270   /* suffix */
00271 
00272 #  define XTESTS_IMPL_LINK_SUFFIX               ".lib"
00273 
00274 
00275    /* Library name is:
00276     *
00277     * [lib]<library-basename>.<major-version>.<module-name>.<compiler-name>[.<os-arch-tag>][.<char-encoding-tag>][.<threading-tag>][.<nox-tag>][.<debug-tag>].{a|lib}
00278     */
00279 
00280 #  define XTESTS_IMPL_LINK_LIBRARY_NAME         XTESTS_IMPL_LINK_PREFIX \
00281                                                 XTESTS_IMPL_LINK_LIBRARY_BASENAME \
00282                                                 XTESTS_IMPL_LINK_MAJOR_VERSION \
00283                                                 XTESTS_IMPL_LINK_MODULE_NAME \
00284                                                 "." XTESTS_IMPL_LINK_COMPILER_NAME \
00285                                                 XTESTS_IMPL_LINK_OS_TAG \
00286                                                 XTESTS_IMPL_LINK_ARCH_TAG \
00287                                                 XTESTS_IMPL_LINK_ENCODING_TAG \
00288                                                 XTESTS_IMPL_LINK_THREADING_TAG \
00289                                                 XTESTS_IMPL_LINK_NOX_TAG \
00290                                                 XTESTS_IMPL_LINK_DEBUG_TAG \
00291                                                 XTESTS_IMPL_LINK_SUFFIX
00292                                                         
00293 
00294 #  pragma message("lib: " XTESTS_IMPL_LINK_LIBRARY_NAME)
00295 
00296 #  pragma comment(lib, XTESTS_IMPL_LINK_LIBRARY_NAME)
00297 
00298 # endif /* XTESTS_IMPLICIT_LINK_SUPPORT */
00299 
00300 #endif /* Win-32 || Win-64 */
00301 
00302 /* ////////////////////////////////////////////////////////////////////// */
00303 
00304 #endif /* !XTESTS_INCL_XTESTS_H_IMPLICIT_LINK */
00305 
00306 /* ////////////////////////////////////////////////////////////////////// */

b64 Library documentation © Synesis Software Pty Ltd, 2004-2007