> On 18 Jan 2017, at 4:15 pm, Mojca Miklavec <mo...@macports.org> wrote: > >> On 18 January 2017 at 04:43, Marcus Calhoun-Lopez wrote: >> I think perhaps I am not being clear in what I am proposing. >> >> Currently, if cxx_stdlib is equal to libstdc++ then the cxx11PortGroup >> returns an error and the port does not build. >> I am simply proposing that instead of returning an error, the port build >> instead. >> In other words, the change is meant to respect whatever value cxx_stdlib is. >> >> I am not proposing any changes to anyone’s configuration. >> I am not proposing any changes to the buildbots. >> >> If cxx_stdlib is equal to libc++, the end user would see no changes, not >> even revbumps. >> If cxx_stdlib is equal to libstdc++, the only change would be that ports >> that didn’t build before would suddenly start (hopefully). >> >> Please forgive me if I am not understanding the concerns, but this change is >> meant to affect *only* ports that are currently not building at all >> for users who have elected to have cxx_stdlib be equal to libstdc++. > > The only thing that most of us (that is: me included) don't understand > is whether all "C++11 ports" would actually work flawlessly under such > configuration. > > To add to explanation on one particular example. > > Octave currently requires C++11 to build. Let's assume that the user > has < 10.9 without switching to libc++ globally. Marcus now decided to > build octave with gcc6 and that apparently works. I think his belief > is that if we add > "-D_GLIBCXX_USE_CXX11_ABI=0" > (or something similar?) to the build flags, then the binaries won't > crash like it would generally happen when mixing different stdlibs. > > I was strongly convinced that mixing stdlibs (the default one and the > one that comes with gcc6) was absolutely forbidden, but if adding a > few flags can make the stdlibs "compatible", this might be a huge > advantage that would let us build quite some ports on older OSes > without switching to libc++. (I'm not 100% sure if that is in fact the > case, but it might be worth investigating.)
I might be wrong but I do not think this will work. Setting the above option forces the ABI back to the old one, which is not strictly c++11 standards compliant. Maybe it might seem to help in some specific cases, but in general it is not a way of getting a completely C++11 compliant compilation and compatible stdlibs. Its not possible to have both. Chris > > > (That said, I would still love to see libc++ buildbots in action as one > of our highest priorities. But that's a different issue anyway.) > > Mojca