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

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/55ecf81110320b908e79730a70ebb177583a3432">https://github.com/macports/macports-ports/commit/55ecf81110320b908e79730a70ebb177583a3432</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 55ecf81  languages: new PortGroup
</span>55ecf81 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 55ecf81110320b908e79730a70ebb177583a3432
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Sat Oct 21 21:52:18 2017 -0700

<span style='display:block; white-space:pre;color:#404040;'>    languages: new PortGroup
</span>---
 _resources/port1.0/group/languages-1.0.tcl | 382 +++++++++++++++++++++++++++++
 1 file changed, 382 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/languages-1.0.tcl b/_resources/port1.0/group/languages-1.0.tcl
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..999198d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/languages-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,382 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Copyright (c) 2015-2017 The MacPorts Project
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# modification, are permitted provided that the following conditions are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# met:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 1. Redistributions of source code must retain the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    notice, this list of conditions and the following disclaimer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 2. Redistributions in binary form must reproduce the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    notice, this list of conditions and the following disclaimer in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    documentation and/or other materials provided with the distribution.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 3. Neither the name of The MacPorts Project nor the names of its
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    contributors may be used to endorse or promote products derived from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    this software without specific prior written permission.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Usage:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   PortGroup                 languages 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   compiler.c_standard       Standard for the C programming language
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                             Values: 1989 (Default), 1999, 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   compiler.cxx_standard     Standard for the C++ programming language
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                             Values: 1998 (Default), 2011, 2014, 2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   compiler.require_fortran  Is a Fortran compiler required?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                             Values: no (Default), yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This PortGroup sets the compiler, compiler dependencies,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    and the C++ standard library switches.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Ideally the functionality of this PortGroup should be integrated into
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# MacPorts base as a new option.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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.require_fortran
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard       1989
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard     1998
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.require_fortran  no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# internal function to determine the latest GCC version to use for Fortran
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_gcc_fortran_version {} { return 7 }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# replacement for portconfigure.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::get_compiler_fallback {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global                     \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xcodeversion           \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        default_compilers      \
</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;'>+        os.major               \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Check our override
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[info exists default_compilers]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return $default_compilers
</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;'>+    # Check for platforms without Xcode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$xcodeversion eq "none" || $xcodeversion eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return {cc}
</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;'>+    # http://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;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 1989 (C89)   |     -     |   -       |    -      |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 1999 (C99)   |     -     | Xcode 4.2 | GCC 4.5   |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 2011 (C11)   | Clang 3.1 | Xcode 4.3 | GCC 4.9   |
</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;'>+    # http://en.cppreference.com/w/cpp/compiler_support
</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) | Clang 3.3 | Xcode 5   | GCC 4.8.1 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 2014 (C++14) | Clang 3.4 | Xcode 5.1 | GCC 5     |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # 2017 (C++17) | Clang 5   | Xcode ??? | GCC 7     |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[vercmp ${xcodeversion} 4.2] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set default_xcode_ok [expr ${compiler.c_standard} <= 1989 && ${compiler.cxx_standard} <= 1998]
</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 default_xcode_ok [expr ${compiler.c_standard} <= 1999 && ${compiler.cxx_standard} <= 1998]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[vercmp ${xcodeversion} 5] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set default_xcode_ok [expr ${compiler.c_standard} <= 2011 && ${compiler.cxx_standard} <= 1998]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[vercmp ${xcodeversion} 5.1] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set default_xcode_ok [expr ${compiler.c_standard} <= 2011 && ${compiler.cxx_standard} <= 2011]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set default_xcode_ok [expr ${compiler.c_standard} <= 2011 && ${compiler.cxx_standard} <= 2014]
</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;'>+    # check for non-default cases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${default_xcode_ok}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${cxx_stdlib} eq "libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set default_xcode_ok [expr ${os.major} <  13]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set default_xcode_ok [expr ${os.major} >= 13]
</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;'>+    # 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;'>+    if {!${default_xcode_ok}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set compilers ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</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.2] >= 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.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;'>+                    set compilers {gcc-4.2 llvm-gcc-4.2 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;'>+                    # do not assume they exist (???)
</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;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set gcc_compilers macports-gcc-7
</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;'>+        # allow latest GCC to be blacklisted by ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # see https://trac.macports.org/ticket/54215#comment:36
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend gcc_compilers macports-gcc-6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend gcc_compilers macports-gcc-5
</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;'>+    # does Clang work on all i386 and x86_64 systems?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # according to http://packages.macports.org/clang-5.0/,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #    clang builds back to Mac OS X 10.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set clang_compilers macports-clang-5.0
</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;'>+        # allow latest Clang to be blacklisted by ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend clang_compilers macports-clang-4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${os.major} < 17} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # The High Sierra SDK requires a toolchain that can apply nullability to uuid_t
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            lappend clang_compilers macports-clang-3.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # The Sierra SDK requires a toolchain that supports class properties
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            lappend clang_compilers macports-clang-3.8 macports-clang-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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${cxx_stdlib} eq "libstdc++"} {
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</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:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # only Clang compilers recognize libc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend compilers {*}${clang_compilers}
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# extension of portconfigure.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rename portconfigure::configure_get_compiler portconfigure::configure_get_compiler_real
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::configure_get_compiler {type {compiler {}}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set ret_real [portconfigure::configure_get_compiler_real ${type} ${compiler}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[option compiler.require_fortran]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach tool {f77 f90 fc} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {${type} eq ${tool} && ${ret_real} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return ${prefix}/bin/gfortran-mp-[portconfigure::get_gcc_fortran_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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return ${ret_real}
</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;'>+# replacement for portconfigure.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::add_automatic_compiler_dependencies {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global configure.compiler configure.compiler.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {!${configure.compiler.add_deps}} {
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # The default value requires substitution before use.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set compiler [subst ${configure.compiler}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[option compiler.require_fortran] && [portconfigure::configure_get_compiler_real fc ${compiler}] eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Adding Fortran compiler dependency"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        portconfigure::add_compiler_port_dependencies macports-gcc-[portconfigure::get_gcc_fortran_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;'>+# 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
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set compiler_port [portconfigure::compiler_port_name ${compiler}]
</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;'>+    } 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;'>+            # compiler links against libraries in libgcc\d* and/or libgcc-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[vercmp ${gcc_version} 4.6] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set libgccs "path:lib/libgcc/libgcc_s.1.dylib:libgcc port:libgcc6 port:libgcc45"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } elseif {[vercmp ${gcc_version} 7] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set libgccs "path:lib/libgcc/libgcc_s.1.dylib:libgcc port:libgcc6"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set libgccs "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
</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:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[arch_flag_supported $compiler]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Adding depends_skip_archcheck $compiler_port"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_skip_archcheck-delete $compiler_port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_skip_archcheck-append $compiler_port
</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;'>+# replacement for portconfigure.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default configure.cxx_stdlib            {[portconfigure::configure_cxx_stdlib]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# helper function to set configure.cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::configure_cxx_stdlib {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set is_macports_clang [string match *clang++-mp-* [option configure.cxx]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${is_macports_clang} && ${cxx_stdlib} eq "libstdc++" && [option compiler.cxx_standard] >= 2011} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return "macports-libstdc++"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return ${cxx_stdlib}
</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;'>+proc portconfigure::should_add_libstdlib_abi {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global os.major cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # prior to OS X Mavericks, libstdc++ was the default C++ runtime, so
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #    assume MacPorts libstdc++ must be ABI compatable with system libstdc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # for OS X Maverick and above, users must select libstdc++, so
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #    assume they want default ABI compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # see https://gcc.gnu.org/onlinedocs/gcc-5.2.0/libstdc++/manual/manual/using_dual_abi.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [expr {${cxx_stdlib} eq "libstdc++" && [option compiler.cxx_standard] >= 2011 && ${os.major} < 13}]
</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;'>+# replacement for portconfigure.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::construct_cxxflags {flags} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[portconfigure::should_add_stdlib]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend flags -stdlib=[option configure.cxx_stdlib]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[portconfigure::should_add_libstdlib_abi]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend flags -D_GLIBCXX_USE_CXX11_ABI=0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return $flags
</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;'>+# replacement for portconfigure.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portconfigure::stdlib_trace {opt action args} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach flag [lsearch -all -inline [option $opt] -stdlib=*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $opt-delete $flag
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$action eq "read" && [portconfigure::should_add_stdlib]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $opt-append -stdlib=[option configure.cxx_stdlib]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach flag [lsearch -all -inline [option $opt] -D_GLIBCXX_USE_CXX11_ABI=0] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $opt-delete $flag
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$action eq "read" && [portconfigure::should_add_libstdlib_abi]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $opt-append -D_GLIBCXX_USE_CXX11_ABI=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;'>+# replacement for portutil.tcl version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc universal_setup {args} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[variant_exists universal]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "universal variant already exists, so not adding the default one"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[exists universal_variant] && ![option universal_variant]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "universal_variant is false, so not adding the default universal variant"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[exists use_xmkmf] && [option use_xmkmf]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "using xmkmf, so not adding the default universal variant"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {![exists os.universal_supported] || ![option os.universal_supported]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "OS doesn't support universal builds, so not adding the default universal variant"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[llength [option supported_archs]] == 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "only one arch supported, so not adding the default universal variant"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[regexp {^macports-gcc-(\d+(?:\.\d+)?)?$} [option configure.compiler] -> gcc_version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Compiler doesn't support universal builds, so not adding the default universal variant"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "adding the default universal variant"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        variant universal {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>

</pre>