<pre style='margin:0'>
Marcus Calhoun-Lopez (MarcusCalhoun-Lopez) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/e0bd891f757606ff99e0611048de4f48f71dcce5">https://github.com/macports/macports-base/commit/e0bd891f757606ff99e0611048de4f48f71dcce5</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e0bd891f757606ff99e0611048de4f48f71dcce5
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Sun Sep 16 05:14:42 2018 -0700

<span style='display:block; white-space:pre;color:#404040;'>    improve compiler dependency check
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Attempt to add all dependencies (port, C++ library, etc.)
</span>---
 src/port1.0/portconfigure.tcl | 88 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 73 insertions(+), 15 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portconfigure.tcl b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 01c5703..c016849 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1147,20 +1147,83 @@ proc portconfigure::add_automatic_compiler_dependencies {} {
</span> 
     # The default value requires substitution before use.
     set compiler [subst ${configure.compiler}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {![compiler_is_port $compiler]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[compiler_is_port $compiler]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Chosen compiler ${compiler} is provided by a port, adding dependency"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        portconfigure::add_compiler_port_dependencies ${compiler}
</span>     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ui_debug "Chosen compiler ${compiler} is provided by a port, adding dependency"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Register the above procedure as a callback after Portfile evaluation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+port::register_callback portconfigure::add_automatic_compiler_dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# and an option to turn it off if required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options configure.compiler.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default configure.compiler.add_deps yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# helper function to add dependencies for a given compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::add_compiler_port_dependencies {compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global os.major porturl
</span> 
     set compiler_port [portconfigure::compiler_port_name ${compiler}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set deptype "build"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[string first "macports-gcc-" $compiler] == 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set deptype "lib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[regexp {^apple-gcc-(4\.0)$} $compiler -> gcc_version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # compiler links against ${prefix}/lib/apple-gcc40/lib/libgcc_s.1.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Adding depends_lib port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[regexp {^macports-(mpich|openmpi)-(default|clang|gcc)(?:-(\d+(?:\.\d+)?))?$} $compiler -> mpi clang_or_gcc version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # MPI compilers link against MPI libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Adding depends_lib port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${mpi} eq "openmpi"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set pkgname ompi.pc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set pkgname ${mpi}.pc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-delete "path:lib/$compiler_port/pgkconfig/${pkgname}:${compiler_port}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append "path:lib/$compiler_port/pkgconfig/${pkgname}:${compiler_port}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Adding depends_build port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # add C++ runtime dependency if necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            [regexp {^macports-gcc-(\d+(?:\.\d+)?)?$} ${compiler} -> gcc_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            [regexp {^macports-dragonegg-(\d+\.\d+)(?:-gcc-(\d+\.\d+))?$} ${compiler} -> llvm_version gcc_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[info exists llvm_version] && ${gcc_version} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # port dragonegg-3.4 defaults to GCC version 4.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set gcc_version 4.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set libgccs ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set dependencies_file [getportresourcepath $porturl "port1.0/compilers/gcc_dependencies.tcl"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${dependencies_file}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                source ${dependencies_file}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "GCC dependencies file not found"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return -code error "${dependencies_file} does not exist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_debug "Adding depends_build port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            depends_build-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            depends_build-append port:$compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach libgcc_dep $libgccs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_debug "Adding depends_lib $libgcc_dep"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                depends_lib-delete $libgcc_dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                depends_lib-append $libgcc_dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } elseif {[regexp {^macports-clang(?:-(\d+\.\d+))$} $compiler -> clang_version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[option configure.cxx_stdlib] eq "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # see https://trac.macports.org/ticket/54766
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_debug "Adding depends_lib path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                depends_lib-delete "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                depends_lib-append "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } elseif {[option configure.cxx_stdlib] eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {${os.major} < 11 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # libc++ does not exist on these systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_debug "Adding depends_lib libcxx"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    depends_lib-delete "port:libcxx"
</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;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    ui_debug "Adding depends_${deptype} port:$compiler_port"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_${deptype}-delete port:$compiler_port
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_${deptype}-append port:$compiler_port
</span> 
     if {[arch_flag_supported $compiler]} {
         ui_debug "Adding depends_skip_archcheck $compiler_port"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1168,11 +1231,6 @@ proc portconfigure::add_automatic_compiler_dependencies {} {
</span>         depends_skip_archcheck-append $compiler_port
     }
 }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Register the above procedure as a callback after Portfile evaluation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-port::register_callback portconfigure::add_automatic_compiler_dependencies
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# and an option to turn it off if required
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-options configure.compiler.add_deps
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default configure.compiler.add_deps yes
</span> 
 proc portconfigure::configure_main {args} {
     global [info globals]
</pre><pre style='margin:0'>

</pre>