diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am index b72d35d9fe..6cbb59645d 100644 --- a/build/win32/Makefile.am +++ b/build/win32/Makefile.am @@ -7,4 +7,6 @@ SUBDIRS = \ vs11 \ vs12 +EXTRA_DIST += process-in-win32.py + -include $(top_srcdir)/git.mk diff --git a/build/win32/process-in-win32.py b/build/win32/process-in-win32.py new file mode 100644 index 0000000000..00c4c01938 --- /dev/null +++ b/build/win32/process-in-win32.py @@ -0,0 +1,100 @@ +#!/usr/bin/python +# vim: encoding=utf-8 +# expand Windows-specific *.in files +# for Visual Studio Builds + +import os +import sys +import re +import string +import argparse + + +def open_compat(src, mode): + if (sys.version_info.major < 3): + return open(src, mode) + else: + return open(src, mode, encoding='utf-8', errors='surrogateescape') + +def get_version(srcroot): + ver = {} + RE_VERSION = re.compile(r'^m4_define\(\[(gtk_\w+)\],\s*\[(\d+)\]\)') + RE_FLOAT_VERSION = re.compile(r'^m4_define\(\[(gtk_\w+)\],\s*\[(\d+\.\d*)\]\)') + with open(os.path.join(srcroot, 'configure.ac'), 'r') as ac: + for i in ac: + mo = RE_VERSION.search(i) + if mo: + ver[mo.group(1).upper()] = int(mo.group(2)) + mo = RE_FLOAT_VERSION.search(i) + if mo: + ver[mo.group(1).upper()] = float(mo.group(2)) + + ver['GTK_BINARY_AGE'] = 100 * ver['GTK_MINOR_VERSION'] + ver['GTK_MICRO_VERSION'] + ver['GTK_VERSION'] = '%d.%d.%d' % (ver['GTK_MAJOR_VERSION'], + ver['GTK_MINOR_VERSION'], + ver['GTK_MICRO_VERSION']) + ver['LT_RELEASE'] = '%d.%d' % (ver['GTK_MAJOR_VERSION'], ver['GTK_MINOR_VERSION']) + ver['LT_CURRENT'] = 100 * \ + ver['GTK_MINOR_VERSION'] + \ + ver['GTK_MICRO_VERSION'] - \ + ver['GTK_INTERFACE_AGE'] + ver['LT_REVISION'] = ver['GTK_INTERFACE_AGE'] + ver['LT_AGE'] = ver['GTK_BINARY_AGE'] - ver['GTK_INTERFACE_AGE'] + ver['LT_CURRENT_MINUS_AGE'] = ver['LT_CURRENT'] - ver['LT_AGE'] + return ver + +def process_in(src, dest, vars): + RE_VARS = re.compile(r'@(\w+?)@') + + with open_compat(src, 'r') as s: + with open_compat(dest, 'w') as d: + for i in s: + i = RE_VARS.sub(lambda x: str(vars[x.group(1)]), i) + d.write(i) + +def get_srcroot(): + if not os.path.isabs(__file__): + path = os.path.abspath(__file__) + else: + path = __file__ + dirname = os.path.dirname(path) + return os.path.abspath(os.path.join(dirname, '..', '..')) + +def main(argv): + prog_desc = 'Create Various autogenerated Win32-specific Source Files' + parser = argparse.ArgumentParser(description=prog_desc) + parser.add_argument('--gtkwin32rc', dest='gtkwin32rc', action='store_const', + const=1, + help='Generate gtk-win32.rc') + + parser.add_argument('--gtk3manifest', dest='gtk3manifest', action='store_const', + const=1, + help='Generate libgtk3.manifest (Not used now)') + + args = parser.parse_args() + no_args = True + + if args.gtkwin32rc is not None: + srcroot = get_srcroot() + + ver = get_version(srcroot) + + process_in(os.path.join(srcroot, 'gtk', 'gtk-win32.rc.in'), + os.path.join(srcroot, 'gtk', 'gtk-win32.rc'), + ver) + no_args = False + + if args.gtk3manifest is not None: + print('Not Used... Will add once gtk/libgtk3.manifest.in is added') + #manifest = {} + #manifest['EXE_MANIFEST_ARCHITECTURE'] = '*' + #process_in(os.path.join(srcroot, 'gtk', 'libgtk3.manifest.in', + # os.path.join(srcroot, 'gtk', 'libgtk3.manifest', + # manifest) + no_args = False + + if no_args is True: + raise SystemExit('Action argument required. Please see %s --help for details.' % __file__) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/build/win32/vs10/gtk-gen-srcs.props b/build/win32/vs10/gtk-gen-srcs.props index 7afca8a2a7..c86b6b00c7 100644 --- a/build/win32/vs10/gtk-gen-srcs.props +++ b/build/win32/vs10/gtk-gen-srcs.props @@ -58,14 +58,13 @@ echo $(Configuration) > ..\..\..\MSVC_$(Configuration) :DONE_GDKCONFIG_H -set PATH=$(PATH);$(PythonPath) - cd ..\..\..\gtk -python $(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml +$(PythonPath)\python $(GlibEtcInstallRoot)\bin\gdbus-codegen --interface-prefix org.Gtk. --c-namespace _Gtk --generate-c-code gtkdbusgenerated ./gtkdbusinterfaces.xml cd $(SolutionDir) + $(PythonPath)\python ..\process-in-win32.py --gtkwin32rc <_PropertySheetDisplayName>gtkgensrcsprops @@ -83,5 +82,8 @@ cd $(SolutionDir) $(GenerateGtkDbusBuiltSources) + + $(GenerateGtkWin32RC) + - \ No newline at end of file + diff --git a/build/win32/vs10/gtk.vcxproj.filtersin b/build/win32/vs10/gtk.vcxproj.filtersin index f6be8055fc..da9351127e 100644 --- a/build/win32/vs10/gtk.vcxproj.filtersin +++ b/build/win32/vs10/gtk.vcxproj.filtersin @@ -19,6 +19,7 @@ Resource Files + Resource Files #include "libgtk.vs10.sourcefiles.filters" diff --git a/build/win32/vs10/gtk.vcxprojin b/build/win32/vs10/gtk.vcxprojin index 0686775365..80af761ff3 100644 --- a/build/win32/vs10/gtk.vcxprojin +++ b/build/win32/vs10/gtk.vcxprojin @@ -173,6 +173,20 @@ $(GenerateGtkDbusBuiltSources) ..\..\..\gtk\gtkdbusgenerated.c;..\..\..\gtk\gtkdbusgenerated.h;%(Outputs) + + Generating GTK+ Win32 Version Resource... + $(GenerateGtkWin32RC) + ..\..\..\gtk\gtk-win32.rc;%(Outputs) + Generating GTK+ Win32 Version Resource... + $(GenerateGtkWin32RC) + ..\..\..\gtk\gtk-win32.rc;%(Outputs) + Generating GTK+ Win32 Version Resource... + $(GenerateGtkWin32RC) + ..\..\..\gtk\gtk-win32.rc;%(Outputs) + Generating GTK+ Win32 Version Resource... + $(GenerateGtkWin32RC) + ..\..\..\gtk\gtk-win32.rc;%(Outputs) + diff --git a/build/win32/vs9/gtk-gen-srcs.vsprops b/build/win32/vs9/gtk-gen-srcs.vsprops index 7b1d0db234..24ac945f79 100644 --- a/build/win32/vs9/gtk-gen-srcs.vsprops +++ b/build/win32/vs9/gtk-gen-srcs.vsprops @@ -57,11 +57,13 @@ echo $(ConfigurationName) > ..\..\..\MSVC_$(ConfigurationName) - \ No newline at end of file + + diff --git a/build/win32/vs9/gtk.vcprojin b/build/win32/vs9/gtk.vcprojin index b7e40c798f..3dc5477c88 100644 --- a/build/win32/vs9/gtk.vcprojin +++ b/build/win32/vs9/gtk.vcprojin @@ -192,6 +192,36 @@ /> + + + + + + + + + + + + + +