Skip to content

Commit

Permalink
build: Add README.msvc
Browse files Browse the repository at this point in the history
Add instructions on how to build libsoup with Visual Studio via Meson.
  • Loading branch information
fanc999-1 committed Sep 20, 2018
1 parent 12daf2b commit 83dae96
Showing 1 changed file with 77 additions and 0 deletions.
77 changes: 77 additions & 0 deletions README.msvc
@@ -0,0 +1,77 @@
Building with Visual Studio using Meson
=======================================

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

Note that you will need libxml2, SQLite3, libpsl and optionally MIT
Kerberos, in addition to GLib and all its dependencies. You will also need
a set of GIO modules that implement TLS functionality, which needs to be
found and loadable by GLib (GIO). glib-openssl is the
only supported option for this at this time of writing for Visual Studio
builds. Note that these should be built with the same compiler that is being
used to build libsoup.

For libxml2, SQLite3 and MIT Kerberos (for GSSAPI functionality), ensure that
their headers, .lib's and DLLs can be found in the paths defined in your INCLUDE,
LIB and PATH environmental variables, while you need to set PKG_CONFIG_PATH to
contain the path to the pkg-config (.pc) files for the various components of GLib
and for libpsl. If GObject-Introspection is found via pkg-config files, the
introspection files are built as well.

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 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 libsoup sources are located (i.e. $(LIBSOUP_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 $(LIBSOUP_SRCDIR) --buildtype=$(build_configuration) --prefix=$(INSTALL_PREFIX) [--backend=vs]

Also pass in -Dgssapi=false if not building with GSSAPI support.

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

0 comments on commit 83dae96

Please sign in to comment.