<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/7f23cb112b664fd1fe88021f2f1647bbc7b21328">https://github.com/macports/macports-ports/commit/7f23cb112b664fd1fe88021f2f1647bbc7b21328</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 7f23cb112b6 cmake 1.0 PG: Backport ccache support from cmake 1.1 PG
</span>7f23cb112b6 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 7f23cb112b664fd1fe88021f2f1647bbc7b21328
</span>Author: Chris Jones <jonesc@macports.org>
AuthorDate: Wed May 5 18:28:33 2021 +0100
<span style='display:block; white-space:pre;color:#404040;'> cmake 1.0 PG: Backport ccache support from cmake 1.1 PG
</span>---
_resources/port1.0/group/cmake-1.0.tcl | 41 ++++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/cmake-1.0.tcl b/_resources/port1.0/group/cmake-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 3b045063fa0..0b6bb3e950b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/cmake-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/cmake-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -28,8 +28,26 @@ pre-configure {
</span> file mkdir ${configure.dir}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#FIXME: ccache works with cmake on linux
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.ccache no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# cache the configure.ccache variable (it will be overridden in the pre-configure step)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set cmake_ccache ${configure.ccache}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# tell CMake to use ccache via the CMAKE_<LANG>_COMPILER_LAUNCHER variable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# and unset the global configure.ccache option which is not compatible
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# with CMake.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# See https://stackoverflow.com/questions/1815688/how-to-use-ccache-with-cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc cmake_ccaching_flags {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ upvar cmake_ccache ccache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${ccache} && [file exists ${prefix}/bin/ccache]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [list \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_C_COMPILER_LAUNCHER=${prefix}/bin/ccache \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_CXX_COMPILER_LAUNCHER=${prefix}/bin/ccache \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_Fortran_COMPILER_LAUNCHER=${prefix}/bin/ccache \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_OBJC_COMPILER_LAUNCHER=${prefix}/bin/ccache \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_OBJCXX_COMPILER_LAUNCHER=${prefix}/bin/ccache \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -DCMAKE_ISPC_COMPILER_LAUNCHER=${prefix}/bin/ccache ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span>
configure.cmd ${prefix}/bin/cmake
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -44,6 +62,7 @@ default configure.pre_args {-DCMAKE_INSTALL_PREFIX='${cmake.install_prefix}'}
</span> default configure.args {[list \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ {*}[cmake_ccaching_flags] \
</span> {-DCMAKE_C_COMPILER="$CC"} \
-DCMAKE_COLOR_MAKEFILE=ON \
{-DCMAKE_CXX_COMPILER="$CXX"} \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -145,9 +164,27 @@ platform darwin {
</span> } else {
configure.args-append -DCMAKE_OSX_SYSROOT="/"
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The configure.ccache variable has been cached so we can restore it in the post-configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # (pre-configure and post-configure are always run in a single `port` invocation.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.ccache no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # surprising but intended behaviour that's impossible to work around more gracefully:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # overriding configure.ccache fails if the user set it directly from the commandline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool configure.ccache]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Please don't use configure.ccache=yes on the commandline for port:${subport}, use configureccache=yes"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "invalid invocation (port:${subport})"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${cmake_ccache}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_info " (using ccache)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
post-configure {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # restore configure.ccache:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists cmake_ccache]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.ccache ${cmake_ccache}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "configure.ccache restored to ${cmake_ccache}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> # Although cmake wants us not to set -arch flags ourselves when we run cmake,
# ports might have need to access these variables at other times.
foreach archflag_var ${cmake._archflag_vars} {
</pre><pre style='margin:0'>
</pre>