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 }
# Inline related methods
sub Inline {
my ($self, $lang) = @_;
my $params = $self->SUPER::Inline($lang);
$params->{CCFLAGSEX} = delete $params->{INC};
return {
%$params,
LDDLFLAGS => join( q{ }, $Config::Config{lddlflags}, $self->lddlflags() ),
AUTO_INCLUDE => $self->runtime_prop->{auto_include},
};
}
1;
__END__
=head1 NAME
Alien::OpenMP - Encapsulate system info for OpenMP
=head1 SYNOPSIS
use Alien::OpenMP;
say Alien::OpenMP->cflags; # e.g. '-fopenmp' if gcc
say Alien::OpenMP->lddlflags; # e.g. '-fopenmp' if gcc
say Alien::OpenMP->auto_include; # e.g. '#include <omp.h>' if gcc
=head1 DESCRIPTION
This module encapsulates the knowledge required to compile OpenMP programs
C<$Config{ccname}>. C<C>, C<Fortran>, and C<C++> programs annotated
with declarative OpenMP pragmas will still compile if the compiler (and
linker if this is a separate process) is not passed the appropriate flag
to enable OpenMP support. This is because all pragmas are hidden behind
full line comments (with the addition of OpenMP specific C<sentinels>,
as they are called).
All compilers require OpenMP to be explicitly activated during compilation;
for example, GCC's implementation, C<GOMP>, is invoked by the C<-fopenmp>
flag.
Most major compilers support OpenMP, including: GCC, Intel, IBM,
Portland Group, NAG, and those compilers created using LLVM. GCC's OpenMP
implementation, C<GOMP>, is available in all modern versions. Unfortunately,
while OpenMP is a well supported standard; compilers are not required to
use the same commandline switch to activate support. All compilers that
support OpenMP use slightly different ways of invoking it.
=head2 Compilers Supported by this module
At this time, the following compilers are supported:
=over 4
( run in 0.420 second using v1.01-cache-2.11-cpan-3d66aa2751a )