176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#!/usr/bin/perl 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Read the "version" file and produce some macro declarations 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanuse Fcntl; 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansub defx($$$) { 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman my($def, $name, $val) = @_; 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman $def =~ s/\</${name}/g; 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman $def =~ s/\@/${val}/g; 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman return $def."\n"; 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman($vfile, $vout, $def) = @ARGV; 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansysopen(VERSION, $vfile, O_RDONLY) or die "$0: Cannot open $vfile\n"; 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$vfile = <VERSION>; 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanchomp $vfile; 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanclose(VERSION); 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunless ( $vfile =~ /^(([0-9]+)\.([0-9]+))\s+([0-9]+)$/ ) { 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman die "$0: Cannot parse version format\n"; 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$version = $1; 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$vma = $2+0; 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$vmi = $3+0; 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman$year = $4; 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansysopen(VI, $vout, O_WRONLY|O_CREAT|O_TRUNC) 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman or die "$0: Cannot create $vout: $!\n"; 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION', $version); 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION_STR', '"'.$version.'"'); 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION_MAJOR', $vma); 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'VERSION_MINOR', $vmi); 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'YEAR', $year); 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanprint VI defx($def, 'YEAR_STR', '"'.$year.'"'); 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanclose(VI); 40