<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/c2c932372a49ae3dff8faa7e21f085b006687e1c">https://github.com/macports/macports-ports/commit/c2c932372a49ae3dff8faa7e21f085b006687e1c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit c2c932372a49ae3dff8faa7e21f085b006687e1c
</span>Author: Marcus Calhoun-Lopez <mcalhoun@macports.org>
AuthorDate: Sat Apr 21 09:02:03 2018 -0700
<span style='display:block; white-space:pre;color:#404040;'> languages PG: add support for MPI compilers
</span>---
_resources/port1.0/group/languages-1.0.tcl | 66 +++++++++++++++++++-----------
1 file changed, 42 insertions(+), 24 deletions(-)
<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><span style='display:block; white-space:pre;color:#808080;'>index 3adca4e..154a94f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/languages-1.0.tcl
</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;'>@@ -1,6 +1,6 @@
</span> # -*- 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 style='display:block; white-space:pre;background:#ffe0e0;'>-# Copyright (c) 2015-2017 The MacPorts Project
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Copyright (c) 2015-2018 The MacPorts Project
</span> # All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -95,6 +95,10 @@ proc portconfigure::configure_start {args} {
</span> {^macports-gcc-(\d+(?:\.\d+)?)$} {MacPorts GCC %s}
{^macports-llvm-gcc-4\.2$} {MacPorts LLVM-GCC 4.2}
{^macports-g95$} {MacPorts G95}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ {^macports-mpich-default$}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {MacPorts MPICH Wrapper for MacPorts' Default C/C++ Compiler}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {^macports-openmpi-default$}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {MacPorts Open MPI Wrapper for MacPorts' Default C/C++ Compiler}
</span> {^macports-mpich-clang$}
{MacPorts MPICH Wrapper for Xcode Clang}
{^macports-openmpi-clang$}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -157,11 +161,6 @@ proc portconfigure::get_compiler_fallback {} {
</span> return $default_compilers
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Check for platforms without Xcode
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$xcodeversion eq "none" || $xcodeversion eq ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {cc}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> return [portconfigure::get_valid_compilers]
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -176,6 +175,11 @@ proc portconfigure::get_valid_compilers {{full_list no}} {
</span> os.major \
cxx_stdlib
<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> # https://releases.llvm.org/3.1/docs/ClangReleaseNotes.html#cchanges
# https://gcc.gnu.org/c99status.html
# https://gcc.gnu.org/wiki/C11Status
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -346,22 +350,20 @@ proc portconfigure::get_valid_compilers {{full_list no}} {
</span> foreach mpi ${mpis} {
foreach c ${compilers} {
set parts [split ${c} -]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[lindex ${parts} 0] eq "clang"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend mpi_compilers macports-${mpi}-[lindex ${parts} 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[lindex ${parts} 0] eq "macports"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [lindex ${parts} 1] eq "clang"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [vercmp [lindex ${parts} 2] 3.3] >= 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend mpi_compilers [lindex ${parts} 0]-${mpi}-[lindex ${parts} 1]-[lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [lindex ${parts} 1] eq "gcc"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [vercmp [lindex ${parts} 2] 4.3] >= 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend mpi_compilers [lindex ${parts} 0]-${mpi}-[lindex ${parts} 1]-[lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</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;'>+ lappend mpi_compilers macports-${mpi}-default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [lindex ${parts} 1] eq "clang"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [vercmp [lindex ${parts} 2] 3.3] >= 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend mpi_compilers [lindex ${parts} 0]-${mpi}-[lindex ${parts} 1]-[lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [lindex ${parts} 1] eq "gcc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [vercmp [lindex ${parts} 2] 4.3] >= 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend mpi_compilers [lindex ${parts} 0]-${mpi}-[lindex ${parts} 1]-[lindex ${parts} 2]
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -385,6 +387,7 @@ proc portconfigure::compiler_port_name {compiler} {
</span> {^macports-clang-(\d+\.\d+)$} {clang-%s}
{^macports-dragonegg-(\d+\.\d+)(-gcc-\d+\.\d+)?$} {dragonegg-%s%s}
{^macports-(llvm-)?gcc-(\d+)(?:\.(\d+))?$} {%sgcc%s%s}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ {^macports-([^-]+)-default$} {%s-default}
</span> {^macports-([^-]+)-clang$} {%s-clang}
{^macports-([^-]+)-clang-(\d+)\.(\d+)$} {%s-clang%s%s}
{^macports-([^-]+)-gcc-(\d+)(?:\.(\d+))?$} {%s-gcc%s%s}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -576,6 +579,13 @@ proc portconfigure::configure_get_compiler_real {type compiler} {
</span> f77 -
f90 { return ${prefix}/bin/mpifort-${mpi}-gcc${suffix} }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[regexp {^macports-([^-]+)-default$} $compiler -> mpi]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch $type {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cc -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ objc { return ${prefix}/bin/mpicc-${mpi}-mp }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cxx -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ objcxx { return ${prefix}/bin/mpicxx-${mpi}-mp }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
# Fallbacks
switch $type {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -645,7 +655,7 @@ proc portconfigure::add_compiler_port_dependencies {compiler} {
</span> ui_debug "Adding depends_lib port:$compiler_port"
depends_lib-delete port:$compiler_port
depends_lib-append port:$compiler_port
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[regexp {^macports-([^-]+)-(clang|gcc)(?:-(\d+(?:\.\d+)?))?$} $compiler -> mpi clang_or_gcc version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[regexp {^macports-([^-]+)-(default|clang|gcc)(?:-(\d+(?:\.\d+)?))?$} $compiler -> mpi clang_or_gcc version]} {
</span> # MPI compilers link against MPI libraries
ui_debug "Adding depends_lib port:$compiler_port"
if {${mpi} eq "openmpi"} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -717,7 +727,15 @@ default configure.cxx_stdlib {[portconfigure::configure_cxx_stdlib]}
</span> proc portconfigure::configure_cxx_stdlib {} {
global cxx_stdlib
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set is_macports_clang [string match *clang++-mp-* [option configure.cxx]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[regexp {^clang\+\+-mp-([\d.]+)$} [file tail [option configure.cxx]] -> version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # MacPorts Clang version 3.9 or above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_macports_clang [expr [vercmp ${version} 3.9] >= 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[regexp {^mpicxx-[^-]+-clang([\d.]+)$} [file tail [option configure.cxx]] -> version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # MPI wrapper for MacPorts Clang version 3.9 or above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_macports_clang [expr [vercmp ${version} 39] >= 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_macports_clang 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
if {${is_macports_clang} && ${cxx_stdlib} eq "libstdc++" && [option compiler.cxx_standard] >= 2011} {
return "macports-libstdc++"
</pre><pre style='margin:0'>
</pre>