version.pl (2169B)
1 #!/usr/bin/perl 2 # 3 # Build a version.c 4 # 5 # 6 # 7 # This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 8 # 9 # Copyright 2007-2019 Broadcom Inc. All rights reserved. 10 # 11 12 ($prog = $0) =~ s/.*\///; 13 14 use Config; 15 use Sys::Hostname; 16 use Time::localtime; 17 use Cwd; 18 19 # if $SDK env var is set, read release file directly 20 # if not set, search back from current working directory 21 if ($ENV{'SDK'}) { 22 $TREE = $ENV{'SDK'}; 23 if (open(F, "$TREE/RELEASE")) { 24 chop($RELEASE = <F>); 25 close F; 26 } else { 27 $RELEASE = "unknown_release"; 28 } 29 } else { 30 $dir = cwd(); 31 do { 32 if (open(F, "$dir/RELEASE")) { 33 chop($RELEASE = <F>); 34 close F; 35 ($TREE = $dir) =~ s@/[^/]*$@@; 36 } else { 37 $dir =~ s@/[^/]*$@@; 38 } 39 } while (!defined $RELEASE && $dir ne ""); 40 $RELEASE = "unknown_release" unless defined $RELEASE; 41 $TREE = "unknown_tree" unless defined $TREE; 42 } 43 44 $USER = getlogin() || getpwuid($<) || "unknown_user"; 45 $HOST = hostname() || "unknown_host"; 46 $OS = $Config{'osname'} || "unknown_os"; 47 $ARCH = $Config{'archname'} || "unknown_arch"; 48 $ARCH =~ s/-.*$//; 49 $DATE = ctime() || "unknown_date"; 50 $DATESTAMP = sprintf "%04d%02d%02d", 51 localtime->year()+1900, 52 localtime->mon+1, 53 localtime->mday; 54 55 if ($ARGV[0] eq "-release") { 56 print $RELEASE, "\n"; 57 } elsif ($ARGV[0] eq "-tree") { 58 print $TREE, "\n"; 59 } elsif ($ARGV[0] eq "-user") { 60 print $USER, "\n"; 61 } elsif ($ARGV[0] eq "-host") { 62 print $HOST, "\n"; 63 } elsif ($ARGV[0] eq "-date") { 64 print $DATE, "\n"; 65 } elsif ($ARGV[0] eq "-datestamp") { 66 print $DATESTAMP, "\n"; 67 } elsif ($ARGV[0] eq "-arch") { 68 print $ARCH, "\n"; 69 } elsif ($ARGV[0] eq "-os") { 70 print $OS, "\n"; 71 } elsif ($ARGV[0] eq "-(help" || $ARGV[0] eq "-?") { 72 print "$prog [-release|-tree|-user|-host|-date|-datestamp|-arch|-os|-help]\n"; 73 exit 1; 74 } else { 75 76 print <<"EOT"; 77 /* 78 * This file is automatically generated by $prog. DO NOT EDIT! 79 */ 80 81 char *_build_release = "$RELEASE"; 82 char *_build_tree = "$TREE"; 83 char *_build_user = "$USER"; 84 char *_build_host = "$HOST"; 85 char *_build_date = "$DATE"; 86 char *_build_datestamp = "$DATESTAMP"; 87 char *_build_arch = "$ARCH"; 88 char *_build_os = "$OS"; 89 EOT 90 91 }