Home | History | Annotate | Line # | Download | only in tools
ck-version-info revision 1.1.1.2.2.1
      1          1.1       mrg #!/usr/bin/env perl
      2          1.1       mrg 
      3          1.1       mrg # Note: this script must not be used to build MPFR due to the
      4          1.1       mrg # dependency on perl, but this is OK for "make dist".
      5          1.1       mrg 
      6  1.1.1.2.2.1  pgoyette # Copyright 2010-2018 Free Software Foundation, Inc.
      7          1.1       mrg # This script is free software; the Free Software Foundation
      8          1.1       mrg # gives unlimited permission to copy and/or distribute it,
      9          1.1       mrg # with or without modifications, as long as this notice is preserved.
     10          1.1       mrg 
     11          1.1       mrg # This program is distributed in the hope that it will be useful,
     12          1.1       mrg # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
     13          1.1       mrg # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
     14          1.1       mrg # PARTICULAR PURPOSE.
     15          1.1       mrg 
     16          1.1       mrg use strict;
     17          1.1       mrg use Cwd;
     18          1.1       mrg 
     19          1.1       mrg if (! -d 'src')
     20          1.1       mrg   {
     21          1.1       mrg     getcwd() =~ m,/tools$,
     22          1.1       mrg       or die "Execute $0 from the MPFR source directory\n";
     23          1.1       mrg     chdir '..' or die "$!\n$0: can't change cwd\n";
     24          1.1       mrg   }
     25          1.1       mrg 
     26          1.1       mrg open VERSION, '<', 'VERSION'
     27          1.1       mrg   or die "$!\n$0: can't open VERSION file\n";
     28          1.1       mrg my $version = do { local $/; <VERSION> };
     29          1.1       mrg close VERSION or die "$!\n$0: can't close VERSION file\n";
     30          1.1       mrg 
     31          1.1       mrg my ($mv,$pl,$suf) = $version =~ /^(\d+\.\d+)\.(\d+)(-\S+)?/
     32          1.1       mrg   or die "$0: bad VERSION format\n";
     33          1.1       mrg 
     34          1.1       mrg open MF, '<', 'src/Makefile.am'
     35          1.1       mrg   or die "$!\n$0: can't open Makefile.am file\n";
     36          1.1       mrg my $cur = 0;
     37          1.1       mrg my $age = -1;
     38          1.1       mrg my $vinfo;  # expected -version-info value
     39          1.1       mrg while (<MF>)
     40          1.1       mrg   {
     41          1.1       mrg     last if $cur && ! /^\s*(#.*)$/;
     42          1.1       mrg     /^#\s+(\d+\.\d+)\.x\s+(\d+):x:(\d+)/ or next;
     43          1.1       mrg     $2 == ++$cur or die "$0: bad CURRENT ($2)";
     44          1.1       mrg     $3 == 0 || $3 == $age + 1 or die "$0: bad AGE ($3)";
     45          1.1       mrg     $age = $3;
     46          1.1       mrg     $mv eq $1 and $vinfo = "$cur:$pl:$age";
     47          1.1       mrg   }
     48          1.1       mrg /^libmpfr_la_LDFLAGS\s+=.*\s-version-info\s+(\d+:\d+:\d+)\s/
     49          1.1       mrg   or die "$0: missing correct libmpfr_la_LDFLAGS line";
     50          1.1       mrg close MF or die "$!\n$0: can't close Makefile.am file\n";
     51          1.1       mrg $suf eq '-dev' || $vinfo eq $1
     52          1.1       mrg   or die "$0: bad -version-info value ($1 instead of $vinfo)\n";
     53          1.1       mrg 
     54          1.1       mrg open CONFIGURE, '<', 'configure.ac'
     55          1.1       mrg   or die "$!\n$0: can't open configure.ac file\n";
     56          1.1       mrg my $dllversion = $cur - $age;
     57          1.1       mrg my $dllvinconf;
     58          1.1       mrg while (<CONFIGURE>)
     59          1.1       mrg   {
     60          1.1       mrg     /^\s*LIBMPFR_LDFLAGS\s*=.*-Wl,--output-def,\.libs\/libmpfr-(\d+)\.dll\.def/
     61          1.1       mrg       and $dllvinconf = $1, last;
     62          1.1       mrg   }
     63          1.1       mrg close CONFIGURE or die "$!\n$0: can't close configure.ac file\n";
     64          1.1       mrg defined $dllvinconf or die "$0: missing correct LIBMPFR_LDFLAGS line\n";
     65          1.1       mrg $suf eq '-dev' || $dllversion eq $dllvinconf
     66          1.1       mrg   or die "$0: bad libmpfr.dll-version value (libmpfr-$dllvinconf.dll.def".
     67          1.1       mrg   " instead of libmpfr-$dllversion.dll.def)\n";
     68