diff options
author | 2015-10-07 12:01:21 +0200 | |
---|---|---|
committer | 2015-10-07 12:01:21 +0200 | |
commit | 86d3aa80651cfe0d0599259878bc67156bf6730f (patch) | |
tree | 1d523e71e2e77e906b3a59cf3f2c9fd1c2d9f7c0 /scripts/build/verinfo.py | |
parent | a0f6b5e59a6d691572906367809d969d133d2abc (diff) |
Moved tools in proper place, and moved build python scripts together with other scripts (nw)
Diffstat (limited to 'scripts/build/verinfo.py')
-rw-r--r-- | scripts/build/verinfo.py | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/scripts/build/verinfo.py b/scripts/build/verinfo.py new file mode 100644 index 00000000000..a73d8ad2689 --- /dev/null +++ b/scripts/build/verinfo.py @@ -0,0 +1,170 @@ +#!/usr/bin/python +## +## license:BSD-3-Clause +## copyright-holders:Aaron Giles, Andrew Gardner + +from __future__ import with_statement + +import re +import sys + + +def parse_args(): + def usage(): + sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume|ldplayer] [-r|-p] [-o <outfile>] <srcfile>\n') + sys.exit(1) + + flags = True + target = 'mame' + format = 'rc' + input = None + output = None + i = 1 + while i < len(sys.argv): + if flags and (sys.argv[i] == '-r'): + format = 'rc' + elif flags and (sys.argv[i] == '-p'): + format = 'plist' + elif flags and (sys.argv[i] == '-b'): + i += 1 + if (i >= len(sys.argv)): + usage() + else: + target = sys.argv[i] + elif flags and (sys.argv[i] == '-o'): + i += 1 + if (i >= len(sys.argv)) or (output is not None): + usage() + else: + output = 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, format, 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, outfmt, srcfile, dstfile = parse_args() + +try: + fp = open(srcfile, 'rU') +except IOError: + sys.stderr.write("Unable to open source file '%s'\n" % srcfile) + sys.exit(1) + +version_string, version_major, version_minor = extract_version(fp) +version_build = "0" +version_subbuild = "0" +if not version_string: + sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile) + sys.exit(1) +fp.close() + +if dstfile is not None: + try: + fp = open(dstfile, 'w') + except IOError: + sys.stderr.write("Unable to open output file '%s'\n" % dstfile) + sys.exit(1) +else: + fp = sys.stdout + +if build == "mess": + # MESS + author = "MESS Team" + comments = "Multi Emulation Super System" + company_name = "MESS Team" + file_description = "Multi Emulation Super System" + internal_name = "MESS" + original_filename = "MESS" + product_name = "MESS" + bundle_identifier = "org.mamedev.mess" +else: + # MAME + author = "Nicola Salmoria and the MAME Team" + comments = "Multiple Arcade Machine Emulator" + company_name = "MAME Team" + file_description = "Multiple Arcade Machine Emulator" + internal_name = "MAME" if build == "mame" else build + original_filename = "MAME" if build == "mame" else build + product_name = "MAME" if build == "mame" else build + bundle_identifier = "org.mamedev." + build + +legal_copyright = "Copyright Nicola Salmoria and the MAME team" + +if outfmt == 'rc': + fp.write('VS_VERSION_INFO VERSIONINFO\n') + fp.write('\tFILEVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild)) + fp.write('\tPRODUCTVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild)) + fp.write('\tFILEFLAGSMASK 0x3fL\n') + if version_build == 0: + fp.write('\tFILEFLAGS 0x0L\n') + else: + fp.write('\tFILEFLAGS VS_FF_PRERELEASE\n') + fp.write('\tFILEOS VOS_NT_WINDOWS32\n') + fp.write('\tFILETYPE VFT_APP\n') + fp.write('\tFILESUBTYPE VFT2_UNKNOWN\n') + fp.write('BEGIN\n') + fp.write('\tBLOCK "StringFileInfo"\n') + fp.write('\tBEGIN\n') + fp.write('#ifdef UNICODE\n') + fp.write('\t\tBLOCK "040904b0"\n') + fp.write('#else\n') + fp.write('\t\tBLOCK "040904E4"\n') + fp.write('#endif\n') + fp.write('\t\tBEGIN\n') + fp.write('\t\t\tVALUE "Author", "%s\\0"\n' % author) + fp.write('\t\t\tVALUE "Comments", "%s\\0"\n' % comments) + fp.write('\t\t\tVALUE "CompanyName", "%s\\0"\n' % company_name) + fp.write('\t\t\tVALUE "FileDescription", "%s\\0"\n' % file_description) + fp.write('\t\t\tVALUE "FileVersion", "%s, %s, %s, %s\\0"\n' % (version_major, version_minor, version_build, version_subbuild)) + fp.write('\t\t\tVALUE "InternalName", "%s\\0"\n' % internal_name) + fp.write('\t\t\tVALUE "LegalCopyright", "%s\\0"\n' % legal_copyright) + fp.write('\t\t\tVALUE "OriginalFilename", "%s\\0"\n' % original_filename) + fp.write('\t\t\tVALUE "ProductName", "%s\\0"\n' % product_name) + fp.write('\t\t\tVALUE "ProductVersion", "%s\\0"\n' % version_string) + fp.write('\t\tEND\n') + fp.write('\tEND\n') + fp.write('\tBLOCK "VarFileInfo"\n') + fp.write('\tBEGIN\n') + fp.write('#ifdef UNICODE\n') + fp.write('\t\tVALUE "Translation", 0x409, 1200\n') + fp.write('#else\n') + fp.write('\t\tVALUE "Translation", 0x409, 1252\n') + fp.write('#endif\n') + fp.write('\tEND\n') + fp.write('END\n') +elif outfmt == 'plist': + fp.write('<?xml version="1.0" encoding="UTF-8"?>\n') + fp.write('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n') + fp.write('<plist version="1.0">\n') + fp.write('<dict>\n') + fp.write('\t<key>CFBundleDisplayName</key>\n') + fp.write('\t<string>%s</string>\n' % product_name) + fp.write('\t<key>CFBundleIdentifier</key>\n') + fp.write('\t<string>%s</string>\n' % bundle_identifier) + fp.write('\t<key>CFBundleInfoDictionaryVersion</key>\n') + fp.write('\t<string>6.0</string>\n') + fp.write('\t<key>CFBundleName</key>\n') + fp.write('\t<string>%s</string>\n' % product_name) + fp.write('\t<key>CFBundleShortVersionString</key>\n') + fp.write('\t<string>%s.%s.%s</string>\n' % (version_major, version_minor, version_build)) + fp.write('</dict>\n') + fp.write('</plist>\n') +fp.flush() |