]> git.draconx.ca Git - cdecl99.git/blobdiff - configure.ac
cdecl99: Reverse sense of "interactive" global variable.
[cdecl99.git] / configure.ac
index 103bae2253fe0caa874c87fdadef91f958d32f23..f1bd702e331e1c9c2246fa94a10968a788b30b45 100644 (file)
@@ -1,23 +1,78 @@
-dnl Copyright © 2011 Nick Bowler
+dnl Copyright © 2011-2013, 2020-2023 Nick Bowler
 dnl
 dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
 dnl This is free software: you are free to do what the fuck you want to.
 dnl There is NO WARRANTY, to the extent permitted by law.
 
 AC_PREREQ([2.68])
 dnl
 dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
 dnl This is free software: you are free to do what the fuck you want to.
 dnl There is NO WARRANTY, to the extent permitted by law.
 
 AC_PREREQ([2.68])
-AC_INIT([cdecl99], [0.1], [nbowler@draconx.ca])
-AC_CONFIG_HEADER([config.h])
-AC_CONFIG_MACRO_DIR([m4])
+AC_INIT([cdecl99], [1.2a], [nbowler@draconx.ca])
+AC_CONFIG_HEADERS([config.h])
 
 
-AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])
+AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign subdir-objects dist-xz])
 AM_SILENT_RULES([yes])
 AM_SILENT_RULES([yes])
+DX_AUTOMAKE_COMPAT
+
+AC_ARG_WITH([readline],
+  [AS_HELP_STRING([--with-readline],
+    [use GNU readline for line-editing functionality (default: auto)])],
+  [], [with_readline=auto])
+AS_CASE([$with_readline],
+  [no], [gl_cv_lib_readline=no],
+  [yes|auto], [:],
+  [*], [AC_MSG_ERROR([invalid option --with-readline=$with_readline])])
 
 AC_PROG_CC_C99
 
 AC_PROG_CC_C99
+AM_PROG_CC_C_O
 gl_EARLY
 
 LT_INIT
 gl_INIT
 
 gl_EARLY
 
 LT_INIT
 gl_INIT
 
+AC_HEADER_ASSERT
+AC_C_FLEXIBLE_ARRAY_MEMBER
+
+# Work around quoting bug in Gnulib threadlib.m4 which prevents
+# correct detection on e.g., Solaris 8.  These platforms require
+# PTHREAD_IN_USE_DETECTION_HARD to be set otherwise cdecl99 will
+# crash when reporting an error as initialization is not done.
+#
+# If this gets fixed in Gnulib, we can remove this.
+AS_CASE([$host_os],
+  [[solaris2.[1-9] | solaris2.[1-9].*]],
+    [AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD])])
+
+# As the mbrtowc replacement module is not used by the library, there is
+# no need for multithreaded mbrtowc (all programs are single threaded).
+AC_DEFINE([GNULIB_MBRTOWC_SINGLE_THREAD], [1], [Define to 1.])
+
+AS_IF([test x"$gl_cv_lib_readline" = x"no"],
+  [AS_IF([test x"$with_readline" = x"yes"],
+    [AC_MSG_FAILURE([--with-readline requested but readline was not found])],
+    [dx_cv_rl_add_history=no])])
+AC_CACHE_CHECK([if readline supports add_history], [dx_cv_rl_add_history], [dnl
+dx_cv_rl_add_history=no
+dx_save_libs=$LIBS
+LIBS="$LIBS $LIBREADLINE"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
+#include <stdio.h>
+#if HAVE_READLINE_HISTORY_H
+#  include <readline/history.h>
+#endif
+], [dnl
+(*add_history)("");
+])], [dx_cv_rl_add_history=yes], [dx_cv_rl_add_history=no])
+LIBS=$dx_save_libs
+])
+
+AS_IF([test x"$dx_cv_rl_add_history" = x"yes"],
+  [AC_DEFINE([HAVE_RL_ADD_HISTORY], [1],
+    [Define to 1 if readline supports add_history.])])
+
+m4_include([lib/gnulib.mk])
+DX_GLSYM_PREFIX([cdecl__gl_])
+DX_GNULIB_SYMFILES([lib/symfiles], [s])
+AM_CONDITIONAL([BUILD_STATIC], [test x"$enable_static" = x"yes"])
+
 dnl We provide our own makefile rules for gettext.  Disable tracing of
 dnl AM_GNU_GETTEXT to prevent autoreconf from running autopoint, and to
 dnl prevent automake from growing gratuitous error conditions.
 dnl We provide our own makefile rules for gettext.  Disable tracing of
 dnl AM_GNU_GETTEXT to prevent autoreconf from running autopoint, and to
 dnl prevent automake from growing gratuitous error conditions.
@@ -25,17 +80,33 @@ m4_traceoff([AM_GNU_GETTEXT])
 AM_GNU_GETTEXT([external])
 DX_LINGUAS
 
 AM_GNU_GETTEXT([external])
 DX_LINGUAS
 
-AC_ARG_VAR([FLEX], [Command to invoke flex.  Defaults to flex.])
-AC_ARG_VAR([FLEXFLAGS], [Additional options to pass to flex.])
-AC_CHECK_PROGS([FLEX], [flex], [flex])
+AM_CONDITIONAL([USE_NLS], [test x"$USE_NLS" = x"yes"])
+
+DX_PROG_FLEX([], [have_flex=yes], [have_flex=no])
+AM_CONDITIONAL([HAVE_FLEX], [test x"$have_flex" = x"yes"])
+
+DX_PROG_BISON([], [have_bison=yes], [have_bison=no])
+AM_CONDITIONAL([HAVE_BISON], [test x"$have_bison" = x"yes"])
 
 
-AC_ARG_VAR([BISON], [Command to invoke GNU Bison.  Defaults to bison.])
-AC_ARG_VAR([BISONFLAGS], [Additional options to pass to Bison.])
-AC_CHECK_PROGS([BISON], [bison], [bison])
+DX_BISON_COMPAT
 BISON_I18N
 
 BISON_I18N
 
+BISON_COMPAT=
+AS_IF([test x"$dx_cv_bison_api_header_include" = x"yes"],
+  [BISON_COMPAT="'--define=api.header.include={\"\$(*F).h\"}'"])
+AS_IF([test x"$dx_cv_bison_warn_no_deprecated" = x"yes"],
+  [AS_VAR_APPEND([BISON_COMPAT], ["${BISON_COMPAT:+ }-Wno-deprecated"])])
+AC_SUBST([BISON_COMPAT])
+
+AH_TOP([#include <conf_pre.h>])
+AH_BOTTOM([#include <conf_post.h>])
+
+AC_CONFIG_TESTDIR([.], [t:.])
+DX_PROG_AUTOTEST
+AM_CONDITIONAL([HAVE_AUTOTEST], [test x"$dx_cv_autotest_works" = x"yes"])
+AC_CHECK_FUNCS_ONCE([strtoumax strtoull __strtoull])
+
 AC_CONFIG_FILES([
 AC_CONFIG_FILES([
-       lib/Makefile
        Makefile
 ])
 AC_OUTPUT
        Makefile
 ])
 AC_OUTPUT