build: remove autotools support

This commit is contained in:
Danny Robson 2017-03-23 15:01:09 +11:00
parent 4f398620ab
commit 514430c614
8 changed files with 0 additions and 841 deletions

3
.gitmodules vendored
View File

@ -1,6 +1,3 @@
[submodule "m4/nc"]
path = m4/nc
url = git://git.nerdcruft.net/autocruft
[submodule "cmake"]
path = cmake
url = git://git.nerdcruft.net/cmake

View File

@ -1,490 +0,0 @@
###############################################################################
## Global build rules
ACLOCAL_AMFLAGS = -I m4
AM_CXXFLAGS =
AM_DEFAULT_SOURCE_EXT = .cpp
###############################################################################
## Source definitions
UTIL_FILES = \
adapter.hpp \
adapter.cpp \
alloc/fwd.hpp \
alloc/affix.cpp \
alloc/affix.hpp \
alloc/aligned.hpp \
alloc/allocator.cpp \
alloc/allocator.hpp \
alloc/allocator.ipp \
alloc/arena.cpp \
alloc/arena.hpp \
alloc/arena.ipp \
alloc/dynamic.hpp \
alloc/fallback.cpp \
alloc/fallback.hpp \
alloc/linear.cpp \
alloc/linear.hpp \
alloc/malloc.cpp \
alloc/malloc.hpp \
alloc/null.cpp \
alloc/null.hpp \
alloc/stack.cpp \
alloc/stack.hpp \
annotation.hpp \
ascii.hpp \
backtrace.hpp \
bezier.cpp \
bezier1.cpp \
bezier2.cpp \
bezier3.cpp \
bezier.hpp \
bitwise.cpp \
bitwise.hpp \
cast.hpp \
cmdopt.cpp \
cmdopt.hpp \
cmdopt.ipp \
colour.cpp \
colour.hpp \
colour.ipp \
coord/fwd.hpp \
coord/base.hpp \
coord.hpp \
coord/init.hpp \
coord/iostream.hpp \
coord/names.hpp \
coord/ops.hpp \
coord/store.hpp \
crypto/arc4.cpp \
crypto/arc4.hpp \
crypto/ice.cpp \
crypto/ice.hpp \
crypto/tea.cpp \
crypto/tea.hpp \
crypto/xtea.cpp \
crypto/xtea.hpp \
crypto/xxtea.cpp \
crypto/xxtea.hpp \
debug.cpp \
debug.hpp \
debug.ipp \
endian.cpp \
endian.hpp \
except.cpp \
except.hpp \
exe.hpp \
extent.cpp \
extent.hpp \
extent.ipp \
fixed.cpp \
fixed.hpp \
float.cpp \
float.hpp \
format.cpp \
format.hpp \
format.ipp \
fourcc.cpp \
fourcc.hpp \
geom/fwd.hpp \
geom/aabb.cpp \
geom/aabb.hpp \
geom/aabb.ipp \
geom/cylinder.cpp \
geom/cylinder.hpp \
geom/ellipse.cpp \
geom/ellipse.hpp \
geom/ellipse.ipp \
geom/iostream.cpp \
geom/iostream.hpp \
geom/ops.hpp \
geom/plane.cpp \
geom/plane.hpp \
geom/ray.cpp \
geom/ray.hpp \
geom/rect.cpp \
geom/rect.hpp \
geom/sample.hpp \
geom/sample.ipp \
geom/sphere.cpp \
geom/sphere.hpp \
geom/tri.cpp \
geom/tri.hpp \
hash.hpp \
hash/fwd.hpp \
hash/simple.hpp \
hash/simple.cpp \
hash/adler.cpp \
hash/adler.hpp \
hash/bsdsum.cpp \
hash/bsdsum.hpp \
hash/crc.cpp \
hash/crc.hpp \
hash/fasthash.cpp \
hash/fasthash.hpp \
hash/fletcher.cpp \
hash/fletcher.hpp \
hash/fnv1a.cpp \
hash/fnv1a.hpp \
hash/hmac.cpp \
hash/hmac.hpp \
hash/hotp.cpp \
hash/hotp.hpp \
hash/keccak.cpp \
hash/keccak.hpp \
hash/md2.cpp \
hash/md2.hpp \
hash/md4.cpp \
hash/md4.hpp \
hash/md5.cpp \
hash/md5.hpp \
hash/murmur/common.cpp \
hash/murmur/common.hpp \
hash/murmur.hpp \
hash/murmur/murmur1.cpp \
hash/murmur/murmur1.hpp \
hash/murmur/murmur2.cpp \
hash/murmur/murmur2.hpp \
hash/murmur/murmur3.cpp \
hash/murmur/murmur3.hpp \
hash/pbkdf1.cpp \
hash/pbkdf1.hpp \
hash/pbkdf2.cpp \
hash/pbkdf2.hpp \
hash/ripemd.cpp \
hash/ripemd.hpp \
hash/sha1.cpp \
hash/sha1.hpp \
hash/sha2.cpp \
hash/sha2.hpp \
hash/wang.hpp \
hash/wang.ipp \
hash/xxhash.cpp \
hash/xxhash.hpp \
introspection.cpp \
introspection.hpp \
io.cpp \
io.hpp \
io.ipp \
iterator.hpp \
json/fwd.hpp \
json/except.cpp \
json/except.hpp \
json/flat.cpp \
json/flat.hpp \
json/schema.cpp \
json/schema.hpp \
json/tree.cpp \
json/tree.hpp \
library.hpp \
log.cpp \
log.hpp \
log.ipp \
maths.cpp \
maths.hpp \
matrix.cpp \
matrix2.cpp \
matrix3.cpp \
matrix4.cpp \
matrix.hpp \
matrix.ipp \
memory/deleter.cpp \
memory/deleter.hpp \
nocopy.hpp \
pascal.cpp \
pascal.hpp \
platform.hpp \
point.cpp \
point.hpp \
point.ipp \
pointer.hpp \
polynomial.cpp \
polynomial.hpp \
polynomial.ipp \
pool.cpp \
pool.hpp \
pool.ipp \
preprocessor.hpp \
quaternion.cpp \
quaternion.hpp \
quaternion.ipp \
raii.hpp \
rand/lcg.cpp \
rand/lcg.hpp \
rand/xorshift.cpp \
rand/xorshift.hpp \
rand/mwc64x.cpp \
rand/mwc64x.hpp \
random.cpp \
random.hpp \
range.cpp \
range.hpp \
range.ipp \
rational.cpp \
rational.hpp \
rational.ipp \
region.cpp \
region.hpp \
region.ipp \
roots/bisection.hpp \
si.cpp \
signal.cpp \
signal.hpp \
signal.ipp \
si.hpp \
stats.cpp \
stats.hpp \
stream.cpp \
stream.hpp \
string.cpp \
string.hpp \
stringid.cpp \
stringid.hpp \
strongdef.cpp \
strongdef.hpp \
tap.cpp \
tap.hpp \
tap.ipp \
term.cpp \
term.hpp \
time.cpp \
time.hpp \
time.ipp \
tuple.cpp \
tuple.hpp \
types/bits.hpp \
types/comparator.hpp \
types/comparator.ipp \
types.hpp \
types/string.cpp \
types/string.hpp \
types/traits.hpp \
uri.cpp \
uri.hpp \
variadic.cpp \
variadic.hpp \
variadic.ipp \
vector.cpp \
vector.hpp \
vector.ipp \
version.cpp \
version.hpp \
view.cpp \
view.ipp \
view.hpp \
$(BACKTRACE_FILES)
POSIX_FILES = \
memory/buffer/circular.cpp \
memory/buffer/circular.hpp \
memory/buffer/paged.cpp \
memory/buffer/paged.hpp \
memory/system.cpp \
memory/system.hpp \
debug_posix.cpp \
io_posix.cpp \
io_posix.hpp \
io_posix.ipp \
library_posix.hpp \
library_posix.cpp \
posix/fwd.hpp \
posix/map.cpp \
posix/map.hpp \
time_posix.cpp
if PLATFORM_LINUX
UTIL_FILES += $(POSIX_FILES) exe_linux.cpp
endif
if PLATFORM_FREEBSD
UTIL_FILES += $(POSIX_FILES) exe_freebsd.cpp
endif
UTIL_FILES += \
posix/dir.cpp \
posix/dir.hpp \
posix/dir.ipp \
posix/fd.cpp \
posix/fd.hpp
if PLATFORM_WIN32
UTIL_FILES += \
debug_win32.cpp \
exe_win32.cpp \
io_win32.cpp \
io_win32.hpp \
io_win32.ipp \
library_win32.hpp \
library_win32.cpp \
time_win32.cpp \
win32/handle.cpp \
win32/handle.hpp \
win32/registry.hpp \
win32/registry.cpp
endif
# Select one of the available backtrace codepaths. We construct a list of
# candidates in their preferred order then used firstword to choose the best
# one.
#
# We need to use this two variable approach otherwise the final variable
# doesn't seem to be expanded at the appropriate time. Using ?= apparently
# suffers a similar problem.
__BACKTRACE_FILES=
if HAVE_EXECINFO
__BACKTRACE_FILES += backtrace_execinfo.cpp
endif
if HAVE_CAPTURESTACKBACKTRACE
__BACKTRACE_FILES += backtrace_stackwalk.cpp backtrace_win32.cpp
endif
if !HAVE_STD_EXPERIMENTAL_FILESYSTEM
AM_CXXFLAGS += -isystem ${top_srcdir}/fixup
UTIL_FILES += \
fixup/experimental/filesystem.hpp \
fixup/experimental/filesystem.cpp
endif
BACKTRACE_FILES=$(firstword $(__BACKTRACE_FILES) backtrace_null.cpp)
###############################################################################
## Local build rules
CLEANFILES = json.cpp version.cpp uri.cpp
EXTRA_DIST = json/flat.cpp.rl version.cpp.rl uri.cpp.rl
RAGELFLAGS = -F1
SUFFIXES = .cpp .cpp.rl
.cpp.rl.cpp:
$(RAGEL) $(RAGELFLAGS) -C $< -o $(builddir)/$@
###############################################################################
## Library definition
lib_LIBRARIES = libcruft-util.a
libcruft_util_a_SOURCES = $(UTIL_FILES)
libcruft_util_a_CXXFLAGS = $(AM_CXXFLAGS)
nobase_pkginclude_HEADERS = $(filter %.hpp %.ipp, $(UTIL_FILES))
pkgincludedir = $(includedir)/cruft/util
pkglibdir = $(libdir)/
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcruft-util.pc
EXTRA_DIST += ${top_srcdir}/build-aux/wine-crlf.sh
###############################################################################
## Utility programs
LDADD = $(top_builddir)/libcruft-util.a $(LIBS)
bin_PROGRAMS = \
tools/json-clean \
tools/json-validate \
tools/json-schema \
tools/hash
noinst_PROGRAMS = tools/scratch
##-----------------------------------------------------------------------------
## Tests
AM_CXXFLAGS += -I$(top_srcdir)
TEST_BIN = \
test/alloc/aligned \
test/alloc/arena \
test/alloc/dynamic \
test/alloc/linear \
test/alloc/stack \
test/affine \
test/backtrace \
test/bezier \
test/bitwise \
test/cmdopt \
test/colour \
test/coord \
test/crypto/arc4 \
test/crypto/ice \
test/crypto/tea \
test/crypto/xtea \
test/crypto/xxtea \
test/exe \
test/extent \
test/fixed \
test/float \
test/format \
test/geom/aabb \
test/geom/ray \
test/hash/checksum \
test/hash/fasthash \
test/hash/hmac \
test/hash/hotp \
test/hash/keccak \
test/hash/md2 \
test/hash/md4 \
test/hash/md5 \
test/hash/murmur \
test/hash/ripemd \
test/hash/sha1 \
test/hash/sha2 \
test/hash/xxhash \
test/hton \
test/introspection \
test/json_types \
test/maths \
test/matrix \
test/memory/deleter \
test/point \
test/polynomial \
test/pool \
test/quaternion \
test/rand/buckets \
test/range \
test/rational \
test/region \
test/roots/bisection \
test/signal \
test/stream \
test/string \
test/stringid \
test/strongdef \
test/tuple \
test/uri \
test/vector \
test/version \
test/view
if !PLATFORM_WIN32
TEST_BIN += test/memory/buffer/paged test/memory/buffer/circular
endif
TEST_EXTENSIONS = .exe #.py .sh .exe
if PLATFORM_WIN32
test_hton_LDFLAGS = -lws2_32
endif
# ideally we'd use EXE_LOG_COMPILER, but automake doesn't easily use EXEEXT as
# part of the log targets so it's just easier to run everything through the
# wine filter.
LOG_COMPILER = ${top_srcdir}/build-aux/wine-crlf.sh
LOG_DRIVER = env ASAN_OPTIONS=$(ASAN_OPTIONS):allow_user_segv_handler=true AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/build-aux/tap-driver.sh
TESTS = $(TEST_BIN) test/json-parse.sh test/json-schema.py
check_PROGRAMS = $(TEST_BIN)
EXTRA_DIST += test/json test/json-parse.sh test/json-schema.py
.PHONY: doc
doc: $(top_builddir)/Doxyfile
doxygen $<

