Commit Graph

145 Commits

Author SHA1 Message Date
Khaled Hosny 71a3b54f3c 2.7.3 2020-12-23 15:33:15 +02:00
Xavier Claessens e2ba0e009e meson: Fix check for cairo and cairo-ft dependencies
When cairo comes from a subproject fallback it should still take
cairo-ft dependency, otherwise it miss freetype2 cflags.

Also update wrap file to use upstream repository now that meson support
has been merged.

This requires Meson >= 0.54.0 because cairo itself requires that version
and we use the new `fallback: 'cairo'` syntax without specifying a
variable name because cairo does not provide a variable name for
cairo-ft.
2020-11-17 11:52:35 -05:00
Khaled Hosny 9c98b2b9a9 2.7.2 2020-08-29 00:39:42 +02:00
Ebrahim Byagowi 05ef75c553 2.7.1 2020-08-13 20:54:53 +04:30
Ebrahim Byagowi 0a02f1e760 [meson] Abort if GDI/Uniscribe headers couldn't be found 2020-08-13 18:28:42 +04:30
Ebrahim Byagowi 24b4200243 [meson] Avoid using has_headers as that has added in 0.50.0 2020-08-13 18:28:42 +04:30
Ebrahim Byagowi 6e32145dc9 [meson] Make compatbile with 0.47.0 2020-08-13 18:28:42 +04:30
Ebrahim Byagowi 58209c86a0 [meson] Make compatbile with 0.49.0
Contains a just put together summary feature polyfill and workaround
to broken ternary operator.
2020-08-13 18:28:42 +04:30
Ebrahim Byagowi ef2e380342 Revert "Remove cmake-config support of HarfBuzz"
This reverts commit 75efa89343.
2020-08-12 01:00:33 +04:30
Ebrahim Byagowi 34a0532092
[meson] minor note 2020-08-04 15:14:59 +04:30
Ebrahim Byagowi 75efa89343 Remove cmake-config support of HarfBuzz
Reverts d38f37b2 as discussed in #2316
2020-08-03 16:45:17 +04:30
Ebrahim Byagowi 97079a7c8f
[meson] Pass cpp_eh=none and cpp_rtti=false as default options
If we want to support a build with exception handling and RTTI
We should reflect that on library(..., link_language: 'c') also so for
now it is ok to just set it here to get MSVC support also and we
can remove hard coded flags later upon request.

One other concern over just relying on it is on when harfbuzz is used
as a subproject and the parent project hasn't provided the same options,
that should be resolved first I think.

Closes #2584
2020-08-02 12:34:21 +04:30
Ebrahim Byagowi 749e2754c8
[meson] remove useless note about -fvisibility-inlines-hidden
It was put there as current situation of autotools but msys2 is ok
with the flag, if something like is needed for other it can handled
as a local patch.
2020-08-02 12:21:51 +04:30
Ebrahim Byagowi a01c7a380b 2.7.0 2020-07-25 12:40:57 +04:30
Ebrahim Byagowi f9ac6ddbef
[meson] Rename 'gtk_doc' option to 'docs' 2020-07-22 17:53:04 +04:30
Ebrahim Byagowi 8cbdb6fa41 [meson] Don't enable benchmark under the conditions ever
As we don't want to make headache for packagers as we don't want to
enable it when --auto-features=enabled is used.
2020-07-15 13:33:00 +04:30
Ebrahim Byagowi dc981fe951
[meson] Merge gdi and uniscribe
They are the same thing obviously
2020-07-15 13:15:27 +04:30
Ebrahim Byagowi f62f4e388b [meson] minor on gdi, dwrite and icu 2020-07-08 03:12:32 +04:30
Ebrahim Byagowi 69a1e07acb
[meson] don't enable benchmark if is in nodownload wrap mode
Fixes #2551
2020-07-08 03:12:09 +04:30
Ebrahim Byagowi 747f65f9ef
[meson] Remove HAVE_OT and HAVE_FALLBACK
No need as 1e8fdd2 and 23768a9
2020-07-07 11:37:16 +04:30
Ebrahim Byagowi e1c35ca581
[meson] rename the section
As Behdad's comment
2020-07-06 22:29:11 +04:30
Ebrahim Byagowi ddb103ea1a
[meson] minor 2020-07-06 22:27:39 +04:30
Khaled Hosny dc684103d4 [meson] Set the default wrap mode to nofallback
This, I believe, will prevent any automatic use of subprojects be
default and will only look for dependencies on the system.
https://mesonbuild.com/Subprojects.html#commandline-options
2020-07-06 21:15:44 +04:30
Ebrahim Byagowi 52199349aa
[meson] mark meson as tested
tested in a CI bot that in a `-Dcoretext=enabled` build, `build/util/hb-shape --shaper=ot` works fine.
2020-07-06 16:30:59 +04:30
Ebrahim Byagowi a08ba46d86 [meson] move meson version so can be referenced easier 2020-07-06 11:48:59 +04:30
Ebrahim Byagowi 6d3d0ebba3 Remove .tarball-revision generation from meson dist
Toward making release tarball identical to git checkout now that we are moving to meson.
2020-07-06 11:48:59 +04:30
Ebrahim Byagowi 38fa924904 [meson] revert 020b182 as meson fails when there is cyclic dependency 2020-07-03 15:47:13 +04:30
Ebrahim Byagowi 42d039cc99 [meson] minor 2020-07-03 04:49:12 +04:30
Ebrahim Byagowi f2a80ab2c2 [meson] use null_dep idiom 2020-07-03 04:49:12 +04:30
Ebrahim Byagowi 05ab073d9b [meson] Improve the way cairo-ft availability is checked 2020-07-03 03:10:00 +04:30
Ebrahim Byagowi aadcd3ed8a [meson] use dependency's has_headers to make pulled cairo has ft support 2020-07-01 17:47:20 +04:30
Ebrahim Byagowi 020b182c79 [meson] try freetype without harfbuzz just as a last resort 2020-07-01 17:47:20 +04:30
Xavier Claessens 01fa55e88f meson: Allow freetype and cairo subprojects to fail
If their respective option is set to 'auto' configuration of the
fallback subproject should be allowed to fail for any reason.
2020-07-01 14:11:11 +04:30
Xavier Claessens 00c652adab meson: Fallback to cairo subproject when option is 'auto' 2020-07-01 14:11:11 +04:30
Xavier Claessens 571365df33 meson: Simplify check for cairo library and headers 2020-07-01 14:11:11 +04:30
Xavier Claessens c4bbe89b53 meson: Fallback to freetype2 subproject when option is 'auto'
But disable harfbuzz support when configuring freetype2 subproject to
avoid dependency cycle.
2020-07-01 14:11:11 +04:30
Xavier Claessens 33252ce576 meson: Simplify check for freetype2 library and headers 2020-07-01 14:11:11 +04:30
Ebrahim Byagowi f3f9205fac [meson] Assume cairo_ft always available when cairo isn't from pkgconfig 2020-07-01 03:21:39 +04:30
Ebrahim Byagowi 702847aadd [meson] Turn benchmark to a feature 2020-06-29 12:54:58 +04:30
Ebrahim Byagowi 1536271f6b Don't check roundf availability in cmake and meson 2020-06-28 13:35:28 +04:30
Ebrahim Byagowi 95b1081be4 Add performance benchmark for shaping, get extents and draw 2020-06-25 01:30:07 +04:30
Ebrahim Byagowi 53b0a183c7 Remove concept of stable/unstable from build tools
We never practiced the concept of stable and unstable releases, let's
remove the code and always use the stable scheme.
2020-06-23 14:46:47 +04:30
Ebrahim Byagowi e4203c1469 2.6.8 2020-06-22 12:51:22 +04:30
Ebrahim Byagowi 8c84fee2e5 Update build systems status messages 2020-06-22 04:32:59 +04:30
Ebrahim Byagowi a6bcc577a9
[meson] don't `add_dist_script` when we are subproject
Happens when harfbuzz is used as a meson subproject,
  `ERROR: add_dist_script may not be used in a subproject.`
2020-06-20 14:19:12 +04:30
Ebrahim Byagowi 03bd3efaa7
[meson] Write git revision to .tarball-revision on dist tarball 2020-06-19 10:32:46 +04:30
Ebrahim Byagowi 62de2f749c [meson] Remove spaces before named parameter colons
meson documentations sometimes adds the space and sometimes don't and we
aren't adding it most of the times unconsciously so let's the cases and
be consistent.
2020-06-12 01:11:06 +04:30
Ebrahim Byagowi b8454c3d61 [meson] use if blocks to separate different dependencies 2020-06-12 01:11:06 +04:30
Ebrahim Byagowi ebab4b8658 [meson] Implement disabled state for cairo/freetype/icu
'disabled' wasn't implemented for some of the features so they were
getting found even with explicit -Dfeature=disabled, this implements it.

