<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/9de2312df6c613827923efe0babf39c19122ccba">https://github.com/macports/macports-base/commit/9de2312df6c613827923efe0babf39c19122ccba</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 9de2312df6c613827923efe0babf39c19122ccba
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Sun Sep 16 05:14:41 2018 -0700
<span style='display:block; white-space:pre;color:#404040;'> restrict compilers based on language requirements
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Restrict compilers based on:
</span><span style='display:block; white-space:pre;color:#404040;'> C standard
</span><span style='display:block; white-space:pre;color:#404040;'> C++ standard
</span><span style='display:block; white-space:pre;color:#404040;'> OpenMP Version
</span><span style='display:block; white-space:pre;color:#404040;'> MPI wrapper (mpich or openmp)
</span><span style='display:block; white-space:pre;color:#404040;'> support for thread local storage
</span>---
src/port1.0/portconfigure.tcl | 425 +++++++++++++++++++++++++++++++++++-------
1 file changed, 353 insertions(+), 72 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 3226418..e7c735a 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;'>@@ -268,6 +268,25 @@ default compiler.fallback {[portconfigure::get_compiler_fallback]}
</span> default compiler.blacklist {}
default compiler.whitelist {}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Compiler Restrictions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# compiler.c_standard Standard for the C programming language (1989, 1999, 2011, etc.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# compiler.cxx_standard Standard for the C++ programming language (1998, 2011, 2014, 2017, etc.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# compiler.openmp_version Version of OpenMP required (blank, 2.5, 3.0, 3.1, 4.0, 4.5, etc.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# compiler.mpi MacPorts port that provides MPI (blank, mpich, openmpi)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# compiler.thread_local_storage Is thread local storage required, e.g. __thread, _Thread_local, std::thread_local (yes, no)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.c_standard \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.cxx_standard \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.openmp_version \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.mpi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.thread_local_storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default compiler.c_standard 1989
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default compiler.cxx_standard 1998
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default compiler.openmp_version {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default compiler.mpi {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default compiler.thread_local_storage no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> set_ui_prefix
proc portconfigure::configure_start {args} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -546,11 +565,302 @@ proc portconfigure::configure_get_default_compiler {} {
</span> return [lindex [option compiler.fallback] 0]
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# internal utility procedure to get a version larger than any compiler version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::max_compiler_version {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 999999999999999999999.0
</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;'>+# https://releases.llvm.org/3.1/docs/ClangReleaseNotes.html#cchanges
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gcc.gnu.org/c99status.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gcc.gnu.org/wiki/C11Status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/wiki/XcodeVersionInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#--------------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| C Standard | Clang | Xcode Clang | Xcode | GCC |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#|------------------------------------------------------------------|
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 1989 (C89) | - | - | - | - |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 1999 (C99) | - | 211.10.1 | 4.2 | 4.5 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 2011 (C11) | 3.1 | 318.0.61 | 4.3 | 4.9 |
</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;'>+# https://clang.llvm.org/cxx_status.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gcc.gnu.org/projects/cxx-status.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://en.cppreference.com/w/cpp/compiler_support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Xcode release notes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/wiki/XcodeVersionInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#--------------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| C++ Standard | Clang | Xcode Clang | Xcode | GCC |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#|--------------------------------=---------------------------------|
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 1998 (C++98) | - | - | - | - |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 2011 (C++11) | 3.3 | 500.2.75 | 5.0 | 4.8.1 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 2014 (C++14) | 3.4 | 600.0.54 | 6.1 | 5 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 2017 (C++17) | 5.0 | 902.0.39.1 | 9.3 | 7 |
</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;'>+# https://openmp.llvm.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gcc.gnu.org/wiki/openmp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/wiki/XcodeVersionInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#----------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| OpenMP Version | Clang | Xcode Clang | Xcode | GCC |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#|---------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 2.5 | 3.8 | Future? | Future? | 4.2 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 3.0 | 3.8 | Future? | Future? | 4.4 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 3.1 | 3.8 | Future? | Future? | 4.7 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 4.0 | Partial | Future? | Future? | 4.9 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#| 4.5 | Partial | Future? | Future? | ??? |
</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;'>+# utility procedure: get minimum command line compilers version based on restrictions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_min_command_line {compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global compiler.c_standard compiler.cxx_standard compiler.openmp_version compiler.thread_local_storage os.major
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set min_values 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch ${compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clang {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.c_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 318.0.61
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.c_standard} >= 1999} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 211.10.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.cxx_standard} >= 2017} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 902.0.39.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.cxx_standard} >= 2014} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 600.0.54
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.cxx_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 500.2.75
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option configure.cxx_stdlib] eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cxx [lindex [split [portconfigure::configure_get_compiler cxx ${compiler}] /] end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${cxx} ne "clang++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # 3.2 <= Xcode < 4.0 does not provide clang++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</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:#e0ffe0;'>+ llvm-gcc-4.2 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gcc-4.2 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gcc-4.0 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ apple-gcc-4.2 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.c_standard} >= 1999} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.cxx_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option configure.cxx_stdlib] eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</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;'>+ default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "don't recognize compiler \"${compiler}\""
</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;'>+ if {${compiler.openmp_version} ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.thread_local_storage}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # thread-local storage only works on Mac OS X Lion and above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC & MacPorts Clang emulate thread-local storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</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;'>+ if {[option configure.cxx_stdlib] eq "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [lindex [lsort -decreasing -command vercmp ${min_values}] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# utility procedure: get minimum Clang version based on restrictions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_min_clang {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global compiler.c_standard compiler.cxx_standard compiler.openmp_version compiler.thread_local_storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set min_values 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.c_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 3.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.cxx_standard} >= 2017} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 5.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.cxx_standard} >= 2014} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 3.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.cxx_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 3.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${compiler.openmp_version} 4.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 6.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${compiler.openmp_version} 2.5] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 3.8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.thread_local_storage}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # MacPorts patches certain versions of Clang to emulate thread-local storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 5.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [lindex [lsort -decreasing -command vercmp ${min_values}] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# utility procedure: get minimum GCC version based on restrictions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_min_gcc {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global compiler.c_standard compiler.cxx_standard compiler.openmp_version compiler.thread_local_storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set min_values 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.c_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.c_standard} >= 1999} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.cxx_standard} >= 2017} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.cxx_standard} >= 2014} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 5.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${compiler.cxx_standard} >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${compiler.openmp_version} 4.5] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 8.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${compiler.openmp_version} 4.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${compiler.openmp_version} 3.1] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${compiler.openmp_version} 3.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${compiler.openmp_version} 2.5] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.thread_local_storage}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC emulates thread-local storage, but it seems to be broken on older versions of GCC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values 4.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option configure.cxx_stdlib] ne "" && [option configure.cxx_stdlib] ne "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend min_values [max_compiler_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [lindex [lsort -decreasing -command vercmp ${min_values}] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# utility procedure: get Apple compilers based on Xcode version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_apple_compilers_xcode_version {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global xcodeversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://developer.apple.com/library/content/documentation/CompilerTools/Conceptual/LLVMCompilerOverview/index.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Xcode 3.2 relase notes (Link?)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # About Xcode 3.1 Tools (about_xcode_tools_3.1.pdf, Link?)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # About Xcode 3.2 (about_xcode_3.2.pdf, Link?)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Xcode 5 does not support use of the LLVM-GCC compiler and the GDB debugger.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # From Xcode 4.2, Clang is the default compiler for Mac OS X.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # llvm-gcc4.2 is now the default system compiler in Xcode 4.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The LLVM compiler is the next-generation compiler, introduced in Xcode 3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC 4.0 has been removed from Xcode 4.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # attempt to include all available compilers except gcc-3*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # attempt to have the default compilers first
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${xcodeversion} 5] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {clang}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${xcodeversion} 4.3] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {clang llvm-gcc-4.2}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${xcodeversion} 4.2] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # llvm-gcc is more reliable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # see https://github.com/macports/macports-base/commit/10d62cb51b1f0f9703a873173bac468eee69d01a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {llvm-gcc-4.2 clang}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${xcodeversion} 4.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {llvm-gcc-4.2 clang gcc-4.2}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Legacy Cases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match *10.4u* [option configure.sdkroot]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # from Xcode 3.2 release notes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC 4.2 cannot be used with the Mac OS X 10.4u SDK.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # If you want to build targets using the 10.4u SDK on Xcode 3.2, you must set the Compiler Version to GCC 4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {gcc-4.0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${xcodeversion} 3.2] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # from about_xcode_3.2.pdf:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC 4.2 is the primary system compiler for the 10.6 SDK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # clang does *not* provide clang++, but configure.cxx will fall back to llvm-g++-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {gcc-4.2 llvm-gcc-4.2 clang gcc-4.0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${xcodeversion} 3.1] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # from about_xcode_tools_3.1.pdf:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC 4.2 & LLVM GCC 4.2 optional compilers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # assume they exist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {gcc-4.2 llvm-gcc-4.2 apple-gcc-4.2 gcc-4.0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[vercmp ${xcodeversion} 3.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {apple-gcc-4.2 gcc-4.0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers {apple-gcc-4.2 gcc-4.0}
</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:#e0ffe0;'>+ return $compilers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# utility procedure: get Clang compilers based on os.major
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_clang_compilers {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global os.major porturl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compiler_file [getportresourcepath $porturl "port1.0/compilers/clang_compilers.tcl"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file exists ${compiler_file}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source ${compiler_file}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Clang compilers file not found"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "${compiler_file} does not exist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${compilers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# utility procedure: get GCC compilers based on os.major
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_gcc_compilers {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global os.major porturl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compiler_file [getportresourcepath $porturl "port1.0/compilers/gcc_compilers.tcl"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file exists ${compiler_file}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ source ${compiler_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 compilers file not found"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "${compiler_file} does not exist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${compilers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# utility procedure: get MPI wrapper for a given compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_mpi_wrapper {mpi compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set parts [split ${compiler} -]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lindex ${parts} 0] ne "macports"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return macports-${mpi}-default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set type [lindex ${parts} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set ver [lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${type} eq "clang" && [vercmp ${ver} 3.3] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${type} eq "gcc" && [vercmp ${ver} 4.3] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${type} eq "g95"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return macports-${mpi}-${type}-${ver}
</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;'>+# utility procedure: get system compiler version by running it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc compiler.command_line_tools_version {compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch ${compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clang {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set re {clang(?:_.*)?-([0-9.]+)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ llvm-gcc-4.2 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set re {LLVM build ([0-9.]+)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gcc-4.2 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set re {build ([0-9.]+)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gcc-4.0 -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ apple-gcc-4.2 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set re {build ([0-9.]+)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "don't know how to determine build number of compiler \"${compiler}\""
</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;'>+ set cc [portconfigure::configure_get_compiler cc ${compiler}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![file executable ${cc}]} return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {regexp ${re} [exec ${cc} -v 2>@1] -> compiler_version}]} return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists compiler_version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "couldn't determine build number of compiler \"${compiler}\""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${compiler_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> # internal function to choose compiler fallback list based on platform
proc portconfigure::get_compiler_fallback {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global xcodeversion macosx_deployment_target default_compilers \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.sdkroot configure.cxx_stdlib cxx_stdlib os.major \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- option_defaults
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global default_compilers xcodeversion
</span>
# Check our override
if {[info exists default_compilers]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -562,82 +872,53 @@ proc portconfigure::get_compiler_fallback {} {
</span> return {cc}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Legacy cases
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp $xcodeversion 4.0] < 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set canonical_archs [get_canonical_archs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp $xcodeversion 3.2] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[string match *10.4u* ${configure.sdkroot}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {gcc-4.0}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # No return here. 3.2.x with newer SDKs than 10.4u is handled below.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[vercmp $xcodeversion 3.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {"ppc" in $canonical_archs || "ppc64" in $canonical_archs} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {gcc-4.2 apple-gcc-4.2 gcc-4.0 macports-gcc-6 macports-gcc-7}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {gcc-4.2 apple-gcc-4.2 gcc-4.0 macports-clang-3.4 macports-clang-3.3}
</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;'>- # Xcode 2.x (Tiger)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {"ppc" in $canonical_archs || "ppc64" in $canonical_archs} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {"i386" in $canonical_archs} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # universal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {apple-gcc-4.2 gcc-4.0 macports-gcc-6 macports-gcc-7}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # ppc only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {apple-gcc-4.2 gcc-4.0 gcc-3.3 macports-gcc-6 macports-gcc-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;'>- # i386 only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {apple-gcc-4.2 gcc-4.0 macports-clang-3.3}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set available_apple_compilers [portconfigure::get_apple_compilers_xcode_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set system_compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach c ${available_apple_compilers} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set v [compiler.command_line_tools_version $c]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vmin [portconfigure::get_min_command_line $c]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${vmin} $v] <= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend system_compilers $c
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set compilers {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Set our preferred Xcode-provided compilers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[vercmp $xcodeversion 5.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[vercmp $xcodeversion 4.3] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers clang llvm-gcc-4.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[vercmp $xcodeversion 4.0] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers llvm-gcc-4.2 clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # 3.2.x
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers gcc-4.2 clang llvm-gcc-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set clang_compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach c [portconfigure::get_clang_compilers] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set v [lindex [split $c -] 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vmin [join [lrange [split [portconfigure::get_min_clang] .] 0 1] .]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${vmin} $v] <= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend clang_compilers $c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Determine which versions of clang we prefer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # There is a recursion trap here: the default value of configure.cxx_stdlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # is determined by a proc that may end up calling us to find out which
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # compiler is being used. So, bypass that if the option hasn't already
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # been set to a particular value.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists option_defaults(configure.cxx_stdlib)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set our_stdlib ${configure.cxx_stdlib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set gcc_compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach c [portconfigure::get_gcc_compilers] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set v [lindex [split $c -] 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vmin [join [lrange [split [portconfigure::get_min_gcc] .] 0 0] .]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[vercmp ${vmin} $v] <= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend gcc_compilers $c
</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;'>+ set compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend compilers {*}${system_compilers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # when building for PowerPC architectures, prefer GCC to Clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option configure.build_arch] eq "ppc" || [option configure.build_arch] eq "ppc64"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend compilers {*}${gcc_compilers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend compilers {*}${clang_compilers}
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set our_stdlib $cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend compilers {*}${clang_compilers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend compilers {*}${gcc_compilers}
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$our_stdlib eq "libc++"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # clang-3.5+ require libc++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers macports-clang-5.0 macports-clang-4.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${os.major} < 17} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # The High Sierra SDK requires a toolchain that can apply nullability to uuid_t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers macports-clang-3.9
</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;'>- if {${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # The Sierra SDK requires a toolchain that supports class properties
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers macports-clang-3.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # generate list of MPI wrappers of current compilers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option compiler.mpi] eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $compilers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set mpi_compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach mpi [option compiler.mpi] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach c ${compilers} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend mpi_compilers {*}[portconfigure::get_mpi_wrapper $mpi $c]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $mpi_compilers
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # We dropped support for these compilers on Sierra
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend compilers macports-clang-3.4 macports-llvm-gcc-4.2 apple-gcc-4.2
</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;'>- return $compilers
</span> }
# Find a developer tool
</pre><pre style='margin:0'>
</pre>