blob: 9f5b6344b9b77f72ebd4ff6621c90fd0ac47efb1 [file] [log] [blame]
#!/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