Tor Lillqvist <tml@iki.fi>
Hans Breuer <hans@breuer.org>

Note that this document is not really maintained in a serious
fashion. Lots of information here might be misleading or outdated. You
have been warned.

The general parts, and the section about gcc and autoconfiscated
build, and about a Visual Studio build are by Tor Lillqvist.

General
=======

For prebuilt binaries (DLLs and EXEs) and developer packages (headers,
import libraries) of GLib, Pango, GTK+ etc for Windows, go to
http://www.gtk.org/download-windows.html . They are for "native"
Windows meaning they use the Win32 API and Microsoft C runtime library
only. No POSIX (Unix) emulation layer like Cygwin in involved.

To build GLib on Win32, you can use either gcc ("mingw") or the
Microsoft compiler and tools. For the latter, MSVC6 and later have
been used successfully. Also the Digital Mars C/C++ compiler has
reportedly been used.

You can also cross-compile GLib for Windows from Linux using the
cross-compiling mingw packages for your distro.

Note that to just *use* GLib on Windows, there is no need to build it
yourself.

On Windows setting up a correct build environment can be quite a task,
especially if you are used to just type "./configure; make" on Linux,
and expect things to work as smoothly on Windows.

The following preprocessor macros are to be used for conditional
compilation related to Win32 in GLib-using code:

- G_OS_WIN32 is defined when compiling for native Win32, without
  any POSIX emulation, other than to the extent provided by the
  bundled Microsoft C library (msvcr*.dll).

- G_WITH_CYGWIN is defined if compiling for the Cygwin
  environment. Note that G_OS_WIN32 is *not* defined in that case, as
  Cygwin is supposed to behave like Unix. G_OS_UNIX *is* defined by a GLib
  for Cygwin.

- G_PLATFORM_WIN32 is defined when either G_OS_WIN32 or G_WITH_CYGWIN
  is defined.

These macros are defined in glibconfig.h, and are thus available in
all source files that include <glib.h>.

Additionally, there are the compiler-specific macros:
- __GNUC__ is defined when using gcc
- _MSC_VER is defined when using the Microsoft compiler
- __DMC__ is defined when using the Digital Mars C/C++ compiler

G_OS_WIN32 implies using the Microsoft C runtime, normally
msvcrt.dll. GLib is not known to work with the older crtdll.dll
runtime, or the static Microsoft C runtime libraries libc.lib and
libcmt.lib. It apparently does work with the debugging version of
msvcrt.dll, msvcrtd.dll. If compiled with Microsoft compilers newer
than MSVC6, it also works with their compiler-specific runtimes, like
msvcr70.dll or msvcr80.dll. Please note that it's non totally clear if
you would be allowed by the license to distrubute a GLib linked to
msvcr70.dll or msvcr80.dll, as those are not part of the operating
system, but of the MSVC product. msvcrt.dll is part of Windows.

For people using Visual Studio 2005 or later:

If you are building GLib-based libraries or applications, or GLib itself
and you see a C4819 error (or warning, before C4819 is treated as an error
in msvc_recommended_pragmas.h), please be advised that this error/warning should
not be disregarded, as this likely means portions of the build is not being
done correctly, as this is an issue of Visual Studio running on CJK (East Asian)
locales.  This is an issue that also affects builds of other projects, such as
QT, Firefox, LibreOffice/OpenOffice, Pango and GTK+, along with many other projects.

To overcome this problem, please set your system's locale setting for non-Unicode to
English (United States), reboot, and restart the build, and the code should build
normally.  See also this GNOME Wiki page [1] that gives a bit further info on this.

In Visual Studio 2015 and later, the /utf-8 option is provided, which is set by the
latest Meson releases when building GLib, and can be used in other project files
that uses GLib to avoid the need of setting your system's locale setting for
non-Unicode and the subsequent requirement to restart the system.

Building software that use GLib or GTK+
=======================================

Building software that just *uses* GLib or GTK+ also require to have
the right compiler set up the right way. If you intend to use gcc,
follow the relevant instructions below in that case, too.

Tor uses gcc with the -mms-bitfields flag which means that in order to
use the prebuilt DLLs (especially of GTK+), if you compile your code
with gcc, you *must* also use that flag. This flag means that the
struct layout rules are identical to those used by MSVC. This is
essential if the same DLLs are to be usable both from gcc- and
MSVC-compiled code. Such compatibility is desirable.

When using the prebuilt GLib DLLs that use msvcrt.dll from code that
uses other C runtimes like for example msvcr70.dll, one should note
that one cannot use such GLib API that take or returns file
descriptors. On Windows, a file descriptor (the small integer as
returned by open() and handled by related functions, and included in
the FILE struct) is an index into a table local to the C runtime
DLL. A file descriptor in one C runtime DLL does not have the same
meaning in another C runtime DLL.

Building GLib
=============

Again, first decide whether you really want to do this.

Before building GLib you must also have a GNU gettext-runtime
developer package. Get prebuilt binaries of gettext-runtime from
http://www.gtk.org/download-windows.html .

Autoconfiscated build (with gcc)
================================

Tor uses gcc 3.4.5 and the rest of the mingw utilities, including MSYS
from www.mingw.org. Somewhat earlier or later versions of gcc
presumably also work fine.

Using Cygwin's gcc with the -mno-cygwin switch is not recommended. In
theory it should work, but Tor hasn't tested that lately. It can
easily lead to confusing situations where one mixes headers for Cygwin
from /usr/include with the headers for native software one really
should use. Ditto for libraries.

If you want to use mingw's gcc, install gcc, win32api, binutils and
MSYS from www.mingw.org.

