summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0e8b1b2)
raw | patch | inline | side by side (parent: 0e8b1b2)
author | Thomas Deutschmann <whissi@gentoo.org> | |
Sun, 15 Jan 2017 06:22:47 +0000 (07:22 +0100) | ||
committer | Thomas Deutschmann <whissi@gentoo.org> | |
Sun, 15 Jan 2017 06:22:47 +0000 (07:22 +0100) |
When ncurses is found the current build system will use it to build the
"noping" utility. However, that will create an automagic dependencies on
ncurses which is a problem for some distributions.
This commit adds the ability to control the ncurses usage:
a) If the user calls "configure" like before nothing changes: Configure
tries to find a suitable ncurses installation to build "noping". If
not found build system will just skip building of "noping" utility.
b) If the user calls "configure" with new "--with-ncurses" option,
configure will now fail if no suitable ncurses installation was
found.
c) If the user calls "configure" with new "--without-ncurses" option, the
build system will now skip building of "noping" utility and ncurses
will not be used.
In addition, this commit also changes the way configure will detect
ncurses: Configure now tries to use pkg-config to find ncurses but still
falls back to previous legacy checks. This will add support for ncurses
installation built with "--with-termlib" which causes several symbols to
get moved from libncurses.so to libtinfo.so.
"noping" utility. However, that will create an automagic dependencies on
ncurses which is a problem for some distributions.
This commit adds the ability to control the ncurses usage:
a) If the user calls "configure" like before nothing changes: Configure
tries to find a suitable ncurses installation to build "noping". If
not found build system will just skip building of "noping" utility.
b) If the user calls "configure" with new "--with-ncurses" option,
configure will now fail if no suitable ncurses installation was
found.
c) If the user calls "configure" with new "--without-ncurses" option, the
build system will now skip building of "noping" utility and ncurses
will not be used.
In addition, this commit also changes the way configure will detect
ncurses: Configure now tries to use pkg-config to find ncurses but still
falls back to previous legacy checks. This will add support for ncurses
installation built with "--with-termlib" which causes several symbols to
get moved from libncurses.so to libtinfo.so.
configure.ac | patch | blob | history | |
src/Makefile.am | patch | blob | history | |
src/oping.c | patch | blob | history |
diff --git a/configure.ac b/configure.ac
index aea4efba1b9d9c0d92ad30af0d89dfe3692d5f06..266bfa398c5451e3b180c641d60e9684e1bf06fc 100644 (file)
--- a/configure.ac
+++ b/configure.ac
AC_SEARCH_LIBS([clock_gettime],[rt],[],
[AC_MSG_ERROR([cannot find clock_gettime])])
-with_ncurses="no"
-AC_CHECK_HEADERS(ncursesw/ncurses.h ncurses.h, [with_ncurses="yes"], [])
-if test "x$with_ncurses" = "xyes"
-then
- have_ncursesw="no"
- have_ncurses="no"
- NCURSES_LIB=""
+AC_ARG_WITH(ncurses, AS_HELP_STRING([--with-ncurses], [Build oping CLI tool with ncurses support]))
+AS_IF([test "x$with_ncurses" != "xno"], [
+ can_build_with_ncurses="no"
+ PKG_CHECK_MODULES([NCURSES], [ncursesw], [can_build_with_ncurses=yes], [
+ PKG_CHECK_MODULES([NCURSES], [ncurses], [can_build_with_ncurses=yes], [
+ AC_CHECK_LIB(ncursesw, mvwprintw, [NCURSES_LIBS="-lncursesw"; can_build_with_ncurses=yes], [
+ AC_CHECK_LIB(ncurses, mvwprintw, [NCURSES_LIBS="-lncurses"; can_build_with_ncurses=yes])
+ ])
+ ])
+ ])
- AC_CHECK_LIB(ncursesw, mvwprintw, [have_ncursesw="yes"], [have_ncursesw="no"])
- AC_CHECK_LIB(ncurses, mvwprintw, [have_ncurses="yes"], [have_ncurses="no"])
+ AS_IF([test "x$can_build_with_ncurses" = "xyes"], [
+ AC_CHECK_HEADERS([ncursesw/curses.h ncursesw.h ncurses/curses.h ncurses.h], [can_build_with_ncurses=yes; break;], [can_build_with_ncurses=no])
+ ])
- if test "x$have_ncursesw" = "xyes"; then
- NCURSES_LIB="-lncursesw"
- else if test "x$have_ncurses" = "xyes"; then
- NCURSES_LIB="-lncurses"
- else
- with_ncurses="no"
- fi; fi
- AC_SUBST(NCURSES_LIB)
-fi
-AM_CONDITIONAL(BUILD_WITH_LIBNCURSES, test "x$with_ncurses" = "xyes")
+ AS_IF([test "x$can_build_with_ncurses" = "xno" && test "x$with_ncurses" = "xyes"], [
+ AC_MSG_ERROR([ncurses not found but explicit enabled])
+ ],
+ [test "x$can_build_with_ncurses" = "xno"], [
+ AC_MSG_WARN([Will not build oping with ncurses support -- no suiteable ncurses installation found])
+ ])
+])
+
+AM_CONDITIONAL(BUILD_WITH_LIBNCURSES, test "x$with_ncurses" != "xno" && test "x$can_build_with_ncurses" = "xyes")
AC_FUNC_STRERROR_R
diff --git a/src/Makefile.am b/src/Makefile.am
index 090d1b2947dda30682d811398a7e526ea640e452..b8571aace90044dce062294747e29e68cd0fe086 100644 (file)
--- a/src/Makefile.am
+++ b/src/Makefile.am
bin_PROGRAMS += noping
noping_SOURCES = oping.c
-noping_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_NCURSES=1
-noping_LDADD = liboping.la -lm $(NCURSES_LIB)
+noping_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_NCURSES=1 $(NCURSES_CFLAGS)
+noping_LDADD = liboping.la -lm $(NCURSES_LIBS)
endif # BUILD_WITH_LIBNCURSES
install-exec-hook:
diff --git a/src/oping.c b/src/oping.c
index 0cfe64672065c0a99dd3a1d2e9ca8bc9bd5763ce..bac45f05ad784fe67057e4aac4a2462d9def900b 100644 (file)
--- a/src/oping.c
+++ b/src/oping.c
/* http://newsgroups.derkeiler.com/Archive/Rec/rec.games.roguelike.development/2010-09/msg00050.html */
# define _X_OPEN_SOURCE_EXTENDED
-# if HAVE_NCURSESW_NCURSES_H
-# include <ncursesw/ncurses.h>
-# elif HAVE_NCURSES_H
+#if defined HAVE_NCURSESW_CURSES_H
+# include <ncursesw/curses.h>
+#elif defined HAVE_NCURSESW_H
+# include <ncursesw.h>
+#elif defined HAVE_NCURSES_CURSES_H
+# include <ncurses/curses.h>
+#elif defined HAVE_NCURSES_H
# include <ncurses.h>
-# endif
+#else
+# error "SysV or X/Open-compatible Curses header file required"
+#endif
# define OPING_GREEN 1
# define OPING_YELLOW 2