media-radio/tlf: backport new AX_WITH_CURSES macro

Fixes compile error with ncurses[tinfo].

Package-Manager: Portage-2.3.3, Repoman-2.3.1
This commit is contained in:
Thomas Beierlein
2016-12-16 08:19:24 +01:00
parent ed721dba33
commit f55bf29d2e
3 changed files with 367 additions and 2 deletions

View File

@@ -0,0 +1,355 @@
diff -u tlf-1.2.4.5/macros/ax_with_curses.m4 tlf/macros/ax_with_curses.m4
--- tlf-1.2.4.5/macros/ax_with_curses.m4 2016-11-19 10:22:20.000000000 +0100
+++ tlf/macros/ax_with_curses.m4 2016-12-13 08:03:02.855327396 +0100
@@ -12,7 +12,9 @@
# present, along with the associated header file. The NcursesW
# (wide-character) library is searched for first, followed by Ncurses,
# then the system-default plain Curses. The first library found is the
-# one returned.
+# one returned. Finding libraries will first be attempted by using
+# pkg-config, and should the pkg-config files not be available, will
+# fallback to combinations of known flags itself.
#
# The following options are understood: --with-ncursesw, --with-ncurses,
# --without-ncursesw, --without-ncurses. The "--with" options force the
@@ -52,23 +54,29 @@
#
# (These preprocessor symbols are discussed later in this document.)
#
-# The following output variable is defined by this macro; it is precious
-# and may be overridden on the ./configure command line:
+# The following output variables are defined by this macro; they are
+# precious and may be overridden on the ./configure command line:
#
-# CURSES_LIB - library to add to xxx_LDADD
+# CURSES_LIBS - library to add to xxx_LDADD
+# CURSES_CFLAGS - include paths to add to xxx_CPPFLAGS
#
-# The library listed in CURSES_LIB is NOT added to LIBS by default. You
-# need to add CURSES_LIB to the appropriate xxx_LDADD line in your
-# Makefile.am. For example:
-#
-# prog_LDADD = @CURSES_LIB@
-#
-# If CURSES_LIB is set on the configure command line (such as by running
-# "./configure CURSES_LIB=-lmycurses"), then the only header searched for
-# is <curses.h>. The user may use the CPPFLAGS precious variable to
-# override the standard #include search path. If the user needs to
-# specify an alternative path for a library (such as for a non-standard
-# NcurseW), the user should use the LDFLAGS variable.
+# In previous versions of this macro, the flags CURSES_LIB and
+# CURSES_CPPFLAGS were defined. These have been renamed, in keeping with
+# AX_WITH_CURSES's close bigger brother, PKG_CHECK_MODULES, which should
+# eventually supersede the use of AX_WITH_CURSES. Neither the library
+# listed in CURSES_LIBS, nor the flags in CURSES_CFLAGS are added to LIBS,
+# respectively CPPFLAGS, by default. You need to add both to the
+# appropriate xxx_LDADD/xxx_CPPFLAGS line in your Makefile.am. For
+# example:
+#
+# prog_LDADD = @CURSES_LIBS@
+# prog_CPPFLAGS = @CURSES_CFLAGS@
+#
+# If CURSES_LIBS is set on the configure command line (such as by running
+# "./configure CURSES_LIBS=-lmycurses"), then the only header searched for
+# is <curses.h>. If the user needs to specify an alternative path for a
+# library (such as for a non-standard NcurseW), the user should use the
+# LDFLAGS variable.
#
# The following shell variables may be defined by this macro:
#
@@ -182,11 +190,66 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 15
+#serial 17
+
+# internal function to factorize common code that is used by both ncurses
+# and ncursesw
+AC_DEFUN([_FIND_CURSES_FLAGS], [
+ AC_MSG_CHECKING([for $1 via pkg-config])
+
+ AX_REQUIRE_DEFINED([PKG_CHECK_EXISTS])
+ _PKG_CONFIG([_ax_cv_$1_libs], [libs], [$1])
+ _PKG_CONFIG([_ax_cv_$1_cppflags], [cflags], [$1])
+
+ AS_IF([test "x$pkg_failed" = "xyes" || test "x$pkg_failed" = "xuntried"],[
+ AC_MSG_RESULT([no])
+ # No suitable .pc file found, have to find flags via fallback
+ AC_CACHE_CHECK([for $1 via fallback], [ax_cv_$1], [
+ AS_ECHO()
+ pkg_cv__ax_cv_$1_libs="-l$1"
+ pkg_cv__ax_cv_$1_cppflags="-D_GNU_SOURCE $CURSES_CFLAGS"
+ LIBS="$ax_saved_LIBS $pkg_cv__ax_cv_$1_libs"
+ CPPFLAGS="$ax_saved_CPPFLAGS $pkg_cv__ax_cv_$1_cppflags"
+
+ AC_MSG_CHECKING([for initscr() with $pkg_cv__ax_cv_$1_libs])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],
+ [
+ AC_MSG_RESULT([yes])
+ AC_MSG_CHECKING([for nodelay() with $pkg_cv__ax_cv_$1_libs])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [nodelay])],[
+ ax_cv_$1=yes
+ ],[
+ AC_MSG_RESULT([no])
+ m4_if(
+ [$1],[ncursesw],[pkg_cv__ax_cv_$1_libs="$pkg_cv__ax_cv_$1_libs -ltinfow"],
+ [$1],[ncurses],[pkg_cv__ax_cv_$1_libs="$pkg_cv__ax_cv_$1_libs -ltinfo"]
+ )
+ LIBS="$ax_saved_LIBS $pkg_cv__ax_cv_$1_libs"
+
+ AC_MSG_CHECKING([for nodelay() with $pkg_cv__ax_cv_$1_libs])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [nodelay])],[
+ ax_cv_$1=yes
+ ],[
+ ax_cv_$1=no
+ ])
+ ])
+ ],[
+ ax_cv_$1=no
+ ])
+ ])
+ ],[
+ AC_MSG_RESULT([yes])
+ # Found .pc file, using its information
+ LIBS="$ax_saved_LIBS $pkg_cv__ax_cv_$1_libs"
+ CPPFLAGS="$ax_saved_CPPFLAGS $pkg_cv__ax_cv_$1_cppflags"
+ ax_cv_$1=yes
+ ])
+])
AU_ALIAS([MP_WITH_CURSES], [AX_WITH_CURSES])
AC_DEFUN([AX_WITH_CURSES], [
- AC_ARG_VAR([CURSES_LIB], [linker library for Curses, e.g. -lcurses])
+ AC_ARG_VAR([CURSES_LIBS], [linker library for Curses, e.g. -lcurses])
+ AC_ARG_VAR([CURSES_CFLAGS], [preprocessor flags for Curses, e.g. -I/usr/include/ncursesw])
AC_ARG_WITH([ncurses], [AS_HELP_STRING([--with-ncurses],
[force the use of Ncurses or NcursesW])],
[], [with_ncurses=check])
@@ -195,20 +258,17 @@
[], [with_ncursesw=check])
ax_saved_LIBS=$LIBS
+ ax_saved_CPPFLAGS=$CPPFLAGS
+
AS_IF([test "x$with_ncurses" = xyes || test "x$with_ncursesw" = xyes],
[ax_with_plaincurses=no], [ax_with_plaincurses=check])
ax_cv_curses_which=no
# Test for NcursesW
+ AS_IF([test "x$CURSES_LIBS" = x && test "x$with_ncursesw" != xno], [
+ _FIND_CURSES_FLAGS([ncursesw])
- AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncursesw" != xno], [
- LIBS="$ax_saved_LIBS -lncursesw"
-
- AC_CACHE_CHECK([for NcursesW wide-character library], [ax_cv_ncursesw], [
- AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],
- [ax_cv_ncursesw=yes], [ax_cv_ncursesw=no])
- ])
AS_IF([test "x$ax_cv_ncursesw" = xno && test "x$with_ncursesw" = xyes], [
AC_MSG_ERROR([--with-ncursesw specified but could not find NcursesW library])
])
@@ -216,7 +276,8 @@
AS_IF([test "x$ax_cv_ncursesw" = xyes], [
ax_cv_curses=yes
ax_cv_curses_which=ncursesw
- CURSES_LIB="-lncursesw"
+ CURSES_LIBS="$pkg_cv__ax_cv_ncursesw_libs"
+ CURSES_CFLAGS="$pkg_cv__ax_cv_ncursesw_cppflags"
AC_DEFINE([HAVE_NCURSESW], [1], [Define to 1 if the NcursesW library is present])
AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])
@@ -318,16 +379,13 @@
])
])
])
+ unset pkg_cv__ax_cv_ncursesw_libs
+ unset pkg_cv__ax_cv_ncursesw_cppflags
# Test for Ncurses
+ AS_IF([test "x$CURSES_LIBS" = x && test "x$with_ncurses" != xno && test "x$ax_cv_curses_which" = xno], [
+ _FIND_CURSES_FLAGS([ncurses])
- AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncurses" != xno && test "x$ax_cv_curses_which" = xno], [
- LIBS="$ax_saved_LIBS -lncurses"
-
- AC_CACHE_CHECK([for Ncurses library], [ax_cv_ncurses], [
- AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],
- [ax_cv_ncurses=yes], [ax_cv_ncurses=no])
- ])
AS_IF([test "x$ax_cv_ncurses" = xno && test "x$with_ncurses" = xyes], [
AC_MSG_ERROR([--with-ncurses specified but could not find Ncurses library])
])
@@ -335,7 +393,8 @@
AS_IF([test "x$ax_cv_ncurses" = xyes], [
ax_cv_curses=yes
ax_cv_curses_which=ncurses
- CURSES_LIB="-lncurses"
+ CURSES_LIBS="$pkg_cv__ax_cv_ncurses_libs"
+ CURSES_CFLAGS="$pkg_cv__ax_cv_ncurses_cppflags"
AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if the Ncurses library is present])
AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])
@@ -390,12 +449,13 @@
])
])
])
+ unset pkg_cv__ax_cv_ncurses_libs
+ unset pkg_cv__ax_cv_ncurses_cppflags
- # Test for plain Curses (or if CURSES_LIB was set by user)
-
+ # Test for plain Curses (or if CURSES_LIBS was set by user)
AS_IF([test "x$with_plaincurses" != xno && test "x$ax_cv_curses_which" = xno], [
- AS_IF([test "x$CURSES_LIB" != x], [
- LIBS="$ax_saved_LIBS $CURSES_LIB"
+ AS_IF([test "x$CURSES_LIBS" != x], [
+ LIBS="$ax_saved_LIBS $CURSES_LIBS"
], [
LIBS="$ax_saved_LIBS -lcurses"
])
@@ -408,8 +468,8 @@
AS_IF([test "x$ax_cv_plaincurses" = xyes], [
ax_cv_curses=yes
ax_cv_curses_which=plaincurses
- AS_IF([test "x$CURSES_LIB" = x], [
- CURSES_LIB="-lcurses"
+ AS_IF([test "x$CURSES_LIBS" = x], [
+ CURSES_LIBS="-lcurses"
])
AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])
@@ -515,4 +575,8 @@
AS_IF([test "x$ax_cv_curses_obsolete" != xyes], [ax_cv_curses_obsolete=no])
LIBS=$ax_saved_LIBS
+ CPPFLAGS=$ax_saved_CPPFLAGS
+
+ unset ax_saved_LIBS
+ unset ax_saved_CPPFLAGS
])dnl
diff -u tlf-1.2.4.5/macros/ax_with_curses_extra.m4 tlf/macros/ax_with_curses_extra.m4
--- tlf-1.2.4.5/macros/ax_with_curses_extra.m4 2016-11-19 10:22:20.000000000 +0100
+++ tlf/macros/ax_with_curses_extra.m4 2016-12-13 08:06:03.887433760 +0100
@@ -41,18 +41,22 @@
# The following output variables may be defined by these macros; these are
# precious and may be overridden on the ./configure command line:
#
-# PANEL_LIB - library to add to xxx_LDADD before CURSES_LIB
-# MENU_LIB - library to add to xxx_LDADD before CURSES_LIB
-# FORM_LIB - library to add to xxx_LDADD before CURSES_LIB
-#
-# These libraries are NOT added to LIBS by default. You need to add them
-# to the appropriate xxx_LDADD line in your Makefile.am in front of the
-# equivalent CURSES_LIB incantation. For example:
+# PANEL_LIBS - library to add to xxx_LDADD before CURSES_LIBS
+# MENU_LIBS - library to add to xxx_LDADD before CURSES_LIBS
+# FORM_LIBS - library to add to xxx_LDADD before CURSES_LIBS
+#
+# In previous versions of this macro, the flags PANEL_LIB, MENU_LIB and
+# FORM_LIB were defined. These have been renamed, in keeping with the
+# variable scheme of PKG_CHECK_MODULES, which should eventually supersede
+# the use of AX_WITH_CURSES and AX_WITH_CURSES_* macros. These libraries
+# are NOT added to LIBS by default. You need to add them to the
+# appropriate xxx_LDADD line in your Makefile.am in front of the
+# equivalent CURSES_LIBS incantation. For example:
#
-# prog_LDADD = @PANEL_LIB@ @CURSES_LIB@
+# prog_LDADD = @PANEL_LIBS@ @CURSES_LIBS@
#
-# If one of the xxx_LIB variables is set on the configure command line
-# (such as by running "./configure PANEL_LIB=-lmypanel"), then the header
+# If one of the xxx_LIBS variables is set on the configure command line
+# (such as by running "./configure PANEL_LIBS=-lmypanel"), then the header
# file searched must NOT contain a subpath. In this case, in other words,
# only <panel.h> would be searched for. The user may use the CPPFLAGS
# precious variable to override the standard #include search path.
@@ -144,7 +148,7 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 2
+#serial 4
AC_DEFUN([_AX_WITH_CURSES_CHECKEXTRA], [
dnl Parameter 1 is the variable name component, using uppercase letters only
@@ -159,8 +163,11 @@
AS_VAR_PUSHDEF([_AX_WITH_CURSES_CHECKEXTRA_have_header_var], [HAVE_[]m4_toupper($4)])dnl
ax_saved_LIBS=$LIBS
+ ax_saved_CPPFLAGS=$CPPFLAGS
+
AC_CACHE_CHECK([for Curses $2 library with $4], [_AX_WITH_CURSES_CHECKEXTRA_header_var], [
- LIBS="$ax_saved_LIBS $5 $CURSES_LIB"
+ LIBS="$ax_saved_LIBS $5 $CURSES_LIBS"
+ CPPFLAGS="$ax_saved_CPPFLAGS $CURSES_CFLAGS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
@%:@include <$4>
]], [$3])],
@@ -169,14 +176,18 @@
])
AS_IF([test "x$[]_AX_WITH_CURSES_CHECKEXTRA_header_var" = xyes], [
_AX_WITH_CURSES_CHECKEXTRA_cv_var=yes
- AS_LITERAL_IF([$5], [$1_LIB="$5"])
+ AS_LITERAL_IF([$5], [$1_LIBS="$5"])
AC_DEFINE([_AX_WITH_CURSES_CHECKEXTRA_have_var], [1], [Define to 1 if the Curses $2 library is present])
AC_DEFINE([_AX_WITH_CURSES_CHECKEXTRA_have_header_var], [1], [Define to 1 if <$4> is present])
], [
AS_IF([test "x$[]_AX_WITH_CURSES_CHECKEXTRA_cv_var" = xyes], [],
[_AX_WITH_CURSES_CHECKEXTRA_cv_var=no])
])
+
LIBS=$ax_saved_LIBS
+ CPPFLAGS=$ax_saved_CPPFLAGS
+ unset ax_saved_LIBS
+ unset ax_saved_CPPFLAGS
AS_VAR_POPDEF([_AX_WITH_CURSES_CHECKEXTRA_have_header_var])dnl
AS_VAR_POPDEF([_AX_WITH_CURSES_CHECKEXTRA_header_var])dnl
@@ -194,16 +205,18 @@
dnl Parameter 7 is the plain Curses library command line
AC_REQUIRE([AX_WITH_CURSES])
- AC_ARG_VAR([$1_LIB], [linker library for Curses $2, e.g. $7])
+ AC_ARG_VAR([$1_LIBS], [linker library for Curses $2, e.g. $7])
- AS_IF([test "x$[]$1_LIB" != x], [
- _AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [$4], [$[]$1_LIB])
+ AS_IF([test "x$[]$1_LIBS" != x], [
+ _AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [$4], [$[]$1_LIBS])
], [
AS_IF([test "x$ax_cv_curses_which" = xncursesw], [
_AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [ncursesw/$4], [$5])
], [test "x$ax_cv_curses_which" = xncurses], [
- _AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [ncurses/$4], [$6])
_AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [$4], [$6])
+ AS_IF([test x$[]ax_cv_[]m4_tolower($1) != "xyes"], [
+ _AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [ncurses/$4], [$6])
+ ])
], [test "x$ax_cv_curses_which" = xplaincurses], [
_AX_WITH_CURSES_CHECKEXTRA([$1], [$2], [$3], [$4], [$7])
])
diff -u tlf-1.2.4.5/src/Makefile.am tlf/src/Makefile.am
--- tlf-1.2.4.5/src/Makefile.am 2016-11-19 10:22:20.000000000 +0100
+++ tlf/src/Makefile.am 2016-12-13 08:12:33.146327500 +0100
@@ -1,5 +1,5 @@
AM_CPPFLAGS = @GLIB_CFLAGS@ -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\"
-AM_CFLAGS = @AM_CFLAGS@ @PTHREAD_CFLAGS@ @HAMLIB_CFLAGS@
+AM_CFLAGS = @AM_CFLAGS@ @PTHREAD_CFLAGS@ @HAMLIB_CFLAGS@ @CURSES_CFLAGS@
bin_PROGRAMS = tlf
@@ -33,8 +33,9 @@
write_keyer.c writecabrillo.c writeparas.c \
zone_nr.c
-tlf_LDADD = @LIBM_LIB@ @PTHREAD_LIBS@ @GLIB_LIBS@ @PANEL_LIB@ @CURSES_LIB@ @HAMLIB_LIBS@ \
- @LIBXMLRPC_LIB@ @LIBXMLRPC_CLIENT_LIB@ @LIBXMLRPC_UTIL_LIB@
+tlf_LDADD = @LIBM_LIB@ @PTHREAD_LIBS@ @GLIB_LIBS@ @PANEL_LIBS@ @CURSES_LIBS@ \
+ @HAMLIB_LIBS@ @LIBXMLRPC_LIB@ @LIBXMLRPC_CLIENT_LIB@ \
+ @LIBXMLRPC_UTIL_LIB@
noinst_HEADERS = \
addarea.h addcall.h addmult.h addpfx.h addspot.h audio.h autocq.h \

