mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
meson: Add yajl kludge
If this looks familiar, that's because it's literally *the
same code* that we used to work around *the same issue* in
readline before 1635dca26f
:)
Note that the issue only really affects people building from
source on Apple Silicon: on Intel, Homebrew installs header
files under directories that are part of the default search
path, which explains why our CI pipeline never ran into it.
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Tested-by: Roman Bolshakov <r.bolshakov@yadro.com>
This commit is contained in:
parent
42edef36fd
commit
cd76a97aa6
35
meson.build
35
meson.build
@ -1318,6 +1318,41 @@ endif
|
||||
yajl_version = '2.0.3'
|
||||
yajl_dep = dependency('yajl', version: '>=' + yajl_version, required: get_option('yajl'))
|
||||
if yajl_dep.found()
|
||||
# Kludge for yajl include path on non-Linux
|
||||
#
|
||||
# As of 2.1.0, upstream yajl.pc has -I${includedir}/yajl among
|
||||
# its Cflags, which is clearly wrong. This does not affect Linux
|
||||
# because ${includedir} is already part of the default include path,
|
||||
# but on other platforms that's not the case and the result is that
|
||||
# <yajl/yajl.h> can't be located, causing the build to fail.
|
||||
#
|
||||
# Since upstream development for yajl has stopped years ago, there's
|
||||
# little hope of this issue getting fixed by a new upstream release.
|
||||
# Some non-Linux operating systems such as FreeBSD have elected to
|
||||
# carry a small downstream patch, but in the case of Homebrew on
|
||||
# macOS this approach has been rejected[1] and so we're left with no
|
||||
# choice but to work around the issue ourselves.
|
||||
#
|
||||
# [1] https://github.com/Homebrew/homebrew-core/pull/74516
|
||||
if host_machine.system() != 'linux'
|
||||
pkg_config_prog = find_program('pkg-config')
|
||||
rc = run_command(pkg_config_prog, '--cflags', 'yajl', check: true)
|
||||
cflags = rc.stdout().strip()
|
||||
if cflags.contains('include/yajl')
|
||||
rc = run_command(
|
||||
'python3', '-c',
|
||||
'print("@0@".replace("@1@", "@2@"))'.format(
|
||||
cflags, 'include/yajl', 'include',
|
||||
),
|
||||
check: true,
|
||||
)
|
||||
yajl_dep = declare_dependency(
|
||||
compile_args: rc.stdout().strip().split(),
|
||||
dependencies: [ yajl_dep ],
|
||||
)
|
||||
endif
|
||||
endif
|
||||
|
||||
conf.set('WITH_YAJL', 1)
|
||||
endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user