| // (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) |
| |
| // See http://www.boost.org/libs/config for the most recent version. |
| |
| #ifndef BOOST_LINK_TEST_HPP |
| #define BOOST_LINK_TEST_HPP |
| |
| #include <boost/config.hpp> |
| |
| // |
| // set up code to determine our compilers options, |
| // we will check that these are the same in the |
| // .exe and the .dll: |
| // |
| #ifdef BOOST_DYN_LINK |
| static const bool dyn_link = true; |
| #else |
| static const bool dyn_link = false; |
| #endif |
| #if defined(_DLL) || defined(_RTLDLL) |
| static const bool dyn_rtl = true; |
| #else |
| static const bool dyn_rtl = false; |
| #endif |
| #if defined(BOOST_HAS_THREADS) |
| static const bool has_threads = true; |
| #else |
| static const bool has_threads = false; |
| #endif |
| #if defined(_DEBUG) |
| static const bool debug = true; |
| #else |
| static const bool debug = false; |
| #endif |
| #if defined(__STL_DEBUG) || defined(_STLP_DEBUG) |
| static const bool stl_debug = true; |
| #else |
| static const bool stl_debug = false; |
| #endif |
| |
| // |
| // set up import and export options: |
| // |
| #if defined(BOOST_DYN_LINK) |
| # ifdef BOOST_CONFIG_SOURCE |
| # define BOOST_CONFIG_DECL BOOST_SYMBOL_EXPORT |
| # else |
| # define BOOST_CONFIG_DECL BOOST_SYMBOL_IMPORT |
| # endif |
| #endif |
| #ifndef BOOST_CONFIG_DECL |
| # define BOOST_CONFIG_DECL |
| #endif |
| |
| // |
| // define our entry point: |
| // |
| bool BOOST_CONFIG_DECL check_options( |
| bool m_dyn_link, |
| bool m_dyn_rtl, |
| bool m_has_threads, |
| bool m_debug, |
| bool m_stlp_debug); |
| |
| // |
| // set up automatic linking: |
| // |
| #if !defined(BOOST_CONFIG_SOURCE) && !defined(BOOST_CONFIG_NO_LIB) |
| # define BOOST_LIB_NAME link_test |
| # include <boost/config/auto_link.hpp> |
| #endif |
| |
| #ifndef BOOST_NO_EXTERN_TEMPLATE |
| |
| template <class T> |
| T test_free_proc(T v) |
| { |
| return v; |
| } |
| |
| template <class T> |
| struct tester |
| { |
| static int test(); |
| }; |
| |
| template <class T> |
| int tester<T>::test() |
| { |
| return 0; |
| } |
| |
| #ifdef BOOST_CONFIG_SOURCE |
| template BOOST_SYMBOL_EXPORT int test_free_proc<int>(int); |
| template BOOST_SYMBOL_EXPORT int tester<int>::test(); |
| #else |
| extern template BOOST_SYMBOL_IMPORT int test_free_proc<int>(int); |
| extern template BOOST_SYMBOL_IMPORT int tester<int>::test(); |
| #endif |
| |
| #endif // BOOST_NO_EXTERN_TEMPLATE |
| |
| #endif // BOOST_LINK_TEST_HPP |
| |
| |