-
Notifications
You must be signed in to change notification settings - Fork 12
Description
First, as explained here, a sad fact is that simuPOP has to use gcc's libstdc++, not LLVM's libc++. It is possible to use something else for binary vector in simuPOP but that would be a lot of work.
Second, mac's gcc is quite old (4.2.1) and will never be upgraded, and the toolchain has less and less support for gcc. At this point, with mac 10.13.3 (High Sierra), compiling simuPOP will show the following error:
$ python setup.py install
Can not obtain version of gcc, and openMP is disable
This version of boost is not tested. It may or may not work: boost_1_69_0
Building static libraries
In file included from boost_1_69_0/libs/serialization/src/codecvt_null.cpp:12:
In file included from boost_1_69_0/boost/archive/codecvt_null.hpp:19:
In file included from /usr/include/c++/4.2.1/locale:43:
In file included from /usr/include/c++/4.2.1/bits/localefwd.h:46:
In file included from /usr/include/c++/4.2.1/bits/c++locale.h:48:
/usr/include/c++/4.2.1/cstring:102:12: error: cannot initialize return object of type 'void *' with an rvalue of type
'const void *'
{ return memchr(const_cast<const void*>(__p), __c, __n); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from boost_1_69_0/libs/serialization/src/codecvt_null.cpp:12:
In file included from boost_1_69_0/boost/archive/codecvt_null.hpp:19:
In file included from /usr/include/c++/4.2.1/locale:43:
In file included from /usr/include/c++/4.2.1/bits/localefwd.h:47:
In file included from /usr/include/c++/4.2.1/iosfwd:49:
In file included from /usr/include/c++/4.2.1/bits/postypes.h:46:
/usr/include/c++/4.2.1/cwchar:212:12: error: cannot initialize return object of type 'wchar_t *' with an rvalue of type
'const wchar_t *'
{ return wcschr(const_cast<const wchar_t*>(__p), __c); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.2.1/cwchar:218:12: error: cannot initialize return object of type 'wchar_t *' with an rvalue of type
'const wchar_t *'
{ return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.2.1/cwchar:224:12: error: cannot initialize return object of type 'wchar_t *' with an rvalue of type
'const wchar_t *'
{ return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.2.1/cwchar:230:12: error: cannot initialize return object of type 'wchar_t *' with an rvalue of type
'const wchar_t *'
{ return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.2.1/cwchar:236:12: error: cannot initialize return object of type 'wchar_t *' with an rvalue of type
'const wchar_t *'
{ return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from boost_1_69_0/libs/serialization/src/codecvt_null.cpp:12:
In file included from boost_1_69_0/boost/archive/codecvt_null.hpp:19:
In file included from /usr/include/c++/4.2.1/locale:44:
In file included from /usr/include/c++/4.2.1/bits/locale_classes.h:47:
In file included from /usr/include/c++/4.2.1/string:47:
In file included from /usr/include/c++/4.2.1/bits/char_traits.h:46:
In file included from /usr/include/c++/4.2.1/bits/stl_algobase.h:68:
/usr/include/c++/4.2.1/cstdlib:143:3: error: declaration conflicts with target of using declaration already in scope
abs(long __i) { return labs(__i); }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/stdlib.h:111:44: note: target of
using declaration
inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);}
^
/usr/include/c++/4.2.1/cstdlib:110:11: note: using declaration
using ::abs;
^
/usr/include/c++/4.2.1/cstdlib:146:3: error: declaration conflicts with target of using declaration already in scope
div(long __i, long __j) { return ldiv(__i, __j); }
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/stdlib.h:116:42: note: target of
using declaration
inline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);}
^
/usr/include/c++/4.2.1/cstdlib:117:11: note: using declaration
using ::div;
^
8 errors generated.
Failed to build a shared supporting library: command 'cc' failed with exit status 1
which I do not know how to fix.
Third, we are embedding boost 1.49.0 because some versions of boost do not work. The broken version should now be all gone so we should probably move away from embedded boost because it is difficult to compile. At the very least, we should remove bstd.cpp from iostreams because we do not need bstd support.