#!/usr/bin/perl sub usage() { print "Usage: generate-vers.pl /path/toproject.pbxproj program_name"; exit(0); } (scalar @ARGV == 2) or usage(); open $pbxproj, $ARGV[0] or die "Couldn't open ".$ARGV[0]; $lldb_version = None; $lldb_train = None; $lldb_revision = None; $lldb_version_string = None; $product_name = "lldb"; while ($line = <$pbxproj>) { chomp ($line); if ($lldb_version == None && $line =~ /CURRENT_PROJECT_VERSION = ([0-9]+).([0-9]+).([0-9]+)(.[0-9])?/) { $lldb_version = $1; $lldb_train = $2; $lldb_revision = $3; $lldb_patchlevel = $4; if ($lldb_patchlevel != None) { $lldb_version_string = $lldb_version.".".$lldb_train.".".$lldb_revision.".".$lldb_patchlevel; } else { $lldb_version_string = $lldb_version.".".$lldb_train.".".$lldb_revision; } } } if (!$product_name || !$lldb_version_string) { print "Couldn't get needed information from the .pbxproj"; exit(-1); } $uppercase_name = uc $product_name; $lowercase_name = lc $product_name; close $pbxproj; $file_string = " const unsigned char ".$ARGV[1]."VersionString[] __attribute__ ((used)) = \"@(#)PROGRAM:".$uppercase_name." PROJECT:".$lowercase_name."-".$lldb_version_string."\" \"\\n\"; const double ".$ARGV[1]."VersionNumber __attribute__ ((used)) = (double)".$lldb_version.".".$lldb_train.";\n"; print $file_string;