#!/usr/bin/perl -w use strict; # # Generate a version from available information # my $prefix = shift @ARGV; my $root = shift @ARGV; if ( not defined $root ) { die "usage: $0 prefix root-dir\n"; } if ( ! -d $root ) { die "root directory $root not found\n"; } my $version = "unknown"; my $tainted = ""; if ( -d "$root/.git" ) { # attempt to work out git version. only do so # on a linux build host, as cygwin builds are # already slow enough if ( -f "/usr/bin/git" || -f "/usr/local/bin/git" ) { if (not open(F, "git --git-dir $root/.git rev-parse --verify HEAD|")) { $version = "no git version"; } else { $version = <F>; $version =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). $version =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). } if (open(G, "git --git-dir $root/.git status --porcelain|")) { $tainted = <G>; $tainted =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). $tainted =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). if (length $tainted) { $version = join ' ', $version, "(tainted)"; } else { $version = join ' ', $version, "(clean)"; } } } } my $hostname = `hostname`; $hostname =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). $hostname =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). print STDERR "Version $version\n"; print <<EOF; #include "${prefix}_build_info.h" #include <linux/broadcom/vc_debug_sym.h> VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_hostname, "$hostname" ); VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_version, "$version" ); VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_time, __TIME__ ); VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_date, __DATE__ ); const char *vchiq_get_build_hostname( void ) { return vchiq_build_hostname; } const char *vchiq_get_build_version( void ) { return vchiq_build_version; } const char *vchiq_get_build_date( void ) { return vchiq_build_date; } const char *vchiq_get_build_time( void ) { return vchiq_build_time; } EOF |