mirror of
https://github.com/michaelrsweet/mxml.git
synced 2024-11-24 11:25:30 +00:00
2099ff6962
Bump version to 3.2. Bump copyright to 2020.
348 lines
8.0 KiB
Plaintext
348 lines
8.0 KiB
Plaintext
dnl
|
||
dnl Configuration script for Mini-XML, a small XML-like file parsing library.
|
||
dnl
|
||
dnl https://www.msweet.org/mxml
|
||
dnl
|
||
dnl Copyright © 2003-2020 by Michael R Sweet.
|
||
dnl
|
||
dnl Licensed under Apache License v2.0. See the file "LICENSE" for more
|
||
dnl information.
|
||
dnl
|
||
|
||
dnl Package name and version...
|
||
AC_INIT([Mini-XML], [3.2], [https://github.com/michaelrsweet/mxml/issues], [mxml], [https://michaelrsweet.github.io/mxml])
|
||
|
||
dnl This line is provided to ensure that you don't run the autoheader program
|
||
dnl against this project. Doing so is completely unsupported and WILL cause
|
||
dnl problems!
|
||
AH_TOP([#error "Somebody ran autoheader on this project which is unsupported and WILL cause problems."])
|
||
|
||
dnl Get the build and host platforms and split the host_os value
|
||
AC_CANONICAL_BUILD
|
||
AC_CANONICAL_HOST
|
||
|
||
[host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'`]
|
||
[host_os_version=`echo $host_os | sed -e '1,$s/^[^0-9.]*//g'`]
|
||
|
||
dnl Set the name of the config header file...
|
||
AC_CONFIG_HEADER(config.h)
|
||
|
||
dnl Version number...
|
||
VERSION="AC_PACKAGE_VERSION"
|
||
AC_SUBST(VERSION)
|
||
AC_DEFINE_UNQUOTED(MXML_VERSION, "Mini-XML v$VERSION")
|
||
|
||
dnl Clear default debugging options and set normal optimization by
|
||
dnl default unless the user asks for debugging specifically.
|
||
CFLAGS="${CFLAGS:=}"
|
||
CXXFLAGS="${CXXFLAGS:=}"
|
||
LDFLAGS="${LDFLAGS:=}"
|
||
AC_SUBST(LDFLAGS)
|
||
|
||
AC_ARG_WITH(ansi, [ --with-ansi set full ANSI C mode, default=no],
|
||
use_ansi="$withval",
|
||
use_ansi="no")
|
||
|
||
AC_ARG_WITH(archflags, [ --with-archflags set additional architecture flags, default=none],
|
||
ARCHFLAGS="$withval",
|
||
ARCHFLAGS="")
|
||
AC_SUBST(ARCHFLAGS)
|
||
|
||
AC_ARG_WITH(optim, [ --with-optim set additional optimization flags, default=none],
|
||
OPTIM="$withval",
|
||
OPTIM="")
|
||
AC_SUBST(OPTIM)
|
||
|
||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging, default=no],
|
||
if eval "test x$enable_debug = xyes"; then
|
||
OPTIM="$OPTIM -g"
|
||
fi)
|
||
|
||
AC_ARG_WITH(docdir, [ --with-docdir set directory for documentation, default=${prefix}/share/doc/mxml],
|
||
docdir="$withval",
|
||
docdir="NONE")
|
||
|
||
AC_SUBST(docdir)
|
||
|
||
AC_ARG_WITH(vsnprintf, [ --with-vsnprintf use vsnprintf emulation functions, default=auto],
|
||
use_vsnprintf="$withval",
|
||
use_vsnprintf="no")
|
||
|
||
dnl Checks for programs...
|
||
AC_PROG_CC
|
||
AC_PROG_CXX
|
||
AC_PROG_INSTALL
|
||
if test "$INSTALL" = "$ac_install_sh"; then
|
||
# Use full path to install-sh script...
|
||
INSTALL="`pwd`/install-sh -c"
|
||
fi
|
||
AC_PROG_RANLIB
|
||
AC_CHECK_TOOL(AR,ar)
|
||
AC_PATH_PROG(CP,cp)
|
||
AC_PATH_PROGS(LDCONFIG,ldconfig false)
|
||
AC_PATH_PROG(LN,ln)
|
||
AC_PATH_PROG(MKDIR,mkdir)
|
||
AC_PATH_PROG(RM,rm)
|
||
|
||
dnl Flags for "ar" command...
|
||
case "$host_os_name" in
|
||
darwin* | *bsd)
|
||
ARFLAGS="-rcv"
|
||
;;
|
||
*)
|
||
ARFLAGS="crvs"
|
||
;;
|
||
esac
|
||
|
||
AC_SUBST(ARFLAGS)
|
||
|
||
dnl Inline functions...
|
||
AC_C_INLINE
|
||
|
||
dnl Checks for string functions.
|
||
if test "x$use_ansi" != xyes; then
|
||
AC_CHECK_FUNCS(strdup strlcat strlcpy)
|
||
fi
|
||
|
||
if test "x$use_vsnprintf" != xyes; then
|
||
AC_CHECK_FUNCS(snprintf vasprintf vsnprintf)
|
||
fi
|
||
|
||
dnl Check for "long long" support...
|
||
AC_CACHE_CHECK(for long long int, ac_cv_c_long_long,
|
||
[if test "$GCC" = yes; then
|
||
ac_cv_c_long_long=yes
|
||
else
|
||
AC_TRY_COMPILE(,[long long int i;],
|
||
ac_cv_c_long_long=yes,
|
||
ac_cv_c_long_long=no)
|
||
fi])
|
||
|
||
if test $ac_cv_c_long_long = yes; then
|
||
AC_DEFINE(HAVE_LONG_LONG)
|
||
fi
|
||
|
||
dnl Threading support
|
||
AC_ARG_ENABLE(threads, [ --enable-threads enable multi-threading support])
|
||
|
||
have_pthread=no
|
||
PTHREAD_FLAGS=""
|
||
PTHREAD_LIBS=""
|
||
|
||
if test "x$enable_threads" != xno; then
|
||
AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H))
|
||
|
||
if test x$ac_cv_header_pthread_h = xyes; then
|
||
dnl Check various threading options for the platforms we support
|
||
for flag in -lpthreads -lpthread -pthread; do
|
||
AC_MSG_CHECKING([for pthread_create using $flag])
|
||
SAVELIBS="$LIBS"
|
||
LIBS="$flag $LIBS"
|
||
AC_TRY_LINK([#include <pthread.h>],
|
||
[pthread_create(0, 0, 0, 0);],
|
||
have_pthread=yes)
|
||
AC_MSG_RESULT([$have_pthread])
|
||
LIBS="$SAVELIBS"
|
||
|
||
if test $have_pthread = yes; then
|
||
PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT"
|
||
PTHREAD_LIBS="$flag"
|
||
|
||
# Solaris requires -D_POSIX_PTHREAD_SEMANTICS to
|
||
# be POSIX-compliant... :(
|
||
case "$host_os_name" in
|
||
sunos)
|
||
PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS"
|
||
;;
|
||
esac
|
||
break
|
||
fi
|
||
done
|
||
fi
|
||
fi
|
||
|
||
AC_SUBST(PTHREAD_FLAGS)
|
||
AC_SUBST(PTHREAD_LIBS)
|
||
|
||
dnl Shared library support...
|
||
DSO="${DSO:=:}"
|
||
DSOFLAGS="${DSOFLAGS:=}"
|
||
|
||
AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries, default=no])
|
||
|
||
if test x$enable_shared != xno; then
|
||
AC_MSG_CHECKING(for shared library support)
|
||
PICFLAG=1
|
||
|
||
case "$host_os_name" in
|
||
sunos | unix_s)
|
||
AC_MSG_RESULT(yes)
|
||
LIBMXML="libmxml.so.1.6"
|
||
DSO="\$(CC)"
|
||
DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)"
|
||
LDFLAGS="$LDFLAGS -R\$(libdir)"
|
||
;;
|
||
|
||
linux*)
|
||
AC_MSG_RESULT(yes)
|
||
LIBMXML="libmxml.so.1.6"
|
||
DSO="\$(CC)"
|
||
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1 -shared \$(OPTIM)"
|
||
;;
|
||
|
||
osf | gnu)
|
||
AC_MSG_RESULT(yes)
|
||
LIBMXML="libmxml.so.1.6"
|
||
DSO="\$(CC)"
|
||
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)"
|
||
LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)"
|
||
;;
|
||
|
||
*bsd | haiku*)
|
||
AC_MSG_RESULT(yes)
|
||
LIBMXML="libmxml.so.1.6"
|
||
DSO="\$(CC)"
|
||
DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)"
|
||
LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)"
|
||
;;
|
||
|
||
darwin)
|
||
AC_MSG_RESULT(yes)
|
||
LIBMXML="libmxml.1.dylib"
|
||
DSO="\$(CC)"
|
||
DSOFLAGS="$DSOFLAGS \$(RC_CFLAGS) -dynamiclib -lc"
|
||
;;
|
||
|
||
mingw)
|
||
AC_MSG_RESULT(yes)
|
||
LIBMXML="mxml1.dll"
|
||
DSO="\$(CC)"
|
||
DSOFLAGS="$DSOFLAGS -shared -Wl,--out-implib,libmxml1.a,--no-undefined,--enable-runtime-pseudo-reloc"
|
||
;;
|
||
|
||
*)
|
||
AC_MSG_RESULT(no)
|
||
AC_MSG_WARN(shared libraries not supported on this platform.)
|
||
PICFLAG=0
|
||
LIBMXML="libmxml.a"
|
||
;;
|
||
esac
|
||
else
|
||
PICFLAG=0
|
||
LIBMXML="libmxml.a"
|
||
fi
|
||
|
||
AC_SUBST(DSO)
|
||
AC_SUBST(DSOFLAGS)
|
||
AC_SUBST(LIBMXML)
|
||
AC_SUBST(PICFLAG)
|
||
|
||
dnl Add -Wall for GCC...
|
||
if test -n "$GCC"; then
|
||
CFLAGS="-Wall -D_GNU_SOURCE $CFLAGS"
|
||
|
||
if test "x$OPTIM" = x; then
|
||
OPTIM="-Os -g"
|
||
fi
|
||
|
||
if test "x$use_ansi" = xyes; then
|
||
CFLAGS="-ansi -pedantic $CFLAGS"
|
||
fi
|
||
|
||
if test $PICFLAG = 1 -a "$host_os_name" != aix; then
|
||
OPTIM="-fPIC $OPTIM"
|
||
fi
|
||
else
|
||
case "$host_os_name" in
|
||
hp-ux)
|
||
CFLAGS="-Ae $CFLAGS"
|
||
|
||
if test "x$OPTIM" = x; then
|
||
OPTIM="-O"
|
||
fi
|
||
|
||
OPTIM="+DAportable $OPTIM"
|
||
|
||
if test $PICFLAG = 1; then
|
||
OPTIM="+z $OPTIM"
|
||
fi
|
||
;;
|
||
|
||
unix_svr | sunos)
|
||
if test "x$OPTIM" = x; then
|
||
OPTIM="-O"
|
||
fi
|
||
|
||
if test $PICFLAG = 1; then
|
||
OPTIM="-KPIC $OPTIM"
|
||
fi
|
||
;;
|
||
|
||
*)
|
||
if test "x$OPTIM" = x; then
|
||
OPTIM="-O"
|
||
fi
|
||
;;
|
||
esac
|
||
fi
|
||
|
||
dnl Determine whether we are cross-compiling...
|
||
if test "$build" = "$host"; then
|
||
TARGETS="ALLTARGETS"
|
||
else
|
||
TARGETS="CROSSTARGETS"
|
||
fi
|
||
AC_SUBST(TARGETS)
|
||
|
||
dnl Fix "prefix" variable if it hasn't been specified...
|
||
if test "$prefix" = "NONE"; then
|
||
prefix="/usr/local"
|
||
fi
|
||
|
||
dnl Fix "exec_prefix" variable if it hasn't been specified...
|
||
if test "$exec_prefix" = "NONE"; then
|
||
exec_prefix="$prefix"
|
||
fi
|
||
|
||
dnl Fix "docdir" variable if it hasn't been specified...
|
||
if test "$docdir" = "NONE"; then
|
||
docdir="$datadir/doc/mxml"
|
||
fi
|
||
|
||
dnl Fix "mandir" variable if it hasn't been specified...
|
||
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then
|
||
case "$host_os_name" in
|
||
*bsd | darwin | linux*)
|
||
# *BSD, Darwin (macOS), and Linux
|
||
mandir="/usr/share/man"
|
||
;;
|
||
irix)
|
||
# SGI IRIX
|
||
mandir="/usr/share/catman/u_man"
|
||
;;
|
||
*)
|
||
# All others
|
||
mandir="/usr/man"
|
||
;;
|
||
esac
|
||
fi
|
||
|
||
dnl pkg-config stuff...
|
||
if test "$includedir" != /usr/include; then
|
||
PC_CFLAGS="-I$includedir"
|
||
else
|
||
PC_CFLAGS=""
|
||
fi
|
||
|
||
if test "$libdir" != /usr/lib; then
|
||
PC_LIBS="-L$libdir -lmxml"
|
||
else
|
||
PC_LIBS="-lmxml"
|
||
fi
|
||
|
||
AC_SUBST(PC_CFLAGS)
|
||
AC_SUBST(PC_LIBS)
|
||
|
||
dnl Output the makefile, etc...
|
||
AC_OUTPUT(Makefile mxml.pc)
|