View File

@ -1,137 +0,0 @@
AC_INIT([util-cruft], [0.1.0], [danny@nerdcruft.net])
## Explicitly set an empty CXXFLAGS if not present to prevent AC_PROG_CXX from
## generating a default -O2. This allows us to manually select -O0 when
## debugging is enabled.
: ${CXXFLAGS=""}
###############################################################################
## Build environment discovery
AC_CONFIG_AUX_DIR([build-aux])
AC_REQUIRE_AUX_FILE([tap-driver.sh])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_MACRO_DIR([m4/nc])
AC_USE_SYSTEM_EXTENSIONS
AC_CANONICAL_HOST
AC_LANG([C++])
NC_CXX
NC_PLATFORM
NC_OPTIMISATION
NC_WARNINGS
# NC_DEBUGGING is called further down, see notes at the call site.
LT_INIT
AM_INIT_AUTOMAKE([1.15 foreign dist-xz subdir-objects])
AM_SILENT_RULES([yes])
AM_MAINTAINER_MODE([enable])
AC_CONFIG_HEADERS([config.h])
AX_CHECK_GNU_MAKE
###############################################################################
## Architecture features
AC_C_BIGENDIAN
###############################################################################
## Useful headers or platform features
###############################################################################
## Platform features
## Find some POSIX functions that windows doesn't support
AS_IF([test "x${host_os}" != "xmingw32"],[
AC_SEARCH_LIBS([dlopen], [dl], [], [AC_MSG_ERROR([unable to find dl library])])
AC_SEARCH_LIBS([shm_open], [rt], [], [AC_MSG_ERROR([unable to find shm library])])
])
AC_FUNC_MMAP
AC_CHECK_HEADERS([experimental/filesystem])
AM_CONDITIONAL([HAVE_STD_EXPERIMENTAL_FILESYSTEM], [test "x$ac_cv_header_experimental_filesystem" == "xyes"])
AC_SEARCH_LIBS([backtrace], [execinfo])
AC_CHECK_FUNC([backtrace])
AM_CONDITIONAL([HAVE_EXECINFO], [test "x$ac_cv_func_backtrace" == "xyes"])
AC_CHECK_FUNC([RtlCaptureStackBackTrace])
AM_CONDITIONAL([HAVE_CAPTURESTACKBACKTRACE], [test "x$ac_cv_func_RtlCaptureStackBackTrace" == "xyes"])
AC_MSG_CHECKING([for SymFromAddr])
save_LIBS="$LIBS"
LIBS="${LIBS} -ldbghelp"
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[
#include <windows.h>
#include <dbghelp.h>
],
[SymFromAddr(nullptr,0,nullptr,nullptr); return 0;])],[
AC_MSG_RESULT([yes])
], [
AC_MSG_RESULT([no])
LIBS="$save_LIBS"
])
AC_SEARCH_LIBS([clock_gettime], [rt c], [], [
# windows doesn't have clock_gettime
AS_IF([test "x${host_os}" != "xmingw32"], [
AC_MSG_ERROR([unable to find the clock library])
])
])
AC_SEARCH_LIBS([cos], [m], [], [AC_MSG_ERROR([unable to find the maths library])])
###############################################################################
## Debug features
dnl debugging might enable sanitizers, which might alter the available
dnl libraries, so this needs to be called after we've completed our tests.
dnl specifically: -ldl is implied by some of the sanitizers.
NC_DEBUGGING
###############################################################################
## Documentation
###############################################################################
## Required packages
CHECK_RAGEL([ip.cpp])
###############################################################################
## Optional packages
AC_CHECK_TOOL([ADDR2LINE], [addr2line], [:])
AS_IF([test "x$ADDR2LINE" != "x:"], [
AC_DEFINE_UNQUOTED([ADDR2LINE], ["$ADDR2LINE"], [addr2line tool name])
])
###############################################################################
## Performance and build optimisations
###############################################################################
## Output
AC_SUBST(LIBS)
# inclusion of config.h has to go after compilation tests otherwise we risk
# failure on a clean build
AX_APPEND_FLAG([-include config.h])
NC_SUBPACKAGE([cruft-util])
AC_CONFIG_FILES([
Doxyfile
Makefile
])
AC_CONFIG_FILES([test/json-parse.sh], [chmod a+x test/json-parse.sh])
AC_CONFIG_FILES([test/json-schema.py], [chmod a+x test/json-schema.py])
AC_OUTPUT

