]> git.draconx.ca Git - cdecl99.git/blobdiff - configure.ac
Release 1.3.
[cdecl99.git] / configure.ac
index a0bf6b12831ab175e4686a36fc53ab09320c994a..30be7cb56702ddd7bca2c07a0be05f55454021a9 100644 (file)
@@ -1,24 +1,57 @@
-dnl Copyright © 2011-2013, 2020-2021 Nick Bowler
+dnl Copyright © 2011-2013, 2020-2024 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.
 
+DX_PATCH_GNULIB
+
 AC_PREREQ([2.68])
-AC_INIT([cdecl99], [0.1], [nbowler@draconx.ca])
-AC_CONFIG_HEADER([config.h])
+AC_INIT([cdecl99], [1.3], [nbowler@draconx.ca])
+AC_CONFIG_HEADERS([config.h])
 
 AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign subdir-objects])
 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
 AM_PROG_CC_C_O
 gl_EARLY
 
+AC_HEADER_ASSERT
+AC_TYPE_UNSIGNED_LONG_LONG_INT
+AC_CHECK_TYPES([unsigned __int64], [], [],
+  [unsigned __int64 foo = -1; /* avoid false positive result on VAX C */])
+AC_C_FLEXIBLE_ARRAY_MEMBER
+AC_C_INLINE
+DX_C_FOR_DECLARATIONS
+DX_C_ALIGNAS
+AM_PROG_AR
+
 LT_INIT
 gl_INIT
 
+# 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 the wcwidth replacement module is not used by the library, there is
+# no need to support varying locales (programs set locale once at startup).
+AC_DEFINE([GNULIB_WCHAR_SINGLE_LOCALE], [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
@@ -35,21 +68,22 @@ 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.])])
+  [AC_DEFINE([HAVE_RL_ADD_HISTORY], [1],
+    [Define to 1 if readline supports add_history.])])
 
 m4_include([lib/gnulib.mk])
-DX_GLSYM_PREFIX([cdecl__])
+DX_GLSYM_PREFIX([cdecl__gl_])
+DX_GNULIB_SYMFILES([lib/symfiles], [s])
+AM_CONDITIONAL([BUILD_STATIC], [test x"$enable_static" = x"yes"])
+
+AM_CONDITIONAL([USE_NLS], [test x"$USE_NLS" = 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.
-m4_traceoff([AM_GNU_GETTEXT])
-AM_GNU_GETTEXT([external])
-DX_LINGUAS
+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"])
 
-DX_PROG_FLEX([], [], [FLEX=false])
-DX_PROG_BISON([], [], [BISON=false])
 DX_BISON_COMPAT
 BISON_I18N
 
@@ -60,25 +94,41 @@ 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])
 
+AS_CASE([$dx_cv_bison_define_cmdline], [yes],
+[AC_CACHE_CHECK([whether $BISON supports api.token.raw],
+  [dx_cv_bison_api_token_raw], [dx_cv_bison_api_token_raw=no
+cat >conftest.y <<'EOF'
+%token T_TEST
+%{
+int yylex(void) { return 0; }
+void yyerror(const char *msg) { }
+%}
+%%
+input:
+EOF
+AS_IF([$BISON --define api.token.raw conftest.y >&AS_MESSAGE_LOG_FD 2>&1],
+[AC_COMPUTE_INT([testval], [T_TEST], [#include "conftest.tab.c"
+])
+AS_IF([test "$testval" -lt 256], [dx_cv_bison_api_token_raw=yes])])])
+AS_CASE([$dx_cv_bison_api_token_raw], [yes],
+  [AS_VAR_APPEND([BISON_COMPAT], [" --define api.token.raw"])])])
+
 AH_TOP([#include <conf_pre.h>])
 AH_BOTTOM([#include <conf_post.h>])
 
-AC_ARG_WITH([gsl],
-       [AS_HELP_STRING([--with-gsl],
-               [specify whether to build test programs requiring the GNU Scientific Library. [default=auto]]
-       )], [with_gsl=$withval], [with_gsl=auto])
+AC_CONFIG_TESTDIR([.], [t:.])
+DX_PROG_AUTOTEST_AM
 
-AS_CASE([$with_gsl],
-       [no], [have_gsl=no],
-       [yes], [DX_CHECK_GSL([1.0], [have_gsl=yes])],
-       [DX_CHECK_GSL([1.0], [have_gsl=yes], [have_gsl=no])])
-AM_CONDITIONAL([HAVE_GSL], [test x"$have_gsl" = x"yes"])
+AC_CACHE_CHECK([for getline], [dx_cv_have_getline],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>
+], [ssize_t (*x)() = getline;
+char *p = 0;
+size_t n = 0;
+return getline(&p, &n, stdin);
+])], [dx_cv_have_getline=yes], [dx_cv_have_getline=no])])
+AS_CASE([$dx_cv_have_getline], [yes],
+  [AC_DEFINE([HAVE_GETLINE], [1],
+    [Define to 1 if the getline function is available.])])
 
-AC_CONFIG_TESTDIR([.], [test:.])
-DX_PROG_AUTOTEST
-AM_CONDITIONAL([HAVE_AUTOTEST], [test x"$dx_cv_autotest_works" = x"yes"])
-
-AC_CONFIG_FILES([
-       Makefile
-])
+AC_CONFIG_FILES([Makefile])
 AC_OUTPUT