# configure.ac for XS modules
#
# Copyright 2015-2023 Free Software Foundation, Inc.
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
AC_INIT([texinfo], [0])
AM_INIT_AUTOMAKE
AC_CONFIG_MACRO_DIR([gnulib/m4])
b='\'
d='$'
o='@<:@' dnl quadrigraph for [ - see autoconf documentatoin
c='@:>@' dnl quadrigraph for ]
# This turns a string like "cc='cc';" into a string like "cc".
# Afterwards, convert \ into / in case \ is a path separator,
# so it is not interpreted as a special character by the shell.
sed_script="
s/^$o^=$c*= *//
s/^'//
s/ *; *$//
s/'$d//
s/$b$b/$b//g"
fetch_conf ()
{
          conf_value=`${PERL} -V:$1`
          conf_value=`echo $conf_value | sed "$sed_script"`
} 
AC_DEFUN([lookup_perl_conf],
         [AC_MSG_CHECKING([Perl configuration value $1])
          fetch_conf $1
          AC_MSG_RESULT([$conf_value])
          AC_SUBST([PERL_CONF_$1], [$conf_value])
])
AC_DEFUN([lookup_perl_conf_values],
          [m4_foreach([var], [$1], [lookup_perl_conf(var)])
])
AC_ARG_ENABLE([perl-xs],
    AS_HELP_STRING([--enable-perl-xs],
              [build Perl XS modules for speed (default: yes)]),
    [if test $enableval = 'no'; then
       disable_xs=yes
     else
       disable_xs=no
     fi],
     [disable_xs=no])
# PERL_EXT_var are user variables for a Perl XS extension, allowing
# configuring at the top-level with e.g.
#     "./configure CFLAGS='-g -O0' PERL_EXT_CFLAGS='-g'".
# May be useful if the Perl interpreter was compiled with a
# different compiler.  Also in top-level configure.ac.
AC_ARG_VAR([PERL_EXT_CFLAGS], [Compiler flags for a Perl extension])
AC_ARG_VAR([PERL_EXT_CPPFLAGS], [C preprocessor flags for a Perl extension])
AC_ARG_VAR([PERL_EXT_LDFLAGS], [Linker flags for a Perl extension])
AC_ARG_VAR([PERL_EXT_CC], [Compiler for a Perl extension])
# See (automake)Conditional Subdirectories.  Even if --disable-perl-xs
# is given, we still need to configure this directory minimally, so that
# "make dist" will work.
if test x$disable_xs != xyes; then
  AC_PATH_PROG([PERL], [perl])
  if test -n "$PERL_EXT_CC" ; then
    CC=$PERL_EXT_CC
  else
    # It's essential that we use the same compiler that was used to build
    # Perl.  Otherwise Perl's "config.h" will be incorrect.  This overrides
    # the check in AC_PROG_CC below.
    lookup_perl_conf([cc])
    CC=$conf_value
  fi
  # Wipe cache values in case -C was given at the top level
  ac_cv_prog_CC= ; unset ac_cv_prog_CC
  ac_cv_prog_ac_ct_CC= ; unset ac_cv_prog_ac_ct_CC
  lookup_perl_conf_values([[ccflags], [cccdlflags], [optimize]])
  
  # flags for linking the extension, e.g. -rpath.
  lookup_perl_conf([ccdlflags])
  # Override these variables set by configure at the top level, because 
  # the compiler used in this subdirectory might be different.
  # Change these now so they are used in the checks that follow.
  CFLAGS="$PERL_EXT_CFLAGS $PERL_CONF_ccflags"
  CPPFLAGS=$PERL_EXT_CPPFLAGS
  LDFLAGS="$PERL_EXT_LDFLAGS $PERL_CONF_ccdlflags $PERL_CONF_cccdlflags"
  
  lookup_perl_conf([libperl])
  # Change libperl.so into -lperl to indicate a library dependency to 
  # libtool.
  # Special case for Cygwin to change e.g. cygperl5_22.dll into -lperl
  PERL_CONF_libperl=`echo $PERL_CONF_libperl \
             | sed -e 's/^lib/-l/' \
                   -e 's/\..*//' \
                   -e 's/^cygperl.*/-lperl/' `
  
  lookup_perl_conf_values([[archlibexp], [privlibexp]])
  
  AC_CONFIG_HEADERS([config.h:config.in])
fi # not disable_xs
AC_PROG_CC
gl_EARLY
AM_GNU_GETTEXT([external])
AM_MISSING_PROG([XSUBPP], [xsubpp])
AM_MISSING_PROG([GAWK], [gawk])
gl_INIT
LT_INIT([disable-static])
# Note that the above have to be outside the disable_xs block
# otherwise it causes an error with configure.
# Disable gnulib provision of "Microsoft deprecated alias" functions on
# MS-Windows to prevent a clash with definitions in Perl header files
GL_GNULIB_MDA_FDOPEN=0
GL_GNULIB_MDA_MKTEMP=0
GL_GNULIB_MDA_PUTENV=0
host_needs_no_undefined=no
case "$host" in *-mingw32 | *-mingw64 | *-msdosdjgpp | *-cygwin )
  host_needs_no_undefined=yes ;;
esac     
AM_CONDITIONAL([HOST_NEEDS_NO_UNDEFINED],
               [test "x$host_needs_no_undefined" = "xyes"])
AM_CONDITIONAL([HAVE_ICONV],
               [test "x$am_func_iconv" = "xyes"])
# Do not include Perl configuration values when outputting these variables,
# as advised in the automake manual for CFLAGS and LDFLAGS, which could be
# reset by the user.  Here PERL_EXT_CFLAGS and PERL_EXT_LDFLAGS play the
# same role as CFLAGS and LDFLAGS.  The Perl configuration values are then
# readded in Makefile.am.
# For CPPFLAGS we do not follow the same rule because we want to keep the
# flags added by gnulib macros, as for libunistring there is no separate
# CPPFLAGS-like variable, the main CPPFLAGS is modified.
CFLAGS=$PERL_EXT_CFLAGS
LDFLAGS=$PERL_EXT_LDFLAGS
AC_CONFIG_FILES([Makefile gnulib/lib/Makefile])
AC_OUTPUT