2
m4/.gitignore vendored
View File

@ -1,2 +0,0 @@
/lt*.m4
/libtool.m4

View File

@ -1,71 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
#
# DESCRIPTION
#
# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
# added in between.
#
# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
# FLAG.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 6
AC_DEFUN([AX_APPEND_FLAG],
[dnl
AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
AS_VAR_SET_IF(FLAGS,[
AS_CASE([" AS_VAR_GET(FLAGS) "],
[*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
[
AS_VAR_APPEND(FLAGS,[" $1"])
AC_RUN_LOG([: FLAGS="$FLAGS"])
])
],
[
AS_VAR_SET(FLAGS,[$1])
AC_RUN_LOG([: FLAGS="$FLAGS"])
])
AS_VAR_POPDEF([FLAGS])dnl
])dnl AX_APPEND_FLAG

View File

@ -1,84 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_gnu_make.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_GNU_MAKE()
#
# DESCRIPTION
#
# This macro searches for a GNU version of make. If a match is found:
#
# * The makefile variable `ifGNUmake' is set to the empty string, otherwise
# it is set to "#". This is useful for including a special features in a
# Makefile, which cannot be handled by other versions of make.
# * The variable `_cv_gnu_make_command` is set to the command to invoke
# GNU make if it exists, the empty string otherwise.
# * The variable `ax_cv_gnu_make_command` is set to the command to invoke
# GNU make by copying `_cv_gnu_make_command`, otherwise it is unset.
# * If GNU Make is found, its version is extracted from the output of
# `make --version` as the last field of a record of space-separated
# columns and saved into the variable `ax_check_gnu_make_version`.
#
# Here is an example of its use:
#
# Makefile.in might contain:
#
# # A failsafe way of putting a dependency rule into a makefile
# $(DEPEND):
# $(CC) -MM $(srcdir)/*.c > $(DEPEND)
#
# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
# @ifGNUmake@ include $(DEPEND)
# @ifGNUmake@ endif
#
# Then configure.in would normally contain:
#
# AX_CHECK_GNU_MAKE()
# AC_OUTPUT(Makefile)
#
# Then perhaps to cause gnu make to override any other make, we could do
# something like this (note that GNU make always looks for GNUmakefile
# first):
#
# if ! test x$_cv_gnu_make_command = x ; then
# mv Makefile GNUmakefile
# echo .DEFAULT: > Makefile ;
# echo \ $_cv_gnu_make_command \$@ >> Makefile;
# fi
#
# Then, if any (well almost any) other make is called, and GNU make also
# exists, then the other make wraps the GNU make.
#
# LICENSE
#
# Copyright (c) 2008 John Darrington <j.darrington@elvis.murdoch.edu.au>
# Copyright (c) 2015 Enrico M. Crisostomo <enrico.m.crisostomo@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 8
AC_DEFUN([AX_CHECK_GNU_MAKE],dnl
[AC_PROG_AWK
AC_CACHE_CHECK([for GNU make],[_cv_gnu_make_command],[dnl
_cv_gnu_make_command="" ;
dnl Search all the common names for GNU make
for a in "$MAKE" make gmake gnumake ; do
if test -z "$a" ; then continue ; fi ;
if "$a" --version 2> /dev/null | grep GNU 2>&1 > /dev/null ; then
_cv_gnu_make_command=$a ;
AX_CHECK_GNU_MAKE_HEADLINE=$("$a" --version 2> /dev/null | grep "GNU Make")
ax_check_gnu_make_version=$(echo ${AX_CHECK_GNU_MAKE_HEADLINE} | ${AWK} -F " " '{ print $(NF); }')
break ;
fi
done ;])
dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise
AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifGNUmake], ["#"])], [AS_VAR_SET([ifGNUmake], [""])])
AS_VAR_IF([_cv_gnu_make_command], [""], [AS_UNSET(ax_cv_gnu_make_command)], [AS_VAR_SET([ax_cv_gnu_make_command], [${_cv_gnu_make_command}])])
AC_SUBST([ifGNUmake])
])

