[pacman-dev] build: add libintl dependency to meson and the .pc file

Message ID 20200518191812.3220751-1-eschwartz@archlinux.org
State Accepted, archived
Headers show
Series [pacman-dev] build: add libintl dependency to meson and the .pc file | expand

Commit Message

Eli Schwartz May 18, 2020, 7:18 p.m. UTC
In order to use gettext on systems where it is not part of libc, the
correct linker flags are needed in libalpm.pc (for static compilation).
This has never been the case.

The new meson build system currently only checks for ngettext in libc,
but does not fall back to searching for the existence of -lintl; add it
to the libalpm dependencies.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
---

Fixes build on MSYS2, and possibly others. Part of
https://github.com/msys2/MSYS2-packages/pull/1951

 lib/libalpm/libalpm.pc.in | 2 +-
 meson.build               | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

Comments

Allan McRae June 11, 2020, 12:49 a.m. UTC | #1
On 19/5/20 5:18 am, Eli Schwartz wrote:
> In order to use gettext on systems where it is not part of libc, the
> correct linker flags are needed in libalpm.pc (for static compilation).
> This has never been the case.
> 
> The new meson build system currently only checks for ngettext in libc,
> but does not fall back to searching for the existence of -lintl; add it
> to the libalpm dependencies.
> 
> Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
> ---
> 
> Fixes build on MSYS2, and possibly others. Part of
> https://github.com/msys2/MSYS2-packages/pull/1951
> 

From that pull request, I can see the patch has been tested in the land
of MSYS2, so all good.

A

Patch

diff --git a/lib/libalpm/libalpm.pc.in b/lib/libalpm/libalpm.pc.in
index 126a6e6a..da7f96aa 100644
--- a/lib/libalpm/libalpm.pc.in
+++ b/lib/libalpm/libalpm.pc.in
@@ -10,4 +10,4 @@  Version: @LIB_VERSION@
 Requires.private: libarchive @pc_crypto@ @pc_libcurl@ @pc_gpgme@
 Cflags: -I${includedir} @LFS_CFLAGS@
 Libs: -L${libdir} -lalpm
-Libs.private: @LIBS@ @pc_gpgme_libs@
+Libs.private: @LIBS@ @pc_gpgme_libs@ @LIBINTL@
diff --git a/meson.build b/meson.build
index 331f02b8..aa3bd4d9 100644
--- a/meson.build
+++ b/meson.build
@@ -77,9 +77,13 @@  conf.set_quoted('CACHEDIR', join_paths(LOCALSTATEDIR, 'cache/pacman/pkg/'))
 conf.set_quoted('HOOKDIR', join_paths(SYSCONFDIR, 'pacman.d/hooks/'))
 conf.set_quoted('ROOTDIR', ROOTDIR)
 
+libintl = dependency('', required: false)
 if get_option('i18n')
   if not cc.has_function('ngettext')
-    error('ngettext not found but NLS support requested')
+    libintl = cc.find_library('intl', required : false, static: get_option('buildstatic'))
+    if not libintl.found()
+      error('ngettext not found but NLS support requested')
+    endif
   endif
   conf.set('ENABLE_NLS', 1)
 endif
@@ -301,7 +305,7 @@  libcommon = static_library(
   include_directories : includes,
   install : false)
 
-alpm_deps = [crypto_provider, libarchive, libcurl, gpgme]
+alpm_deps = [crypto_provider, libarchive, libcurl, libintl, gpgme]
 
 libalpm_a = static_library(
   'alpm_objlib',