summaryrefslogtreecommitdiff
path: root/README.msvc
diff options
context:
space:
mode:
Diffstat (limited to 'README.msvc')
-rw-r--r--README.msvc77
1 files changed, 77 insertions, 0 deletions
diff --git a/README.msvc b/README.msvc
new file mode 100644
index 00000000..d9a00613
--- /dev/null
+++ b/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