mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-26 05:56:14 +01:00
meson: libelf.pc is not always available
libelf, just like libc, is not a single project. It is an interface which can be implemented independently by different operating systems. Therefore, we cannot expect all systems to provide a .pc file, and we should fallback to cc.find_library and cc.has_function like what we already do in autotools build.
This commit is contained in:
parent
c61f01f0ff
commit
a77790330b
@ -855,9 +855,26 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Dependencies used by executables below
|
# Dependencies used by executables below
|
||||||
|
have_libelf = false
|
||||||
libelf = dependency('libelf', version : '>= 0.8.12', required : false)
|
libelf = dependency('libelf', version : '>= 0.8.12', required : false)
|
||||||
if libelf.found()
|
if libelf.found()
|
||||||
|
have_libelf = true
|
||||||
|
else
|
||||||
|
# This fallback is necessary on *BSD. elfutils isn't the only libelf
|
||||||
|
# implementation, and *BSD usually includes their own libelf as a system
|
||||||
|
# library which doesn't have a corresponding .pc file.
|
||||||
|
libelf = cc.find_library('elf', required : false)
|
||||||
|
have_libelf = libelf.found()
|
||||||
|
have_libelf = have_libelf and cc.has_function('elf_begin', dependencies : libelf)
|
||||||
|
have_libelf = have_libelf and cc.has_function('elf_getshdrstrndx', dependencies : libelf)
|
||||||
|
have_libelf = have_libelf and cc.has_function('elf_getshdrnum', dependencies : libelf)
|
||||||
|
have_libelf = have_libelf and cc.has_header('libelf.h')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if have_libelf
|
||||||
glib_conf.set('HAVE_LIBELF', 1)
|
glib_conf.set('HAVE_LIBELF', 1)
|
||||||
|
else
|
||||||
|
libelf = []
|
||||||
endif
|
endif
|
||||||
|
|
||||||
gconstructor_as_data_h = custom_target('gconstructor_as_data.h',
|
gconstructor_as_data_h = custom_target('gconstructor_as_data.h',
|
||||||
|
Loading…
Reference in New Issue
Block a user