blob: 985251725789fbe17cccaca97857bdd48c7a3088 [file] [log] [blame]
# Process this file with autoconf to produce a configure script.
# $IdPath$
# Minimum required perl version for development
PERL_VERSION=5.004
#
# autoconf setup
#
AC_PREREQ(2.50)
AC_INIT([yasm], [0.3.0], [bug-yasm@tortall.net])
#AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_AUX_DIR(config)
AM_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(yasm, [0.3.0])
AM_MAINTAINER_MODE
#
# autoconf command-line options
#
AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug],
[Turn on debugging and compile time warnings]),
[case "${enableval}" in
yes) debugging="yes" ;;
no) debugging="no" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
esac])
AC_ARG_ENABLE(warnerror,
AC_HELP_STRING([--enable-warnerror],[Treat GCC warnings as errors]),
[case "${enableval}" in
yes) warnerror="yes" ;;
no) warnerror="no" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-warnerror]) ;;
esac])
AC_ARG_ENABLE(profiling,
AC_HELP_STRING([--enable-profiling],[Enable profiling (requires GCC)]),
[case "${enableval}" in
yes) profiling="yes" ;;
no) profiling="no" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-profiling]) ;;
esac])
AC_ARG_ENABLE(gcov,
AC_HELP_STRING([--enable-gcov],[Enable gcov code coverage (requires GCC)]),
[case "${enableval}" in
yes) gcov="yes" ;;
no) gcov="no" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-gcov]) ;;
esac])
#
# Checks for programs.
#
# lex and yacc are only required for development.
AC_PROG_YACC
AC_PROG_CC_STDC
AC_PROG_INSTALL
AC_PROG_LN_S
# Libtool
AC_LIBTOOL_DLOPEN
AC_LIBTOOL_WIN32_DLL
AC_LIBLTDL_CONVENIENCE
AC_PROG_LIBTOOL
AC_SUBST([LIBTOOL_DEPS])
# REQUIRE a standard (ANSI/ISO) C compiler
if test "$ac_cv_prog_cc_stdc" = no; then
AC_MSG_ERROR([A standard (ANSI/ISO C89) C compiler is required.])
fi
# Check for Perl (for gen_instr.pl and the like, needed only for development)
AC_PATH_PROGS(PERL, $PERL perl5 perl)
# Check for groff (for rendering manpages, needed only for development)
AC_PATH_PROGS(GROFF, $GROFF groff)
# Check for compiler output filename suffixes.
AC_OBJEXT
AC_EXEEXT
#
# Checks for libraries.
#
AM_WITH_DMALLOC
#
# Checks for header files.
#
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([alloca.h limits.h sys/cdefs.h sys/ipc.h sys/msg.h sys/param.h sys/types.h sys/queue.h unistd.h])
# REQUIRE standard C headers
if test "$ac_cv_header_stdc" != yes; then
AC_MSG_ERROR([Standard (ANSI/ISO C89) header files are required.])
fi
#
# Checks for typedefs, structures, and compiler characteristics.
#
AC_C_CONST
AC_C_INLINE
AC_C_PROTOTYPES
# PID_T is used by the test suite (not required).
AC_TYPE_PID_T
AC_TYPE_SIZE_T
#
# Checks for library functions.
#
AC_FUNC_FORK
AC_FUNC_MALLOC
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([abort basename memcpy memmove strrchr toascii vsnprintf])
AC_CHECK_FUNCS([strsep mergesort])
# Look for the case-insensitive comparison functions
AC_CHECK_FUNCS([strcasecmp strncasecmp stricmp strcmpi])
# Check for stuff wanted by the test suite. None of this is required.
AC_CHECK_FUNCS([msgctl msgget msgrcv msgsnd strerror snprintf wait])
AC_LIB_LTDL
#
# Check for gettext() and other i18n/l10n things.
#
ALL_LINGUAS=""
AM_GNU_GETTEXT([external])
# autoheader templates for AM_GNU_GETTEXT checks.
AH_TEMPLATE([ENABLE_NLS], [])
AH_TEMPLATE([HAVE_CATGETS], [])
AH_TEMPLATE([HAVE_GETTEXT], [])
AH_TEMPLATE([HAVE_LC_MESSAGES], [])
AH_TEMPLATE([HAVE_STPCPY], [])
# Check for GNU C Library
AH_TEMPLATE([HAVE_GNU_C_LIBRARY], [Define if you have the GNU C Library])
AC_CACHE_CHECK([for GNU C Library], yasm_cv_header_gnulib,
AC_EGREP_CPP(gnulib,
[#include <features.h>
#ifdef __GNU_LIBRARY__
gnulib
#endif
], yasm_cv_header_gnulib=yes, yasm_cv_header_gnulib=no))
if test "$yasm_cv_header_gnulib" = yes; then
AC_DEFINE([HAVE_GNU_C_LIBRARY])
fi
# Force x86 architecture only for now.
ARCH=x86
AC_SUBST([ARCH])
# Require things for --enable-maintainer-mode option.
if test "$USE_MAINTAINER_MODE" = "yes"; then
# Enable debugging
if test "$debugging" != "no"; then
debugging=yes
fi
# Enable more warnings
if test "$GCC" = "yes"; then
MORE_CFLAGS="$MORE_CFLAGS -Waggregate-return -Wbad-function-cast -Wcast-align -Wcast-qual -Wconversion -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wsign-compare -Wstrict-prototypes -Wwrite-strings"
fi
# Require Perl
if test -z "$PERL" || test "$PERL" = ":"; then
AC_MSG_ERROR([Perl not found in \$PATH])
fi
# Require Perl >= PERL_VERSION
AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
_perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
_perl_res=$?
AC_MSG_RESULT([$_perl_version])
if test "$_perl_res" != 0; then
AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
fi
# Require groff
if test -z "$GROFF" || test "$GROFF" = ":"; then
AC_MSG_ERROR([groff not found in \$PATH])
fi
fi
#
# Add some more CFLAGS for various options.
#
# "Check" tests can use fork/wait/msg* if ALL are available.
AH_TEMPLATE([USE_FORKWAITMSG], [Combined test for fork/wait/msg*])
if ${check}; then
if test "$ac_cv_func_fork" = yes &&
test "$ac_cv_func_wait" = yes &&
test "$ac_cv_func_msgctl" = yes &&
test "$ac_cv_func_msgget" = yes &&
test "$ac_cv_func_msgrcv" = yes &&
test "$ac_cv_func_msgsnd" = yes; then
AC_DEFINE([USE_FORKWAITMSG])
AC_DEFINE([_GNU_SOURCE], 1,
[Make sure we see all GNU extensions.])
AC_DEFINE([_SVID_SOURCE], 1,
[Make sure we see all SVID extensions.])
fi
fi
if test "$debugging" = "no" ; then
changequote(,)
CFLAGS="`echo $CFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"
changequote([,])
fi
# Turn warnings into errors
if test "$warnerror" = "yes"; then
if test "$GCC" = "yes"; then
MORE_CFLAGS="$MORE_CFLAGS -Werror"
fi
fi
# Enable output of profiling information
if test "$profiling" = "yes"; then
if test "$GCC" = "yes"; then
MORE_CFLAGS="$MORE_CFLAGS -pg"
fi
fi
# Enable output of gcov information
if test "$gcov" = "yes"; then
if test "$GCC" = "yes"; then
MORE_CFLAGS="$MORE_CFLAGS -fprofile-arcs -ftest-coverage"
fi
fi
# If we're using GCC, then we can turn on -ansi -pedantic -Wall too.
if test "$GCC" = yes; then
MORE_CFLAGS="-ansi -pedantic -Wall $MORE_CFLAGS"
fi
AC_SUBST(MORE_CFLAGS)
# Substitutions for libltdl
AC_SUBST(INCLTDL)
AC_SUBST(LIBLTDL)
AC_CONFIG_FILES([Makefile
libltdl/Makefile
m4/Makefile
po/Makefile.in
])
AC_OUTPUT