| #!/usr/bin/perl -w |
| # SPDX-License-Identifier: GPL-2.0 |
| |
| 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 |