diff options
author | Vas Crabb <vas@vastheman.com> | 2015-02-21 13:27:13 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2015-02-21 18:17:19 +1100 |
commit | a7eb44f3e256e420cc956c9f6ea0a30b220d544f (patch) | |
tree | 66c50c6bf6163956ce787fc6c2d01514e5596fc1 /src/build | |
parent | 89e74e4b9cf144e8d4a6a687a5c24e966d8f1b40 (diff) |
Make verinfo.py capable of producing Info.plist for OSX
Diffstat (limited to 'src/build')
-rw-r--r-- | src/build/verinfo.py | 194 |
1 files changed, 119 insertions, 75 deletions
diff --git a/src/build/verinfo.py b/src/build/verinfo.py index 71f616f4415..465f8d0e3cb 100644 --- a/src/build/verinfo.py +++ b/src/build/verinfo.py @@ -2,48 +2,71 @@ from __future__ import with_statement -import sys import os +import re +import sys -def usage(): - sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] <filename>\n') - return 0 - -build = "mame" -if (len(sys.argv)==1): - usage() - sys.exit(1) +def parse_args(): + def usage(): + sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume] [-r|-p] <filename>\n') + sys.exit(1) -if (sys.argv[1]=='-b'): - if (sys.argv[2]=='mame'): - build = "mame" - elif (sys.argv[2]=='mess'): - build = "mess" - elif (sys.argv[2]=='ume'): - build = "ume" - else : - usage() - sys.exit(1) + flags = True + target = 'mame' + input = None + output = 'rc' + i = 1 + while i < len(sys.argv): + if flags and (sys.argv[i] == '-r'): + output = 'rc' + elif flags and (sys.argv[i] == '-p'): + output = 'plist' + elif flags and (sys.argv[i] == '-b'): + i += 1; + if (i >= len(sys.argv)) or (sys.argv[i] not in ('mame', 'mess', 'ume')): + usage() + else: + target = sys.argv[i] + elif flags and (sys.argv[i] == '--'): + flags = False + elif flags and sys.argv[i].startswith('-'): + usage() + elif input is not None: + usage() + else: + input = sys.argv[i] + i += 1 + if input is None: + usage() + return target, input, output + + +def extract_version(input): + pattern = re.compile('\s+BARE_BUILD_VERSION\s+"(([^."]+)\.([^."]+))"') + for line in input.readlines(): + match = pattern.search(line) + if match: + return match.group(1), match.group(2), match.group(3) + return None, None, None + + +build, srcfile, outfmt = parse_args() -srcfile = sys.argv[len(sys.argv)-1] try: - fp = open(srcfile, 'rb') + fp = open(srcfile, 'rb') except IOError: - sys.stderr.write("Unable to open source file '%s'" % srcfile) - sys.exit(1) - -for line in fp.readlines(): - if line.find("BARE_BUILD_VERSION")!=-1 and line.find('"')!=-1 and line.find('.')!=-1: - version_string = line[line.find('"')+1:] - version_string = version_string[0:version_string.find('"')] - break + sys.stderr.write("Unable to open source file '%s'\n" % srcfile) + sys.exit(1) -version_major = version_string[0:version_string.find('.')] -version_minor = version_string[version_string.find('.')+1:] +version_string, version_major, version_minor = extract_version(fp) version_build = "0" version_subbuild = "0" -if (build == "mess") : +if not version_string: + sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile) + sys.exit(1) + +if build == "mess": # MESS author = "MESS Team"; comments = "Multi Emulation Super System"; @@ -52,7 +75,8 @@ if (build == "mess") : internal_name = "MESS"; original_filename = "MESS"; product_name = "MESS"; -elif (build == "ume") : + bundle_identifier = "org.mamedev.mess" +elif build == "ume": # UME author = "MAME and MESS Team" comments = "Universal Machine Emulator" @@ -61,7 +85,8 @@ elif (build == "ume") : internal_name = "UME" original_filename = "UME" product_name = "UME" -else : + bundle_identifier = "org.mamedev.ume" +else: # MAME author = "Nicola Salmoria and the MAME Team" comments = "Multiple Arcade Machine Emulator" @@ -70,47 +95,66 @@ else : internal_name = "MAME" original_filename = "MAME" product_name = "MAME" + bundle_identifier = "org.mamedev.mame" legal_copyright = "Copyright Nicola Salmoria and the MAME team" -print("VS_VERSION_INFO VERSIONINFO") -print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild)) -print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild)) -print("\tFILEFLAGSMASK 0x3fL") -if (version_build == 0) : - print("\tFILEFLAGS 0x0L") -else : - print("\tFILEFLAGS VS_FF_PRERELEASE") -print("\tFILEOS VOS_NT_WINDOWS32") -print("\tFILETYPE VFT_APP") -print("\tFILESUBTYPE VFT2_UNKNOWN") -print("BEGIN") -print("\tBLOCK \"StringFileInfo\"") -print("\tBEGIN") -print("#ifdef UNICODE") -print("\t\tBLOCK \"040904b0\"") -print("#else") -print("\t\tBLOCK \"040904E4\"") -print("#endif") -print("\t\tBEGIN") -print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author) -print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments) -print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name) -print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description) -print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild)) -print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name) -print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright) -print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename) -print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name) -print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string) -print("\t\tEND") -print("\tEND") -print("\tBLOCK \"VarFileInfo\"") -print("\tBEGIN") -print("#ifdef UNICODE") -print("\t\tVALUE \"Translation\", 0x409, 1200") -print("#else") -print("\t\tVALUE \"Translation\", 0x409, 1252") -print("#endif") -print("\tEND") -print("END")
\ No newline at end of file +if outfmt == 'rc': + print("VS_VERSION_INFO VERSIONINFO") + print("\tFILEVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild)) + print("\tPRODUCTVERSION %s,%s,%s,%s" % (version_major, version_minor, version_build, version_subbuild)) + print("\tFILEFLAGSMASK 0x3fL") + if (version_build == 0) : + print("\tFILEFLAGS 0x0L") + else : + print("\tFILEFLAGS VS_FF_PRERELEASE") + print("\tFILEOS VOS_NT_WINDOWS32") + print("\tFILETYPE VFT_APP") + print("\tFILESUBTYPE VFT2_UNKNOWN") + print("BEGIN") + print("\tBLOCK \"StringFileInfo\"") + print("\tBEGIN") + print("#ifdef UNICODE") + print("\t\tBLOCK \"040904b0\"") + print("#else") + print("\t\tBLOCK \"040904E4\"") + print("#endif") + print("\t\tBEGIN") + print("\t\t\tVALUE \"Author\", \"%s\\0\"" % author) + print("\t\t\tVALUE \"Comments\", \"%s\\0\"" % comments) + print("\t\t\tVALUE \"CompanyName\", \"%s\\0\"" % company_name) + print("\t\t\tVALUE \"FileDescription\", \"%s\\0\"" % file_description) + print("\t\t\tVALUE \"FileVersion\", \"%s, %s, %s, %s\\0\"" % (version_major, version_minor, version_build, version_subbuild)) + print("\t\t\tVALUE \"InternalName\", \"%s\\0\"" % internal_name) + print("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"" % legal_copyright) + print("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"" % original_filename) + print("\t\t\tVALUE \"ProductName\", \"%s\\0\"" % product_name) + print("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"" % version_string) + print("\t\tEND") + print("\tEND") + print("\tBLOCK \"VarFileInfo\"") + print("\tBEGIN") + print("#ifdef UNICODE") + print("\t\tVALUE \"Translation\", 0x409, 1200") + print("#else") + print("\t\tVALUE \"Translation\", 0x409, 1252") + print("#endif") + print("\tEND") + print("END") +elif outfmt == 'plist': + print('<?xml version="1.0" encoding="UTF-8"?>') + print('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">') + print('<plist version="1.0">') + print('<dict>') + print('\t<key>CFBundleDisplayName</key>') + print('\t<string>%s</string>' % product_name) + print('\t<key>CFBundleIdentifier</key>') + print('\t<string>%s</string>' % bundle_identifier) + print('\t<key>CFBundleInfoDictionaryVersion</key>') + print('\t<string>6.0</string>') + print('\t<key>CFBundleName</key>') + print('\t<string>%s</string>' % product_name) + print('\t<key>CFBundleShortVersionString</key>') + print('\t<string>%s.%s.%s</string>' % (version_major, version_minor, version_build)) + print('</dict>') + print('</plist>') |