diff options
author | Miodrag Milanovic <mmicko@gmail.com> | 2015-02-13 15:25:13 +0100 |
---|---|---|
committer | Miodrag Milanovic <mmicko@gmail.com> | 2015-02-13 15:25:13 +0100 |
commit | 9c7564356422f6afd974f884adbada004f451a38 (patch) | |
tree | 28dc848cb4d79bca52f16caeafe2fc1377938d6e | |
parent | f89a72489a39a7283c9050ea1a82f02008df457b (diff) |
verinfo to python (nw)
-rw-r--r-- | src/build/build.mak | 19 | ||||
-rw-r--r-- | src/build/verinfo.c | 308 | ||||
-rw-r--r-- | src/build/verinfo.py | 116 | ||||
-rw-r--r-- | src/mess/osd/windows/windows.mak | 4 | ||||
-rw-r--r-- | src/osd/windows/windows.mak | 4 | ||||
-rw-r--r-- | src/ume/osd/windows/windows.mak | 4 |
6 files changed, 122 insertions, 333 deletions
diff --git a/src/build/build.mak b/src/build/build.mak index 025c5e4ace2..e13a8be66d6 100644 --- a/src/build/build.mak +++ b/src/build/build.mak @@ -20,17 +20,14 @@ OBJDIRS += \ MAKEDEP_TARGET = $(BUILDOUT)/makedep$(BUILD_EXE) MAKEMAK_TARGET = $(BUILDOUT)/makemak$(BUILD_EXE) -VERINFO_TARGET = $(BUILDOUT)/verinfo$(BUILD_EXE) MAKEDEP = $(MAKEDEP_TARGET) MAKEMAK = $(MAKEMAK_TARGET) -VERINFO = $(VERINFO_TARGET) ifneq ($(TERM),cygwin) ifeq ($(OS),Windows_NT) MAKEDEP = $(subst /,\,$(MAKEDEP_TARGET)) MAKEMAK = $(subst /,\,$(MAKEMAK_TARGET)) -VERINFO = $(subst /,\,$(VERINFO_TARGET)) endif endif @@ -38,7 +35,6 @@ ifneq ($(CROSS_BUILD),1) BUILD += \ $(MAKEDEP_TARGET) \ $(MAKEMAK_TARGET) \ - $(VERINFO_TARGET) \ @@ -78,18 +74,6 @@ $(MAKEMAK_TARGET): $(MAKEMAKOBJS) $(LIBOCORE) $(ZLIB) $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@ - -#------------------------------------------------- -# verinfo -#------------------------------------------------- - -VERINFOOBJS = \ - $(BUILDOBJ)/verinfo.o - -$(VERINFO_TARGET): $(VERINFOOBJS) $(LIBOCORE) - @echo Linking $@... - $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@ - else #------------------------------------------------- # It's a CROSS_BUILD. Ensure the targets exist. @@ -97,7 +81,4 @@ else $(MAKEDEP_TARGET): @echo $@ should be built natively. Nothing to do. -$(VERINFO_TARGET): - @echo $@ should be built natively. Nothing to do. - endif # CROSS_BUILD diff --git a/src/build/verinfo.c b/src/build/verinfo.c deleted file mode 100644 index 041de403cca..00000000000 --- a/src/build/verinfo.c +++ /dev/null @@ -1,308 +0,0 @@ -//============================================================ -// -// verinfo.c - Version resource emitter code -// -// Copyright Nicola Salmoria and the MAME Team. -// Visit http://mamedev.org for licensing and usage restrictions. -// -//============================================================ - -#include <stdio.h> -#include <ctype.h> - -#include <string.h> -#include <stdlib.h> - -typedef unsigned char UINT8; - -#define ARRAY_LENGTH(x) (sizeof(x) / sizeof(x[0])) -#define BUILD_MAME (0) -#define BUILD_MESS (1) -#define BUILD_UME (2) - -//============================================================ -// TYPE DEFINITIONS -//============================================================ - -struct version_info -{ - int version_major; - int version_minor; - int version_build; - int version_subbuild; - const char *version_string; - const char *author; - const char *comments; - const char *company_name; - const char *file_description; - const char *internal_name; - const char *legal_copyright; - const char *original_filename; - const char *product_name; -}; - - - -//============================================================ -// STATIC -//============================================================ - -static int build; - - -//============================================================ -// emit_version_info -//============================================================ - -static void emit_version_info(const version_info *v) -{ - printf("VS_VERSION_INFO VERSIONINFO\n"); - printf("\tFILEVERSION %d,%d,%d,%d\n", v->version_major, v->version_minor, v->version_build, v->version_subbuild); - printf("\tPRODUCTVERSION %d,%d,%d,%d\n", v->version_major, v->version_minor, v->version_build, v->version_subbuild); - printf("\tFILEFLAGSMASK 0x3fL\n"); -#ifdef MAME_DEBUG - if (v->version_build == 0) - printf("\tFILEFLAGS VS_FF_DEBUG\n"); - else - printf("\tFILEFLAGS VS_FF_PRERELEASE | VS_FF_DEBUG\n"); -#else - if (v->version_build == 0) - printf("\tFILEFLAGS 0x0L\n"); - else - printf("\tFILEFLAGS VS_FF_PRERELEASE\n"); -#endif - printf("\tFILEOS VOS_NT_WINDOWS32\n"); - printf("\tFILETYPE VFT_APP\n"); - printf("\tFILESUBTYPE VFT2_UNKNOWN\n"); - printf("BEGIN\n"); - printf("\tBLOCK \"StringFileInfo\"\n"); - printf("\tBEGIN\n"); - printf("#ifdef UNICODE\n"); - printf("\t\tBLOCK \"040904b0\"\n"); - printf("#else\n"); - printf("\t\tBLOCK \"040904E4\"\n"); - printf("#endif\n"); - printf("\t\tBEGIN\n"); - if (v->author != NULL) - printf("\t\t\tVALUE \"Author\", \"%s\\0\"\n", v->author); - if (v->comments != NULL) - printf("\t\t\tVALUE \"Comments\", \"%s\\0\"\n", v->comments); - if (v->company_name != NULL) - printf("\t\t\tVALUE \"CompanyName\", \"%s\\0\"\n", v->company_name); - if (v->file_description != NULL) - printf("\t\t\tVALUE \"FileDescription\", \"%s\\0\"\n", v->file_description); - printf("\t\t\tVALUE \"FileVersion\", \"%d, %d, %d, %d\\0\"\n", v->version_major, v->version_minor, v->version_build, v->version_subbuild); - if (v->internal_name != NULL) - printf("\t\t\tVALUE \"InternalName\", \"%s\\0\"\n", v->internal_name); - if (v->legal_copyright != NULL) - printf("\t\t\tVALUE \"LegalCopyright\", \"%s\\0\"\n", v->legal_copyright); - if (v->original_filename != NULL) - printf("\t\t\tVALUE \"OriginalFilename\", \"%s\\0\"\n", v->original_filename); - if (v->product_name != NULL) - printf("\t\t\tVALUE \"ProductName\", \"%s\\0\"\n", v->product_name); - printf("\t\t\tVALUE \"ProductVersion\", \"%s\\0\"\n", v->version_string); - printf("\t\tEND\n"); - printf("\tEND\n"); - printf("\tBLOCK \"VarFileInfo\"\n"); - printf("\tBEGIN\n"); - printf("#ifdef UNICODE\n"); - printf("\t\tVALUE \"Translation\", 0x409, 1200\n"); - printf("#else\n"); - printf("\t\tVALUE \"Translation\", 0x409, 1252\n"); - printf("#endif\n"); - printf("\tEND\n"); - printf("END\n"); -} - - - -//============================================================ -// parse_version_digit -//============================================================ - -static bool parse_version_digit(const char *str, int *position, int* value) -{ - int res = 0; - - while (str[*position] != 0 && !isspace((UINT8)str[*position]) && !isdigit((UINT8)str[*position])) - (*position)++; - - if (str[*position] != 0 && isdigit((UINT8)str[*position])) - { - res = sscanf(&str[*position], "%d", value); - while (isdigit((UINT8)str[*position])) - (*position)++; - } - return res == 1; -} - - - -//============================================================ -// parse_version -//============================================================ - -static int parse_version(char *str, int *version_major, int *version_minor, const char **version_string) -{ - char *version; - int position = 0; - - // find the version string - version = strstr(str, "BARE_BUILD_VERSION"); - if (version != NULL) - version = strchr(version, '"'); - if (version == NULL || *version == '\0' || strchr(version, '.') == NULL) - { - fprintf(stderr, "Unable to find version string\n"); - return 1; - } - version++; - *strchr(version, '"') = 0; - - *version_string = version; - if (!parse_version_digit(version, &position, version_major)) - { - fprintf(stderr, "Unable to parse major version\n"); - return 1; - } - if (!parse_version_digit(version, &position, version_minor)) - { - fprintf(stderr, "Unable to parse minor version\n"); - return 1; - } - return 0; -} - - - -//============================================================ -// main -//============================================================ -static int usage(char *me) -{ - fprintf(stderr, "Usage: %s [-b mame|mess|ume] <filename>\n", me); - return 1; -} - - -//============================================================ -// main -//============================================================ - -int main(int argc, char *argv[]) -{ - version_info v; - char legal_copyright[512]; - char *buffer; - size_t size; - int opt; - FILE *f; - - memset(&v, 0, sizeof(v)); - build = BUILD_MAME; - - // validate parameters - opt = 1; - while (opt < argc && *argv[opt] == '-') - { - if (!strcmp(argv[opt], "-b")) - { - char *p = argv[++opt]; - if (!strcmp(p,"mame")) - build = BUILD_MAME; - else if (!strcmp(p,"mess")) - build = BUILD_MESS; - else if (!strcmp(p,"ume")) - build = BUILD_UME; - else - return usage(argv[0]); - } - else - return usage(argv[0]); - opt++; - } - - if (opt != argc-1 ) - { - return usage(argv[0]); - } - - // open the file - f = fopen(argv[argc-1], "rb"); - if (f == NULL) - { - fprintf(stderr, "Error opening file %s\n", argv[argc-1]); - return 1; - } - - // get the file size - fseek(f, 0, SEEK_END); - size = ftell(f); - fseek(f, 0, SEEK_SET); - - // allocate a buffer - buffer = (char *)malloc(size + 1); - if (buffer == NULL) - { - fclose(f); - fprintf(stderr, "Error allocating %ld bytes\n", (long) size + 1); - return 1; - } - - // read the file contents and NULL-terminate - fread(buffer, 1, size, f); - fclose(f); - buffer[size] = 0; - - // parse out version string - if (parse_version(buffer, &v.version_major, &v.version_minor, &v.version_string)) - { - fprintf(stderr, "Error parsing version\n"); - free(buffer); - return 1; - } - - if (build == BUILD_MESS) - { - // MESS - v.author = "MESS Team"; - v.comments = "Multi Emulation Super System"; - v.company_name = "MESS Team"; - v.file_description = "Multi Emulation Super System"; - v.internal_name = "MESS"; - v.original_filename = "MESS"; - v.product_name = "MESS"; - } - else if (build == BUILD_UME) - { - // UME - v.author = "MAME and MESS Team"; - v.comments = "Universal Machine Emulator"; - v.company_name = "MAME and MESS Team"; - v.file_description = "Universal Machine Emulator"; - v.internal_name = "UME"; - v.original_filename = "UME"; - v.product_name = "UME"; - } - else - { - // MAME - v.author = "Nicola Salmoria and the MAME Team"; - v.comments = "Multiple Arcade Machine Emulator"; - v.company_name = "MAME Team"; - v.file_description = "Multiple Arcade Machine Emulator"; - v.internal_name = "MAME"; - v.original_filename = "MAME"; - v.product_name = "MAME"; - } - - // build legal_copyright string - v.legal_copyright = legal_copyright; - snprintf(legal_copyright, ARRAY_LENGTH(legal_copyright), "Copyright Nicola Salmoria and the MAME team"); - - // emit the info - emit_version_info(&v); - - free(buffer); - return 0; -} diff --git a/src/build/verinfo.py b/src/build/verinfo.py new file mode 100644 index 00000000000..7930428ba83 --- /dev/null +++ b/src/build/verinfo.py @@ -0,0 +1,116 @@ +#!/usr/bin/python + +from __future__ import with_statement + +import sys +import os + +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) + +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) + +srcfile = sys.argv[len(sys.argv)-1] +try: + 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 + +version_major = version_string[0:version_string.find('.')] +version_minor = version_string[version_string.find('.')+1:] +version_build = "0" +version_subbuild = "0" +if (build == "mame") : + # 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"; +elif (build == "mess") : + # UME + author = "MAME and MESS Team" + comments = "Universal Machine Emulator" + company_name = "MAME and MESS Team" + file_description = "Universal Machine Emulator" + internal_name = "UME" + original_filename = "UME" + product_name = "UME" +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" + original_filename = "MAME" + product_name = "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 diff --git a/src/mess/osd/windows/windows.mak b/src/mess/osd/windows/windows.mak index ea97abf7d61..4461c6d14bb 100644 --- a/src/mess/osd/windows/windows.mak +++ b/src/mess/osd/windows/windows.mak @@ -36,6 +36,6 @@ $(MESS_WINOBJ)/%.res: $(MESS_WINSRC)/%.rc $(RESFILE): $(MESS_WINSRC)/mess.rc $(MESS_WINOBJ)/messvers.rc -$(MESS_WINOBJ)/messvers.rc: $(BUILDOUT)/verinfo$(BUILD_EXE) $(SRC)/version.c +$(MESS_WINOBJ)/messvers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c @echo Emitting $@... - @"$(BUILDOUT)/verinfo$(BUILD_EXE)" -b mess $(SRC)/version.c > $@
\ No newline at end of file + $(PYTHON) $(SRC)/build/verinfo.py -b mess $(SRC)/version.c > $@
\ No newline at end of file diff --git a/src/osd/windows/windows.mak b/src/osd/windows/windows.mak index eac9bdbdeb7..a4285a2a410 100644 --- a/src/osd/windows/windows.mak +++ b/src/osd/windows/windows.mak @@ -502,6 +502,6 @@ $(WINOBJ)/%.res: $(WINSRC)/%.rc | $(OSPREBUILD) $(RESFILE): $(WINSRC)/mame.rc $(WINOBJ)/mamevers.rc -$(WINOBJ)/mamevers.rc: $(BUILDOUT)/verinfo$(BUILD_EXE) $(SRC)/version.c +$(WINOBJ)/mamevers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c @echo Emitting $@... - @"$(BUILDOUT)/verinfo$(BUILD_EXE)" -b mame $(SRC)/version.c > $@ + $(PYTHON) $(SRC)/build/verinfo.py -b mame $(SRC)/version.c > $@ diff --git a/src/ume/osd/windows/windows.mak b/src/ume/osd/windows/windows.mak index 1885eeac92d..5163e0e8c93 100644 --- a/src/ume/osd/windows/windows.mak +++ b/src/ume/osd/windows/windows.mak @@ -36,6 +36,6 @@ $(UME_WINOBJ)/%.res: $(UME_WINSRC)/%.rc $(RESFILE): $(UME_WINSRC)/ume.rc $(UME_WINOBJ)/umevers.rc -$(UME_WINOBJ)/umevers.rc: $(BUILDOUT)/verinfo$(BUILD_EXE) $(SRC)/version.c +$(UME_WINOBJ)/umevers.rc: $(SRC)/build/verinfo.py $(SRC)/version.c @echo Emitting $@... - @"$(BUILDOUT)/verinfo$(BUILD_EXE)" -b ume $(SRC)/version.c > $@
\ No newline at end of file + $(PYTHON) $(SRC)/build/verinfo.py -b ume $(SRC)/version.c > $@
\ No newline at end of file |