]> git.draconx.ca Git - cdecl99.git/blobdiff - configure.ac
libcdecl: Rework specifier output logic.
[cdecl99.git] / configure.ac
index 575244131ef74155aa49742c46ba98428fa969dc..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,16 +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"])
+
+DX_BISON_COMPAT
+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_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])
+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