diff options
Diffstat (limited to 'media-libs/fontconfig/files/fontconfig-2.14.1-gperf-meson.patch')
-rw-r--r-- | media-libs/fontconfig/files/fontconfig-2.14.1-gperf-meson.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/media-libs/fontconfig/files/fontconfig-2.14.1-gperf-meson.patch b/media-libs/fontconfig/files/fontconfig-2.14.1-gperf-meson.patch new file mode 100644 index 000000000000..5565012cad65 --- /dev/null +++ b/media-libs/fontconfig/files/fontconfig-2.14.1-gperf-meson.patch @@ -0,0 +1,79 @@ +https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/a07e2f1e8ad049772cd24b7daa0a4a168f33bfba.patch + +From a07e2f1e8ad049772cd24b7daa0a4a168f33bfba Mon Sep 17 00:00:00 2001 +From: Christopher Degawa <ccom@randomderp.com> +Date: Tue, 25 Oct 2022 14:41:05 -0500 +Subject: [PATCH] meson: modify gperf test to remove sh dependency + +modifies the gperf test to instead rely on a file input +rather than piping in using sh, as sh is often not reliable +on Windows due to paths. + +Also changes the if else ladder into a foreach loop. + +Signed-off-by: Christopher Degawa <ccom@randomderp.com> +--- /dev/null ++++ b/meson-cc-tests/gperf.txt +@@ -0,0 +1 @@ ++foo,bar +--- a/meson.build ++++ b/meson.build +@@ -315,39 +315,33 @@ if fc_configdir.startswith(fc_baseconfigdir + '/') + fonts_conf.set('CONFIGDIR', fc_configdir.split(fc_baseconfigdir + '/')[1]) + endif + +-# It will automatically fallback to subproject if not found on system +-gperf = find_program('gperf') ++gperf = find_program('gperf', required: false) ++gperf_len_type = '' + +-sh = find_program('sh', required : false) +- +-if not sh.found() # host_machine.system() == 'windows' or not sh.found() +- # TODO: This is not always correct +- if cc.get_id() == 'msvc' +- gperf_len_type = 'size_t' +- else +- gperf_len_type = 'unsigned' +- endif +-else ++if gperf.found() + gperf_test_format = ''' + #include <string.h> + const char * in_word_set(const char *, @0@); + @1@ + ''' +- gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C' +- gperf_snippet = run_command(sh, '-c', gperf_snippet_format.format(gperf.full_path()), +- check: true) +- gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout()) ++ gperf_snippet = run_command(gperf, '-L', 'ANSI-C', files('meson-cc-tests/gperf.txt'), ++ check: true).stdout() + +- if cc.compiles(gperf_test) +- gperf_len_type = 'size_t' +- else +- gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout()) +- if cc.compiles(gperf_test) +- gperf_len_type = 'unsigned' +- else +- error('unable to determine gperf len type') ++ foreach type : ['size_t', 'unsigned'] ++ if cc.compiles(gperf_test_format.format(type, gperf_snippet)) ++ gperf_len_type = type ++ break + endif ++ endforeach ++ ++ if gperf_len_type == '' ++ error('unable to determine gperf len type') + endif ++else ++ # Fallback to subproject ++ gperf = find_program('gperf') ++ # assume if we are compiling from the wrap, the size is just size_t ++ gperf_len_type = 'size_t' + endif + + message('gperf len type is @0@'.format(gperf_len_type)) +GitLab |