summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
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
commit9c7564356422f6afd974f884adbada004f451a38 (patch)
tree28dc848cb4d79bca52f16caeafe2fc1377938d6e /src
parentf89a72489a39a7283c9050ea1a82f02008df457b (diff)
verinfo to python (nw)
Diffstat (limited to 'src')
-rw-r--r--src/build/build.mak19
-rw-r--r--src/build/verinfo.c308
-rw-r--r--src/build/verinfo.py116
-rw-r--r--src/mess/osd/windows/windows.mak4
-rw-r--r--src/osd/windows/windows.mak4
-rw-r--r--src/ume/osd/windows/windows.mak4
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