yasm/configure.ac
Peter Johnson 0ed2cc4451 Generate version number information from git history.
Due to the svn import structure, a special case is currently implemented
to look for the 1.1.0 branchpoint instead of the most recent tag on the
master branch.  This will be removed after the first release is tagged
on the master branch in git.

Specific details:

autogen.sh: More aggressively clean autoconf cache.
This is needed to ensure the version number is actually regenerated.

Don't generate PACKAGE_PATCHLEVEL or PACKAGE_BUILD variables.  The
genversion program now parses PACKAGE_VERSION directly.

For Mkfiles builds, YASM-VERSION.h is generated and included by the custom
config.h.  This avoids the need to edit config.h for versioning.
2011-08-27 09:25:30 -07:00

313 lines
8.8 KiB
Text

# Process this file with autoconf to produce a configure script.
#
# autoconf setup
#
AC_PREREQ(2.53)
AC_INIT([yasm],
m4_esyscmd([./YASM-VERSION-GEN.sh && tr -d '\n' <YASM-VERSION-FILE]),
[bug-yasm@tortall.net])
#AC_CONFIG_SRCDIR([src/main.c])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([1.9.6 foreign])
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])
AC_ARG_ENABLE(python,
AC_HELP_STRING([--enable-python],[Enable Python-requiring portions of build]),
[case "${enableval}" in
yes) enable_python="yes" ;;
no) enable_python="no" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
esac], enable_python="auto")
AC_ARG_ENABLE(python-bindings,
AC_HELP_STRING([--enable-python-bindings],[Build Python bindings]),
[case "${enableval}" in
yes) enable_python_bindings="yes" ;;
no) enable_python_bindings="no" ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-python-bindings]) ;;
esac], enable_python_bindings="no")
#
# Checks for programs.
#
AC_PROG_CPP
AC_PROG_CC_STDC
AC_PROG_INSTALL
AC_PROG_LN_S
#automake default ARFLAGS to "cru"
AC_CHECK_TOOLS(AR,[$AR ar],[ar])
AC_PROG_RANLIB
# 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 xmlto (for rendering manpages, needed only for development)
AC_CHECK_PROGS([XMLTO], [$XMLTO xmlto], [:])
if test "$XMLTO" = ":"; then
AC_MSG_WARN([xmlto not found, manpages will not be rebuilt.])
fi
AM_CONDITIONAL(BUILD_MAN, test "$XMLTO" != ":")
# Check for compiler output filename suffixes.
AC_OBJEXT
AC_EXEEXT
#
# Checks for libraries.
#
AM_WITH_DMALLOC
#
# Checks for header files.
#
AC_HEADER_STDC
AC_CHECK_HEADERS([strings.h libgen.h unistd.h direct.h sys/stat.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
AC_TYPE_SIZE_T
AX_CREATE_STDINT_H([libyasm-stdint.h])
#
# Checks for library functions.
#
AC_CHECK_FUNCS([abort toascii vsnprintf])
AC_CHECK_FUNCS([strsep mergesort getcwd])
AC_CHECK_FUNCS([popen ftruncate])
# Look for the case-insensitive comparison functions
AC_CHECK_FUNCS([strcasecmp strncasecmp stricmp _stricmp strcmpi])
#
# 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 to 1 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])
AC_SUBST([GCC])
# 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 -W"
MORE_CFLAGS="$MORE_CFLAGS -Waggregate-return"
MORE_CFLAGS="$MORE_CFLAGS -Wbad-function-cast"
MORE_CFLAGS="$MORE_CFLAGS -Wcast-align"
MORE_CFLAGS="$MORE_CFLAGS -Wcast-qual"
MORE_CFLAGS="$MORE_CFLAGS -Wchar-subscripts"
# MORE_CFLAGS="$MORE_CFLAGS -Wconversion"
# MORE_CFLAGS="$MORE_CFLAGS -Wdeclaration-after-statement"
# MORE_CFLAGS="$MORE_CFLAGS -Wendif-labels"
MORE_CFLAGS="$MORE_CFLAGS -Winline"
MORE_CFLAGS="$MORE_CFLAGS -Wmissing-declarations"
MORE_CFLAGS="$MORE_CFLAGS -Wmissing-prototypes"
MORE_CFLAGS="$MORE_CFLAGS -Wnested-externs"
MORE_CFLAGS="$MORE_CFLAGS -Wpointer-arith"
MORE_CFLAGS="$MORE_CFLAGS -Wreturn-type"
MORE_CFLAGS="$MORE_CFLAGS -Wshadow"
MORE_CFLAGS="$MORE_CFLAGS -Wsign-compare"
MORE_CFLAGS="$MORE_CFLAGS -Wstrict-prototypes"
MORE_CFLAGS="$MORE_CFLAGS -Wswitch"
MORE_CFLAGS="$MORE_CFLAGS -Wwrite-strings"
MORE_CFLAGS="$MORE_CFLAGS -Wno-undef"
# MORE_CFLAGS="$MORE_CFLAGS -Wno-unused"
MORE_CFLAGS="$MORE_CFLAGS -Wno-unused-parameter"
fi
fi
#
# Add some more CFLAGS for various options.
#
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 "$USE_MAINTAINER_MODE" = "yes"; then
if test "$GCC" = yes; then
MORE_CFLAGS="-ansi -pedantic -Wall $MORE_CFLAGS"
fi
fi
AC_SUBST(MORE_CFLAGS)
AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
AC_ARG_VAR(CCLD_FOR_BUILD,[build system C linker frontend])
if test "${build}" != "${host}" ; then
CC_FOR_BUILD=${CC_FOR_BUILD-cc}
CCLD_FOR_BUILD=${CCLD_FOR_BUILD-cc}
else
CC_FOR_BUILD="\$(CC)"
CCLD_FOR_BUILD="\$(CC)"
fi
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(CCLD_FOR_BUILD)
AC_ARG_VAR(CPP_FOR_HOST,[host system C preprocessor])
if test "$build" != "$target" || test "$build" != "$host"; then
CPP_PROG="${CPP_FOR_HOST-cc -E}"
else
CPP_PROG="${CPP}"
fi
AC_DEFINE_UNQUOTED([CPP_PROG], "${CPP_PROG}", [Command name to run C preprocessor])
# Detect if we have Python
if test x$enable_python = xno; then
have_python=no
else
AC_MSG_NOTICE([Checking for Python])
have_python=no
AM_PATH_PYTHON(2.4,[],[AC_MSG_WARN([Python not found])])
if test -z "$PYTHON" || test "$PYTHON" = : ; then
have_python=no
else
have_python=yes
fi
if test x$have_python = xno ; then
if test x$enable_python = xyes ; then
AC_MSG_ERROR([Python explicitly requested, but a suitable Python version was not found])
else
AC_MSG_WARN([Could not find a suitable version of Python])
fi
fi
fi
# Detect if we can build Python bindings
# (needs Python, Python headers, and Cython)
if test x$enable_python_bindings = xno; then
have_python_bindings=no
else
AC_MSG_NOTICE([Checking to see if we can build Python bindings])
have_python_bindings=no
if test x$have_python = xyes; then
AC_MSG_CHECKING([for Cython >= 0.11.3])
CYTHON_CHECK_VERSION(0.11.3, [AC_MSG_RESULT(yes)
have_cython=yes],
[AC_MSG_RESULT(no)
have_cython=no])
AM_CHECK_PYTHON_HEADERS(have_python_headers=yes,have_python_headers=no)
if test x$have_cython = xyes -a x$have_python_headers = xyes ; then
have_python_bindings=yes
fi
fi
if test x$have_python_bindings = xno ; then
if test x$enable_python_bindings = xyes ; then
AC_MSG_ERROR([Building Python bindings explicitly requested, but can't build Python bindings because either Cython, Python headers or a suitable Python version was not found])
else
AC_MSG_WARN([Couldn't find either Cython, the Python headers or a suitable version of Python, not building Python bindings])
fi
fi
fi
AM_CONDITIONAL(HAVE_PYTHON, test x$have_python = xyes)
AM_CONDITIONAL(HAVE_PYTHON_BINDINGS, test x$have_python_bindings = xyes)
AC_CONFIG_FILES([Makefile
po/Makefile.in
])
AC_OUTPUT