Skip to main content
  • Home
  • login
  • Browse the archive

    swh mirror partner logo
swh logo
SoftwareHeritage
Software
Heritage
Mirror
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 5bbf7ca
  • /
  • util
  • /
  • mkinstallvars.pl
Raw File
Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:5fadb708e1b7765b442484d18dee338b93020e19
directory badge Iframe embedding
swh:1:dir:c66046dd597e7d1ff8ec675438459eda7b83d229
mkinstallvars.pl
#! /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;
use List::Util qw(pairs);

# These are expected to be set up as absolute directories
my @absolutes = qw(PREFIX libdir);
# These may be absolute directories, and if not, they are expected to be set up
# as subdirectories to PREFIX or LIBDIR.  The order of the pairs is important,
# since the LIBDIR subdirectories depend on the calculation of LIBDIR from
# PREFIX.
my @subdirs = pairs (PREFIX => [ qw(BINDIR LIBDIR INCLUDEDIR APPLINKDIR) ],
                     LIBDIR => [ qw(ENGINESDIR MODULESDIR PKGCONFIGDIR
                                    CMAKECONFIGDIR) ]);
# For completeness, other expected variables
my @others = qw(VERSION LDLIBS);

my %all = ( );
foreach (@absolutes) { $all{$_} = 1 }
foreach (@subdirs) { foreach (@{$_->[1]}) { $all{$_} = 1 } }
foreach (@others) { $all{$_} = 1 }
print STDERR "DEBUG: all keys: ", join(", ", sort keys %all), "\n";

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

# warn if there are missing values, and also if there are unexpected values
foreach my $k (sort keys %all) {
    warn "No value given for $k\n" unless $keys{$k};
}
foreach my $k (sort keys %keys) {
    warn "Unknown variable $k\n" unless $all{$k};
}

# This shouldn't be needed, but just in case we get relative paths that
# should be absolute, make sure they actually are.
foreach my $k (@absolutes) {
    my $v = $ENV{$k} || '.';
    print STDERR "DEBUG: $k = $v => ";
    $v = File::Spec->rel2abs($v) if $v;
    $ENV{$k} = $v;
    print STDERR "$k = $ENV{$k}\n";
}

# 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_{var}',
# if they are indeed subdirectories.  The '{var}' part of the name tells
# which other variable value they are relative to.
foreach my $pair (@subdirs) {
    my ($var, $subdir_vars) = @$pair;
    foreach my $k (@$subdir_vars) {
        my $v = $ENV{$k} || '.';
        print STDERR "DEBUG: $k = $v => ";
        if (File::Spec->file_name_is_absolute($v)) {
            my $kr = "${k}_REL_${var}";
            $ENV{$kr} = File::Spec->abs2rel($v, $ENV{$var});
            print STDERR "$kr = $ENV{$kr}\n";
        } else {
            my $kr = "${k}_REL_${var}";
            $ENV{$kr} = $v;
            $ENV{$k} = File::Spec->rel2abs($v, $ENV{$var});
            print STDERR "$k = $ENV{$k} ,  $kr = $v\n";
        }
    }
}

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

use strict;
use warnings;
use Exporter;
our \@ISA = qw(Exporter);
our \@EXPORT = qw(
_____

foreach my $k (@absolutes) {
    print "    \$$k\n";
}
foreach my $pair (@subdirs) {
    my ($var, $subdir_vars) = @$pair;
    foreach my $k (@$subdir_vars) {
        my $k2 = "${k}_REL_${var}";
        print "    \$$k \$$k2\n";
    }
}

print <<_____;
    \$VERSION \@LDLIBS
);

_____

foreach my $k (@absolutes) {
    print "our \$$k" . ' ' x (27 - length($k)) . "= '$ENV{$k}';\n";
}
foreach my $pair (@subdirs) {
    my ($var, $subdir_vars) = @$pair;
    foreach my $k (@$subdir_vars) {
        my $k2 = "${k}_REL_${var}";
        print "our \$$k" . ' ' x (27 - length($k)) . "= '$ENV{$k}';\n";
        print "our \$$k2" . ' ' x (27 - length($k2)) . "= '$ENV{$k2}';\n";
    }
}

print <<_____;
our \$VERSION                    = '$ENV{VERSION}';
our \@LDLIBS                     =
    # Unix and Windows use space separation, VMS uses comma separation
    split(/ +| *, */, '$ENV{LDLIBS}');

1;
_____

ENEA — Copyright (C), ENEA. License: GNU AGPLv3+.
Legal notes  ::  JavaScript license information ::  Web API

back to top