mirror of
https://github.com/openharmony/third_party_libsoup.git
synced 2026-07-01 15:14:10 -04:00
66b461e985
Add instructions on how to build libsoup with Visual Studio via Meson.
78 lines
3.7 KiB
Plaintext
78 lines
3.7 KiB
Plaintext
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
|