Tor invokes configure using:

CC='gcc -mtune=pentium3 -mthreads' CPPFLAGS='-I/opt/gnu/include' \
	LDFLAGS='-L/opt/gnu/lib -Wl,--enable-auto-image-base' CFLAGS=-O2 \
	./configure --disable-gtk-doc --prefix=$TARGET

The /opt/gnu mentioned contains the header files for GNU and (import)
libraries for GNU libintl. The build scripts used to produce the
prebuilt binaries are included in the "dev" packages.

Please note that the ./configure mechanism should not blindly be used
to build a GLib to be distributed to other developers because it
produces a compiler-dependent glibconfig.h.

Except for this and a few other minor issues, there shouldn't be any
reason to distribute separate GLib headers and DLLs for gcc and MSVC6
users, as the compilers generate code that uses the same C runtime
library.

The DLL generated by either compiler is binary compatible with the
other one. Thus one either has to manually edit glibconfig.h
afterwards.

For MSVC7 and later (Visual C++ .NET 2003, Visual C++ 2005, Visual C++
2008 etc) it is preferred to use specific builds of GLib DLLs that use
the same C runtime as the code that uses GLib.

For GLib, the DLL that uses msvcrt.dll is called libglib-2.0-0.dll,
and the import libraries libglib-2.0.dll.a and glib-2.0.lib. Note that
the "2.0" is part of the "basename" of the library, it is not
something that libtool has added. The -0 suffix is added by libtool
and is the value of "LT_CURRENT - LT_AGE". The 0 should *not* be
thought to be part of the version number of GLib. The LT_CURRENT -
LT_AGE value will on purpose be kept as zero as long as binary
compatibility is maintained. For the gory details, see configure.ac
and libtool documentation.

Building with Visual Studio
===========================

Meson is now the supported method of building GLib using Visual Studio.

Note that you will need a libintl implementation, zlib, and libFFI, and
optionally PCRE1, which should preferably be built with the same compiler
that is now being used to build GLib.  Ensure that their headers, .lib's
and DLLs can be found in the paths specified by the INCLUDE, LIB and PATH
envvars.  The Meson build process will pull in a copy of the ZLib and the
libFFI sources if they cannot be found, and will build an in-source copy
of PCRE1 if PCRE1 cannt be found.

One can also refer to the following page for building the dependencies:

https://wiki.gnome.org/Projects/GTK%2B/Win32/MSVCCompilationOfGTKStack

You will also need the following items:
-Python 3.6.x, you need the 32-bit version if you are building GLib
 as a 32-bit/x86 build, or the amd64/x64 version for building 64-bit/x86-64
 builds.  You will then need to install or update Meson by using pip.
-The Ninja build tool, required for Visual Studio 2008, 2012 and 2013 builds,
 and optional for 2010, 2015 and 2017 builds, where Visual Studio projects
 can be generated instead of the Ninja build files.
-GIT for Windows is highly recommended, in the case where some required
 dependencies are not found, and Meson makes use of GIT to download
 the sources to build in the build process.

To do a build using Meson, do the following:

-Open a Visual Studio (or SDK) command prompt that matches the Visual Studio
 version and build platform (Win32/x86, x64, etc.) that will be used in all
 the following steps.

-Create an empty directory/folder for the build.  It needs to be in the same
 drive as where your GLib sources are located (i.e. $(GLIB_SRCDIR)).  cd into
 that directory/folder.

-Setup your PATH envvar:

   set PATH=%PATH%;$(PYTHON_INSTALL_DIR);$(NINJA_DIR)

 where PYTHON_INSTALL_DIR is where Python 3.6.x+ is installed to, and NINJA_DIR
 is where your ninja executable can be found.  The NINJA_DIR can be omitted if one
 passes --backend=vs to the Meson configuration line, for Visual Studio 2010, 2015
 and 2017 builds.

-Configure the build using Meson:

    python $(PYTHON_INSTALL_DIR)\scripts\meson.py $(GLIB_SRCDIR) --buildtype=$(build_configuration) --prefix=$(INSTALL_PREFIX) [--backend=vs]

 Please see the Meson docs for an explanation for --buildtype, the path passed for
 --prefix need not to be on the same drive as where the build is carried out, but
 it is recommended to use forward slashes for this path.  The --backend=vs can be
 used if the Visual Studio project generator is preferred over using Ninja, for
 Visual Studio 2010, 2015 and 2017 builds.

-Build, test and install the build:
 Run ninja (and ninja test and ninja install) or open the generated Visual Studio
 projects to compile, test and install the build.

Note that if building the sources with Visual Studio 2008, note the following
additional items:

-You need to run the following lines from your build directory, to embed the manifests
 that are generated during the build, assuming the built binaries are installed
 to $(PREFIX), after a successful build/installation:

for /r %f in (*.dll.manifest) do if exist $(PREFIX)\bin\%~nf mt /manifest %f $(PREFIX)\bin\%~nf;2
for /r %f in (*.exe.manifest) do if exist $(PREFIX)\bin\%~nf mt /manifest %f $(PREFIX)\bin\%~nf;1

-If building for amd64/x86_64/x64, sometimes the compilation of sources may seem to hang, which
 is caused by an optimization issue in the 2008 x64 compiler.  You need to use Task Manager to
 remove all running instances of cl.exe, which will cause the build process to terminate.  Update
 the build flags of the sources that hang on compilation by changing its "/O2" flag to "/O1"
 in build.ninja, and  retry the build, where things should continue to build normally.  At the
 time of writing, this is needed for compiling glib/gtestutils.c,  gio/gsettings.c and
 gio/gsettingsschema.c
