reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
#
#//===----------------------------------------------------------------------===//
#//
#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
#// See https://llvm.org/LICENSE.txt for license information.
#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#//
#//===----------------------------------------------------------------------===//
#
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 #