diff --git a/.circleci/config.yml b/.circleci/config.yml index 9bfca2b07..485d1bbcb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -78,7 +78,7 @@ jobs: steps: - checkout - run: apk update && apk add ragel gcc g++ glib-dev freetype-dev cairo-dev git py3-pip ninja - - run: pip3 install meson==0.49.0 + - run: pip3 install meson==0.47.0 - run: meson build --buildtype=minsize - run: ninja -Cbuild -j9 - run: meson test -Cbuild --print-errorlogs diff --git a/docs/meson.build b/docs/meson.build index 3d75fd260..f3bf46079 100644 --- a/docs/meson.build +++ b/docs/meson.build @@ -52,8 +52,8 @@ endif gnome.gtkdoc('harfbuzz', main_sgml: 'harfbuzz-docs.xml', - src_dir: [meson.current_source_dir() / '..', - meson.current_build_dir() / '..', + src_dir: [join_paths(meson.current_source_dir(), '..'), + join_paths(meson.current_build_dir(), '..'), ], scan_args: ['--deprecated-guards=HB_DISABLE_DEPRECATED', '--ignore-decorators=HB_EXTERN', diff --git a/meson.build b/meson.build index ddf20d1ef..ffa3deb5d 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('harfbuzz', 'c', 'cpp', - meson_version: '>= 0.49.0', + meson_version: '>= 0.47.0', version: '2.7.0', default_options: [ 'cpp_eh=none', # Just to support msvc, we are passing -fno-rtti also anyway @@ -348,12 +348,16 @@ if not get_option('tests').disabled() subdir('test') endif -if (not get_option('benchmark').disabled() and - get_option('wrap_mode') != 'nodownload' and - host_machine.system() != 'windows' and - not meson.is_subproject() and - not meson.is_cross_build()) - subdir('perf') +# get_option('wrap_mode') isn't available in <0.49 and this +# is just an internal tool +if meson.version().version_compare('>=0.49') + if (not get_option('benchmark').disabled() and + get_option('wrap_mode') != 'nodownload' and + host_machine.system() != 'windows' and + not meson.is_subproject() and + not meson.is_cross_build()) + subdir('perf') + endif endif if not get_option('docs').disabled() diff --git a/perf/meson.build b/perf/meson.build index 384574d2c..c3b0e3e4a 100644 --- a/perf/meson.build +++ b/perf/meson.build @@ -24,4 +24,4 @@ benchmark('perf', executable('perf', 'perf.cc', include_directories: [incconfig, incsrc], link_with: [libharfbuzz], install: false, -), workdir: meson.current_source_dir() / '..', timeout: 100) +), workdir: join_paths(meson.current_source_dir(), '..'), timeout: 100) diff --git a/src/meson.build b/src/meson.build index b53d8b259..53290e1b6 100644 --- a/src/meson.build +++ b/src/meson.build @@ -488,21 +488,20 @@ if get_option('tests').enabled() endforeach compiled_tests = { + 'test-algs': ['test-algs.cc', 'hb-static.cc'], 'test-array': 'test-array.cc', + 'test-iter': ['test-iter.cc', 'hb-static.cc'], + 'test-meta': ['test-meta.cc', 'hb-static.cc'], 'test-number': ['test-number.cc', 'hb-number.cc'], 'test-ot-tag': 'hb-ot-tag.cc', 'test-unicode-ranges': 'test-unicode-ranges.cc', + 'test-bimap': ['test-bimap.cc', 'hb-static.cc'], } - if cpp.get_id() != 'msvc' - # TODO: MSVC doesn't like these, fix them - compiled_tests += { - 'test-algs': ['test-algs.cc', 'hb-static.cc'], - 'test-bimap': ['test-bimap.cc', 'hb-static.cc'], - 'test-iter': ['test-iter.cc', 'hb-static.cc'], - 'test-meta': ['test-meta.cc', 'hb-static.cc'], - } - endif foreach name, source : compiled_tests + if cpp.get_id() == 'msvc' and ['test-algs', 'test-bimap', 'test-iter', 'test-meta'].contains(name) + # TODO: MSVC doesn't like these, fix them + continue + endif test(name, executable(name, source, include_directories: incconfig, cpp_args: cpp_args + ['-DMAIN', '-UNDEBUG'], @@ -577,7 +576,7 @@ cmake_config.set('have_gobject', have_gobject_string) configure_file(input: 'harfbuzz-config.cmake.in', output: 'harfbuzz-config.cmake', configuration: cmake_config, - install_dir: get_option('libdir') / 'cmake' / 'harfbuzz', + install_dir: join_paths(get_option('libdir'), 'cmake', 'harfbuzz'), ) libharfbuzz_gobject_dep = null_dep @@ -615,7 +614,7 @@ if have_gobject output: 'hb-gobject-enums.h', command: [find_program('fix_get_types.py'), '@INPUT@', '@OUTPUT@'], install: true, - install_dir: get_option('prefix') / get_option('includedir') / meson.project_name(), + install_dir: join_paths(get_option('prefix'), get_option('includedir'), meson.project_name()), ) hb_gobject_sources += [enum_c] diff --git a/test/fuzzing/meson.build b/test/fuzzing/meson.build index 9037a9af0..8f698854b 100644 --- a/test/fuzzing/meson.build +++ b/test/fuzzing/meson.build @@ -39,7 +39,7 @@ test('shape_fuzzer', find_program('run-shape-fuzzer-tests.py'), ], timeout: 60, depends: [hb_shape_fuzzer_exe, libharfbuzz, libharfbuzz_subset], - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), env: env, suite: ['fuzzing', 'slow'], ) @@ -51,7 +51,7 @@ test('subset_fuzzer', find_program('run-subset-fuzzer-tests.py'), # as the tests are ran concurrently let's raise acceptable time here # ideally better to break and let meson handles them in parallel timeout: 300, - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), env: env, suite: ['fuzzing', 'slow'], ) @@ -60,7 +60,7 @@ test('draw_fuzzer', find_program('run-draw-fuzzer-tests.py'), args: [ hb_draw_fuzzer_exe, ], - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), env: env, suite: ['fuzzing'], ) diff --git a/test/shaping/meson.build b/test/shaping/meson.build index ee74353a8..b1e49190e 100644 --- a/test/shaping/meson.build +++ b/test/shaping/meson.build @@ -14,10 +14,10 @@ foreach file_name : in_house_tests test(test_name, shaping_run_tests_py, args: [ hb_shape, - meson.current_source_dir() / 'data' / 'in-house' / 'tests' / file_name, + join_paths(meson.current_source_dir(), 'data', 'in-house', 'tests', file_name), ], env: env, - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), suite: ['shaping', 'in-house'], ) endforeach @@ -28,10 +28,10 @@ foreach file_name : aots_tests test(test_name, shaping_run_tests_py, args: [ hb_shape, - meson.current_source_dir() / 'data' / 'aots' / 'tests' / file_name, + join_paths(meson.current_source_dir(), 'data', 'aots', 'tests', file_name), ], env: env, - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), suite: ['shaping', 'aots'], ) endforeach @@ -42,10 +42,10 @@ foreach file_name : text_rendering_tests test(test_name, shaping_run_tests_py, args: [ hb_shape, - meson.current_source_dir() / 'data' / 'text-rendering-tests' / 'tests' / file_name, + join_paths(meson.current_source_dir(), 'data', 'text-rendering-tests', 'tests', file_name), ], env: env, - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), suite: ['shaping', 'text-rendering-tests'], ) endforeach diff --git a/test/subset/meson.build b/test/subset/meson.build index 1b6c0a9e5..9153e6914 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build @@ -32,12 +32,12 @@ foreach t : tests test(t, run_test, args: [ hb_subset, - meson.current_source_dir() / 'data' / 'tests' / fname, + join_paths(meson.current_source_dir(), 'data', 'tests', fname), ], # as the tests are ran concurrently let's raise acceptable time here # ideally better to break and let meson handles them in parallel timeout: 500, - workdir: meson.current_build_dir() / '..' / '..', + workdir: join_paths(meson.current_build_dir(), '..', '..'), suite: ['subset', 'slow'], ) endforeach