Alien-OpenMP
view release on metacpan or search on metacpan
lib/Alien/OpenMP.pm view on Meta::CPAN
package Alien::OpenMP;
use parent 'Alien::Base';
use Config ();
use Alien::OpenMP::configure ();
our $VERSION = '0.003006';
# "public" Alien::Base method implementations
# we can reuse cflags for gcc/gomp; hopefully this will
# remain the case for all supported compilers
sub lddlflags { shift->libs }
lib/Alien/OpenMP/configure.pm view on Meta::CPAN
return if $checked;
if ($OS eq 'darwin') {
require File::Which;
require Path::Tiny;
# The issue here is that ccname=gcc and cc=cc as an interface to clang
$supported->{darwin} = {cflags => ['-Xclang', '-fopenmp'], libs => ['-lomp'],};
if (my $mp = File::Which::which('port')) {
# macports /opt/local/bin/port
my $mp_prefix = Path::Tiny->new($mp)->parent->parent;
push @{$supported->{darwin}{cflags}}, "-I$mp_prefix/include/libomp";
unshift @{$supported->{darwin}{libs}}, "-L$mp_prefix/lib/libomp";
}
else {
# homebrew has the headers and library in /usr/local
push @{$supported->{darwin}{cflags}}, "-I/usr/local/include";
unshift @{$supported->{darwin}{libs}}, "-L/usr/local/lib";
}
}
$checked++;
t/03-configure.t view on Meta::CPAN
subtest 'darwin clang/gcc macports' => sub {
plan skip_all => 'Mocking does not work on MSWin32'
if $^O eq 'MSWin32';
local $Alien::OpenMP::configure::CCNAME = 'gcc';
local $Alien::OpenMP::configure::OS = 'darwin';
local $ENV{PATH} = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin";
# create a mock port executable
my $tempdir = Path::Tiny->tempdir();
my $port = $tempdir->child('bin', 'port');
$port->parent->mkpath;
$port->spew("#!/bin/bash");
$port->chmod(0755);
$ENV{PATH} .= ":$tempdir/bin";
Alien::OpenMP::configure->_reset;
is +Alien::OpenMP::configure->is_known, 1, q{known};
like +Alien::OpenMP::configure->cflags, qr{-Xclang -fopenmp}, q{Found expected OpenMP compiler switch for gcc/clang.};
like +Alien::OpenMP::configure->lddlflags, qr{-lomp}, q{Found expected OpenMP linker switch for gcc/clang.};
like +Alien::OpenMP::configure->cflags, qr{-I$tempdir/include/libomp}, q{Found path to include headers};
like +Alien::OpenMP::configure->libs, qr{-L$tempdir/lib/libomp}, q{Found path to library};
};
( run in 0.485 second using v1.01-cache-2.11-cpan-4d50c553e7e )