From 66b461e985dea9576c956eb231344234302eb020 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Thu, 20 Sep 2018 10:16:46 +0800 Subject: [PATCH] build: Add README.msvc Add instructions on how to build libsoup with Visual Studio via Meson. --- README.msvc | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 README.msvc 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