On May 5, 2018, at 19:36, Craig Treleaven wrote: > A couple of times recently, I’ve noticed boilerplate in ports that require > C++14. After including the compiler_blacklist_versions portgroup, they then > do some gymnastics like: > > compiler.blacklist *gcc-3.* *gcc-4.* {*gcc-5.[0-3]} \ > {clang < 800} macports-clang-3.4 > macports-clang-3.5 macports-clang-3.6 macports-clang-3.7 > > Would it not be easier to use and maintain if we had some shorthand > definitions. Maybe something like: > > compiler.blacklist ${min_cxx14} > > “min_cxx14” would be defined in the portgroup and then expand to the > above...assuming the above actually does a good job of blacklisting compilers > that don’t support C++14! > > A major advantage is that if our list of non-C++14 compilers ever changes, it > only needs to be updated in one spot. > > I suspect there would be a few other shorthand lists that could be > pre-defined. > > Thoughts?
Yes, we should have support for specifying the required language standard(s) in Portfile, so that MacPorts could then select a compatible compiler. Until we have that, you need to blacklist incompatible compilers. If you require C++11, include the cxx11 1.1 portgroup which will do what's needed for you, including blacklisting incompatible compilers and ensuring the right C++ standard library is used. If you require C++14, include the cxx11 1.1 portgroup and additionally use "compiler.blacklist-append {clang < 602}". I'm not familiar with the capabilities or functionality of the languages 1.0 portgroup.