auto_link.hpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  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. * LOCATION: see http://www.boost.org for most recent version.
  7. * FILE auto_link.hpp
  8. * VERSION see <boost/version.hpp>
  9. * DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
  10. */
  11. /*************************************************************************
  12. USAGE:
  13. ~~~~~~
  14. Before including this header you must define one or more of define the following macros:
  15. BOOST_LIB_NAME: Required: A string containing the basename of the library,
  16. for example boost_regex.
  17. BOOST_LIB_TOOLSET: Optional: the base name of the toolset.
  18. BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
  19. BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
  20. of the library selected (useful for debugging).
  21. BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
  22. rather than a mangled-name version.
  23. BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
  24. This is essentially the same as the default name-mangled version, but without
  25. the compiler name and version, or the Boost version. Just the build options.
  26. BOOST_AUTO_LINK_SYSTEM: Specifies that we link to libraries built with the --layout=system option.
  27. This is essentially the same as the non-name-mangled version, but with
  28. the prefix to differentiate static and dll builds
  29. These macros will be undef'ed at the end of the header, further this header
  30. has no include guards - so be sure to include it only once from your library!
  31. Algorithm:
  32. ~~~~~~~~~~
  33. Libraries for Borland and Microsoft compilers are automatically
  34. selected here, the name of the lib is selected according to the following
  35. formula:
  36. BOOST_LIB_PREFIX
  37. + BOOST_LIB_NAME
  38. + "_"
  39. + BOOST_LIB_TOOLSET
  40. + BOOST_LIB_THREAD_OPT
  41. + BOOST_LIB_RT_OPT
  42. + BOOST_LIB_ARCH_AND_MODEL_OPT
  43. "-"
  44. + BOOST_LIB_VERSION
  45. + BOOST_LIB_SUFFIX
  46. These are defined as:
  47. BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
  48. BOOST_LIB_NAME: The base name of the lib ( for example boost_regex).
  49. BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc).
  50. BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
  51. BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
  52. contains one or more of the following letters after
  53. a hyphen:
  54. s static runtime (dynamic if not present).
  55. g debug/diagnostic runtime (release if not present).
  56. y Python debug/diagnostic runtime (release if not present).
  57. d debug build (release if not present).
  58. p STLport build.
  59. n STLport build without its IOStreams.
  60. BOOST_LIB_ARCH_AND_MODEL_OPT: The architecture and address model
  61. (-x32 or -x64 for x86/32 and x86/64 respectively)
  62. BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
  63. BOOST_LIB_SUFFIX: Static/import libraries extension (".lib", ".a") for the compiler.
  64. ***************************************************************************/
  65. #ifdef __cplusplus
  66. # ifndef BOOST_CONFIG_HPP
  67. # include <boost/config.hpp>
  68. # endif
  69. #elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
  70. //
  71. // C language compatability (no, honestly)
  72. //
  73. # define BOOST_MSVC _MSC_VER
  74. # define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
  75. # define BOOST_DO_STRINGIZE(X) #X
  76. #endif
  77. //
  78. // Only include what follows for known and supported compilers:
  79. //
  80. #if defined(BOOST_MSVC) \
  81. || defined(BOOST_EMBTC_WINDOWS) \
  82. || defined(BOOST_BORLANDC) \
  83. || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
  84. || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) \
  85. || (defined(BOOST_CLANG) && defined(BOOST_WINDOWS) && defined(_MSC_VER) && (__clang_major__ >= 4))
  86. #ifndef BOOST_VERSION_HPP
  87. # include <boost/version.hpp>
  88. #endif
  89. #ifndef BOOST_LIB_NAME
  90. # error "Macro BOOST_LIB_NAME not set (internal error)"
  91. #endif
  92. //
  93. // error check:
  94. //
  95. #if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
  96. # pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
  97. # pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
  98. # error "Incompatible build options"
  99. #endif
  100. //
  101. // select toolset if not defined already:
  102. //
  103. #ifndef BOOST_LIB_TOOLSET
  104. # if defined(BOOST_MSVC) && (BOOST_MSVC < 1200)
  105. // Note: no compilers before 1200 are supported
  106. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
  107. # ifdef UNDER_CE
  108. // eVC4:
  109. # define BOOST_LIB_TOOLSET "evc4"
  110. # else
  111. // vc6:
  112. # define BOOST_LIB_TOOLSET "vc6"
  113. # endif
  114. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1310)
  115. // vc7:
  116. # define BOOST_LIB_TOOLSET "vc7"
  117. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1400)
  118. // vc71:
  119. # define BOOST_LIB_TOOLSET "vc71"
  120. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1500)
  121. // vc80:
  122. # define BOOST_LIB_TOOLSET "vc80"
  123. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
  124. // vc90:
  125. # define BOOST_LIB_TOOLSET "vc90"
  126. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1700)
  127. // vc10:
  128. # define BOOST_LIB_TOOLSET "vc100"
  129. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)
  130. // vc11:
  131. # define BOOST_LIB_TOOLSET "vc110"
  132. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1900)
  133. // vc12:
  134. # define BOOST_LIB_TOOLSET "vc120"
  135. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1910)
  136. // vc14:
  137. # define BOOST_LIB_TOOLSET "vc140"
  138. # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1920)
  139. // vc14.1:
  140. # define BOOST_LIB_TOOLSET "vc141"
  141. # elif defined(BOOST_MSVC)
  142. // vc14.2:
  143. # define BOOST_LIB_TOOLSET "vc142"
  144. # elif defined(BOOST_EMBTC_WINDOWS)
  145. // Embarcadero Clang based compilers:
  146. # if defined(BOOST_EMBTC_WIN32C)
  147. # define BOOST_LIB_TOOLSET "bcb32"
  148. # elif defined(BOOST_EMBTC_WIN64)
  149. # define BOOST_LIB_TOOLSET "bcb64"
  150. # endif
  151. # elif defined(BOOST_BORLANDC)
  152. // CBuilder 6:
  153. # define BOOST_LIB_TOOLSET "bcb"
  154. # elif defined(__ICL)
  155. // Intel C++, no version number:
  156. # define BOOST_LIB_TOOLSET "iw"
  157. # elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
  158. // Metrowerks CodeWarrior 8.x
  159. # define BOOST_LIB_TOOLSET "cw8"
  160. # elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
  161. // Metrowerks CodeWarrior 9.x
  162. # define BOOST_LIB_TOOLSET "cw9"
  163. # elif defined(BOOST_CLANG) && defined(BOOST_WINDOWS) && defined(_MSC_VER) && (__clang_major__ >= 4)
  164. // Clang on Windows
  165. # define BOOST_LIB_TOOLSET "clangw" BOOST_STRINGIZE(__clang_major__)
  166. # endif
  167. #endif // BOOST_LIB_TOOLSET
  168. //
  169. // select thread opt:
  170. //
  171. #if defined(_MT) || defined(__MT__)
  172. # define BOOST_LIB_THREAD_OPT "-mt"
  173. #else
  174. # define BOOST_LIB_THREAD_OPT
  175. #endif
  176. #if defined(_MSC_VER) || defined(__MWERKS__)
  177. # ifdef _DLL
  178. # if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
  179. # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  180. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  181. # define BOOST_LIB_RT_OPT "-gydp"
  182. # elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  183. # define BOOST_LIB_RT_OPT "-gdp"
  184. # elif defined(_DEBUG)\
  185. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  186. # define BOOST_LIB_RT_OPT "-gydp"
  187. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  188. # error "Build options aren't compatible with pre-built libraries"
  189. # elif defined(_DEBUG)
  190. # define BOOST_LIB_RT_OPT "-gdp"
  191. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  192. # error "Build options aren't compatible with pre-built libraries"
  193. # else
  194. # define BOOST_LIB_RT_OPT "-p"
  195. # endif
  196. # elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
  197. # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  198. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  199. # define BOOST_LIB_RT_OPT "-gydpn"
  200. # elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  201. # define BOOST_LIB_RT_OPT "-gdpn"
  202. # elif defined(_DEBUG)\
  203. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  204. # define BOOST_LIB_RT_OPT "-gydpn"
  205. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  206. # error "Build options aren't compatible with pre-built libraries"
  207. # elif defined(_DEBUG)
  208. # define BOOST_LIB_RT_OPT "-gdpn"
  209. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  210. # error "Build options aren't compatible with pre-built libraries"
  211. # else
  212. # define BOOST_LIB_RT_OPT "-pn"
  213. # endif
  214. # else
  215. # if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  216. # define BOOST_LIB_RT_OPT "-gyd"
  217. # elif defined(_DEBUG)
  218. # define BOOST_LIB_RT_OPT "-gd"
  219. # else
  220. # define BOOST_LIB_RT_OPT
  221. # endif
  222. # endif
  223. # else
  224. # if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
  225. # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  226. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  227. # define BOOST_LIB_RT_OPT "-sgydp"
  228. # elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  229. # define BOOST_LIB_RT_OPT "-sgdp"
  230. # elif defined(_DEBUG)\
  231. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  232. # define BOOST_LIB_RT_OPT "-sgydp"
  233. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  234. # error "Build options aren't compatible with pre-built libraries"
  235. # elif defined(_DEBUG)
  236. # define BOOST_LIB_RT_OPT "-sgdp"
  237. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  238. # error "Build options aren't compatible with pre-built libraries"
  239. # else
  240. # define BOOST_LIB_RT_OPT "-sp"
  241. # endif
  242. # elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
  243. # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
  244. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  245. # define BOOST_LIB_RT_OPT "-sgydpn"
  246. # elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
  247. # define BOOST_LIB_RT_OPT "-sgdpn"
  248. # elif defined(_DEBUG)\
  249. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  250. # define BOOST_LIB_RT_OPT "-sgydpn"
  251. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  252. # error "Build options aren't compatible with pre-built libraries"
  253. # elif defined(_DEBUG)
  254. # define BOOST_LIB_RT_OPT "-sgdpn"
  255. # pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
  256. # error "Build options aren't compatible with pre-built libraries"
  257. # else
  258. # define BOOST_LIB_RT_OPT "-spn"
  259. # endif
  260. # else
  261. # if defined(_DEBUG)\
  262. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  263. # define BOOST_LIB_RT_OPT "-sgyd"
  264. # elif defined(_DEBUG)
  265. # define BOOST_LIB_RT_OPT "-sgd"
  266. # else
  267. # define BOOST_LIB_RT_OPT "-s"
  268. # endif
  269. # endif
  270. # endif
  271. #elif defined(BOOST_EMBTC_WINDOWS)
  272. # ifdef _RTLDLL
  273. # if defined(_DEBUG)
  274. # define BOOST_LIB_RT_OPT "-d"
  275. # else
  276. # define BOOST_LIB_RT_OPT
  277. # endif
  278. # else
  279. # if defined(_DEBUG)
  280. # define BOOST_LIB_RT_OPT "-sd"
  281. # else
  282. # define BOOST_LIB_RT_OPT "-s"
  283. # endif
  284. # endif
  285. #elif defined(BOOST_BORLANDC)
  286. //
  287. // figure out whether we want the debug builds or not:
  288. //
  289. #if BOOST_BORLANDC > 0x561
  290. #pragma defineonoption BOOST_BORLAND_DEBUG -v
  291. #endif
  292. //
  293. // sanity check:
  294. //
  295. #if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
  296. #error "Pre-built versions of the Boost libraries are not provided in STLport-debug form"
  297. #endif
  298. # ifdef _RTLDLL
  299. # if defined(BOOST_BORLAND_DEBUG)\
  300. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  301. # define BOOST_LIB_RT_OPT "-yd"
  302. # elif defined(BOOST_BORLAND_DEBUG)
  303. # define BOOST_LIB_RT_OPT "-d"
  304. # elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  305. # define BOOST_LIB_RT_OPT "-y"
  306. # else
  307. # define BOOST_LIB_RT_OPT
  308. # endif
  309. # else
  310. # if defined(BOOST_BORLAND_DEBUG)\
  311. && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  312. # define BOOST_LIB_RT_OPT "-syd"
  313. # elif defined(BOOST_BORLAND_DEBUG)
  314. # define BOOST_LIB_RT_OPT "-sd"
  315. # elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
  316. # define BOOST_LIB_RT_OPT "-sy"
  317. # else
  318. # define BOOST_LIB_RT_OPT "-s"
  319. # endif
  320. # endif
  321. #endif
  322. //
  323. // BOOST_LIB_ARCH_AND_MODEL_OPT
  324. //
  325. #if defined( _M_IX86 )
  326. # define BOOST_LIB_ARCH_AND_MODEL_OPT "-x32"
  327. #elif defined( _M_X64 )
  328. # define BOOST_LIB_ARCH_AND_MODEL_OPT "-x64"
  329. #elif defined( _M_ARM )
  330. # define BOOST_LIB_ARCH_AND_MODEL_OPT "-a32"
  331. #elif defined( _M_ARM64 )
  332. # define BOOST_LIB_ARCH_AND_MODEL_OPT "-a64"
  333. #endif
  334. //
  335. // select linkage opt:
  336. //
  337. #if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
  338. # define BOOST_LIB_PREFIX
  339. #elif defined(BOOST_DYN_LINK)
  340. # error "Mixing a dll boost library with a static runtime is a really bad idea..."
  341. #else
  342. # define BOOST_LIB_PREFIX "lib"
  343. #endif
  344. //
  345. // now include the lib:
  346. //
  347. #if defined(BOOST_LIB_NAME) \
  348. && defined(BOOST_LIB_PREFIX) \
  349. && defined(BOOST_LIB_TOOLSET) \
  350. && defined(BOOST_LIB_THREAD_OPT) \
  351. && defined(BOOST_LIB_RT_OPT) \
  352. && defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \
  353. && defined(BOOST_LIB_VERSION)
  354. #if defined(BOOST_EMBTC_WIN64)
  355. # define BOOST_LIB_SUFFIX ".a"
  356. #else
  357. # define BOOST_LIB_SUFFIX ".lib"
  358. #endif
  359. #ifdef BOOST_AUTO_LINK_NOMANGLE
  360. # pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
  361. # ifdef BOOST_LIB_DIAGNOSTIC
  362. # pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
  363. # endif
  364. #elif defined(BOOST_AUTO_LINK_TAGGED)
  365. # pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT BOOST_LIB_SUFFIX)
  366. # ifdef BOOST_LIB_DIAGNOSTIC
  367. # pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT BOOST_LIB_SUFFIX)
  368. # endif
  369. #elif defined(BOOST_AUTO_LINK_SYSTEM)
  370. # pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
  371. # ifdef BOOST_LIB_DIAGNOSTIC
  372. # pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
  373. # endif
  374. #elif defined(BOOST_LIB_BUILDID)
  375. # pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) BOOST_LIB_SUFFIX)
  376. # ifdef BOOST_LIB_DIAGNOSTIC
  377. # 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_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) BOOST_LIB_SUFFIX)
  378. # endif
  379. #else
  380. # pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION BOOST_LIB_SUFFIX)
  381. # ifdef BOOST_LIB_DIAGNOSTIC
  382. # 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_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION BOOST_LIB_SUFFIX)
  383. # endif
  384. #endif
  385. #else
  386. # error "some required macros where not defined (internal logic error)."
  387. #endif
  388. #endif // _MSC_VER || __BORLANDC__
  389. //
  390. // finally undef any macros we may have set:
  391. //
  392. #ifdef BOOST_LIB_PREFIX
  393. # undef BOOST_LIB_PREFIX
  394. #endif
  395. #if defined(BOOST_LIB_NAME)
  396. # undef BOOST_LIB_NAME
  397. #endif
  398. // Don't undef this one: it can be set by the user and should be the
  399. // same for all libraries:
  400. //#if defined(BOOST_LIB_TOOLSET)
  401. //# undef BOOST_LIB_TOOLSET
  402. //#endif
  403. #if defined(BOOST_LIB_THREAD_OPT)
  404. # undef BOOST_LIB_THREAD_OPT
  405. #endif
  406. #if defined(BOOST_LIB_RT_OPT)
  407. # undef BOOST_LIB_RT_OPT
  408. #endif
  409. #if defined(BOOST_LIB_ARCH_AND_MODEL_OPT)
  410. # undef BOOST_LIB_ARCH_AND_MODEL_OPT
  411. #endif
  412. #if defined(BOOST_LIB_LINK_OPT)
  413. # undef BOOST_LIB_LINK_OPT
  414. #endif
  415. #if defined(BOOST_LIB_DEBUG_OPT)
  416. # undef BOOST_LIB_DEBUG_OPT
  417. #endif
  418. #if defined(BOOST_DYN_LINK)
  419. # undef BOOST_DYN_LINK
  420. #endif
  421. #if defined(BOOST_LIB_SUFFIX)
  422. # undef BOOST_LIB_SUFFIX
  423. #endif