#------------------------------------------------------------------------ # TDOM_ENABLE_DTD -- # # Allows the building with DTD support # # Arguments: # None # # Results: # # Adds the following arguments to configure: # --enable-dtd=yes|no # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_ENABLE_DTD, [ AC_MSG_CHECKING([whether to enable dtd support]) AC_ARG_ENABLE(dtd, AC_HELP_STRING([--enable-dtd], [build with dtd support (default: on)]), [tcl_ok=$enableval], [tcl_ok=yes]) if test "${enable_dtd+set}" = set; then enableval="$enable_dtd" tcl_ok=$enableval else tcl_ok=yes fi if test "$tcl_ok" = "yes" ; then AC_MSG_RESULT([yes]) AC_DEFINE(XML_DTD) else AC_MSG_RESULT([no]) fi ]) #------------------------------------------------------------------------ # TDOM_ENABLE_NS -- # # Allows the building with namespace support # # Arguments: # None # # Results: # # Adds the following arguments to configure: # --enable-ns=yes|no # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_ENABLE_NS, [ AC_MSG_CHECKING([whether to enable namespace support]) AC_ARG_ENABLE(ns, AC_HELP_STRING([--enable-ns], [build with XML namespace support (default: on)]), [tcl_ok=$enableval], [tcl_ok=yes]) if test "${enable_ns+set}" = set; then enableval="$enable_ns" tcl_ok=$enableval else tcl_ok=yes fi if test "$tcl_ok" = "yes" ; then AC_MSG_RESULT([yes]) AC_DEFINE(XML_NS) else AC_MSG_RESULT([no]) fi ]) #------------------------------------------------------------------------ # TDOM_ENABLE_UNKNOWN -- # # Allows the building with (or without) the custom unknown command # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --enable-unknown=yes|no # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_ENABLE_UNKNOWN, [ AC_MSG_CHECKING([whether to enable built-in unknown command]) AC_ARG_ENABLE(ucmd, AC_HELP_STRING([--enable-unknown], [enable built-in unknown command (default: off)]), [tcl_ok=$enableval], [tcl_ok=no]) if test "${enable_unknown+set}" = set; then enableval="$enable_unknown" tcl_ok=$enableval else tcl_ok=no fi if test "$tcl_ok" = "no" ; then AC_MSG_RESULT([no]) AC_DEFINE(TDOM_NO_UNKNOWN_CMD) else AC_MSG_RESULT([yes]) fi ]) #------------------------------------------------------------------------ # TDOM_ENABLE_TDOMALLOC -- # # Allows the building with tDOMs block allocator for nodes # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --enable-tdomalloc=yes|no # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_ENABLE_TDOMALLOC, [ AC_MSG_CHECKING([whether to enable tDOMs block allocator]) AC_ARG_ENABLE(tdomalloc, AC_HELP_STRING([--enable-tdomalloc], [build with the tDOM allocator (default: off)]), [tcl_ok=$enableval], [tcl_ok=no]) if test "${enable_tdomalloc+set}" = set; then enableval="$enable_tdomalloc" tcl_ok=$enableval else tcl_ok=no fi if test "$tcl_ok" = "yes" ; then AC_MSG_RESULT([yes]) TEA_ADD_SOURCES([generic/domalloc.c]) else AC_MSG_RESULT([no]) AC_DEFINE(USE_NORMAL_ALLOCATOR) fi ]) #------------------------------------------------------------------------ # TDOM_ENABLE_LESS_NS -- # # Building with lower limit of different XML namespace declarations # per document. # # Arguments: # None # # Results: # # Adds the following arguments to configure: # --enable-lessns=yes|no # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_ENABLE_LESS_NS, [ AC_MSG_CHECKING([whether to enable lower limit for XML ns declarations per document]) AC_ARG_ENABLE(lessns, AC_HELP_STRING([--enable-lessns], [build with lower limit for XML ns declarations (default: off)]), [tcl_ok=$enableval], [tcl_ok=no]) if test "${enable_lessns+set}" = set; then enableval="$enable_lessns" tcl_ok=$enableval else tcl_ok=no fi if test "$tcl_ok" = "yes" ; then AC_MSG_RESULT([yes]) AC_DEFINE(TDOM_LESS_NS) else AC_MSG_RESULT([no]) fi ]) #------------------------------------------------------------------------ # TDOM_ENABLE_HTML5 -- # # Building with gumbo support for HTML5 parsing (dom parse -html5) # # Arguments: # None # # Results: # # Adds the following arguments to configure: # --enable-html5=yes|no # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_ENABLE_HTML5, [ AC_PATH_TOOL([PKG_CONFIG],[pkg-config]) AC_MSG_CHECKING([whether to enable support for HTML5 parsing (using gumbo)]) AC_ARG_ENABLE(html5, AC_HELP_STRING([--enable-html5], [build with HTML5 parsing support (default: off)]), [tcl_ok=$enableval], [tcl_ok=no]) if test "${enable_html5+set}" = set; then enableval="$enable_html5" tcl_ok=$enableval else tcl_ok=no fi HTML5_LIBS="" HTML5_INCLUDES="" if test "$tcl_ok" = "yes" ; then # Check if pkg-config is available if test "x$PKG_CONFIG" = x; then tcl_ok=no AC_MSG_ERROR([cannot find pkg-config needed for --enable-html5.]) fi fi if test "$tcl_ok" = "yes" ; then HAVEGUMBO=`$PKG_CONFIG --exists gumbo && echo "1"` if test "$HAVEGUMBO" = "1" ; then AC_MSG_RESULT([yes]) AC_DEFINE(TDOM_HAVE_GUMBO) if test "${TEA_PLATFORM}" = "windows" ; then HTML5_LIBS="-Wl,-Bstatic `$PKG_CONFIG --static --libs gumbo` -Wl,-Bdynamic" else HTML5_LIBS="`$PKG_CONFIG --libs gumbo`" fi HTML5_INCLUDES="`$PKG_CONFIG --cflags gumbo`" else AC_MSG_ERROR([The required lib gumbo not found]) fi else AC_MSG_RESULT([no]) fi ]) #------------------------------------------------------------------------ # TDOM_PATH_AOLSERVER # # Allows the building with support for AOLserver # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --with-aolserver=... # # Defines the following vars: # AOL_DIR Full path to the directory containing AOLserver distro # # Sets the following vars: # NS_AOLSERVER #------------------------------------------------------------------------ AC_DEFUN(TDOM_PATH_AOLSERVER, [ AC_MSG_CHECKING([for AOLserver configuration]) AC_ARG_WITH(aol, AC_HELP_STRING([--with-aolserver], [directory with AOLserver distribution]), with_aolserver=${withval}) AC_CACHE_VAL(ac_cv_c_aolserver,[ if test x"${with_aolserver}" != x ; then if test -f "${with_aolserver}/include/ns.h" ; then ac_cv_c_aolserver=`(cd ${with_aolserver}; pwd)` else AC_MSG_ERROR([${with_aolserver} directory doesn't contain ns.h]) fi fi ]) if test x"${ac_cv_c_aolserver}" = x ; then AC_MSG_RESULT([none found]) else AOL_DIR=${ac_cv_c_aolserver} AOL_INCLUDES="-I\"${AOL_DIR}/include\"" if test "`uname -s`" = Darwin ; then aollibs=`ls ${AOL_DIR}/lib/libns* 2>/dev/null` if test x"$aollibs" != x ; then AOL_LIBS="-L\"${AOL_DIR}/lib\" -lnsd -lnsthread" fi fi AC_MSG_RESULT([found AOLserver in $AOL_DIR]) AC_DEFINE(NS_AOLSERVER) AC_DEFINE(USE_NORMAL_ALLOCATOR) fi ]) #------------------------------------------------------------------------ # TDOM_PATH_EXPAT # # Allows the building against a shared, system-wide expat library In # doubt, it falls back to the bundled expat copy # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --with-expat=... # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_PATH_EXPAT, [ AC_MSG_CHECKING([for expat]) AC_ARG_WITH(expat, AC_HELP_STRING([--with-expat], [directory with expat installation]), , [with_expat=no]) AC_CACHE_VAL(ac_cv_c_expat,[ case $with_expat in no) ;; yes) for f in /usr/local /usr; do if test -f "$f/include/expat.h" ; then ac_cv_c_expat=`(cd $f; pwd)` break fi done ;; *) if test -f "$with_expat/include/expat.h"; then ac_cv_c_expat=`(cd $with_expat; pwd)` else AC_MSG_ERROR([${with_expat} directory doesn't contain expat.h]) fi esac ]) if test x"${ac_cv_c_expat}" = x ; then AC_MSG_RESULT([Using bundled expat distribution]) TEA_ADD_SOURCES([expat/xmlrole.c \ expat/xmltok.c \ expat/xmlparse.c \ expat/loadlibrary.c]) TEA_ADD_INCLUDES([-I${srcdir}/expat]) AC_DEFINE([XML_POOR_ENTROPY], 1, [Define to use poor entropy in lack of better source.]) else AC_MSG_RESULT([Using shared expat found in ${ac_cv_c_expat}]) TEA_ADD_INCLUDES(-I${ac_cv_c_expat}/include) TEA_ADD_LIBS([-lexpat]) fi ]) #------------------------------------------------------------------------ # TDOM_EXPAT_ENTROPY # # Only useful if building with the included expat. Allows to # determine the source of entropy used by the lib. If the argument # is something else then the default "auto", this argument value # will be a #define. Use XML_POOR_ENTROPY to fall back to the old # expat hash table salting. The default is to determine the best # available source and to use this. # # Arguments: # none # # Results: # # Adds the following arguments to configure: # --with-entropy=... # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_EXPAT_ENTROPY, [ AC_MSG_NOTICE([checking which source of entropy to use]) AC_ARG_WITH(entropy, AC_HELP_STRING([--with-entropy], [source of entropy to use]), , [with_entropy=auto]) case $with_entropy in no) AC_DEFINE([XML_POOR_ENTROPY], 1, [Define to use poor entropy.]) ;; auto) AC_MSG_CHECKING([for arc4random_buf (BSD or libbsd)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ #include /* for arc4random_buf on BSD, for NULL */ #if defined(HAVE_LIBBSD) # include #endif int main() { arc4random_buf(NULL, 0U); return 0; } ])], [ AC_DEFINE([HAVE_ARC4RANDOM_BUF], [1], [`arc4random_buf' function.]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_MSG_CHECKING([for arc4random (BSD, macOS or libbsd)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ #if defined(HAVE_LIBBSD) # include #else # include #endif int main() { arc4random(); return 0; } ])], [ AC_DEFINE([HAVE_ARC4RANDOM], [1], [`arc4random' function.]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ #include /* for NULL */ #include int main() { return getrandom(NULL, 0U, 0U); } ])], [ AC_DEFINE([HAVE_GETRANDOM], [1], [`getrandom' function.]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)]) AC_LINK_IFELSE([AC_LANG_SOURCE([ #include /* for NULL */ #include /* for syscall */ #include /* for SYS_getrandom */ int main() { syscall(SYS_getrandom, NULL, 0, 0); return 0; } ])], [ AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1], [`syscall' and `SYS_getrandom'.]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) AC_DEFINE([XML_DEV_URANDOM], 1, [include code reading entropy from `/dev/urandom'.]) AC_DEFINE([XML_POOR_ENTROPY], 1, [Define to use poor entropy in lack of better source.]) ;; HAVE_GETRANDOM) AC_DEFINE([HAVE_GETRANDOM], 1, [Linux + glibc >=2.25]) ;; HAVE_SYSCALL_GETRANDOM) AC_DEFINE([HAVE_SYSCALL_GETRANDOM], 1, [Linux + glibc <2.25]) ;; HAVE_ARC4RANDOM_BUF) AC_DEFINE([HAVE_ARC4RANDOM_BUF], 1, [BSD / macOS >=10.7]) ;; HAVE_ARC4RANDOM) AC_DEFINE([HAVE_ARC4RANDOM], 1, [BSD / macOS <10.7]) ;; XML_DEV_URANDOM) AC_DEFINE([XML_DEV_URANDOM], 1, [Linux / BSD / macOS (/dev/urandom).]) ;; XML_POOR_ENTROPY) AC_DEFINE([XML_POOR_ENTROPY], 1, [Define to use poor entropy in lack of better source.]) ;; *) AC_MSG_ERROR([${with_entropy} not known.]) esac ]) #------------------------------------------------------------------------ # TDOM_PATH_CONFIG -- # # Locate the tdomConfig.sh file # # Arguments: # None # # Results: # # Adds the following arguments to configure: # --with-tdom=... # # Defines the following vars: # TDOM_BIN_DIR Full path to the directory with tdomConfig.sh #------------------------------------------------------------------------ AC_DEFUN(TDOM_PATH_CONFIG, [ if test x"${no_tdom}" = x ; then AC_MSG_CHECKING([for tDOM configuration]) AC_ARG_WITH(tdom, AC_HELP_STRING([--with-tdom], [directory containing tDOM configuration (tdomConfig.sh)]), with_tdomconfig=${withval}) no_tdom=true if test "${TEA_PLATFORM}" = "windows" ; then tdom_bindir=win else tdom_bindir=unix fi AC_CACHE_VAL(ac_cv_c_tdomconfig,[ # First check to see if --with-tdom was specified. if test x"${with_tdomconfig}" != x ; then if test -f "${with_tdomconfig}/tdomConfig.sh" ; then ac_cv_c_tdomconfig=`(cd ${with_tdomconfig}; pwd)` else AC_MSG_ERROR([${with_tdomconfig} directory doesn't contain tdomConfig.sh]) fi fi # Then check for a sibling installation if test x"${ac_cv_c_tdomconfig}" = x ; then for i in \ ../tdom `ls -dr ../tdom-* 2>/dev/null` \ ../../tdom `ls -dr ../../tdom-* 2>/dev/null` \ ../../../tdom `ls -dr ../../../tdom-* 2>/dev/null` ; do if test -f "$i/$tdom_bindir/tdomConfig.sh" ; then ac_cv_c_tdomconfig=`(cd $i/$tdom_bindir; pwd)` fi done fi # Then check if tnc/tdom are compilied in the source tree if test x"${ac_cv_c_tdomconfig}" = x ; then if test -f "../../$tdom_bindir/tdomConfig.sh" ; then ac_cv_c_tdomconfig=`(cd ../../$tdom_bindir; pwd)` fi fi # Check in a few common install locations if test x"${ac_cv_c_tdomconfig}" = x ; then for i in \ `ls -d ${prefix}/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` ; do if test -f "$i/tdomConfig.sh" ; then ac_cv_c_tdomconfig=`(cd $i; pwd)` fi done fi # Check in a few other private locations if test x"${ac_cv_c_tdomconfig}" = x ; then for i in \ ${srcdir}/../tdom \ `ls -dr ${srcdir}/../tdom[[0-9]].[[0-9]]* 2>/dev/null` ; do if test -f "$i/$tdom_bindir/tdomConfig.sh" ; then ac_cv_c_tdomconfig=`(cd $i/$tdom_bindir; pwd)` fi done fi ]) if test x"${ac_cv_c_tdomconfig}" = x ; then TDOM_BIN_DIR="# no tDOM configuration file found" AC_MSG_WARN(Can't find tDOM configuration definitions) exit 0 else no_tdom= TDOM_BIN_DIR=${ac_cv_c_tdomconfig} AC_MSG_RESULT(found $TDOM_BIN_DIR/tdomConfig.sh) fi fi ]) #------------------------------------------------------------------------ # TDOM_LOAD_CONFIG -- # # Load the tdomConfig.sh file # # Arguments: # # Requires the following vars to be set: # TDOM_BIN_DIR # # Defines the following vars: # # Sets the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_LOAD_CONFIG, [ AC_MSG_CHECKING([for existence of $TDOM_BIN_DIR/tdomConfig.sh]) if test -f "$TDOM_BIN_DIR/tdomConfig.sh" ; then AC_MSG_RESULT([loading]) . $TDOM_BIN_DIR/tdomConfig.sh else AC_MSG_RESULT([file not found]) fi if test -f "${TDOM_BIN_DIR}/Makefile" ; then TDOM_STUB_LIB_SPEC=${TDOM_BUILD_STUB_LIB_SPEC} fi AC_SUBST(TDOM_VERSION) AC_SUBST(TDOM_STUB_LIB_SPEC) AC_SUBST(TDOM_SRC_DIR) ]) #------------------------------------------------------------------------ # TDOM_EXPORT_CONFIG -- # # Define the data to insert into the ${PACKAGE_NAME}Config.sh file # # Arguments: # None # # Results: # Subst the following vars: # #------------------------------------------------------------------------ AC_DEFUN(TDOM_EXPORT_CONFIG, [ #-------------------------------------------------------------------- # These are for ${PACKAGE_NAME}Config.sh #-------------------------------------------------------------------- # pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib) eval pkglibdir="[$]{libdir}/${PACKAGE_NAME}${PACKAGE_VERSION}" if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then eval PKG_STUB_LIB_FLAG="-l${PACKAGE_NAME}stub${PACKAGE_VERSION}" else eval PKG_STUB_LIB_FLAG="-l${PACKAGE_NAME}stub`echo ${PACKAGE_VERSION} | tr -d .`" fi PKG_BUILD_STUB_LIB_SPEC="-L`pwd` ${PKG_STUB_LIB_FLAG}" PKG_STUB_LIB_SPEC="-L${pkglibdir} ${PKG_STUB_LIB_FLAG}" PKG_BUILD_STUB_LIB_PATH="`pwd`/[$]{PKG_STUB_LIB_FILE}" PKG_STUB_LIB_PATH="${pkglibdir}/[$]{PKG_STUB_LIB_FILE}" AC_SUBST(PKG_BUILD_STUB_LIB_SPEC) AC_SUBST(PKG_STUB_LIB_SPEC) AC_SUBST(PKG_BUILD_STUB_LIB_PATH) AC_SUBST(PKG_STUB_LIB_PATH) ]) # Local Variables: # mode: autoconf # End: # EOF