Commit Graph

23 Commits

Author SHA1 Message Date
Chun-wei Fan
78dcdbc246 build/win32: Track resouce listings in gdk/gtk
This is so that we can re-generate the GResource sources if any of the
items are updated.
2019-07-30 12:08:08 +08:00
Chun-wei Fan
44e8dcdf28 build/win32: Dist forgotten file
We need to dist gen-gdkversionmacros-h.py...
2019-07-25 23:40:05 +08:00
Chun-wei Fan
58ee7adc29 MSVC builds: Generate most of the built sources in gdk/
With the exception of the enumeration sources (gdkenumtypes.h and
gdkenumtypes.c), the generared sources in gdk/ (gdkversionmacros.h,
gdkresources.[c|h], gdkmarshalers.[c|h] are now generated in the
gtk3-prebuild projects with the NMake Makefiles.

Make build/win32/config-msvc.mak filled with the version info from
autotools, too.
2019-07-25 18:04:58 +08:00
Chun-wei Fan
7fb9cddf1a MSVC Projects: Re-work gtk3-prebuild project
Make it into a NMake Makefile project type, which will form the basis
for having less of the generated sources being dist'ed, which is the
goal of merge request !1001.

Another nice side effect of this is that it makes the gtk3-prebuild
projects cleaner.
2019-07-25 16:16:16 +08:00
Chun-wei Fan
a8f10f6865 Visual Studio: "Add" Visual Studio 2019 project files
Use the scripts that we have to copy the 2010 projects and updating
the various items in the project files to make them Visual Studio
2019-compatible upon 'make dist'.

Also ensure that the introspection NMake Makefiles can properly detect
that we are building with Visual Studio 2019.
2019-06-18 16:07:23 +08:00
Chun-wei Fan
0b50915878 Visual Studio projects: Fix generating gtktypefuncs.inc
From the Meson port, gtk/gtktesteutils.c now includes
gtk/gtktypefuncs.in instead of gtk/gtktypefuncs.c, so we should do the
same thing in the Visual Studio projects, to fix the build.

Also, since build/win32/gentypefuncs.py is an adaptation of the script
from GTK master (in gtk/), and that we now have gtk/gentypefuncs.py, we
should use the version of the script in gtk/ and drop the one in
build/win32.
2019-06-18 14:37:58 +08:00
Chun-wei Fan
af66faf604 Add a EGL renderer (via ANGLE) for Windows
This is for adding a EGL-based renderer which is done via the ANGLE
project, which translate EGL calls to Direct3D 9/11.  This is done as a
possible solution to issue #105, especially for cases where the needed
full GL extensions to map OpenGL to Direc3D is unavailable or
unreliable, or when the OpenGL implementation from the graphics drivers
are problematic.

To enable this, do the following:
-Build ANGLE and ensure the ANGLE libEGL.dll and libGLESv2.dll are
 available.  A sufficiently-recent ANGLE is needed for things to
 work correctly--note that the copy of ANGLE that is included in
 qtbase-5.10.1 is sufficient.  ANGLE is licensed under a BSD 3-clause
 license.  Note also that Visual Studio 2013 or later is required to
 build ANGLE from QT-5.10.1, but the 2013-built ANGLE DLLs can work
 without without problems for GTK+ that is built with Visual Studio
 2008 or later.
-Build libepoxy on Windows with EGL support enabled.
-Define GDK_WIN32_ENABLE_EGL when building gdk-win32.lib when building
 with Visual Studio, or pass in --enable-win32-gles during configure
 when building with MinGW/mingw-w64.
-Prior to running GTK+ programs, the GDK_GL envvar needs to contain
 gles.

Known issues:
-Only OpenGL ES 3 is supported, ANGLE's ES 2 does not support the needed
 extensions, notably GL_OES_vertex_array_object, but its ES 3 support is
 sufficient.
-There is no autodetection or fallback mechanism to enable using
 EGL/Angle automatically yet.  There is no plans to do this in this
 commit.

Thanks to LRN for pointing out that we should #include
"win32/gdkwin32.h" instead of #include "gdkwin32.h" for gdkgl.c.  LRN
also did the autotools portion of this patch.

Further notes about the autotools --enable-win32-gles option, fom LRN:

This adds --enable-win32-gles option, which enables the
code for GLES renderer.  This commit also adds tests for WGL and
EGL in epoxy.  The absence of WGL is highly unlikely (it's enabled
by default), but checking for EGL when GLES is enabled is necessary,
as EGL is disabled in Windows builds of epoxy by default.
2018-06-28 15:33:42 +08:00
Chun-wei Fan
1517acee55 Visual Studio 201x builds: Generate gtk/gtktypefuncs.c
We now need to generate gtktypefuncs.c by ourselves, so modify the
gentypefuncs.py script from master, and add a custom build step in the
projects to generate gtktypefuncs.c.  The custom build step for the 2008
projects will be added later.
2018-05-12 01:15:33 +08:00
Chun-wei Fan
c6f0df26f6 Visual Studio builds: Support Visual Studio 2017
Update the autotools scripts so that we can support Visual Studio 2017
by copying the 2010 projects and updating items as needed to obtain
the 2017 projects.

Note that since the toolset version string changed for Visual Studio
2017, so allow the use of a custom toolset version string, otherwise
just generate the toolset version string as we did before.

Also, note that Visual Studio 2017 aims to be compatible with 2015
on the CRT level, so there should not be any problems using 2017-compiled
binaries with 2015-compiled ones.
2017-02-17 15:09:16 +08:00
Chun-wei Fan
71bb1bebc0 Visual Studio builds: Generate .pc files
Generate .pc files for the package, so that it would be easier for
building introspection for packages that depend on GTK+.  Also split
PythonPath into PythonPath and PythonPathX64 to facilitate the build of
introspection files, which need to have Python that is built with the
same ac=rchitecture where GTK+ is built.

Clean up the formatting and spacing a bit.
2016-04-26 20:15:45 +08:00
Chun-wei Fan
9a87b6be2b MSVC builds: Update how introspection builds are done
This first adds a common autotools module that can be included by
the Makefile.am's to generate the file lists and the g-ir-scanner/
g-ir-compiler command lines to build the introspection files.

The autotools files for gdk/ and gtk/ are then updated to generate
the full file lists needed to build the introspection files, with
the full command lines for g-ir-scanner and g-ir-compiler as NMake
Makefile modules that can be used to build the introspection files
for Visual Studio builds.

https://bugzilla.gnome.org/show_bug.cgi?id=765195
2016-04-19 14:50:25 +08:00
Chun-wei Fan
ea8873da55 MSVC build: Drop crypt implementation for MSVC
We are actually not using the crypt() in GDK-Broadway for quite a while,
so the code implementation for MSVC is actually not used.  So, it's time
to get rid of this.
2016-03-02 16:52:30 +08:00
Chun-wei Fan
5962daef4f Windows: Update how gtk-win32.rc is generated
On Visual Studio, unlike MinGW, manifest files are embedded via
including the manifest file as a resource file in the projects, not
via the .rc file.  This means that the line in the .rc file that
specifies the manifest file would cause trouble, so that line gets
removed when the full gtk3-win32.rc is generated on Visual Studio builds,
otherwise 2010+ Visual Studio will complain when compiling the .rc file.
Also, the inclusion of winuser.h will cause warnings during the
compilation of the .rc file.

Fix this by isolating the Win32 resource portions of gtk-win32.rc.in to
gtk-win32.rc.body.in and:
-On MinGW, construct the full gtk-win32.rc by doing the winver.h and
 winuser.h inclusion first, then append the contents of gtk-win32.rc.body,
 and then appending the line to embed the manifest file.
-On Visual Studio, simply copy the gtk-win32.rc.body to gtk-win32.rc,
 and generate the full libgtk3.manifest file.

https://bugzilla.gnome.org/show_bug.cgi?id=762311
2016-02-22 17:40:17 +08:00
Chun-wei Fan
9a4990f4ca MSVC Builds: "Add" Visual Studio 2015 Projects
"Add" Visual Studio 2015 projects by what we did before: Copy the Visual
Studio 2010 project files and replace the items in there as needed, as
the formats of the 2010 and 2015 projects are largely the same.
2015-09-15 19:59:14 +08:00
Chun-wei Fan
d62bd12b86 MSVC Builds: Add Script to Generate gtk-win32.rc
In bug 733773, gtk-win32.rc was removed from the dist in the attempt to
make the print dialog on Windows themed, so this script was added so that
the gtk-win32.rc file can be generated during the Visual Studio builds of
GTK+ from the autotools scripts.  This is also intended for filling in the
arch of the build for MSVC builds for the manifest that is also required
for fixing bug 733773.  Python is used as it is already needed for

This is done as a custom build rule in the Visual Studio projects so that
it is easy to clean and rebuild gtk-win32.rc upon an update.

https://bugzilla.gnome.org/show_bug.cgi?id=733773
2014-08-04 13:34:15 +08:00
Chun-wei Fan
e3f8b87741 Build: Provide Simple Support for MSVC 2012/2013
As the Visual Studio 2012/2013 are only slightly different from the Visual
Studio 2010 projects, we can provide support for them by using scripts to
copy the Visual Studio 2010 projects, and update the specific parts as
necessary.

Thus, there would be little maintenance overhead for these as only the 2010
projects need to be kept up-to-date as a result.  This might change when we
do get the stack working with WinRT/Metro, but that's going to be another
totally different issue.
2014-07-01 16:17:43 +08:00
Chun-wei Fan
7115ccd3b0 MSVC Builds: Rework Introspection Build
The current approach of building the introspection files for GTK works, but
is often cumbersome as one needs to set many environmental variables before
launching a solution file, which runs a Windows batch script to generate
the .gir/.typelib files. It was also possible to hand-run the batch script
from the Visual Studio command prompt, but even more environmental
variables need to be set.

This changes the approach to build the introspection files using an NMake
Makefile (but elimating from the Visual Studio Project Files the part to
build the introspection files) to:
-Make it clearer to the person building the introspection files what
 environmental variables are needed, specifically for PKG_CONFIG_PATH and
 MINGWDIR and CFG (formerly CONF). Setting stuff like VSVER, PLAT and BASEDIR
 is no longer required, which was a bit clunky.

-Allows some more easier flexibility on the build of the intropsection files.
2014-01-13 16:05:32 +08:00
Chun-wei Fan
fb6f34e499 Include crypt(3) implementation for MSVC
This adds a crypt(3) implementation for use with broadwayd as Visual Studio
does not support crypt(3) out of the box.

The public domain implementation is taken from the following URL,
http://michael.dipperstein.com/crypt/, where AFAICT this implementation
would not be subject to licensing restrictions that would prevent it from
being bundled.
2013-07-01 14:52:45 +02:00
Chun-wei Fan
801a7ca17f Visual Studio Builds: Support Building Introspection Files
Add Windows .bat and Python script to call g-ir-scanner to build
introspection files for Visual Studio builds.  This will read from the
autotools files using Python REGEX functionality to determine the headers
and sources for g-ir-scanner to process, so the autotools files will not
need to be updated except to distribute the necessary files.  Thils will
also enable one to build introspection files on Windows without using a
BASH-style shell such as MSYS.

Also add an utility Visual Studio project to call the Windows .bat to
build the introspection files for GTK+/GDK, for convenience.
2013-03-06 13:12:01 +08:00
Jasper St. Pierre
cca05d1dc8 Add git.mk to more places 2013-01-24 17:47:34 -05:00
Chun-wei Fan
527a299fdd Bug 643270: VS2010 Project Files (autotools)
-Update to distribute the VS2010 files.
-Added rules in Makefile.am's of GDK and GTK to fill in the
 project/filter files templates with up-to-date source file
 listings to simplify maintenace.

Any comments on the usage of the VS2010 files are welcome!
2011-04-27 00:48:05 +08:00
Tor Lillqvist
d5585745f1 Need to include Makefile.decl in the new Makefile.am files
Otherwise make check breaks.
2010-04-12 23:47:52 +03:00
Tor Lillqvist
e544602065 Add Visual Studio 2008 project files
Similar setup as in GLib and Pango. Also here we use a build/win32/vs9
subfolder, even if there is nothing else in build or build/win32.
2010-04-12 12:45:40 +03:00