View File

@@ -4,7 +4,7 @@
EAPI="5"
inherit flag-o-matic multilib
inherit autotools eutils flag-o-matic multilib
DESCRIPTION="Console-mode amateur radio contest logger"
HOMEPAGE="http://home.iae.nl/users/reinc/TLF-0.2.html"
@@ -22,6 +22,11 @@ RDEPEND="sys-libs/ncurses:=
dev-libs/xmlrpc-c[curl]"
DEPEND="${RDEPEND}"
src_prepare() {
epatch "${FILESDIR}/ncurses_tinfo.patch"
eautoreconf
}
src_configure() {
append-ldflags -L/usr/$(get_libdir)/hamlib
econf --docdir=/usr/share/doc/${PF} --enable-hamlib --enable-fldigi-xmlrpc

View File

@@ -4,7 +4,7 @@
EAPI="5"
inherit flag-o-matic multilib
inherit autotools eutils flag-o-matic multilib
DESCRIPTION="Console-mode amateur radio contest logger"
HOMEPAGE="http://home.iae.nl/users/reinc/TLF-0.2.html"
@@ -22,6 +22,11 @@ RDEPEND="sys-libs/ncurses:=
dev-libs/xmlrpc-c[curl]"
DEPEND="${RDEPEND}"
src_prepare() {
epatch "${FILESDIR}/ncurses_tinfo.patch"
eautoreconf
}
src_configure() {
append-ldflags -L/usr/$(get_libdir)/hamlib
econf --docdir=/usr/share/doc/${PF} --enable-hamlib --enable-fldigi-xmlrpc