BVB Source Codes

mars Show auto_link.hpp Source code

Return Download mars: download auto_link.hpp Source code - Download mars Source code - Type:.hpp
  1. //  (C) Copyright John Maddock 2003.
  2. //  Use, modification and distribution are subject to the
  3. //  Boost Software License, Version 1.0. (See accompanying file
  4. //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5.  
  6.  /*
  7.   *   LOCATION:    see http://www.boost.org for most recent version.
  8.   *   FILE         auto_link.hpp
  9.   *   VERSION      see <boost/version.hpp>
  10.   *   DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
  11.   */
  12.  
  13. /*************************************************************************
  14.  
  15. USAGE:
  16. ~~~~~~
  17.  
  18. Before including this header you must define one or more of define the following macros:
  19.  
  20. BOOST_LIB_NAME:           Required: A string containing the basename of the library,
  21.                           for example boost_regex.
  22. BOOST_LIB_TOOLSET:        Optional: the base name of the toolset.
  23. BOOST_DYN_LINK:           Optional: when set link to dll rather than static library.
  24. BOOST_LIB_DIAGNOSTIC:     Optional: when set the header will print out the name
  25.                           of the library selected (useful for debugging).
  26. BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
  27.                           rather than a mangled-name version.
  28. BOOST_AUTO_LINK_TAGGED:   Specifies that we link to libraries built with the --layout=tagged option.
  29.                           This is essentially the same as the default name-mangled version, but without
  30.                           the compiler name and version, or the Boost version.  Just the build options.
  31.  
  32. These macros will be undef'ed at the end of the header, further this header
  33. has no include guards - so be sure to include it only once from your library!
  34.  
  35. Algorithm:
  36. ~~~~~~~~~~
  37.  
  38. Libraries for Borland and Microsoft compilers are automatically
  39. selected here, the name of the lib is selected according to the following
  40. formula:
  41.  
  42. BOOST_LIB_PREFIX
  43.    + BOOST_LIB_NAME
  44.    + "_"
  45.    + BOOST_LIB_TOOLSET
  46.    + BOOST_LIB_THREAD_OPT
  47.    + BOOST_LIB_RT_OPT
  48.    "-"
  49.    + BOOST_LIB_VERSION
  50.  
  51. These are defined as:
  52.  
  53. BOOST_LIB_PREFIX:     "lib" for static libraries otherwise "".
  54.  
  55. BOOST_LIB_NAME:       The base name of the lib ( for example boost_regex).
  56.  
  57. BOOST_LIB_TOOLSET:    The compiler toolset name (vc6, vc7, bcb5 etc).
  58.  
  59. BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
  60.  
  61. BOOST_LIB_RT_OPT:     A suffix that indicates the runtime library used,
  62.                       contains one or more of the following letters after
  63.                       a hyphen:
  64.  
  65.                       s      static runtime (dynamic if not present).
  66.                       g      debug/diagnostic runtime (release if not present).
  67.                       y      Python debug/diagnostic runtime (release if not present).
  68.                       d      debug build (release if not present).
  69.                       p      STLport build.
  70.                       n      STLport build without its IOStreams.
  71.  
  72. BOOST_LIB_VERSION:    The Boost version, in the form x_y, for Boost version x.y.
  73.  
  74.  
  75. ***************************************************************************/
  76.  
  77. #ifdef __cplusplus
  78. #  ifndef BOOST_CONFIG_HPP
  79. #     include <boost/config.hpp>
  80. #  endif
  81. #elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
  82. //
  83. // C language compatability (no, honestly)
  84. //
  85. #  define BOOST_MSVC _MSC_VER
  86. #  define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
  87. #  define BOOST_DO_STRINGIZE(X) #X
  88. #endif
  89. //
  90. // Only include what follows for known and supported compilers:
  91. //
  92. #if defined(BOOST_MSVC) \
  93.     || defined(__BORLANDC__) \
  94.     || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
  95.     || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
  96.  
  97. #ifndef BOOST_VERSION_HPP
  98. #  include <boost/version.hpp>
  99. #endif
  100.  
  101. #ifndef BOOST_LIB_NAME
  102. #  error "Macro BOOST_LIB_NAME not set (internal error)"
  103. #endif
  104.  
  105. //
  106. // error check:
  107. //
  108. #if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
  109. #  pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
  110. #  pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
  111. #  error "Incompatible build options"
  112. #endif
  113. //
  114. // select toolset if not defined already:
  115. //
  116. #ifndef BOOST_LIB_TOOLSET
  117. #  if defined(BOOST_MSVC) && (BOOST_MSVC < 1200)
  118.     // Note: no compilers before 1200 are supported
  119. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
  120.  
  121. #    ifdef UNDER_CE
  122.        // eVC4:
  123. #      define BOOST_LIB_TOOLSET "evc4"
  124. #    else
  125.        // vc6:
  126. #      define BOOST_LIB_TOOLSET "vc6"
  127. #    endif
  128.  
  129. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1310)
  130.  
  131.      // vc7:
  132. #    define BOOST_LIB_TOOLSET "vc7"
  133.  
  134. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1400)
  135.  
  136.      // vc71:
  137. #    define BOOST_LIB_TOOLSET "vc71"
  138.  
  139. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1500)
  140.  
  141.      // vc80:
  142. #    define BOOST_LIB_TOOLSET "vc80"
  143.  
  144. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
  145.  
  146.      // vc90:
  147. #    define BOOST_LIB_TOOLSET "vc90"
  148.  
  149. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1700)
  150.  
  151.      // vc10:
  152. #    define BOOST_LIB_TOOLSET "vc100"
  153.  
  154. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)
  155.  
  156.      // vc11:
  157. #    define BOOST_LIB_TOOLSET "vc110"
  158.  
  159. #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1900)
  160.  
  161.      // vc12:
  162. #    define BOOST_LIB_TOOLSET "vc120"
  163.  
  164. # elif defined(BOOST_MSVC)
  165.  
  166.    // vc14:
  167. #  define BOOST_LIB_TOOLSET "vc140"
  168.  
  169. #  elif defined(__BORLANDC__)
  170.  
  171.      // CBuilder 6:
  172. #    define BOOST_LIB_TOOLSET "bcb"
  173.  
  174. #  elif defined(__ICL)
  175.  
  176.      // Intel C++, no version number:
  177. #    define BOOST_LIB_TOOLSET "iw"
  178.  
  179. #  elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
  180.  
  181.      // Metrowerks CodeWarrior 8.x
  182. #    define BOOST_LIB_TOOLSET "cw8"
  183.  
  184. #  elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
  185.  
  186.      // Metrowerks CodeWarrior 9.x
  187. #    define BOOST_LIB_TOOLSET "cw9"
  188.  
  189. #  endif
  190. #endif // BOOST_LIB_TOOLSET
  191.  
  192. //
  193. // select thread opt:
  194. //
  195. #if defined(_MT) || defined(__MT__)
  196. #  define BOOST_LIB_THREAD_OPT "-mt"
  197. #else
  198. #  define BOOST_LIB_THREAD_OPT
  199. #endif
  200.  
  201. #if defined(_MSC_VER) || defined(__MWERKS__)
  202.  
  203. #  ifdef _DLL
  204.  
  205. #     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
  206.  
  207. #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  208.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  209. #            define BOOST_LIB_RT_OPT "-gydp"
  210. #        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  211. #            define BOOST_LIB_RT_OPT "-gdp"
  212. #        elif defined(_DEBUG)\
  213.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  214. #            define BOOST_LIB_RT_OPT "-gydp"
  215. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  216. #            error "Build options aren't compatible with pre-built libraries"
  217. #        elif defined(_DEBUG)
  218. #            define BOOST_LIB_RT_OPT "-gdp"
  219. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  220. #            error "Build options aren't compatible with pre-built libraries"
  221. #        else
  222. #            define BOOST_LIB_RT_OPT "-p"
  223. #        endif
  224.  
  225. #     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
  226.  
  227. #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  228.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  229. #            define BOOST_LIB_RT_OPT "-gydpn"
  230. #        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  231. #            define BOOST_LIB_RT_OPT "-gdpn"
  232. #        elif defined(_DEBUG)\
  233.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  234. #            define BOOST_LIB_RT_OPT "-gydpn"
  235. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  236. #            error "Build options aren't compatible with pre-built libraries"
  237. #        elif defined(_DEBUG)
  238. #            define BOOST_LIB_RT_OPT "-gdpn"
  239. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  240. #            error "Build options aren't compatible with pre-built libraries"
  241. #        else
  242. #            define BOOST_LIB_RT_OPT "-pn"
  243. #        endif
  244.  
  245. #     else
  246.  
  247. #        if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  248. #            define BOOST_LIB_RT_OPT "-gyd"
  249. #        elif defined(_DEBUG)
  250. #            define BOOST_LIB_RT_OPT "-gd"
  251. #        else
  252. #            define BOOST_LIB_RT_OPT
  253. #        endif
  254.  
  255. #     endif
  256.  
  257. #  else
  258.  
  259. #     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
  260.  
  261. #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  262.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  263. #            define BOOST_LIB_RT_OPT "-sgydp"
  264. #        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  265. #            define BOOST_LIB_RT_OPT "-sgdp"
  266. #        elif defined(_DEBUG)\
  267.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  268. #             define BOOST_LIB_RT_OPT "-sgydp"
  269. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  270. #            error "Build options aren't compatible with pre-built libraries"
  271. #        elif defined(_DEBUG)
  272. #             define BOOST_LIB_RT_OPT "-sgdp"
  273. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  274. #            error "Build options aren't compatible with pre-built libraries"
  275. #        else
  276. #            define BOOST_LIB_RT_OPT "-sp"
  277. #        endif
  278.  
  279. #     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
  280.  
  281. #        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  282.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  283. #            define BOOST_LIB_RT_OPT "-sgydpn"
  284. #        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  285. #            define BOOST_LIB_RT_OPT "-sgdpn"
  286. #        elif defined(_DEBUG)\
  287.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  288. #             define BOOST_LIB_RT_OPT "-sgydpn"
  289. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  290. #            error "Build options aren't compatible with pre-built libraries"
  291. #        elif defined(_DEBUG)
  292. #             define BOOST_LIB_RT_OPT "-sgdpn"
  293. #            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  294. #            error "Build options aren't compatible with pre-built libraries"
  295. #        else
  296. #            define BOOST_LIB_RT_OPT "-spn"
  297. #        endif
  298.  
  299. #     else
  300.  
  301. #        if defined(_DEBUG)\
  302.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  303. #             define BOOST_LIB_RT_OPT "-sgyd"
  304. #        elif defined(_DEBUG)
  305. #             define BOOST_LIB_RT_OPT "-sgd"
  306. #        else
  307. #            define BOOST_LIB_RT_OPT "-s"
  308. #        endif
  309.  
  310. #     endif
  311.  
  312. #  endif
  313.  
  314. #elif defined(__BORLANDC__)
  315.  
  316. //
  317. // figure out whether we want the debug builds or not:
  318. //
  319. #if __BORLANDC__ > 0x561
  320. #pragma defineonoption BOOST_BORLAND_DEBUG -v
  321. #endif
  322. //
  323. // sanity check:
  324. //
  325. #if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
  326. #error "Pre-built versions of the Boost libraries are not provided in STLport-debug form"
  327. #endif
  328.  
  329. #  ifdef _RTLDLL
  330.  
  331. #     if defined(BOOST_BORLAND_DEBUG)\
  332.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  333. #         define BOOST_LIB_RT_OPT "-yd"
  334. #     elif defined(BOOST_BORLAND_DEBUG)
  335. #         define BOOST_LIB_RT_OPT "-d"
  336. #     elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  337. #         define BOOST_LIB_RT_OPT -y
  338. #     else
  339. #         define BOOST_LIB_RT_OPT
  340. #     endif
  341.  
  342. #  else
  343.  
  344. #     if defined(BOOST_BORLAND_DEBUG)\
  345.                && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  346. #         define BOOST_LIB_RT_OPT "-syd"
  347. #     elif defined(BOOST_BORLAND_DEBUG)
  348. #         define BOOST_LIB_RT_OPT "-sd"
  349. #     elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  350. #         define BOOST_LIB_RT_OPT "-sy"
  351. #     else
  352. #         define BOOST_LIB_RT_OPT "-s"
  353. #     endif
  354.  
  355. #  endif
  356.  
  357. #endif
  358.  
  359. //
  360. // select linkage opt:
  361. //
  362. #if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
  363. #  define BOOST_LIB_PREFIX
  364. #elif defined(BOOST_DYN_LINK)
  365. #  error "Mixing a dll boost library with a static runtime is a really bad idea..."
  366. #else
  367. #  define BOOST_LIB_PREFIX "lib"
  368. #endif
  369.  
  370. //
  371. // now include the lib:
  372. //
  373. #if defined(BOOST_LIB_NAME) \
  374.       && defined(BOOST_LIB_PREFIX) \
  375.       && defined(BOOST_LIB_TOOLSET) \
  376.       && defined(BOOST_LIB_THREAD_OPT) \
  377.       && defined(BOOST_LIB_RT_OPT) \
  378.       && defined(BOOST_LIB_VERSION)
  379.  
  380. #ifdef BOOST_AUTO_LINK_TAGGED
  381. #  pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
  382. #  ifdef BOOST_LIB_DIAGNOSTIC
  383. #     pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
  384. #  endif
  385. #elif defined(BOOST_AUTO_LINK_NOMANGLE)
  386. #  pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
  387. #  ifdef BOOST_LIB_DIAGNOSTIC
  388. #     pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
  389. #  endif
  390. #elif defined(BOOST_LIB_BUILDID)
  391. #  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 "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib")
  392. #  ifdef BOOST_LIB_DIAGNOSTIC
  393. #     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 "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib")
  394. #  endif
  395. #else
  396. #  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")
  397. #  ifdef BOOST_LIB_DIAGNOSTIC
  398. #     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")
  399. #  endif
  400. #endif
  401.  
  402. #else
  403. #  error "some required macros where not defined (internal logic error)."
  404. #endif
  405.  
  406.  
  407. #endif // _MSC_VER || __BORLANDC__
  408.  
  409. //
  410. // finally undef any macros we may have set:
  411. //
  412. #ifdef BOOST_LIB_PREFIX
  413. #  undef BOOST_LIB_PREFIX
  414. #endif
  415. #if defined(BOOST_LIB_NAME)
  416. #  undef BOOST_LIB_NAME
  417. #endif
  418. // Don't undef this one: it can be set by the user and should be the
  419. // same for all libraries:
  420. //#if defined(BOOST_LIB_TOOLSET)
  421. //#  undef BOOST_LIB_TOOLSET
  422. //#endif
  423. #if defined(BOOST_LIB_THREAD_OPT)
  424. #  undef BOOST_LIB_THREAD_OPT
  425. #endif
  426. #if defined(BOOST_LIB_RT_OPT)
  427. #  undef BOOST_LIB_RT_OPT
  428. #endif
  429. #if defined(BOOST_LIB_LINK_OPT)
  430. #  undef BOOST_LIB_LINK_OPT
  431. #endif
  432. #if defined(BOOST_LIB_DEBUG_OPT)
  433. #  undef BOOST_LIB_DEBUG_OPT
  434. #endif
  435. #if defined(BOOST_DYN_LINK)
  436. #  undef BOOST_DYN_LINK
  437. #endif
  438.  
  439.  
  440.  
downloadauto_link.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top