llvm-project/openmp/runtime/tools/lib/LibOMP.pm

86 lines
2.1 KiB
Perl

#
#//===----------------------------------------------------------------------===//
#//
#// The LLVM Compiler Infrastructure
#//
#// This file is dual licensed under the MIT and the University of Illinois Open
#// Source Licenses. See LICENSE.txt for details.
#//
#//===----------------------------------------------------------------------===//
#
package LibOMP;
use strict;
use warnings;
use tools;
sub empty($) {
my ( $var ) = @_;
return (not exists($ENV{$var})) or (not defined($ENV{$var})) or ($ENV{$var} eq "");
}; # sub empty
my ( $base, $out, $tmp );
if ( empty( "LIBOMP_WORK" ) ) {
# $FindBin::Bin is not used intentionally because it gives real path. I want to use absolute,
# but not real one (real path does not contain symlinks while absolute path may contain
# symlinks).
$base = get_dir( get_dir( abs_path( $0 ) ) );
} else {
$base = abs_path( $ENV{ LIBOMP_WORK } );
}; # if
if ( empty( "LIBOMP_EXPORTS" ) ) {
$out = cat_dir( $base, "exports" );
} else {
$out = abs_path( $ENV{ LIBOMP_EXPORTS } );
}; # if
if ( empty( "LIBOMP_TMP" ) ) {
$tmp = cat_dir( $base, "tmp" );
} else {
$tmp = abs_path( $ENV{ LIBOMP_TMP } );
}; # if
$ENV{ LIBOMP_WORK } = $base;
$ENV{ LIBOMP_EXPORTS } = $out;
$ENV{ LIBOMP_TMP } = $tmp;
return 1;
__END__
=pod
=head1 NAME
B<LibOMP.pm> --
=head1 SYNOPSIS
use FindBin;
use lib "$FindBin::Bin/lib";
use LibOMP;
$ENV{ LIBOMP_WORK }
$ENV{ LIBOMP_TMP }
$ENV{ LIBOMP_EXPORTS }
=head1 DESCRIPTION
The module checks C<LIBOMP_WORK>, C<LIBOMP_EXPORTS>, and C<LIBOMP_TMP> environments variables.
If a variable set, the module makes sure it is absolute. If a variable does not exist, the module
sets it to default value.
Default value for C<LIBOMP_EXPORTS> is C<$LIBOMP_WORK/exports>, for C<LIBOMP_TMP> --
C<$LIBOMP_WORK/tmp>.
Value for C<LIBOMP_WORK> is guessed. The module assumes the script (which uses the module) is
located in C<tools/> directory of libomp directory tree, and uses path of the script to calculate
C<LIBOMP_WORK>,
=cut
# end of file #