+++ /dev/null
-From 5eee0216193ef9e6ca39906aeeb7b7774097a2f7 Mon Sep 17 00:00:00 2001
-From: Justin Lecher <jlec@gentoo.org>
-Date: Sat, 26 Nov 2016 12:55:42 +0100
-Subject: [PATCH] Use pkg-config to detect ncurses
-
-Update ax_with_curses.m4 to latest version and use pkg-config as primary
-detection mechanism for ncurses. Latest version of ax_with_curses.m4
-supports pkg-config. This is important as libcurses is split into
-libcurses.so and libtinfo.so on many distros and linking against
-libcurses.so is not sufficiant. Pkg-config allows proper detection of
-necessary libs.
-
-Signed-off-by: Justin Lecher <jlec@gentoo.org>
-
-Also include ax_require_defined.m4 to fix issue with undefined macro:
-
- configure:3751: error: possibly undefined macro: AX_REQUIRE_DEFINED
- If this token and others are legitimate, please use m4_pattern_allow.
- See the Autoconf documentation.
- configure:3751: error: possibly undefined macro: PKG_CHECK_EXISTS
-
-Signed-off-by: Jonas Fonseca <jonas.fonseca@gmail.com>
----
- config.make.in | 2 +-
- configure.ac | 2 +-
- tools/ax_require_defined.m4 | 37 ++++++++++++
- tools/ax_with_curses.m4 | 142 ++++++++++++++++++++++++++++++++------------
- 4 files changed, 142 insertions(+), 41 deletions(-)
- create mode 100644 tools/ax_require_defined.m4
-
-diff --git a/config.make.in b/config.make.in
-index bf41d85..a7c9ce3 100644
---- a/config.make.in
-+++ b/config.make.in
-@@ -12,7 +12,7 @@ CC = @CC@
- CFLAGS = @CFLAGS@ @COVERAGE_CFLAGS@
- CPPFLAGS = @CPPFLAGS@ -DHAVE_CONFIG_H
- LDFLAGS = @LDFLAGS@
--LDLIBS = @LIBS@ @CURSES_LIB@
-+LDLIBS = @LIBS@ @CURSES_LIBS@
-
- ASCIIDOC = @ASCIIDOC@
- XMLTO = @XMLTO@
-diff --git a/configure.ac b/configure.ac
-index 0bcfb3f..8b956ba 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -29,7 +29,7 @@ case "$ax_cv_ncursesw" in "no")
- AC_MSG_WARN([The found ncurses library does not support wide-char.])
- AC_MSG_WARN([This means that tig will not correctly render UTF-8.])
- esac
--AC_SUBST(CURSES_LIB)
-+AC_SUBST(CURSES_LIBS)
-
- AX_LIB_READLINE(6.2)
-
-diff --git a/tools/ax_require_defined.m4 b/tools/ax_require_defined.m4
-new file mode 100644
-index 0000000..cae1111
---- /dev/null
-+++ b/tools/ax_require_defined.m4
-@@ -0,0 +1,37 @@
-+# ===========================================================================
-+# http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_REQUIRE_DEFINED(MACRO)
-+#
-+# DESCRIPTION
-+#
-+# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
-+# been defined and thus are available for use. This avoids random issues
-+# where a macro isn't expanded. Instead the configure script emits a
-+# non-fatal:
-+#
-+# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
-+#
-+# It's like AC_REQUIRE except it doesn't expand the required macro.
-+#
-+# Here's an example:
-+#
-+# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
-+#
-+# Copying and distribution of this file, with or without modification, are
-+# permitted in any medium without royalty provided the copyright notice
-+# and this notice are preserved. This file is offered as-is, without any
-+# warranty.
-+
-+#serial 1
-+
-+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
-+ m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
-+])dnl AX_REQUIRE_DEFINED
-diff --git a/tools/ax_with_curses.m4 b/tools/ax_with_curses.m4
-index 33a37ac..9461eef 100644
---- a/tools/ax_with_curses.m4
-+++ b/tools/ax_with_curses.m4
-@@ -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:
-+# 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_LIB@
-+# prog_LDADD = @CURSES_LIBS@
-+# prog_CPPFLAGS = @CURSES_CFLAGS@
- #
--# 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.
-+# 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:
- #
-@@ -88,7 +96,7 @@
- #
- # AX_WITH_CURSES
- # if test "x$ax_cv_ncursesw" != xyes && test "x$ax_cv_ncurses" != xyes; then
--# AX_MSG_ERROR([requires either NcursesW or Ncurses library])
-+# AC_MSG_ERROR([requires either NcursesW or Ncurses library])
- # fi
- #
- # If any Curses library will do (but one must be present and must support
-@@ -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 13
-+#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 @@ AC_DEFUN([AX_WITH_CURSES], [
- [], [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 @@ AC_DEFUN([AX_WITH_CURSES], [
- 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 @@ AC_DEFUN([AX_WITH_CURSES], [
- ])
- ])
- ])
-+ 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 @@ AC_DEFUN([AX_WITH_CURSES], [
- 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 @@ AC_DEFUN([AX_WITH_CURSES], [
- ])
- ])
- ])
-+ 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 @@ AC_DEFUN([AX_WITH_CURSES], [
- 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 @@ AC_DEFUN([AX_WITH_CURSES], [
- 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