#!/usr/bin/env perl

use FindBin;
use lib $FindBin::Bin;
use Run qw(ret run);
use strict;

my $preset_substrate=$ENV{'CHPL_COMM_SUBSTRATE'};
my $substrate;

if ($preset_substrate eq "") {
    my $comm = run("comm", "--target");
    my $platform = run("platform", "--target");

    if ($comm eq "gasnet") {
        if ($platform eq "cray-xt") {
            $substrate = "mpi";
        } elsif ($platform =~ /^cray-(xe|xk)$/) {
            $substrate = "gemini";
        } elsif ($platform eq "cray-xc") {
            $substrate = "aries";
        } elsif ($platform eq "cx-linux") {
            $substrate = "ibv";
        } elsif ($platform eq "cray-cs") {
            $substrate = "ibv";
        } elsif ($platform eq "marenostrum") {
            $substrate = "udp";
        } elsif ($platform eq "pwr5") {
            $substrate = "lapi";
        } elsif ($platform eq "pwr6") {
            $substrate = "ibv";
        } else {
            $substrate = "udp";
        }
    } elsif ($comm eq "armci") {
        $substrate = "mpi";
    } else {
        $substrate = "none";
    }
} else {
    $substrate = $preset_substrate;
}

ret($substrate);
print "$substrate\n" unless caller;
