1 1.1 jmcneill #!/usr/bin/perl -w 2 1.1 jmcneill 3 1.1 jmcneill use strict; 4 1.1 jmcneill 5 1.1 jmcneill # 6 1.1 jmcneill # Generate a version from available information 7 1.1 jmcneill # 8 1.1 jmcneill 9 1.1 jmcneill my $prefix = shift @ARGV; 10 1.1 jmcneill my $root = shift @ARGV; 11 1.1 jmcneill 12 1.1 jmcneill 13 1.1 jmcneill if ( not defined $root ) { 14 1.1 jmcneill die "usage: $0 prefix root-dir\n"; 15 1.1 jmcneill } 16 1.1 jmcneill 17 1.1 jmcneill if ( ! -d $root ) { 18 1.1 jmcneill die "root directory $root not found\n"; 19 1.1 jmcneill } 20 1.1 jmcneill 21 1.1 jmcneill my $version = "unknown"; 22 1.1 jmcneill my $tainted = ""; 23 1.1 jmcneill 24 1.1 jmcneill if ( -d "$root/.git" ) { 25 1.1 jmcneill # attempt to work out git version. only do so 26 1.1 jmcneill # on a linux build host, as cygwin builds are 27 1.1 jmcneill # already slow enough 28 1.1 jmcneill 29 1.1 jmcneill if ( -f "/usr/bin/git" || -f "/usr/local/bin/git" ) { 30 1.1 jmcneill if (not open(F, "git --git-dir $root/.git rev-parse --verify HEAD|")) { 31 1.1 jmcneill $version = "no git version"; 32 1.1 jmcneill } 33 1.1 jmcneill else { 34 1.1 jmcneill $version = <F>; 35 1.1 jmcneill $version =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). 36 1.1 jmcneill $version =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). 37 1.1 jmcneill } 38 1.1 jmcneill 39 1.1 jmcneill if (open(G, "git --git-dir $root/.git status --porcelain|")) { 40 1.1 jmcneill $tainted = <G>; 41 1.1 jmcneill $tainted =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). 42 1.1 jmcneill $tainted =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). 43 1.1 jmcneill if (length $tainted) { 44 1.2 skrll $version = join ' ', $version, "(tainted)"; 45 1.2 skrll } 46 1.2 skrll else { 47 1.2 skrll $version = join ' ', $version, "(clean)"; 48 1.2 skrll } 49 1.1 jmcneill } 50 1.1 jmcneill } 51 1.1 jmcneill } 52 1.1 jmcneill 53 1.1 jmcneill my $hostname = `hostname`; 54 1.1 jmcneill $hostname =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). 55 1.1 jmcneill $hostname =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). 56 1.1 jmcneill 57 1.1 jmcneill 58 1.1 jmcneill print STDERR "Version $version\n"; 59 1.1 jmcneill print <<EOF; 60 1.1 jmcneill #include "${prefix}_build_info.h" 61 1.1 jmcneill #include <linux/broadcom/vc_debug_sym.h> 62 1.1 jmcneill 63 1.1 jmcneill VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_hostname, "$hostname" ); 64 1.1 jmcneill VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_version, "$version" ); 65 1.1 jmcneill VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_time, __TIME__ ); 66 1.1 jmcneill VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_date, __DATE__ ); 67 1.1 jmcneill 68 1.1 jmcneill const char *vchiq_get_build_hostname( void ) 69 1.1 jmcneill { 70 1.1 jmcneill return vchiq_build_hostname; 71 1.1 jmcneill } 72 1.1 jmcneill 73 1.1 jmcneill const char *vchiq_get_build_version( void ) 74 1.1 jmcneill { 75 1.1 jmcneill return vchiq_build_version; 76 1.1 jmcneill } 77 1.1 jmcneill 78 1.1 jmcneill const char *vchiq_get_build_date( void ) 79 1.1 jmcneill { 80 1.1 jmcneill return vchiq_build_date; 81 1.1 jmcneill } 82 1.1 jmcneill 83 1.1 jmcneill const char *vchiq_get_build_time( void ) 84 1.1 jmcneill { 85 1.1 jmcneill return vchiq_build_time; 86 1.1 jmcneill } 87 1.1 jmcneill EOF 88