forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-vcs/tig: Add patch for ncurses[tinfo] support
Package-Manager: portage-2.3.2 Signed-off-by: Justin Lecher <[email protected]>
- Loading branch information
Showing
2 changed files
with
307 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,303 @@ | ||
commit 585e5d60fb85eff2e7709d63d80c320049393694 | ||
Author: Justin Lecher <[email protected]> | ||
Date: Sat Nov 26 12:55:42 2016 +0100 | ||
|
||
Update ax_with_curses.m4 to support pkg-config | ||
|
||
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 <[email protected]> | ||
|
||
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..d58e2f2 100644 | ||
--- a/configure.ac | ||
+++ b/configure.ac | ||
@@ -21,15 +21,23 @@ AC_CHECK_FUNCS([mkstemps], [AC_SUBST([NO_MKSTEMPS], ["#"])]) | ||
AC_CHECK_FUNCS([setenv], [AC_SUBST([NO_SETENV], ["#"])]) | ||
AC_CHECK_FUNCS([strndup], [AC_SUBST([NO_STRNDUP], ["#"])]) | ||
|
||
-AX_WITH_CURSES | ||
-case "$ax_cv_ncurses" in "no") | ||
- AC_MSG_ERROR([ncurses not found]) | ||
-esac | ||
-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) | ||
+PKG_CHECK_MODULES([CURSES], [ncursesw], | ||
+ [AC_SUBST(CURSES_LIBS)], [ | ||
+ PKG_CHECK_MODULES([CURSES], [ncurses], | ||
+ [AC_SUBST(CURSES_LIBS) | ||
+ 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.])],[ | ||
+ AX_WITH_CURSES | ||
+ case "$ax_cv_ncurses" in "no") | ||
+ AC_MSG_ERROR([ncurses not found]) | ||
+ esac | ||
+ 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_LIBS) | ||
+ ]) | ||
+ ]) | ||
|
||
AX_LIB_READLINE(6.2) | ||
|
||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters