diff --git a/BUILD.md b/BUILD.md index f64f8687d..47681ec86 100644 --- a/BUILD.md +++ b/BUILD.md @@ -18,7 +18,8 @@ meson like above. On Windows, meson can build the project like above if a working MSVC's cl.exe (`vcvarsall.bat`) or gcc/clang is already on your path, and if you use something like `meson build --wrap-mode=default` -it fetches and compiles most of the dependencies also. +it fetches and compiles most of the dependencies also. It is recommended to install CMake either +manually or via the Visual Studio installer when building with MSVC when building with meson. Our CI configurations is also a good source of learning how to build HarfBuzz. diff --git a/meson.build b/meson.build index 8a9400cdb..e22859a26 100644 --- a/meson.build +++ b/meson.build @@ -83,50 +83,25 @@ check_funcs = [ m_dep = cpp.find_library('m', required: false) -freetype_dep = null_dep -if not get_option('freetype').disabled() - freetype_dep = dependency('freetype2', required: false) - - if (not freetype_dep.found() and - cpp.get_id() == 'msvc' and - cpp.has_header('ft2build.h')) - freetype_dep = cpp.find_library('freetype', required: false) - endif - - if not freetype_dep.found() - # https://github.com/harfbuzz/harfbuzz/pull/2498 - freetype_dep = dependency('freetype2', required: get_option('freetype'), - default_options: ['harfbuzz=disabled']) - endif -endif +# https://github.com/harfbuzz/harfbuzz/pull/2498 +freetype_dep = dependency(cpp.get_argument_syntax() == 'msvc' ? 'freetype' : 'freetype2', + required: get_option('freetype'), + default_options: ['harfbuzz=disabled']) glib_dep = dependency('glib-2.0', required: get_option('glib')) gobject_dep = dependency('gobject-2.0', required: get_option('gobject')) graphite2_dep = dependency('graphite2', required: get_option('graphite2')) graphite_dep = dependency('graphite2', required: get_option('graphite')) -icu_dep = null_dep -if not get_option('icu').disabled() - icu_dep = dependency('icu-uc', required: false) - - if (not icu_dep.found() and - cpp.get_id() == 'msvc' and - cpp.has_header('unicode/uchar.h') and - cpp.has_header('unicode/unorm2.h') and - cpp.has_header('unicode/ustring.h') and - cpp.has_header('unicode/utf16.h') and - cpp.has_header('unicode/uversion.h') and - cpp.has_header('unicode/uscript.h')) - if get_option('buildtype') == 'debug' - icu_dep = cpp.find_library('icuucd', required: false) - else - icu_dep = cpp.find_library('icuuc', required: false) - endif - endif - - if not icu_dep.found() - icu_dep = dependency('icu-uc', required: get_option('icu')) - endif +if cpp.get_argument_syntax() == 'msvc' + icu_dep = dependency('ICU', + required: get_option('icu'), + components: 'uc', + method: 'cmake') +else + icu_dep = dependency('icu-uc', + required: get_option('icu'), + method: 'pkg-config') endif if icu_dep.found() and icu_dep.type_name() == 'pkgconfig' diff --git a/subprojects/freetype2.wrap b/subprojects/freetype2.wrap index cf8f30701..43ab8fa47 100644 --- a/subprojects/freetype2.wrap +++ b/subprojects/freetype2.wrap @@ -5,3 +5,4 @@ revision=VER-2-11-0 [provide] freetype2 = freetype_dep +freetype = freetype_dep