--- embedaddon/mtr/configure.ac 2013/07/21 23:43:42 1.1.1.1 +++ embedaddon/mtr/configure.ac 2019/10/21 14:25:31 1.1.1.3 @@ -1,265 +1,246 @@ -AC_INIT([mtr], [0.85]) -AC_CONFIG_SRCDIR([mtr.c]) -AM_INIT_AUTOMAKE([foreign]) +AC_PREREQ([2.59]) +AC_INIT([mtr], + [m4_esyscmd([build-aux/git-version-gen .tarball-version])], + [R.E.Wolff@BitWizard.nl], [], + [http://www.BitWizard.nl/mtr/]) +AC_CONFIG_SRCDIR([ui/mtr.c]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_USE_SYSTEM_EXTENSIONS +AM_INIT_AUTOMAKE([ + 1.7.9 + foreign + subdir-objects +]) -AC_CONFIG_FILES([version.h.tmp:version.h.in]) +# --enable-silent-rules +m4_ifdef([AM_SILENT_RULES], + [AM_SILENT_RULES([yes])], + [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) -AC_SUBST(GTK_OBJ) -AC_SUBST(CURSES_OBJ) - -GTK_OBJ=gtk.o -CURSES_OBJ=curses.o - +AC_CANONICAL_HOST AC_PROG_CC -AC_CHECK_SIZEOF(unsigned char, 1) -AC_CHECK_SIZEOF(unsigned short, 2) -AC_CHECK_SIZEOF(unsigned int, 4) -AC_CHECK_SIZEOF(unsigned long, 4) +# Check pkg-config availability. +m4_ifndef([PKG_PROG_PKG_CONFIG], + [m4_fatal( +[Could not locate the pkg-config autoconf macros. These are usually located +in /usr/share/aclocal/pkg.m4. If your macros are in a different location, +try setting the environment variable ACLOCAL_OPTS="-I/other/macro/dir" +before running ./bootstrap.sh again.]) +]) +PKG_PROG_PKG_CONFIG -AC_CHECK_HEADERS(ncurses.h ncurses/curses.h curses.h cursesX.h sys/types.h fcntl.h) -AC_CHECK_HEADERS(socket.h sys/socket.h sys/xti.h arpa/nameser_compat.h) +AM_CONDITIONAL([CYGWIN], [test "$host_os" = cygwin]) -# We don't refer to any symbols in termcap, but -lcurses on SunOS does. -# We have to trust the linker not to mess things up... (It should not -# pull in anything if we don't refer to anything in the lib). -AC_CHECK_LIB(termcap, tgetent) -AC_CHECK_LIB(tinfo, tgetent) +# Check bytes in types. +AC_CHECK_SIZEOF([unsigned char], [1]) +AC_CHECK_SIZEOF([unsigned short], [2]) +AC_CHECK_SIZEOF([unsigned int], [4]) +AC_CHECK_SIZEOF([unsigned long], [4]) -AC_CHECK_FUNC(initscr, , - AC_CHECK_LIB(ncurses, initscr, , - AC_CHECK_LIB(curses, initscr, , - AC_CHECK_LIB(cursesX, initscr, , - AC_MSG_WARN(Building without curses display support) - AC_DEFINE(NO_CURSES, 1, Define if you don't have the curses libraries available.) - CURSES_OBJ=)))) +# Check headers. +AC_CHECK_HEADERS([ \ + arpa/nameser_compat.h \ + curses.h \ + cursesX.h \ + error.h \ + fcntl.h \ + linux/icmp.h \ + ncurses.h \ + ncurses/curses.h \ + netinet/in.h \ + socket.h \ + sys/cdefs.h \ + sys/limits.h \ + sys/socket.h \ + stdio_ext.h \ + sys/types.h \ + sys/xti.h \ + values.h \ +]) -AC_CHECK_FUNCS(attron fcntl) +# Check functions. +AC_CHECK_FUNCS([ \ + __fpending \ + fcntl \ +]) -AC_CHECK_LIB(m, floor, , AC_MSG_ERROR(No math library found)) +AC_CHECK_FUNC([error], [with_error=no], + [AC_CHECK_FUNCS([verr verrx vwarn vwarnx], [with_error=yes], + [AC_MSG_ERROR([cannot find working error printing function]) + ]) +]) +AM_CONDITIONAL([WITH_ERROR], [test "x$with_error" = "xyes"]) -AC_ARG_WITH(gtk, -[ --without-gtk Do not try to use GTK+ at all], -WANTS_GTK=$withval, WANTS_GTK=yes) +AC_CHECK_FUNC([getopt_long], [with_getopt=no], [with_getopt=yes]) +AS_IF([test "x$with_getopt" = "xno"], [ + AC_DEFINE([HAVE_GETOPT], [1], [Define if libc has getopt_long]) +]) +AM_CONDITIONAL([WITH_GETOPT], [test "x$with_getopt" = "xyes"]) -AC_ARG_WITH(glib, -[ --without-glib Do not try to use glib at all], -WANTS_GLIB=$withval, WANTS_GLIB=yes) +AC_CHECK_LIB([m], [floor], [], [AC_MSG_ERROR([No math library found])]) -AC_ARG_WITH([ipinfo], -[ --without-ipinfo Do not try to use ipinfo lookup at all], -[case "${withval}" in - yes) ipinfo=true ;; - no) ipinfo=false ;; - *) AC_MSG_ERROR([bad value ${withval} for --with-ipinfo]) ;; -esac],[ipinfo=true]) -AM_CONDITIONAL([IPINFO], [test x$ipinfo = xtrue]) -if test "x$ipinfo" = "xfalse"; then - AC_DEFINE([NO_IPINFO], [1], [Define to disable ipinfo lookup]) -fi +# Find GTK +AC_ARG_WITH([gtk], + [AS_HELP_STRING([--without-gtk], [Build without the GTK+2.0 interface])], + [], [with_gtk=yes]) +AS_IF([test "x$with_gtk" = "xyes"], + [PKG_CHECK_MODULES([GTK], [gtk+-2.0], + [AC_DEFINE([HAVE_GTK], [1], [Define if gtk+-2.0 library available])], + [with_gtk=no]) +]) +AM_CONDITIONAL([WITH_GTK], [test "x$with_gtk" = xyes]) -AC_ARG_ENABLE(ipv6, -[ --disable-ipv6 Do not enable IPv6], -WANTS_IPV6=$enableval, WANTS_IPV6=yes) - -if test "x$WANTS_GTK" = "xyes"; then - AM_PATH_GTK_2_0(2.6.0, CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS -lm", - AC_MSG_WARN(Building without GTK2 display support) - AC_DEFINE(NO_GTK, 1, [Define if you don't have the GTK+ libraries available.]) - GTK_OBJ="") -else - AC_DEFINE(NO_GTK) - GTK_OBJ="" - if test "x$WANTS_GLIB" = "xyes"; then - PKG_CHECK_MODULES([GLIB], [glib-2.0]) - else - AC_DEFINE(NO_GLIB, 1, [Define if you don't have the glib libraries available.]) - fi -fi +# Find ncurses +AC_ARG_WITH([ncurses], + [AS_HELP_STRING([--without-ncurses], [Build without the ncurses interface])], + [], [with_ncurses=yes]) +AS_IF([test "x$with_ncurses" = "xyes"], -AC_CHECK_FUNC(socket, , - AC_CHECK_LIB(socket, socket, , AC_MSG_ERROR(No socket library found))) + # Prefer ncurses over curses, if both are available. + # (On Solaris 11.3, ncurses builds and links for us, but curses does not.) + [AC_SEARCH_LIBS( + [initscr], [ncurses curses], + [AC_DEFINE([HAVE_CURSES], [1], [Define if a curses library available])], + [with_ncurses=no]) +]) +AM_CONDITIONAL([WITH_CURSES], [test "x$with_ncurses" = xyes]) -AC_CHECK_FUNC(gethostbyname, , - AC_CHECK_LIB(nsl, gethostbyname, , AC_MSG_ERROR(No nameservice library found))) +AC_CHECK_LIB([cap], [cap_set_proc], [], + AS_IF([test "$host_os" = linux-gnu], + AC_MSG_WARN([Capabilities support is strongly recommended for increased security. See SECURITY for more information.]))) -#AC_CHECK_FUNC(res_init, , -# AC_CHECK_LIB(bind, res_init, , -# AC_CHECK_LIB(resolv, res_init, , AC_MSG_ERROR(No resolver library found)))) +# Enable ipinfo +AC_ARG_WITH([ipinfo], + [AS_HELP_STRING([--without-ipinfo], [Do not try to use ipinfo lookup at all])], + [], [with_ipinfo=yes]) +AM_CONDITIONAL([WITH_IPINFO], [test "x$with_ipinfo" = "xyes"]) +AS_IF([test "x$with_ipinfo" = "xyes"], [ + AC_DEFINE([HAVE_IPINFO], [1], [Define when ipinfo lookups are in use]) +]) -AC_CHECK_FUNCS(seteuid) -# AC_CHECK_FUNC(setuid, , AC_MSG_ERROR (I Need either seteuid or setuid)) +AC_ARG_ENABLE([ipv6], + [AS_HELP_STRING([--disable-ipv6], [Do not enable IPv6])], + [WANTS_IPV6=$enableval], [WANTS_IPV6=yes]) -#AC_CHECK_FUNC(res_mkquery, , -# AC_CHECK_LIB(bind, res_mkquery, , -# AC_CHECK_LIB(resolv, res_mkquery, , -# AC_CHECK_LIB(resolv, __res_mkquery, , AC_MSG_ERROR(No resolver library found))))) +AS_IF([test "x$WANTS_IPV6" = "xyes"], [ + AC_DEFINE([ENABLE_IPV6], [1], [Define to enable IPv6]) + USES_IPV6=yes +]) -# See if a library is needed for res_mkquery and if so put it in RESOLV_LIBS -RESOLV_LIBS= -AC_SUBST(RESOLV_LIBS) -AC_DEFUN([LIBRESOLVTEST_SRC], [ -AC_LANG_PROGRAM([[ -#include -#include -]], [[ -int (*res_mkquery_func)(int,...) = (int (*)(int,...))res_mkquery; -(void)(*res_mkquery_func)(0); -]])]) -AC_MSG_CHECKING([whether library required for res_mkquery]) -RESOLV_LIB_NONE= -AC_LINK_IFELSE([LIBRESOLVTEST_SRC], - [AC_MSG_RESULT([no]) - RESOLV_LIB_NONE=yes], - [AC_MSG_RESULT([yes])]) -if test "x$RESOLV_LIB_NONE" = "x"; then - AC_MSG_CHECKING([for res_mkquery in -lbind]) - STASH_LIBS="$LIBS" - LIBS="$STASH_LIBS -lbind" - AC_LINK_IFELSE([LIBRESOLVTEST_SRC], - [AC_MSG_RESULT([yes]) - RESOLV_LIBS=-lbind], - [AC_MSG_RESULT([no])]) - if test "x$RESOLV_LIBS" = "x"; then - AC_MSG_CHECKING([for res_mkquery in -lresolv]) - LIBS="$STASH_LIBS -lresolv" - AC_LINK_IFELSE([LIBRESOLVTEST_SRC], - [AC_MSG_RESULT([yes]) - RESOLV_LIBS=-lresolv], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR(No resolver library found)]) - fi - LIBS="$STASH_LIBS" -fi +AC_CHECK_FUNC([socket], [], + [AC_CHECK_LIB([socket], [socket], [], [AC_MSG_ERROR([No socket library found])])]) -AC_CHECK_FUNC(herror, , AC_DEFINE(NO_HERROR, 1, [Define if you don't have the herror() function available.])) -AC_CHECK_FUNC(strerror, , AC_DEFINE(NO_STRERROR, 1, [Define if you don't have the strerror() function available.])) +AC_CHECK_FUNC([gethostbyname], [], + [AC_CHECK_LIB([nsl], [gethostbyname], [], [AC_MSG_ERROR([No nameservice library found])])]) -USES_IPV6= -AC_CHECK_FUNC(getaddrinfo, -[if test "$WANTS_IPV6" = "yes"; then - AC_DEFINE([ENABLE_IPV6], [], [Define to enable IPv6]) - USES_IPV6=yes -fi]) +# Find resolver library. +AC_CHECK_FUNC([res_query], [RESOLV_LIBS=""], [ + AC_CHECK_LIB([resolv], [__res_query], [RESOLV_LIBS="-lresolv"], [ + AC_CHECK_LIB([resolv], [res_query], [RESOLV_LIBS="-lresolv"], [ + AC_CHECK_LIB([bind], [res_query], [RESOLV_LIBS="-lbind"], [ + AC_MSG_ERROR([No resolver library found]) + ]) + ]) + ]) +]) +dnl MacOS has res_query in libc, but needs libresolv for dn_expand(). +AS_IF([test "x" = "x$RESOLV_LIBS"], [ + AC_CHECK_LIB([resolv], [dn_expand], [RESOLV_LIBS="-lresolv"]) +]) +AC_SUBST([RESOLV_LIBS]) -AC_DEFUN([NEED_RES_STATE_EXT_TEST_SRC], [ -AC_LANG_PROGRAM([[ -#include -#include -#ifdef __GLIBC__ -#define RESEXTIN6(r,i) (*(r._u._ext.nsaddrs[i])) -#else -#define RESEXTIN6(r,i) (r._u._ext.ext->nsaddrs[i].sin6) -#endif -]], [[ -struct __res_state res; -return RESEXTIN6(res,0).sin6_addr.s6_addr[0]; -]])]) -AC_DEFUN([DEFINE_RES_STATE_EXT_TEST_SRC], [ -AC_LANG_PROGRAM([[ -#include -#include -#ifdef __GLIBC__ -#define RESEXTIN6(r,i) (*(r._u._ext.nsaddrs[i])) -#else -#define RESEXTIN6(r,i) (r._u._ext.ext->nsaddrs[i].sin6) -struct __res_state_ext { - union res_sockaddr_union nsaddrs[MAXNS]; - struct sort_list { - int af; - union { - struct in_addr ina; - struct in6_addr in6a; - } addr, mask; - } sort_list[MAXRESOLVSORT]; - char nsuffix[64]; - char nsuffix2[64]; -}; -#endif -]], [[ -struct __res_state res; -return RESEXTIN6(res,0).sin6_addr.s6_addr[0]; -]])]) -if test "x$USES_IPV6" = "xyes"; then - AC_MSG_CHECKING([whether __res_state_ext needs to be defined]) - AC_COMPILE_IFELSE([NEED_RES_STATE_EXT_TEST_SRC], - [AC_MSG_RESULT([no])], - [AC_MSG_RESULT([yes]) - AC_MSG_CHECKING([whether provided __res_state_ext definition can be compiled]) - AC_COMPILE_IFELSE([DEFINE_RES_STATE_EXT_TEST_SRC], - [AC_MSG_RESULT([yes]) - AC_DEFINE(NEED_RES_STATE_EXT, 1, [Define if struct __res_state_ext needs to be defined.])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR(Need definition for struct __res_state_ext but unable to define it.)])]) -fi - -AC_CHECK_DECLS(errno, , , [[ +# Check errno and socket data types. +AC_CHECK_DECLS([errno], [], [], [[ #include #include -]] ) + ]]) -AC_CHECK_TYPE(socklen_t, AC_DEFINE([HAVE_SOCKLEN_T], [], [Define if your system has socklen_t]) , , [[ -#include +AC_CHECK_TYPE([socklen_t], + [AC_DEFINE([HAVE_SOCKLEN_T], [], [Define if your system has socklen_t])], [], + [[#include #ifdef HAVE_SOCKET_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include -#endif -]]) +#endif]]) -AC_CHECK_TYPE(struct in_addr, AC_DEFINE([HAVE_STRUCT_INADDR], [], [Define if you have struct in_addr]), , [[ -#include +AC_CHECK_TYPES([time_t], [], [], [[ +#include ]]) -dnl Add C flags to display more warnings -AC_MSG_CHECKING(for C flags to get more warnings) +# Add C flags to display more warnings +AC_MSG_CHECKING([for C flags to get more warnings]) ac_save_CFLAGS="$CFLAGS" -if test "x$ac_cv_c_compiler_gnu" = "xyes" ; then + +AS_IF([test "x$ac_cv_c_compiler_gnu" = "xyes"], [ dnl gcc is the easiest C compiler warning_CFLAGS="-Wall" # Check if compiler supports -Wno-pointer-sign and add it if supports CFLAGS_saved="$CFLAGS" CFLAGS="$CFLAGS -Wno-pointer-sign" - AC_COMPILE_IFELSE([ AC_LANG_SOURCE([[ int foo; ]])], - [ warning_CFLAGS="${warning_CFLAGS} -Wno-pointer-sign" ],) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int foo;]])], + [warning_CFLAGS="${warning_CFLAGS} -Wno-pointer-sign"], []) CFLAGS="$CFLAGS_saved" -else +], [ dnl Vendor supplied C compilers are a bit tricky - case "$host_os" in + AS_CASE([$host_os], dnl SGI IRIX with the MipsPRO C compiler - irix*) + [irix*], [ CFLAGS="$CFLAGS -fullwarn" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[printf("test");]])],[warning_CFLAGS="-fullwarn"],[]) - ;; - + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[printf("test");]])], + [warning_CFLAGS="-fullwarn"], [] + ) + ], dnl SunOS 4.x with the SparcWorks(?) acc compiler - sunos*) - if "$CC" = "acc" ; then - CFLAGS="$CFLAGS -vc" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[printf("test");]])],[warning_CFLAGS="-vc"],[]) - fi - ;; - + [sunos*], [ + AS_IF([test "$CC" = "acc"], [ + CFLAGS="$CFLAGS -vc" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[printf("test");]])], + [warning_CFLAGS="-vc"], [] + ) + ]) + ] dnl Unknown, do nothing - *) + [*], [ warning_CFLAGS="none" - ;; - esac -fi + ] + ) +]) CFLAGS="$ac_save_CFLAGS" -if test "$warning_CFLAGS" = "none" ; then - AC_MSG_RESULT(none) -else + +AS_IF([test "$warning_CFLAGS" = "none"], [ + AC_MSG_RESULT([none]) +], [ CFLAGS="$CFLAGS $warning_CFLAGS" - AC_MSG_RESULT($warning_CFLAGS) -fi + AC_MSG_RESULT([$warning_CFLAGS]) +]) +# bash-completion +AC_ARG_WITH([bashcompletiondir], + AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), + [], + [AS_IF([`$PKG_CONFIG --exists bash-completion`], [ + with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion` + ], [ + with_bashcompletiondir=${datadir}/bash-completion/completions + ]) +]) +AC_SUBST([bashcompletiondir], [$with_bashcompletiondir]) +AC_ARG_ENABLE([bash-completion], + AS_HELP_STRING([--disable-bash-completion], [do not install bash completion files]), + [], [enable_bash_completion=yes] +) +AM_CONDITIONAL([BUILD_BASH_COMPLETION], [test "x$enable_bash_completion" = xyes]) - - +# Prepare config.h, Makefile, and output them. AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_FILES([Makefile img/Makefile]) +AC_CONFIG_FILES([Makefile]) AC_OUTPUT -