mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-24 21:16:15 +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
|
||||
|
||||
# Dependencies used by executables below
|
||||
have_libelf = false
|
||||
libelf = dependency('libelf', version : '>= 0.8.12', required : false)
|
||||
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)
|
||||
else
|
||||
libelf = []
|
||||
endif
|
||||
|
||||
gconstructor_as_data_h = custom_target('gconstructor_as_data.h',
|
||||
|
Loading…
Reference in New Issue
Block a user