boostorg / math

Boost.org math module
http://boost.org/libs/math
Boost Software License 1.0
306 stars 220 forks source link

Issues with building Boost.Math into a standard library implementation #1186

Open frederick-vs-ja opened 2 weeks ago

frederick-vs-ja commented 2 weeks ago

Currently MSVC STL builds Boost.Math into its static library, which cause the static library contains non-_Uglified linking symbols and causes non-conforming linking behavior. See microsoft/STL#362.

I'm trying to resolve this in Boost.Math by adding the BOOST_MATH_NAMESPACE macro

#ifndef BOOST_MATH_NAMESPACE
#define BOOST_MATH_NAMESPACE math
#endif

and then replace every occurrence of math which is a namespace with BOOST_MATH_NAMESPACE.

With the changes above, MSVC STL's special_math.cpp can define BOOST_MATH_NAMESPACE as _Math (or some other _Uglified identifier, e.g. __math__) before including <boost/math/*> and then use ::boost::BOOST_MATH_NAMESPACE::* to get rid of non-_Uglified symbols.

But the changes need to touch 500+ files in Boost.Math and make maintenance a bit harder (every namespace math should be spelt as BOOST_MATH_NAMESPACE later). Not sure whether this approach is OK.

ckormanyos commented 2 weeks ago

Hi @frederick-vs-ja this issue is also being tracked in #769. None of us has actually gotten around to progressing on it so far.

need to touch 500+

I believe we are generally aware of this and still consider the request to be reasonable.

I think we just need to discuss:

Cc: @jzmaddock and @mborland and @NAThompson