On 6 October 2016 at 14:43, Ryan Schmidt wrote:
>> On Oct 6, 2016, at 7:35 AM, Mojca Miklavec wrote:
>> It works without https://trac.macports.org/wiki/LibcxxOnOlderSystems
>> (= setting libc++ to become your default stdlib globally). But the
>> port in question most likely still needs libc++.
>> Read as: if you use the cxx11 PortGroup and use a default installation
>> of MacPorts, the port won't compile. But you can still require libc++
>> for this individual port and it might compile and work.
>> Using the cxx11 PortGroup is desired/absolutely needed when a port has
>> many dependencies that need a compatible stdlib as the app would crash
>> otherwise. It is not needed for "standalone" apps that don't need to
>> communicate to their dependencies via some C++ API (or when
>> dependencies use the same stdlib, like qt5 which switched to libc++
>> anyway).
> You're right. You should only force libc++ (without using the cxx11 
> portgroup) if the port
> a) requires C++11 (or for some other reason requires libc++), and
> b) does not depend on any C++ libraries, and

Generally true. But this can be relaxed a bit: "or if dependent
libraries with C++ api are also guaranteed to use libc++".

> c) does not provide any C++ libraries

Are you talking about the PortGroup (like the qt5 PortGroup) or about
individual ports?

In case of the latter: why is this relevant for the port in question?
Doesn't that only affect dependent ports? And dependent ports don't
know that their dependency included the c++11 PortGroup.

> Is that the case for Qt5? It is the case for mongodb, so I've done it there. 
> Qt5 provides tons of libraries that other programs are expected to use, and 
> they seem to link to the C++ library, so I don't think we can just force Qt5 
> to libc++ and hope things will work; they won't.

One case of a problematic port is gnuplot. If one wants to use Qt5
(which is optional and disabled by default), gnuplot has to be
compiled with libc++, but then wxWidgets should either not be enabled
or it should be compiled against libc++ too. I simply didn't add that
complex logic into the Portfile.

All I did was a lame warning (but luckily not many people bother
installing the qt5 variant, or at least not users of legacy systems):

variant qt5 conflicts qt description "Enable qt terminal with Qt 5" {
    if { ${configure.cxx_stdlib} ne "libc++" } {
        ui_warn "Gnuplot should be compiled against libc++ if you want
to use Qt 5."

macports-dev mailing list

Reply via email to