summaryrefslogtreecommitdiffstats
path: root/util/mkinstallvars.pl
blob: 59a432d28c601edef63e7da4db586b2ea392647c (plain)
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
85
86
87
88
89
90
91
92
93
94
95
#! /usr/bin/env perl
# Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License").  You may not use
# this file except in compliance with the License.  You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html

# All variables are supposed to come from Makefile, in environment variable
# form, or passed as variable assignments on the command line.
# The result is a Perl module creating the package OpenSSL::safe::installdata.

use File::Spec;

# These are expected to be set up as absolute directories
my @absolutes = qw(PREFIX);
# These may be absolute directories, and if not, they are expected to be set up
# as subdirectories to PREFIX
my @subdirs = qw(BINDIR LIBDIR INCLUDEDIR APPLINKDIR ENGINESDIR MODULESDIR
                 PKGCONFIGDIR CMAKECONFIGDIR);

my %keys = ();
foreach (@ARGV) {
    (my $k, my $v) = m|^([^=]*)=(.*)$|;
    $keys{$k} = 1;
    $ENV{$k} = $v;
}

foreach my $k (sort keys %keys) {
    my $v = $ENV{$k};
    $v = File::Spec->rel2abs($v) if $v && grep { $k eq $_ } @absolutes;
    $ENV{$k} = $v;
}
foreach my $k (sort keys %keys) {
    my $v = $ENV{$k} || '.';

    # Absolute paths for the subdir variables are computed.  This provides
    # the usual form of values for names that have become norm, known as GNU
    # installation paths.
    # For the benefit of those that need it, the subdirectories are preserved
    # as they are, using the same variable names, suffixed with '_REL', if they
    # are indeed subdirectories.
    if (grep { $k eq $_ } @subdirs) {
        if (File::Spec->file_name_is_absolute($v)) {
            $ENV{"${k}_REL"} = File::Spec->abs2rel($v, $ENV{PREFIX});
        } else {
            $ENV{"${k}_REL"} = $v;
            $v = File::Spec->rel2abs($v, $ENV{PREFIX});
        }
    }
    $ENV{$k} = $v;
}

print <<_____;
package OpenSSL::safe::installdata;

use strict;
use warnings;
use Exporter;
our \@ISA = qw(Exporter);
our \@EXPORT = qw(\$PREFIX
                  \$BINDIR \$BINDIR_REL
                  \$LIBDIR \$LIBDIR_REL
                  \$INCLUDEDIR \$INCLUDEDIR_REL
                  \$APPLINKDIR \$APPLINKDIR_REL
                  \$ENGINESDIR \$ENGINESDIR_REL
                  \$MODULESDIR \$MODULESDIR_REL
                  \$PKGCONFIGDIR \$PKGCONFIGDIR_REL
                  \$CMAKECONFIGDIR \$CMAKECONFIGDIR_REL
                  \$VERSION \@LDLIBS);

our \$PREFIX             = '$ENV{PREFIX}';
our \$BINDIR             = '$ENV{BINDIR}';
our \$BINDIR_REL         = '$ENV{BINDIR_REL}';
our \$LIBDIR             = '$ENV{LIBDIR}';
our \$LIBDIR_REL         = '$ENV{LIBDIR_REL}';
our \$INCLUDEDIR         = '$ENV{INCLUDEDIR}';
our \$INCLUDEDIR_REL     = '$ENV{INCLUDEDIR_REL}';
our \$APPLINKDIR         = '$ENV{APPLINKDIR}';
our \$APPLINKDIR_REL     = '$ENV{APPLINKDIR_REL}';
our \$ENGINESDIR         = '$ENV{ENGINESDIR}';
our \$ENGINESDIR_REL     = '$ENV{ENGINESDIR_REL}';
our \$MODULESDIR         = '$ENV{MODULESDIR}';
our \$MODULESDIR_REL     = '$ENV{MODULESDIR_REL}';
our \$PKGCONFIGDIR       = '$ENV{PKGCONFIGDIR}';
our \$PKGCONFIGDIR_REL   = '$ENV{PKGCONFIGDIR_REL}';
our \$CMAKECONFIGDIR     = '$ENV{CMAKECONFIGDIR}';
our \$CMAKECONFIGDIR_REL = '$ENV{CMAKECONFIGDIR_REL}';
our \$VERSION            = '$ENV{VERSION}';
our \@LDLIBS             =
    # Unix and Windows use space separation, VMS uses comma separation
    split(/ +| *, */, '$ENV{LDLIBS}');

1;
_____