154e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton#!/usr/bin/perl 254e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 354e7afa84d945f9137f9372ecde432f9e1a702fcGreg Claytonsub usage() 454e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton{ 554e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton print "Usage: generate-vers.pl /path/toproject.pbxproj"; 654e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton exit(0); 754e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton} 854e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 954e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton(scalar @ARGV == 1) or usage(); 1054e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 1154e7afa84d945f9137f9372ecde432f9e1a702fcGreg Claytonopen $pbxproj, $ARGV[0] or die "Couldn't open ".$ARGV[0]; 1254e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 136778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan$lldb_version = None; 146778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan$lldb_train = None; 156778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan$lldb_revision = None; 166778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan$lldb_version_string = None; 176778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan 186778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan$product_name = "lldb"; 1954e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 2054e7afa84d945f9137f9372ecde432f9e1a702fcGreg Claytonwhile ($line = <$pbxproj>) 2154e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton{ 2254e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton chomp ($line); 2354e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 246778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan if ($lldb_version == None && 256778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $line =~ /CURRENT_PROJECT_VERSION = ([0-9]+).([0-9]+).([0-9]+)(.[0-9])?/) 2654e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton { 276778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $lldb_version = $1; 286778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $lldb_train = $2; 296778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $lldb_revision = $3; 306778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $lldb_patchlevel = $4; 316778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan 326778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan if ($lldb_patchlevel != None) 336778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan { 346778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $lldb_version_string = $lldb_version.".".$lldb_train.".".$lldb_revision.".".$lldb_patchlevel; 356778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan } 366778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan else 376778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan { 386778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan $lldb_version_string = $lldb_version.".".$lldb_train.".".$lldb_revision; 396778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan } 4054e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton } 4154e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton} 4254e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 436778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callananif (!$product_name || !$lldb_version_string) 4454e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton{ 4554e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton print "Couldn't get needed information from the .pbxproj"; 4654e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton exit(-1); 4754e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton} 4854e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 4954e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton$uppercase_name = uc $product_name; 5054e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton$lowercase_name = lc $product_name; 5154e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 5254e7afa84d945f9137f9372ecde432f9e1a702fcGreg Claytonclose $pbxproj; 5354e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 546778c99d79ae1db2d3f40a9f07d9e8ffda161799Sean Callanan$file_string = " const unsigned char liblldb_coreVersionString[] __attribute__ ((used)) = \"@(#)PROGRAM:".$uppercase_name." PROJECT:".$lowercase_name."-".$lldb_version_string."\" \"\\n\"; const double liblldb_coreVersionNumber __attribute__ ((used)) = (double)".$lldb_version.".".$lldb_train.";\n"; 5554e7afa84d945f9137f9372ecde432f9e1a702fcGreg Clayton 5654e7afa84d945f9137f9372ecde432f9e1a702fcGreg Claytonprint $file_string; 57