diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-08-22 16:37:47 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-08-24 15:52:55 +0200 |
commit | 51d7278e19a0346f8c807ef6cb48eee8311b53d9 (patch) | |
tree | fe1138557e00708d3195d171a7115ff235e261cb | |
parent | 3357540007244e1c696c91a1cceb95ceabd7efb5 (diff) |
Work around issue with exporting internal linkage names in libstdc++
See Clang bug 33910 for details.
-rw-r--r-- | std-core.mxx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/std-core.mxx b/std-core.mxx index 6ee4a9e..3aba712 100644 --- a/std-core.mxx +++ b/std-core.mxx @@ -2,6 +2,28 @@ // copyright : Copyright (c) 2014-2017 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file +// For some standard library implementations we need to pre-include certain +// headers to prevent their exporting. And to detect a standard library we +// need to include a certain header first. +// +#if defined(__clang__) +# if __has_include(<__config>) // libc++ _LIBCPP_VERSION +# include <__config> +# elif __has_include(<bits/c++config.h>) // libstdc++ __GLIBCXX__ +# include <bits/c++config.h> +# endif +#elif defined(__GNUC__) +# include <bits/c++config.h> // libstdc++ __GLIBCXX__ +#endif + +#if defined(_MSC_VER) +#elif defined(__GLIBCXX__) +# include <ext/atomicity.h> // Names with internal linkage. +#elif defined(_LIBCPP_VERSION) +#else +# error unknown standard library implementation +#endif + export module std.core; export |