summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch79
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