Run the following command to test this change and check whether 'disabled'
was actually effective,
  meson build -Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dfontconfig=disabled -Dicu=disabled -Dfreetype=disabled -Dintrospection=disabled -Dgtk_doc=disabled

This is useful when one wants to integrate harfbuzz into another project via
meson's subproject mechanism.
2020-06-10 20:15:42 +04:30
Ebrahim Byagowi 22048d55aa [meson] Add -Bsymbolic-functions 2020-06-05 12:00:44 +04:30
Ebrahim Byagowi 65462c4b0b minor, improve the need for graphite comment 2020-06-05 01:23:15 +04:30
Christoph Reiter 03bd6ead44 [meson] Only pass required dependencies to everything
Instead of passing dependencies as required we used one giant shared
dependency list containing all dependencies for every library/executable.
While this kinda works, the specified deps are also used for generating
the pkg-config files and this leads to lots of Requires.private and Libs.private
entries which aren't really needed.

This removes the "deps" array and replaces it with a few smaller ones and
makes sure the public libraries only get passed the dependencies actually
needed.

Fixes #2441
2020-06-04 23:28:57 +04:30
Ebrahim Byagowi fb46a32ed0 2.6.7 2020-06-03 12:56:07 +04:30
Ebrahim Byagowi 6058ede3ae
Build win32 artifacts using meson
As a part of meson migration, this builds hb-shape dependencies
using meson subprojects and removes different unrelated mingw
files we've put on source root about things that aren't really our
concern. This also simplifies all the instructions we've put in
README.mingw.md and makes it easy to build the project on
distros that no mingw libraries (such i686-win32-{freetype,glib,...}
are packaged. The known catch is however lack of hb-view as its need
for build of cairo which apparently isn't that straightforward.
2020-06-01 12:58:31 +04:30
Ebrahim Byagowi 887aa0214f [meson] Use find_program for locating python script
Apparently that is the simplest and supported way of finding python scripts.
2020-05-21 20:03:11 +04:30
Ebrahim Byagowi cc53fd158c
[meson] Normalize options names
As https://github.com/harfbuzz/harfbuzz/pull/2412#discussion_r426275027
2020-05-21 19:33:18 +04:30
Ebrahim Byagowi a9e8328ae2 [meson] Add build configuration summary just like autotools 2020-05-21 19:29:32 +04:30
Ebrahim Byagowi f7562672f9 [meson] Use / instead join_paths
We need some of the very recent features of meson, let's use the new features also
2020-05-21 18:52:31 +04:30
Tim-Philipp Müller 3dd7b2105b meson: build documentation with gtk-doc
Fixes https://github.com/harfbuzz/harfbuzz/issues/2409
2020-05-18 13:56:46 +04:30
Ebrahim Byagowi 42025680cb 2.6.6 2020-05-12 00:17:44 +04:30
Ebrahim Byagowi 44fe1c8ff1 Remove xlocale use now that isn't available in most distros
Our CI bots don't detect it in Alpine, ArchLinux, Ubuntu and Fedora
so let's get rid of it use the fallback we are using anyway for a
long time.
2020-05-10 14:51:35 +04:30
Ebrahim Byagowi 750bb73e32 [meson] Add an experimental-api option 2020-04-21 01:26:08 +04:30
Ebrahim Byagowi c6b3f73b09 [meson] Make harfbuzz-icu separate module optout-able 2020-04-19 02:06:01 +04:30
Christoph Reiter 8ae06c9489 meson: build a separate library for harfbuzz-icu
This adds a seperate library like with autotools.

This also fixes the ico feature option which was just set to required:false
when disabled instead of really disabling it.
Disabling is still broken with msvc because it then tries to find the library
another way, but that's broken for all other deps as well so I left it as is.

For tests only test-unicode.c is using icu specific functions so split it out
into its own category which depends on harfbuzz-icu.

Fixes #2338
2020-04-18 23:34:31 +04:30
Ebrahim Byagowi f9bc373381 2.6.5 2020-04-17 23:49:56 +04:30
Ebrahim Byagowi 466dbaa258 [meson] Add a note on meson stability status 2020-03-24 19:06:09 +00:00
Ebrahim Byagowi e8808c1c20 [meson] Minor, replace tabs with spaces 2020-03-24 19:06:09 +00:00
Tim-Philipp Müller a3892be701 [meson] fix spurious warning when building test/api C sources
Fixes compiler warning

  test-unicode.c:589:1: warning: ‘test_unicode_properties_lenient’ defined but not used

which didn't happen with autotools.

Reason it does with meson is that the setup for C was slightly wrong.
We would only add -DHAVE_CONFIG_H to cpp_args which is only valid when
compiling C++ code, but not plain C code, and many of these tests were
plain C.

Instead pass -DHAVE_CONFIG_H via add_project_arguments() and make sure
to set both c_args and cpp_args when building test executables.

Fixes https://github.com/harfbuzz/harfbuzz/issues/2257
2020-03-14 15:16:00 +03:30
Tim-Philipp Müller bb8aaa3108 [meson] use add_project_arguments() instead of add_global_arguments()
.. and simplify, can pass two languages in one go.

add_global_arguments() won't work if harfbuzz is used as a
meson subproject.
2020-03-14 15:16:00 +03:30
Chun-wei Fan 838346c54a meson: Support GDI integration
...and supersede the configuration option uniscribe with gdi, as Uniscribe is
tightly tied to GDI.  This means that enabling GDI would also mean enabling
Uniscribe.
2020-03-13 14:30:17 +03:30
Chun-wei Fan 9d0e6aef8a Meson: Look harder for Cairo on Visual Studio
Since Cairo's build system for Visual Studio does not generate pkg-config files
for us, look for cairo.h and cairo.lib manually if the pkg-config files cannot
be found.

Also look for cairo-ft more carefully: ensure that we have cairo-ft.h, and one
of its symbols can be found in the same cairo.lib that we previously found.
2020-03-13 14:30:17 +03:30
Chun-wei Fan 5efce600ab Meson: Try harder to look for ICU on Visual Studio
ICU's Visual Studio build files do not generate pkg-config files for us, unless
it is built with Cygwin instead of the project files.  If pkg-config files for
ICU cannot be found, look for its headers and .lib manually.
2020-03-13 14:30:17 +03:30
Chun-wei Fan 7baa8e0dbe meson: Updates to Uniscribe and DirectWrite build support
Update the DirectWrite support to look for dwrite_1.h, and give the green light
for both the DirectWrite and Uniscribe build options.
2020-03-13 14:30:17 +03:30
Chun-wei Fan 733414b286 meson: Try harder to find FreeType on Visual Studio
If we can't find FreeType via pkg-config or CMake, try looking for it manually,
before we attempt to build it as a fallback.
2020-03-13 14:30:17 +03:30
Chun-wei Fan 3341d5346e meson: Don't apply -DHB_DLL_EXPORT to all targets
Only have it apply to the libraries when they are not built statically on
Visual Studio
2020-03-13 14:30:17 +03:30
Ebrahim Byagowi 31218b41c6 [meson] Explicit state C++11 for older compilers
Needed as https://circleci.com/gh/harfbuzz/harfbuzz/132417
2020-03-12 00:25:48 +03:30
Ebrahim Byagowi 365d2d3cc3 [meson] Add needed compiler flags 2020-03-11 23:09:48 +03:30
Ebrahim Byagowi 1c3f80ba13 [meson] Minor updates 2020-03-11 20:15:10 +03:30
Tim-Philipp Müller 535186fd84 meson: provide a harfbuzz-config for use from CMake
See #822 and #1437.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 6afa7e1c36 meson: update harfbuzz version 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 0fcf098206 meson: fix linking on MSVC 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 4a47f1aabc meson: suppress some spurious compiler warnings with MSVC 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 618584e923 meson: rename incbase to incconfig
Makes it clearer what it's for: config.h. See #4.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 6147df337e meson: add option to disable tests 2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 4840c8237e meson: add option and build system plumbing for CoreText on macOS/iOS
Untested though.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 83ebbe4ade meson: add option and build system plumbing for DirectWrite on Windows
Untested though.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller b7796a5d69 meson: add option and build system plumbing for uniscribe on Windows
Untested though.
2020-03-11 19:18:57 +03:30
Tim-Philipp Müller 49ba211a9d meson: add options to enable/disable various features
And fix build without GLib. Fixes #2.
2020-03-11 19:18:57 +03:30
Nirbheek Chauhan f65def4dc7 meson: Declare dependencies for use as a subproject
Also use fallbacks for dependencies that have meson build files
2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 14432b3ded meson: remove debug message 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 07cadc9c87 meson: update minimum meson version 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 04bcdb9c73 meson: misc fixes 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 484313ff36 meson: install 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle fce88f9905 meson: add subproject wraps for dependencies 2020-03-11 19:18:57 +03:30
Mathieu Duponchelle 920efc0ef7 Add Meson build definitions
Fixes #490

http://mesonbuild.com
2020-03-11 19:18:57 +03:30