meson: Fix detection of static libintl on macOS

If libintl is built statically on macOS, linking it requires passing
"-framework CoreFoundation" to satisfy symbol dependencies. Use the
available osx_ldflags already detected earlier in the process.
This commit is contained in:
Jonas Hahnfeld 2021-05-16 11:58:26 +02:00
parent c3b11c64ee
commit c6ce891376

View File

@ -2052,13 +2052,13 @@ endif
# FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
# implementations. This could be extended if issues are found in some platforms. # implementations. This could be extended if issues are found in some platforms.
libintl_deps = [] libintl_deps = []
if cc.has_function('ngettext') if cc.has_function('ngettext', args : osx_ldflags)
have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset') have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset')
else else
# First just find the bare library. # First just find the bare library.
libintl = cc.find_library('intl', required : false) libintl = cc.find_library('intl', required : false)
# The bare library probably won't link without help if it's static. # The bare library probably won't link without help if it's static.
if libintl.found() and not cc.has_function('ngettext', dependencies : libintl) if libintl.found() and not cc.has_function('ngettext', args : osx_ldflags, dependencies : libintl)
libintl_iconv = cc.find_library('iconv', required : false) libintl_iconv = cc.find_library('iconv', required : false)
# libintl supports different threading APIs, which may not # libintl supports different threading APIs, which may not
# require additional flags, but it defaults to using pthreads if # require additional flags, but it defaults to using pthreads if
@ -2068,10 +2068,10 @@ else
# also defining the macros with the -pthread flag. # also defining the macros with the -pthread flag.
libintl_pthread = cc.find_library('pthread', required : false) libintl_pthread = cc.find_library('pthread', required : false)
# Try linking with just libiconv. # Try linking with just libiconv.
if libintl_iconv.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_iconv]) if libintl_iconv.found() and cc.has_function('ngettext', args : osx_ldflags, dependencies : [libintl, libintl_iconv])
libintl_deps += [libintl_iconv] libintl_deps += [libintl_iconv]
# Then also try linking with pthreads. # Then also try linking with pthreads.
elif libintl_iconv.found() and libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_iconv, libintl_pthread]) elif libintl_iconv.found() and libintl_pthread.found() and cc.has_function('ngettext', args : osx_ldflags, dependencies : [libintl, libintl_iconv, libintl_pthread])
libintl_deps += [libintl_iconv, libintl_pthread] libintl_deps += [libintl_iconv, libintl_pthread]
else else
libintl = disabler() libintl = disabler()
@ -2083,7 +2083,7 @@ else
have_bind_textdomain_codeset = true # proxy-libintl supports it have_bind_textdomain_codeset = true # proxy-libintl supports it
else else
libintl_deps = [libintl] + libintl_deps libintl_deps = [libintl] + libintl_deps
have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', args : osx_ldflags,
dependencies : libintl_deps) dependencies : libintl_deps)
endif endif
endif endif