udftools: fix static linking against readline

One program of udftools uses the readline library, but fails to build
in static linking configurations. In order to fix this, we teach
udftools configure.ac to use pkg-config to detect the readline
library, and to use the proper flags provided by pkg-config.

This obviously requires an autoreconf of the package, and the addition
of host-pkgconf in the dependencies.

Fixes:

  http://autobuild.buildroot.net/results/113a94049d89b8f065112e5d4482667a7b7fb843/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2018.05.x
Thomas Petazzoni 2018-04-22 23:20:05 +02:00 committed by Peter Korsgaard
parent a2d07f1be6
commit be8cea224e
2 changed files with 62 additions and 1 deletions

View File

@ -0,0 +1,60 @@
From bdacf0101fea1dad2c89996b27cb4b9caee9109c Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date: Sun, 22 Apr 2018 22:28:09 +0200
Subject: [PATCH] configure.ac: detect readline via pkg-config when possible
pkg-config automatically handles static linking situations, where for
example readline is linked against ncurses, and therefore -lncurses
needs to be passed in addition to -lreadline.
This proposal uses pkg-config when available. If pkg-config is not
found, or readline is not found via pkg-config, we fallback to the
existing AC_CHECK_LIB(). This AC_CHECK_LIB() test is modified to set
READLINE_LIBS, like PKG_CHECK_MODULES() does. The Makefile.am
consequently uses READLINE_LIBS instead of hardcoding -lreadline.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
configure.ac | 14 ++++++++++++--
wrudf/Makefile.am | 2 +-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index 95fbba3..62b1caa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,8 +9,18 @@ AC_PROG_CC
AC_DISABLE_SHARED
AM_PROG_LIBTOOL
-dnl Checks for libraries.
-AC_CHECK_LIB(readline, readline, [ ], AC_MSG_ERROR([cannot find -lreadline.]))
+PKG_PROG_PKG_CONFIG
+
+dnl Checks for libraries, by using pkg-config when available
+if test -n "${PKG_CONFIG}" ; then
+ PKG_CHECK_MODULES([READLINE], [readline], [readline_found=yes], [readline_found=no])
+fi
+
+if test "${readline_found}" != "yes" ; then
+ AC_CHECK_LIB(readline, readline,
+ [AC_SUBST([READLINE_LIBS], [-lreadline])],
+ AC_MSG_ERROR([cannot find -lreadline.]))
+fi
dnl Checks for header files.
AC_HEADER_STDC
diff --git a/wrudf/Makefile.am b/wrudf/Makefile.am
index fe1c269..e3ab85b 100644
--- a/wrudf/Makefile.am
+++ b/wrudf/Makefile.am
@@ -1,5 +1,5 @@
bin_PROGRAMS = wrudf
-wrudf_LDADD = $(top_builddir)/libudffs/libudffs.la -lreadline
+wrudf_LDADD = $(top_builddir)/libudffs/libudffs.la $(READLINE_LIBS)
wrudf_SOURCES = wrudf.c wrudf-cmnd.c wrudf-desc.c wrudf-cdrw.c wrudf-cdr.c ide-pc.c wrudf.h ide-pc.h ../include/ecma_167.h ../include/osta_udf.h ../include/bswap.h
AM_CPPFLAGS = -I$(top_srcdir)/include -D_GNU_SOURCE -DDEBUG
--
2.14.3

View File

@ -8,6 +8,7 @@ UDFTOOLS_VERSION = 2.0
UDFTOOLS_SITE = https://github.com/pali/udftools/releases/download/$(UDFTOOLS_VERSION)
UDFTOOLS_LICENSE = GPL-2.0+
UDFTOOLS_LICENSE_FILES = COPYING
UDFTOOLS_DEPENDENCIES = readline
UDFTOOLS_AUTORECONF = YES
UDFTOOLS_DEPENDENCIES = readline host-pkgconf
$(eval $(autotools-package))