1
m4/nc

@ -1 +0,0 @@
Subproject commit be2fda8717ba0c1b983aa84581387457a2f903b7

View File

@ -1,53 +0,0 @@
dnl Check for presence of the Ragel State Machine generator.
dnl
dnl This macro checks for the presence of the ragel tool in the system,
dnl and whether the ragel tool is absolutely needed for a complete
dnl build.
dnl
dnl To check for the need for Ragel, you have to provide the relative
dnl path of a source file generated through Ragel: if the file is
dnl present in the source tree, a missing ragel command will not cause
dnl the configure to abort.
AC_DEFUN([_RAGEL_VARS], [
AC_ARG_VAR([RAGEL], [Ragel generator command])
AC_ARG_VAR([RAGELFLAGS], [Ragel generator flags])
])
AC_DEFUN([CHECK_RAGEL], [
AC_REQUIRE([_RAGEL_VARS])
AC_CHECK_PROG([RAGEL], [ragel], [ragel], [no])
dnl We set RAGEL to false so that it would execute the "false"
dnl command if needed.
AS_IF([test x"$RAGEL" = x"no"],
[RAGEL=false],
AS_IF([test x"$2" != "x"],
[ragel_version=`$RAGEL --version | sed -n -e '1s:.*version \(@<:@0-9@:>@\.@<:@0-9@:>@\) .*:\1:p'`
ragel_version_compare=`echo $ragel_version | tr -d .`
ragel_wanted_version=`echo $2 | tr -d .`
AS_IF([test $ragel_version_compare -lt $ragel_wanted_version],
[AC_MSG_WARN([Found Ragel $ragel_version but Ragel $2 requested])
RAGEL=false
])
]))
dnl Only test the need if not found
AS_IF([test x"$RAGEL" = x"false"], [
AC_MSG_CHECKING([whether we need ragel to regenerate sources])
AS_IF([test -a "${srcdir}/$1"], [ragel_needed=no], [ragel_needed=yes])
AC_MSG_RESULT([$ragel_needed])
AS_IF([test x"$ragel_needed" = x"yes"],
[AC_MSG_ERROR([dnl
You need Ragel to build from development sources.
You can find Ragel at http://www.complang.org/ragel/dnl
])])
])
])
AC_DEFUN([CHECK_RAGEL_AM], [
CHECK_RAGEL([$1], [$2])
AM_CONDITIONAL([HAVE_RAGEL], [test x"$RAGEL" != x"false"])
])