auto_link.hpp

来自「system C源码 一种替代verilog的语言」· HPP 代码 · 共 358 行

HPP
358
字号
//  (C) Copyright John Maddock 2003.//  Use, modification and distribution are subject to the//  Boost Software License, Version 1.0. (See accompanying file//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /*  *   LOCATION:    see http://www.boost.org for most recent version.  *   FILE         auto_link.hpp  *   VERSION      see <sysc/packages/boost/version.hpp>  *   DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.  *//*************************************************************************USAGE:~~~~~~Before including this header you must define one or more of define the following macros:BOOST_LIB_NAME:           Required: A string containing the basename of the library,                          for example boost_regex.BOOST_LIB_TOOLSET:        Optional: the base name of the toolset.BOOST_DYN_LINK:           Optional: when set link to dll rather than static library.BOOST_LIB_DIAGNOSTIC:     Optional: when set the header will print out the name                          of the library selected (useful for debugging).BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,                          rather than a mangled-name version.These macros will be undef'ed at the end of the header, further this headerhas no include guards - so be sure to include it only once from your library!Algorithm:~~~~~~~~~~Libraries for Borland and Microsoft compilers are automaticallyselected here, the name of the lib is selected according to the followingformula:BOOST_LIB_PREFIX   + BOOST_LIB_NAME   + "_"   + BOOST_LIB_TOOLSET   + BOOST_LIB_THREAD_OPT   + BOOST_LIB_RT_OPT   "-"   + BOOST_LIB_VERSIONThese are defined as:BOOST_LIB_PREFIX:     "lib" for static libraries otherwise "".BOOST_LIB_NAME:       The base name of the lib ( for example boost_regex).BOOST_LIB_TOOLSET:    The compiler toolset name (vc6, vc7, bcb5 etc).BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.BOOST_LIB_RT_OPT:     A suffix that indicates the runtime library used,                      contains one or more of the following letters after                      a hiphen:                      s      static runtime (dynamic if not present).                      d      debug build (release if not present).                      g      debug/diagnostic runtime (release if not present).                      p      STLPort Build.BOOST_LIB_VERSION:    The Boost version, in the form x_y, for Boost version x.y.***************************************************************************/#ifdef __cplusplus#  ifndef BOOST_CONFIG_HPP#     include <sysc/packages/boost/config.hpp>#  endif#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)//// C language compatability (no, honestly)//#  define BOOST_MSVC _MSC_VER#  define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)#  define BOOST_DO_STRINGIZE(X) #X#endif//// Only include what follows for known and supported compilers://#if defined(BOOST_MSVC) \    || defined(__BORLANDC__) \    || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \    || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))#ifndef BOOST_VERSION_HPP#  include <sysc/packages/boost/version.hpp>#endif#ifndef BOOST_LIB_NAME#  error "Macro BOOST_LIB_NAME not set (internal error)"#endif//// error check://#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)#  pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")#  pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")#  error "Incompatible build options"#endif//// select toolset if not defined already://#ifndef BOOST_LIB_TOOLSET#if defined(BOOST_MSVC) && (BOOST_MSVC == 1200)   // vc6:#  define BOOST_LIB_TOOLSET "vc6"#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)   // vc7:#  define BOOST_LIB_TOOLSET "vc7"#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)   // vc71:#  define BOOST_LIB_TOOLSET "vc71"#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1400)   // vc80:#  define BOOST_LIB_TOOLSET "vc80"#elif defined(__BORLANDC__)   // CBuilder 6:#  define BOOST_LIB_TOOLSET "bcb"#elif defined(__ICL)   // Intel C++, no version number:#  define BOOST_LIB_TOOLSET "iw"#elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )   // Metrowerks CodeWarrior 8.x#  define BOOST_LIB_TOOLSET "cw8"#elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )   // Metrowerks CodeWarrior 9.x#  define BOOST_LIB_TOOLSET "cw9"#endif#endif // BOOST_LIB_TOOLSET//// select thread opt://#if defined(_MT) || defined(__MT__)#  define BOOST_LIB_THREAD_OPT "-mt"#else#  define BOOST_LIB_THREAD_OPT#endif#if defined(_MSC_VER) || defined(__MWERKS__)#  ifdef _DLL#     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))#            define BOOST_LIB_RT_OPT "-gdp"#        elif defined(_DEBUG)#            define BOOST_LIB_RT_OPT "-gdp"#            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")#            error "Build options aren't compatible with pre-built libraries"#        else#            define BOOST_LIB_RT_OPT "-p"#        endif#     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))#            define BOOST_LIB_RT_OPT "-gdpn"#        elif defined(_DEBUG)#            define BOOST_LIB_RT_OPT "-gdpn"#            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")#            error "Build options aren't compatible with pre-built libraries"#        else#            define BOOST_LIB_RT_OPT "-pn"#        endif#     else#        if defined(_DEBUG)#            define BOOST_LIB_RT_OPT "-gd"#        else#            define BOOST_LIB_RT_OPT#        endif#     endif#  else#     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))#            define BOOST_LIB_RT_OPT "-sgdp"#        elif defined(_DEBUG)#             define BOOST_LIB_RT_OPT "-sgdp"#            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")#            error "Build options aren't compatible with pre-built libraries"#        else#            define BOOST_LIB_RT_OPT "-sp"#        endif#     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))#            define BOOST_LIB_RT_OPT "-sgdpn"#        elif defined(_DEBUG)#             define BOOST_LIB_RT_OPT "-sgdpn"#            pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")#            error "Build options aren't compatible with pre-built libraries"#        else#            define BOOST_LIB_RT_OPT "-spn"#        endif#     else#        if defined(_DEBUG)#             define BOOST_LIB_RT_OPT "-sgd"#        else#            define BOOST_LIB_RT_OPT "-s"#        endif#     endif#  endif#elif defined(__BORLANDC__)//// figure out whether we want the debug builds or not://#if __BORLANDC__ > 0x561#pragma defineonoption BOOST_BORLAND_DEBUG -v#endif//// sanity check://#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)#error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form"#endif#  ifdef _RTLDLL#     ifdef BOOST_BORLAND_DEBUG#         define BOOST_LIB_RT_OPT "-d"#     else#         define BOOST_LIB_RT_OPT#     endif#  else#     ifdef BOOST_BORLAND_DEBUG#         define BOOST_LIB_RT_OPT "-sd"#     else#         define BOOST_LIB_RT_OPT "-s"#     endif#  endif#endif//// select linkage opt://#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)#  define BOOST_LIB_PREFIX#elif defined(BOOST_DYN_LINK)#  error "Mixing a dll boost library with a static runtime is a really bad idea..."#else#  define BOOST_LIB_PREFIX "lib"#endif//// now include the lib://#if defined(BOOST_LIB_NAME) \      && defined(BOOST_LIB_PREFIX) \      && defined(BOOST_LIB_TOOLSET) \      && defined(BOOST_LIB_THREAD_OPT) \      && defined(BOOST_LIB_RT_OPT) \      && defined(BOOST_LIB_VERSION)#ifndef BOOST_AUTO_LINK_NOMANGLE#  pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")#  ifdef BOOST_LIB_DIAGNOSTIC#     pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")#  endif#else#  pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")#  ifdef BOOST_LIB_DIAGNOSTIC#     pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")#  endif#endif#else#  error "some required macros where not defined (internal logic error)."#endif#endif // _MSC_VER || __BORLANDC__//// finally undef any macros we may have set://#ifdef BOOST_LIB_PREFIX#  undef BOOST_LIB_PREFIX#endif#if defined(BOOST_LIB_NAME)#  undef BOOST_LIB_NAME#endif// Don't undef this one: it can be set by the user and should be the // same for all libraries://#if defined(BOOST_LIB_TOOLSET)//#  undef BOOST_LIB_TOOLSET//#endif#if defined(BOOST_LIB_THREAD_OPT)#  undef BOOST_LIB_THREAD_OPT#endif#if defined(BOOST_LIB_RT_OPT)#  undef BOOST_LIB_RT_OPT#endif#if defined(BOOST_LIB_LINK_OPT)#  undef BOOST_LIB_LINK_OPT#endif#if defined(BOOST_LIB_DEBUG_OPT)#  undef BOOST_LIB_DEBUG_OPT#endif#if defined(BOOST_DYN_LINK)#  undef BOOST_DYN_LINK#endif#if defined(BOOST_AUTO_LINK_NOMANGLE)#  undef BOOST_AUTO_LINK_NOMANGLE#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?