1 #ifndef BOOST_SERIALIZATION_FORCE_INCLUDE_HPP 2 #define BOOST_SERIALIZATION_FORCE_INCLUDE_HPP 3 4 // MS compatible compilers support #pragma once 5 #if defined(_MSC_VER) 6 # pragma once 7 #endif 8 9 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 10 // force_include.hpp: 11 12 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 13 // Use, modification and distribution is subject to the Boost Software 14 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 15 // http://www.boost.org/LICENSE_1_0.txt) 16 17 // See http://www.boost.org for updates, documentation, and revision history. 18 19 #include <boost/config.hpp> 20 21 // the following help macro is to guarentee that certain coded 22 // is not removed by over-eager linker optimiser. In certain cases 23 // we create static objects must be created but are actually never 24 // referenced - creation has a side-effect such as global registration 25 // which is important to us. We make an effort to refer these objects 26 // so that a smart linker won't remove them as being unreferenced. 27 // In microsoft compilers, inlining the code that does the referring 28 // means the code gets lost and the static object is not included 29 // in the library and hence never registered. This manifests itself 30 // in an ungraceful crash at runtime when (and only when) built in 31 // release mode. 32 33 #if defined(BOOST_HAS_DECLSPEC) && !defined(__COMO__) 34 # define BOOST_DLLEXPORT __declspec(dllexport) 35 #elif ! defined(_WIN32) && ! defined(_WIN64) 36 # if defined(__MWERKS__) 37 # define BOOST_DLLEXPORT __declspec(dllexport) 38 # elif defined(__GNUC__) && (__GNUC__ >= 3) 39 # define BOOST_USED __attribute__ ((__used__)) 40 # elif defined(__IBMCPP__) && (__IBMCPP__ >= 1110) 41 # define BOOST_USED __attribute__ ((__used__)) 42 # elif defined(__INTEL_COMPILER) && (BOOST_INTEL_CXX_VERSION >= 800) 43 # define BOOST_USED __attribute__ ((__used__)) 44 # endif 45 #endif 46 47 #ifndef BOOST_USED 48 # define BOOST_USED 49 #endif 50 51 #ifndef BOOST_DLLEXPORT 52 # define BOOST_DLLEXPORT 53 #endif 54 55 #endif // BOOST_SERIALIZATION_FORCE_INCLUDE_HPP 56