In some cases the license-identification header was missing, so I added that as well. Replaced the remaining headers that specifically identified "Versions 3.13.7 and higher". Makefiles and the build system were deliberately excluded.
101 lines
2.8 KiB
Perl
101 lines
2.8 KiB
Perl
#!/usr/bin/env perl
|
|
|
|
#*************************************************************************
|
|
# Copyright (c) 2012 UChicago Argonne LLC, as Operator of Argonne
|
|
# National Laboratory.
|
|
# Copyright (c) 2002 The Regents of the University of California, as
|
|
# Operator of Los Alamos National Laboratory.
|
|
# SPDX-License-Identifier: EPICS
|
|
# EPICS BASE is distributed subject to a Software License Agreement found
|
|
# in file LICENSE that is included with this distribution.
|
|
#*************************************************************************
|
|
|
|
use strict;
|
|
|
|
use Getopt::Std;
|
|
use File::Basename;
|
|
|
|
my $tool = basename($0);
|
|
|
|
our ($opt_h, $opt_q, $opt_v);
|
|
our $opt_o = 'epicsVersion.h';
|
|
|
|
$Getopt::Std::OUTPUT_HELP_VERSION = 1;
|
|
|
|
HELP_MESSAGE() unless getopts('ho:qv:') && @ARGV == 1;
|
|
HELP_MESSAGE() if $opt_h;
|
|
|
|
my ($infile) = @ARGV;
|
|
|
|
print "Building $opt_o from $infile\n" unless $opt_q;
|
|
|
|
open my $VARS, '<', $infile
|
|
or die "$tool: Can't open $infile: $!\n";
|
|
|
|
my ($ver, $rev, $mod, $patch, $snapshot);
|
|
while (<$VARS>) {
|
|
chomp;
|
|
next if m/^\s*#/; # Skip comments
|
|
if (m/^EPICS_VERSION\s*=\s*(\d+)/) { $ver = $1; }
|
|
if (m/^EPICS_REVISION\s*=\s*(\d+)/) { $rev = $1; }
|
|
if (m/^EPICS_MODIFICATION\s*=\s*(\d+)/) { $mod = $1; }
|
|
if (m/^EPICS_PATCH_LEVEL\s*=\s*(\d+)/) { $patch = $1; }
|
|
if (m/^EPICS_DEV_SNAPSHOT\s*=\s*([-\w]*)/) { $snapshot = $1; }
|
|
}
|
|
close $VARS;
|
|
|
|
map {
|
|
die "$tool: Variable missing from $infile" unless defined $_;
|
|
} $ver, $rev, $mod, $patch, $snapshot;
|
|
|
|
my $ver_str = "$ver.$rev.$mod";
|
|
$ver_str .= ".$patch" if $patch > 0;
|
|
my $ver_short = $ver_str;
|
|
$ver_str .= $snapshot if $snapshot ne '';
|
|
$ver_str .= "-$opt_v" if $opt_v;
|
|
|
|
print "Found EPICS Version $ver_str\n" unless $opt_q;
|
|
|
|
open my $OUT, '>', $opt_o
|
|
or die "$tool: Can't create $opt_o: $!\n";
|
|
|
|
my $obase = basename($opt_o, '.h');
|
|
|
|
print $OUT <<"END";
|
|
/* Generated file $opt_o */
|
|
|
|
#ifndef INC_${obase}_H
|
|
#define INC_${obase}_H
|
|
|
|
#define EPICS_VERSION $ver
|
|
#define EPICS_REVISION $rev
|
|
#define EPICS_MODIFICATION $mod
|
|
#define EPICS_PATCH_LEVEL $patch
|
|
#define EPICS_DEV_SNAPSHOT "$snapshot"
|
|
#define EPICS_SITE_VERSION "$opt_v"
|
|
|
|
#define EPICS_VERSION_SHORT "$ver_short"
|
|
#define EPICS_VERSION_FULL "$ver_str"
|
|
#define EPICS_VERSION_STRING "EPICS $ver_str"
|
|
#define epicsReleaseVersion "EPICS R$ver_str"
|
|
|
|
#ifndef VERSION_INT
|
|
# define VERSION_INT(V,R,M,P) ( ((V)<<24) | ((R)<<16) | ((M)<<8) | (P))
|
|
#endif
|
|
#define EPICS_VERSION_INT VERSION_INT($ver, $rev, $mod, $patch)
|
|
|
|
#endif /* INC_${obase}_H */
|
|
END
|
|
|
|
close $OUT;
|
|
|
|
sub HELP_MESSAGE {
|
|
print STDERR "Usage: $tool [options] CONFIG_BASE_VERSION\n",
|
|
" -h Help: Print this message\n",
|
|
" -q Quiet: Only print errors\n",
|
|
" -o file Output filename, default is $opt_o\n",
|
|
" -v vers Site-specific version string\n",
|
|
"\n";
|
|
exit 1;
|
|
}
|