<pre style='margin:0'>
Ryan Schmidt (ryandesign) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/fcaeca417b5d60413f106f01c11dda06749c867b">https://github.com/macports/macports-ports/commit/fcaeca417b5d60413f106f01c11dda06749c867b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new fcaeca4 cmake: Force libc++ on Snow Leopard and newer
</span>fcaeca4 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit fcaeca417b5d60413f106f01c11dda06749c867b
</span>Author: Ryan Schmidt <ryandesign@macports.org>
AuthorDate: Sun Dec 3 23:30:57 2017 -0600
<span style='display:block; white-space:pre;color:#404040;'> cmake: Force libc++ on Snow Leopard and newer
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This does not cause problems on libstdc++ systems because cmake doesn't
</span><span style='display:block; white-space:pre;color:#404040;'> depend on any C++ libraries, nor does it supply any C++ libraries.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This fixes the build on Mac OS X 10.6-10.8.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> On Lion, force the use of macports-clang-3.4, which contains a fix for
</span><span style='display:block; white-space:pre;color:#404040;'> a Lion-specific libc++ bug. The fix appears not to be present in
</span><span style='display:block; white-space:pre;color:#404040;'> macports-clang-3.7 which is the compiler that would otherwise be used.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> On Leopard and earlier, use the cxx11-1.1 portgroup's default behavior
</span><span style='display:block; white-space:pre;color:#404040;'> of using gcc6 and its libstdc++.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/55382
</span>---
devel/cmake/Portfile | 69 +++++++++++++---------------------------------------
1 file changed, 17 insertions(+), 52 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/cmake/Portfile b/devel/cmake/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index e0ef40e..2f55e4d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/cmake/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/cmake/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,11 +2,14 @@
</span>
PortSystem 1.0
PortGroup muniversal 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup compiler_blacklist_versions 1.0
</span>
# devel requires C++11 as of 2017-08-21
# https://gitlab.kitware.com/cmake/cmake/commit/c1f3eb9f2d628b2911aa17f65012fab0befc4b87
# release requires C++11 as of 3.10.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+if {!((${os.platform} eq "darwin" && ${os.major} < 10) || ${build_arch} eq "ppc" || ${build_arch} eq "ppc64")} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:libcxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cxx_stdlib libc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> PortGroup cxx11 1.1
name cmake
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -108,13 +111,14 @@ configure.env-append \
</span> CMAKE_INCLUDE_PATH=${prefix}/include/ncurses \
CMAKE_LIBRARY_PATH=${prefix}/lib
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# when using libc++, require Clang 3.4 or newer; Clang 3.3 produces
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# bad stream reading code. See also MP ticket #44129:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# < https://trac.macports.org/ticket/44129 >
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${configure.cxx_stdlib} eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- compiler.blacklist-append *gcc* {clang < 500} macports-clang-3.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# On Lion, Clang 3.3 produces bad stream reading code when using libc++.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# See https://trac.macports.org/ticket/44129
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Clang 3.4 works. But Clang 3.7 doesn't work.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} == 11 && ${configure.cxx_stdlib} eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.whitelist macports-clang-3.4
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Clang 3.8 and later require cmake; avoid circular dependency.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append macports-clang-3.8 macports-clang-3.9 macports-clang-4.0 macports-clang-5.0
</span>
platform darwin {
configure.env-append \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -127,9 +131,12 @@ platform darwin {
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# CMake 3.2 changed dependency requirements to include jsoncpp.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# jsoncpp 1.0+ requires CMake for building. catch 22. So, have CMake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# use its internal jsoncpp until a better solution comes about.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# jsoncpp 1.0+ requires CMake for building; circular dependencies are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# not possible in MacPorts. In addition, jsoncpp uses C++, so it would
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# not be possible for CMake, which uses libc++ on 10.6-10.8, to link
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# with a MacPorts copy of jsoncpp, which would usually use libstdc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# on those systems. Fortunately CMake comes bundled with its own
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# internal copy of jsoncpp, so we use that.
</span>
configure.args-append --docdir=share/doc/cmake \
--parallel=${build.jobs} \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -170,18 +177,6 @@ platform darwin 9 {
</span> set universal_archs_supported ${supported_archs}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platform darwin {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # TODO: Figure out why using libc++ fails on Lion and fix the bootstrap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # script to honor CMAKE_OSX_SYSROOT and CMAKE_OSX_DEPLOYMENT_TARGET.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Since nothing links against cmake and cmake is just using the STL,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # we're safe to force libstdc++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # https://cmake.org/Bug/view.php?id=15039&nbn=16
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${os.major} < 12} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.cxx_stdlib libstdc++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> build.post_args VERBOSE=ON
post-patch {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -231,36 +226,6 @@ post-destroot {
</span>
variant gui description {Build Qt-based cmake-gui} {
configure.args-append --qt-gui
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # when building the GUI with Qt, CMake uses C++11. So, make sure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # the compiler used is c++11 compliant.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${configure.cxx_stdlib} eq "libstdc++"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # *clang* when using libstdc++ do not seem to support C++11;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # C++11 support seems to need GCC 4.7+ when using libstdc++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # could use C++0x support on GCC4.[56], but just ignore it since
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # there are newer compilers already in place as defaults.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Blacklist GCC compilers not supporting C++11 and all CLANG.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is probably not necessary, but it's good practice.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- compiler.blacklist-append *clang* {*gcc-3*} {*gcc-4.[0-6]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # and whitelist those we do want to use. wish there were a better way.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # these will be used in the order provided.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- compiler.whitelist macports-gcc-4.9 macports-gcc-4.8 macports-gcc-4.7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # using libc++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Blacklist Clang not supporting C++11 in some form and all GCC.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Just use the cxx11 PortGroup for this specific case.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- PortGroup cxx11 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span> }
variant qt4 conflicts qt5 requires gui description {Build Qt GUI using Qt4} {
</pre><pre style='margin:0'>
</pre>