Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  configure.ac   Sprache: unbekannt

 
dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
dnl configure.ac serves as input for the GNU autoconf package
dnl in order to create a configure script.

dnl cspell:enableCompoundWords
dnl cspell:includeRegExp ^\s*#.*$
dnl cspell:includeRegExp ^\s*dnl.*$
dnl cspell:includeRegExp /AC_MSG_[A-Z]*\([^)]*\)/
dnl cspell:ignoreRegExp /[A-Z]{4,}/
dnl cspell:ignoreRegExp /\${?[A-za-z]*/
dnl cspell:ignoreRegExp /[ ']-[fglmBWXZ][a-z][^ ]*/
dnl cspell:ignoreRegExp / -isystem /

# The version number in the second argument to AC_INIT should be four numbers separated by
# periods. Some parts of the code requires the first one to be less than 128 and the others to be less
# than 256. The four numbers can optionally be followed by a period and a free-form string containing
# no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
# several non-alphanumeric characters, those are split off and used only for the
# ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.

AC_INIT([LibreOffice],[25.8.3.2],[],[],[http://documentfoundation.org/])

dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
dnl so check for the version of autoconf that is actually used to create the configure script
AC_PREREQ([2.59])
m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
    [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])

if test -n "$BUILD_TYPE"; then
    AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
fi

save_CC=$CC
save_CXX=$CXX

first_arg_basename()
{
    for i in $1; do
        basename "$i"
        break
    done
}

CC_BASE=`first_arg_basename "$CC"`
CXX_BASE=`first_arg_basename "$CXX"`

BUILD_TYPE="LibO"
SCPDEFS=""
GIT_NEEDED_SUBMODULES=""
LO_PATH= # used by path_munge to construct a PATH variable


FilterLibs()
{
    # Return value: $filteredlibs

    filteredlibs=
    if test "$COM" = "MSC"; then
        for f in $1; do
            if test "x$f" != "x${f#-L}"; then
                filteredlibs="$filteredlibs -LIBPATH:${f:2}"
            elif test "x$f" != "x${f#-l}"; then
                filteredlibs="$filteredlibs ${f:2}.lib"
            else
                filteredlibs="$filteredlibs $f"
            fi
        done
    else
        for f in $1; do
            case "$f" in
                # let's start with Fedora's paths for now
                -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
                    # ignore it: on UNIXoids it is searched by default anyway
                    # but if it's given explicitly then it may override other paths
                    # (on macOS it would be an error to use it instead of SDK)
                    ;;
                *)
                    filteredlibs="$filteredlibs $f"
                    ;;
            esac
        done
    fi
}

PathFormat()
{
    # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
    # function is called also on Unix.
    #
    # Return value: $formatted_path and $formatted_path_unix.
    #
    # $formatted_path is the argument in Windows format, but using forward slashes instead of
    # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
    # or shell metacharacters).
    #
    # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
    # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
    # Unix pathname.
    #
    # Errors out if 8.3 names are needed but aren't present for some of the path components.

    # Examples:
    #
    # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
    #
    # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
    #
    # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
    #
    # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
    #
    # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
    #
    # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
    #
    # /usr/bin/find.exe => C:/cygwin64/bin/find.exe

    if test -z "$1"; then
        formatted_path=""
        formatted_path_unix=""
        return
    fi

    if test -n "$UNITTEST_WSL_PATHFORMAT"; then
        printf "PathFormat $1 ==> "
    fi

    formatted_path="$1"
    if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
        if test "$build_os" = "wsl"; then
            formatted_path=$(echo "$formatted_path" | tr -d '\r')
        fi

        pf_conv_to_dos=
        # spaces,parentheses,brackets,braces are problematic in pathname
        # so are backslashes
        case "$formatted_path" in
            *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
                pf_conv_to_dos="yes"
            ;;
        esac
        if test "$pf_conv_to_dos" = "yes"; then
            if test "$build_os" = "wsl"; then
                case "$formatted_path" in
                    /*)
                        formatted_path=$(wslpath -w "$formatted_path")
                        ;;
                esac
                formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
            elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
                formatted_path=`cygpath -sm "$formatted_path"`
            else
                formatted_path=`cygpath -d "$formatted_path"`
            fi
            if test $? -ne 0;  then
                AC_MSG_ERROR([path conversion failed for "$1".])
            fi
        fi
        fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
        fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
        if test "$fp_count_slash$fp_count_colon" != "00"; then
            if test "$fp_count_colon" = "0"; then
                new_formatted_path=`realpath "$formatted_path"`
                if test $? -ne 0;  then
                    AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
                else
                    formatted_path="$new_formatted_path"
                fi
            fi
            if test "$build_os" = "wsl"; then
                if test "$fp_count_colon" != "0"; then
                    formatted_path=$(wslpath "$formatted_path")
                    local final_slash=
                    case "$formatted_path" in
                        */)
                            final_slash=/
                            ;;
                    esac
                    formatted_path=$(wslpath -m $formatted_path)
                    case "$formatted_path" in
                        */)
                            ;;
                        *)
                            formatted_path="$formatted_path"$final_slash
                            ;;
                    esac
                else
                    formatted_path=$(wslpath -m "$formatted_path")
                fi
            else
                formatted_path=`cygpath -m "$formatted_path"`
            fi
            if test $? -ne 0;  then
                AC_MSG_ERROR([path conversion failed for "$1".])
            fi
        fi
        fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
        if test "$fp_count_space" != "0"; then
            AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
        fi
    fi
    if test "$build_os" = "wsl"; then
        # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
        formatted_path_unix=$(wslpath "$formatted_path")
    else
        # But Cygwin can
        formatted_path_unix="$formatted_path"
    fi
    if test -n "$WSL_ONLY_AS_HELPER"; then
        # if already in unix format, switch to windows format to create shortened path
        case "$formatted_path" in
            /*)
                formatted_path=$(wslpath -m "$formatted_path")
                ;;
        esac

        # cd to /mnt/c to avoid wsl/cmd complaining about not supporting UNC paths/the current working directory
        formatted_path_unix=$(wslpath -u "$(cd /mnt/c; cmd.exe /c $shortpath_cmd "$formatted_path" | tr -d '\r')")
        # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
        formatted_path=$(wslpath -m "$formatted_path_unix")
    fi
}

AbsolutePath()
{
    # There appears to be no simple and portable method to get an absolute and
    # canonical path, so we try creating the directory if does not exist and
    # utilizing the shell and pwd.

    # Args: $1: A possibly relative pathname
    # Return value: $absolute_path

    # Convert to unix path, mkdir would treat c:/path as a relative path.
    PathFormat "$1"
    local rel="$formatted_path_unix"
    absolute_path=""
    test ! -e "$rel" && mkdir -p "$rel"
    if test -d "$rel" ; then
        cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
        absolute_path="$(pwd)"
        cd - > /dev/null
    else
        AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
    fi
}

WARNINGS_FILE=config.warn
WARNINGS_FILE_FOR_BUILD=config.Build.warn
rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
have_WARNINGS="no"
add_warning()
{
    if test "$have_WARNINGS" = "no"; then
        echo "*************************************" > "$WARNINGS_FILE"
        have_WARNINGS="yes"
        if command -v tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
            dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
            COLORWARN='*@<:@1;33;40m WARNING @<:@0m:'
        else
            COLORWARN="* WARNING :"
        fi
    fi
    echo "$COLORWARN $@" >> "$WARNINGS_FILE"
}

dnl Some Mac User have the bad habit of letting a lot of crap
dnl accumulate in their PATH and even adding stuff in /usr/local/bin
dnl that confuse the build.
dnl For the ones that use LODE, let's be nice and protect them
dnl from themselves

mac_sanitize_path()
{
    mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
dnl a common but nevertheless necessary thing that may be in a fancy
dnl path location is git, so make sure we have it
    mac_git_path=`command -v git`
    if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
        mac_path="$mac_path:`dirname $mac_git_path`"
    fi
dnl a not so common but nevertheless quite helpful thing that may be in a fancy
dnl path location is gpg, so make sure we find it
    mac_gpg_path=`command -v gpg`
    if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
        mac_path="$mac_path:`dirname $mac_gpg_path`"
    fi
    PATH="$mac_path"
    unset mac_path
    unset mac_git_path
    unset mac_gpg_path
}

dnl semantically test a three digits version
dnl $1 - $3 = minimal version
dnl $4 - $6 = current version

check_semantic_version_three()
{
    test "$4" -gt "$1" \
        -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
        -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
    return $?
}

dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_

check_semantic_version_three_prefixed()
{
    eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
    eval local MIN_MINOR="\$${1}_${2}_MINOR"
    eval local MIN_TINY="\$${1}_${2}_TINY"
    eval local CUR_MAJOR="\$${1}_MAJOR"
    eval local CUR_MINOR="\$${1}_MINOR"
    eval local CUR_TINY="\$${1}_TINY"
    check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
    return $?
}

echo "********************************************************************"
echo "*"
echo "*   Running ${PACKAGE_NAME} build configuration."
echo "*"
echo "********************************************************************"
echo ""

dnl ===================================================================
dnl checks build and host OSes
dnl do this before argument processing to allow for platform dependent defaults
dnl ===================================================================

# are we running in wsl but are called from git-bash/env with mingw64 or clangarm64 in path?
# if so, we aim to run nearly everything in the Windows realm, and only run autogen/configure
# in wsl and run a few tools via wsl
WSL_ONLY_AS_HELPER=
if test -n "$WSL_DISTRO_NAME" && $(echo $PATH |grep -q -e mingw64 -e clangarm64); then
    WSL_ONLY_AS_HELPER=TRUE
    AC_ARG_WITH([strawberry-perl-portable],
        [AS_HELP_STRING([--with-strawberry-perl-portable],
            [Specify the base path to strawberry perl portable])],
        [],
        [AC_MSG_ERROR(
            [for the moment strawberry-perl-portable is a requirement, feel free to replace it])])
    shortpath_cmd=$(wslpath -m $srcdir/solenv/bin/shortpath.cmd)
    PathFormat "$with_strawberry_perl_portable"
    if test ! -f "$formatted_path_unix/perl/bin/perl.exe" -o ! -d "$formatted_path_unix/c/bin"; then
        AC_MSG_ERROR([$formatted_path doesn't contain perl or the utilities - sure you provided the base path?])
    fi
    STRAWBERRY_TOOLS="$formatted_path/c/bin"
    STRAWBERRY_PERL="$formatted_path/perl/bin/perl.exe"
    STRAWBERRY_PERL_UNIX="$formatted_path_unix/perl/bin/perl.exe"
    AC_ARG_WITH([wsl-command],
        [AS_HELP_STRING([--with-wsl-command],
            [Specify your wsl distro command if it isn't the default/the one used with just wsl.exe –
             for example: wsl.exe -d MyDistro -u NonDefaultUser])],
        [],
        [with_wsl_command="wsl.exe"])
    WSL="$with_wsl_command"
fi
AC_SUBST([STRAWBERRY_PERL])
AC_SUBST([WSL])

# Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
# Linux on WSL) trust that.
if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
    ac_cv_host="x86_64-pc-wsl"
    ac_cv_host_cpu="x86_64"
    ac_cv_host_os="wsl"
    ac_cv_build="$ac_cv_host"
    ac_cv_build_cpu="$ac_cv_host_cpu"
    ac_cv_build_os="$ac_cv_host_os"

    # Emulation of Cygwin's cygpath command for WSL.
    cygpath()
    {
        if test -n "$UNITTEST_WSL_CYGPATH"; then
            echo -n cygpath "$@" "==> "
        fi

        # Cygwin's real cygpath has a plethora of options but we use only a few here.
        local args="$@"
        local opt
        local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
        OPTIND=1

        while getopts dmuwlsp opt; do
            case "$opt" in
                \?)
                    AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
                    ;;
                ?)
                    eval opt_$opt=yes
                    ;;
            esac
        done

        shift $((OPTIND-1))

        if test $# -ne 1; then
            AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
        fi

        local input="$1"

        local result

        if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
            # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)

            if test -n "$opt_u"; then
                AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
            fi

            case "$input" in
                /mnt/*)
                    # A Windows file in WSL format
                    input=$(wslpath -w "$input")
                    ;;
                [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
                    # Already in Windows format
                    ;;
                /*)
                    input=$(wslpath -w "$input")
                    ;;
                *)
                    AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
                    ;;
            esac
            if test -n "$opt_d" -o -n "$opt_s"; then
                input=$($WSL_LO_HELPER --8.3 "$input")
            fi
            if test -n "$opt_m"; then
                input="${input//\\//}"
            fi
            echo "$input"
        else
            # Print Unix path

            case "$input" in
                [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
                    wslpath -u "$input"
                    ;;
                /)
                    echo "$input"
                    ;;
                *)
                    AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
                    ;;
            esac
        fi
    }

    if test -n "$UNITTEST_WSL_CYGPATH"; then
        BUILDDIR=.

        # Nothing special with these file names, just arbitrary ones picked to test with
        cygpath -d /usr/lib64/ld-linux-x86-64.so.2
        cygpath -w /usr/lib64/ld-linux-x86-64.so.2
        cygpath -m /usr/lib64/ld-linux-x86-64.so.2
        cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
        # At least on my machine for instance this file does have an 8.3 name
        cygpath -d /mnt/c/windows/WindowsUpdate.log
        # But for instance this one doesn't
        cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
        cygpath -ws /mnt/c/windows/WindowsUpdate.log
        cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
        cygpath -ms /mnt/c/windows/WindowsUpdate.log

        cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
        cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'

        exit 0
    fi

    if test -z "$WSL_LO_HELPER"; then
        if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
            WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
        elif test -x "/opt/lo/bin/wsl-lo-helper"; then
            WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
        fi
    fi
    if test -z "$WSL_LO_HELPER"; then
        AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
    fi
fi

AC_CANONICAL_HOST
AC_CANONICAL_BUILD

if test -n "$UNITTEST_WSL_PATHFORMAT"; then
    BUILDDIR=.
    GREP=grep

    # Use of PathFormat must be after AC_CANONICAL_BUILD above
    PathFormat /
    printf "$formatted_path , $formatted_path_unix\n"

    PathFormat $PWD
    printf "$formatted_path , $formatted_path_unix\n"

    PathFormat "$PROGRAMFILESX86"
    printf "$formatted_path , $formatted_path_unix\n"

    exit 0
fi

AC_MSG_CHECKING([for product name])
PRODUCTNAME="AC_PACKAGE_NAME"
if test -n "$with_product_name" -a "$with_product_name" != no; then
    PRODUCTNAME="$with_product_name"
fi
if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
    PRODUCTNAME="${PRODUCTNAME}Dev"
fi
AC_MSG_RESULT([$PRODUCTNAME])
AC_SUBST(PRODUCTNAME)
PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)

dnl ===================================================================
dnl Our version is defined by the AC_INIT() at the top of this script.
dnl ===================================================================

AC_MSG_CHECKING([for package version])
if test -n "$with_package_version" -a "$with_package_version" != no; then
    PACKAGE_VERSION="$with_package_version"
fi
AC_MSG_RESULT([$PACKAGE_VERSION])

set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`

LIBO_VERSION_MAJOR=$1
LIBO_VERSION_MINOR=$2
LIBO_VERSION_MICRO=$3
LIBO_VERSION_PATCH=$4

LIBO_VERSION_SUFFIX=$5

# Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
# openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
# they get undoubled before actually passed to sed.
LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
# LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"

# The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
# three non-negative integers. Please find more information about CFBundleVersion at
https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion

# The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
# of at most three non-negative integers. Please find more information about
# CFBundleShortVersionString at
https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring

# But that is enforced only in the App Store, and we apparently want to break the rules otherwise.

if test "$enable_macosx_sandbox" = yes; then
    MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
    MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
else
    MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
    MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
fi

AC_SUBST(LIBO_VERSION_MAJOR)
AC_SUBST(LIBO_VERSION_MINOR)
AC_SUBST(LIBO_VERSION_MICRO)
AC_SUBST(LIBO_VERSION_PATCH)
AC_SUBST(LIBO_VERSION_SUFFIX)
AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
AC_SUBST(MACOSX_BUNDLE_VERSION)

AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)

git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>/dev/null`
LIBO_THIS_YEAR=${git_date:-2025}
AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)

dnl ===================================================================
dnl Product version
dnl ===================================================================
AC_MSG_CHECKING([for product version])
PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
AC_MSG_RESULT([$PRODUCTVERSION])
AC_SUBST(PRODUCTVERSION)

AC_PROG_EGREP
# AC_PROG_EGREP doesn't set GREP on all systems as well
AC_PATH_PROG(GREP, grep)

BUILDDIR=`pwd`
cd $srcdir
SRC_ROOT=`pwd`
cd $BUILDDIR
x_Cygwin=[\#]

dnl ======================================
dnl Required GObject introspection version
dnl ======================================
INTROSPECTION_REQUIRED_VERSION=1.32.0

dnl ===================================================================
dnl Search all the common names for GNU Make
dnl ===================================================================
AC_MSG_CHECKING([for GNU Make])

# try to use our own make if it is available and GNUMAKE was not already defined
if test -z "$GNUMAKE"; then
    if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
        GNUMAKE="$LODE_HOME/opt/bin/make"
    elif test -x "/opt/lo/bin/make"; then
        GNUMAKE="/opt/lo/bin/make"
    fi
fi

GNUMAKE_WIN_NATIVE=
for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
    if test -n "$a"; then
        $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
        if test $? -eq 0;  then
            if test "$build_os" = "cygwin"; then
                if test -n "$($a -v | grep 'Built for Windows')" ; then
                    GNUMAKE="$(cygpath -m "$(command -v "$(cygpath -u $a)")")"
                    GNUMAKE_WIN_NATIVE="TRUE"
                else
                    GNUMAKE=`command -v $a`
                fi
            else
                GNUMAKE=`command -v $a`
            fi
            break
        fi
    fi
done
AC_MSG_RESULT($GNUMAKE)
if test -z "$GNUMAKE"; then
    AC_MSG_ERROR([not found. install GNU Make.])
else
    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
        AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
    fi
fi

win_short_path_for_make()
{
    local short_path="$1"
    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
        cygpath -sm "$short_path"
    elif test -n "$WSL_ONLY_AS_HELPER"; then
        # when already unix-style path, wslpath doesn't return anything
        case "$short_path" in
        /*)
            echo $short_path
            exit
            ;;
        esac
        wslpath -m "$(wslpath -u "$short_path")"
    else
        cygpath -u "$(cygpath -d "$short_path")"
    fi
}


if test "$build_os" = "cygwin"; then
    PathFormat "$SRC_ROOT"
    SRC_ROOT="$formatted_path"
    PathFormat "$BUILDDIR"
    BUILDDIR="$formatted_path"
    x_Cygwin=
    AC_MSG_CHECKING(for explicit COMSPEC)
    if test -z "$COMSPEC"; then
        AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
    else
        AC_MSG_RESULT([found: $COMSPEC])
    fi
fi

AC_SUBST(SRC_ROOT)
AC_SUBST(BUILDDIR)
AC_SUBST(x_Cygwin)
AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")

if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
    AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
fi

# need sed in os checks...
AC_PATH_PROGS(SED, sed)
if test -z "$SED"; then
    AC_MSG_ERROR([install sed to run this script])
fi

if test "$build_os" = "cygwin" -o -n "$WSL_ONLY_AS_HELPER"; then
    # convenience check for a custom pkgconf used by meson - needs to be a version that uses windows
    # style paths. Needs to be checked before the configure-switches that use PKG_CHECK_MODULES as
    # that would already set the PKG_CONFIG var and then bypass/skip this autoselection
    AC_PATH_PROG(PKG_CONFIG,pkgconf-2.4.3.exe,,[$PATH:$LODE_HOME/opt/bin])
    if test -z "$PKG_CONFIG"; then
        AC_MSG_ERROR([
            A windows version of pkgconf is required to build harfbuzz.
            Add PKG_CONFIG=/path/to/pkgconf-2.4.3.exe to autogen.input or put it in PATH])
    fi
else
    case "$build_os" in
        darwin*)
            # convenience check for LODE's custom pkgconf used by meson
            # Needs to be checked before the configure-switches that use PKG_CHECK_MODULES as
            # that would already set the PKG_CONFIG var and then bypass/skip this autoselection
            AC_PATH_PROG(PKG_CONFIG,pkgconf,,[$PATH:$LODE_HOME/opt/bin])
            if test -z "$PKG_CONFIG"; then
                AC_MSG_WARN([pkgconf not found - pkgconf is required to build harfbuzz])
                add_warning "please add PKG_CONFIG=/path/to/pkgconf to autogen.input or put it in PATH, pkgconf is required to build harfbuzz"
            fi
            ;;
    esac
fi

# Set the ENABLE_LTO variable
# ===================================================================
AC_MSG_CHECKING([whether to use link-time optimization])
if test -n "$enable_lto" -a "$enable_lto" != "no"; then
    ENABLE_LTO="TRUE"
    AC_MSG_RESULT([yes])
else
    ENABLE_LTO=""
    AC_MSG_RESULT([no])
fi
AC_SUBST(ENABLE_LTO)

AC_ARG_ENABLE(fuzz-options,
    AS_HELP_STRING([--enable-fuzz-options],
        [Randomly enable or disable each of those configurable options
         that are supposed to be freely selectable without interdependencies,
         or where bad interaction from interdependencies is automatically avoided.])
)

dnl ===================================================================
dnl When building for Android, --with-android-ndk and
dnl --with-android-sdk are mandatory
dnl ===================================================================

AC_ARG_WITH(android-ndk,
    AS_HELP_STRING([--with-android-ndk],
        [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
,)

AC_ARG_WITH(android-sdk,
    AS_HELP_STRING([--with-android-sdk],
        [Specify location of the Android SDK. Mandatory when building for Android.]),
,)

AC_ARG_WITH(android-api-level,
    AS_HELP_STRING([--with-android-api-level],
        [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
,)

ANDROID_NDK_DIR=
if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
    with_android_ndk="$SRC_ROOT/external/android-ndk"
fi
if test -n "$with_android_ndk"; then
    eval ANDROID_NDK_DIR=$with_android_ndk

    ANDROID_API_LEVEL=21
    if test -n "$with_android_api_level" ; then
        ANDROID_API_LEVEL="$with_android_api_level"
    fi

    if test $host_cpu = arm; then
        LLVM_TRIPLE=armv7a-linux-androideabi
        ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
        ANDROID_APP_ABI=armeabi-v7a
        ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
    elif test $host_cpu = aarch64; then
        LLVM_TRIPLE=aarch64-linux-android
        ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
        ANDROID_APP_ABI=arm64-v8a
    elif test $host_cpu = x86_64; then
        LLVM_TRIPLE=x86_64-linux-android
        ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
        ANDROID_APP_ABI=x86_64
    else
        # host_cpu is something like "i386" or "i686" I guess, NDK uses
        # "x86" in some contexts
        LLVM_TRIPLE=i686-linux-android
        ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
        ANDROID_APP_ABI=x86
    fi

    # Set up a lot of pre-canned defaults

    if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
        if test ! -f $ANDROID_NDK_DIR/source.properties; then
            AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
        fi
        ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
    else
        ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
    fi
    if test -z "$ANDROID_NDK_VERSION";  then
        AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
    fi
    case $ANDROID_NDK_VERSION in
    r9*|r10*)
        AC_MSG_ERROR([Building for Android requires NDK version >= 27.*])
        ;;
    11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*|23.*|24.*|25.*|26.*)
        AC_MSG_ERROR([Building for Android requires NDK version >= 27.*])
        ;;
    27.*|28.*)
        ;;
    *)
        AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 27.* to 28.* have been used successfully. Proceed at your own risk.])
        add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 27.* to 28.* have been used successfully. Proceed at your own risk."
        ;;
    esac

    AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])

    # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
    # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
    # manage to link the (app-specific) single huge .so that is built for the app in
    # android/source/ if there is debug information in a significant part of the object files.
    # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
    # all objects have been built with debug information.)
    case $build_os in
    linux-gnu*)
        android_HOST_TAG=linux-x86_64
        ;;
    darwin*)
        android_HOST_TAG=darwin-x86_64
        ;;
    *)
        AC_MSG_ERROR([We only support building for Android from Linux or macOS])
        # ndk would also support windows and windows-x86_64
        ;;
    esac
    ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
    ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin

    test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
    test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
    test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
    test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
    test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip

    ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
    ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
    if test "$ENABLE_LTO" = TRUE; then
        # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
        # $CC and $CXX when building external libraries
        ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
    fi

    ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"

    if test -z "$CC"; then
        CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
        CC_BASE="clang"
    fi
    if test -z "$CXX"; then
        CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
        CXX_BASE="clang++"
    fi
fi
AC_SUBST(ANDROID_NDK_DIR)
AC_SUBST(ANDROID_NDK_VERSION)
AC_SUBST(ANDROID_API_LEVEL)
AC_SUBST(ANDROID_APP_ABI)
AC_SUBST(ANDROID_SYSROOT_PLATFORM)
AC_SUBST(ANDROID_TOOLCHAIN)

dnl ===================================================================
dnl --with-android-sdk
dnl ===================================================================
ANDROID_SDK_DIR=
if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
    with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
fi
if test -n "$with_android_sdk"; then
    eval ANDROID_SDK_DIR=$with_android_sdk
    PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
fi
AC_SUBST(ANDROID_SDK_DIR)

AC_ARG_ENABLE([android-lok],
    AS_HELP_STRING([--enable-android-lok],
        [The Android app from the android/ subdir needs several tweaks all
         over the place that break the LOK when used in the Online-based
         Android app.  This switch indicates that the intent of this build is
         actually the Online-based, non-modified LOK.])
)
ENABLE_ANDROID_LOK=
if test -n "$ANDROID_NDK_DIR" ; then
    if test "$enable_android_lok" = yes; then
        ENABLE_ANDROID_LOK=TRUE
        AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
        AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
    else
        AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
    fi
fi
AC_SUBST([ENABLE_ANDROID_LOK])

libo_FUZZ_ARG_ENABLE([android-editing],
    AS_HELP_STRING([--enable-android-editing],
        [Enable the experimental editing feature on Android.])
)
ENABLE_ANDROID_EDITING=
if test "$enable_android_editing" = yes; then
    ENABLE_ANDROID_EDITING=TRUE
fi
AC_SUBST([ENABLE_ANDROID_EDITING])

disable_database_connectivity_dependencies()
{
    enable_evolution2=no
    enable_firebird_sdbc=no
    enable_mariadb_sdbc=no
    enable_postgresql_sdbc=no
    enable_report_builder=no
}

# ===================================================================
#
# Start initial platform setup
#
# The using_* variables reflect platform support and should not be
# changed after the "End initial platform setup" block.
# This is also true for most test_* variables.
# ===================================================================
build_crypto=yes
test_clucene=no
test_gdb_index=no
test_openldap=yes
test_split_debug=no
test_webdav=yes
usable_dlapi=yes

# There is currently just iOS not using salplug, so this explicitly enables it.
# must: using_freetype_fontconfig
#  may: using_headless_plugin defaults to $using_freetype_fontconfig
# must: using_x11

# Default values, as such probably valid just for Linux, set
# differently below just for Mac OSX, but at least better than
# hardcoding these as we used to do. Much of this is duplicated also
# in solenv for old build system and for gbuild, ideally we should
# perhaps define stuff like this only here in configure.ac?

LINKFLAGSSHL="-shared"
PICSWITCH="-fpic"
DLLPOST=".so"

LINKFLAGSNOUNDEFS="-Wl,-z,defs"

INSTROOTBASESUFFIX=
INSTROOTCONTENTSUFFIX=
SDKDIRNAME=sdk

HOST_PLATFORM="$host"

host_cpu_for_clang="$host_cpu"

case "$host_os" in

solaris*)
    using_freetype_fontconfig=yes
    using_x11=yes
    build_skia=yes
    _os=SunOS

    dnl ===========================================================
    dnl Check whether we're using Solaris 10 - SPARC or Intel.
    dnl ===========================================================
    AC_MSG_CHECKING([the Solaris operating system release])
    _os_release=`echo $host_os | $SED -e s/solaris2\.//`
    if test "$_os_release" -lt "10"; then
        AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
    else
        AC_MSG_RESULT([ok ($_os_release)])
    fi

    dnl Check whether we're using a SPARC or i386 processor
    AC_MSG_CHECKING([the processor type])
    if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
        AC_MSG_RESULT([ok ($host_cpu)])
    else
        AC_MSG_ERROR([only SPARC and i386 processors are supported])
    fi
    ;;

linux-gnu*|k*bsd*-gnu*|linux-musl*)
    using_freetype_fontconfig=yes
    using_x11=yes
    build_skia=yes
    test_gdb_index=yes
    test_split_debug=yes
    if test "$enable_fuzzers" = yes; then
        test_system_freetype=no
    fi
    _os=Linux
    ;;

gnu)
    using_freetype_fontconfig=yes
    using_x11=no
    _os=GNU
     ;;

cygwin*|wsl*)
    # When building on Windows normally with MSVC under Cygwin,
    # configure thinks that the host platform (the platform the
    # built code will run on) is Cygwin, even if it obviously is
    # Windows, which in Autoconf terminology is called
    # "mingw32". (Which is misleading as MinGW is the name of the
    # tool-chain, not an operating system.)

    # Somewhat confusing, yes. But this configure script doesn't
    # look at $host etc that much, it mostly uses its own $_os
    # variable, set here in this case statement.

    using_freetype_fontconfig=no
    using_x11=no
    test_unix_dlapi=no
    test_openldap=no
    enable_pagein=no
    build_skia=yes
    _os=WINNT

    DLLPOST=".dll"
    LINKFLAGSNOUNDEFS=
    # bypass check for ninja, it is not in default path, but it can be used nevertheless by default
    NINJA="assumed to be available from Visual Studio"

    if test "$host_cpu" = "aarch64"; then
        build_skia=yes
        enable_gpgmepp=no
        enable_coinmp=no
        enable_firebird_sdbc=no
    fi
    ;;

darwin*) # macOS
    using_freetype_fontconfig=no
    using_x11=no
    build_skia=yes
    enable_pagein=no
    if test -n "$LODE_HOME" ; then
        mac_sanitize_path
        AC_MSG_NOTICE([sanitized the PATH to $PATH])
    fi
    _os=Darwin
    INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
    INSTROOTCONTENTSUFFIX=/Contents
    SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
    # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
    LINKFLAGSSHL="-dynamiclib"

    # -fPIC is default
    PICSWITCH=""

    DLLPOST=".dylib"

    # -undefined error is the default
    LINKFLAGSNOUNDEFS=""
    case "$host_cpu" in
    aarch64|arm64)
        # Apple's Clang uses "arm64"
        host_cpu_for_clang=arm64
    esac
;;

ios*) # iOS
    using_freetype_fontconfig=no
    using_x11=no
    build_crypto=no
    test_libcmis=no
    test_openldap=no
    test_webdav=no
    with_gssapi=no
    if test -n "$LODE_HOME" ; then
        mac_sanitize_path
        AC_MSG_NOTICE([sanitized the PATH to $PATH])
    fi
    enable_gpgmepp=no
    _os=iOS
    enable_mpl_subset=yes
    enable_lotuswordpro=no
    disable_database_connectivity_dependencies
    enable_coinmp=no
    enable_lpsolve=no
    enable_extension_integration=no
    enable_xmlhelp=no
    with_ppds=no
    if test "$enable_ios_simulator" = "yes"; then
        host=x86_64-apple-darwin
    fi
    # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
    LINKFLAGSSHL="-dynamiclib"

    # -fPIC is default
    PICSWITCH=""

    DLLPOST=".dylib"

    # -undefined error is the default
    LINKFLAGSNOUNDEFS=""

    # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
    # part, so use aarch64-apple-darwin for now.
    HOST_PLATFORM=aarch64-apple-darwin

    # Apple's Clang uses "arm64"
    host_cpu_for_clang=arm64
;;

freebsd*)
    using_freetype_fontconfig=yes
    using_x11=yes
    build_skia=yes
    AC_MSG_CHECKING([the FreeBSD operating system release])
    if test -n "$with_os_version"; then
        OSVERSION="$with_os_version"
    else
        OSVERSION=`/sbin/sysctl -n kern.osreldate`
    fi
    AC_MSG_RESULT([found OSVERSION=$OSVERSION])
    AC_MSG_CHECKING([which thread library to use])
    if test "$OSVERSION" -lt "500016"; then
        PTHREAD_CFLAGS="-D_THREAD_SAFE"
        PTHREAD_LIBS="-pthread"
    elif test "$OSVERSION" -lt "502102"; then
        PTHREAD_CFLAGS="-D_THREAD_SAFE"
        PTHREAD_LIBS="-lc_r"
    else
        PTHREAD_CFLAGS=""
        PTHREAD_LIBS="-pthread"
    fi
    AC_MSG_RESULT([$PTHREAD_LIBS])
    _os=FreeBSD
    ;;

*netbsd*)
    using_freetype_fontconfig=yes
    using_x11=yes
    test_gtk3_kde5=no
    build_skia=yes
    PTHREAD_LIBS="-pthread -lpthread"
    _os=NetBSD
    ;;

openbsd*)
    using_freetype_fontconfig=yes
    using_x11=yes
    PTHREAD_CFLAGS="-D_THREAD_SAFE"
    PTHREAD_LIBS="-pthread"
    _os=OpenBSD
    ;;

dragonfly*)
    using_freetype_fontconfig=yes
    using_x11=yes
    build_skia=yes
    PTHREAD_LIBS="-pthread"
    _os=DragonFly
    ;;

linux-android*)
    # API exists, but seems not really usable since Android 7 AFAIK
    usable_dlapi=no
    using_freetype_fontconfig=yes
    using_headless_plugin=no
    using_x11=no
    build_crypto=no
    test_openldap=no
    test_system_freetype=no
    test_webdav=no
    with_gssapi=no
    disable_database_connectivity_dependencies
    enable_lotuswordpro=no
    enable_mpl_subset=yes
    enable_cairo_canvas=no
    enable_coinmp=yes
    enable_lpsolve=no
    enable_odk=no
    enable_python=no
    enable_xmlhelp=no
    _os=Android
    ;;

haiku*)
    using_freetype_fontconfig=yes
    using_x11=no
    test_gtk3=no
    test_gtk3_kde5=no
    test_kf5=yes
    test_kf6=yes
    enable_odk=no
    enable_coinmp=no
    enable_pdfium=no
    enable_sdremote=no
    enable_postgresql_sdbc=no
    enable_firebird_sdbc=no
    _os=Haiku
    ;;

emscripten)
    # API currently just exists in headers, not code
    usable_dlapi=no
    using_freetype_fontconfig=yes
    using_x11=yes
    test_openldap=no
    test_qt5=yes
    test_split_debug=yes
    test_system_freetype=no
    enable_compiler_plugins=no
    enable_customtarget_components=yes
    enable_split_debug=yes
    enable_wasm_strip=yes
    with_system_zlib=no
    with_theme="colibre"
    _os=Emscripten
    ;;

*)
    AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
    ;;
esac

AC_SUBST(HOST_PLATFORM)

if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
    AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
fi

# Set defaults, if not set by platform
test "${test_cpdb+set}" = set || test_cpdb="$using_x11"
test "${test_cups+set}" = set || test_cups="$using_x11"
test "${test_dbus+set}" = set || test_dbus="$using_x11"
test "${test_gen+set}" = set || test_gen="$using_x11"
test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
test "${test_kf5+set}" = set || test_kf5="$using_x11"
test "${test_kf6+set}" = set || test_kf6="$using_x11"
# don't handle test_qt5, so it can disable test_kf5 later
test "${test_qt6+set}" = set || test_qt6="$using_x11"
test "${test_randr+set}" = set || test_randr="$using_x11"
test "${test_xrender+set}" = set || test_xrender="$using_x11"
test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"

test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
# Make sure fontconfig and freetype test both either system or not
test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"

# convenience / platform overriding "fixes"
# Don't sort!
test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
test "$test_kf5" = yes && test_qt5=yes
test "$test_gtk3" != yes && enable_gtk3=no
test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
test "$using_freetype_fontconfig" = no && using_headless_plugin=no
test "$using_freetype_fontconfig" = yes && test_cairo=yes

# Keep in sync with the above $using_x11 depending test default list
disable_x11_tests()
{
    test_cpdb=no
    test_cups=no
    test_dbus=no
    test_gen=no
    test_gstreamer_1_0=no
    test_gtk3_kde5=no
    test_gtk3=no
    test_gtk4=no
    test_kf5=no
    test_kf6=no
    test_qt5=no
    test_qt6=no
    test_randr=no
    test_xrender=no
}

test "$using_x11" = yes && USING_X11=TRUE

if test "$using_freetype_fontconfig" = yes; then
    AC_DEFINE(USE_HEADLESS_CODE)
    USE_HEADLESS_CODE=TRUE
    if test "$using_headless_plugin" = yes; then
        AC_DEFINE(ENABLE_HEADLESS)
        ENABLE_HEADLESS=TRUE
    fi
else
    test_fontconfig=no
    test_freetype=no
fi

AC_SUBST(ENABLE_HEADLESS)
AC_SUBST(USE_HEADLESS_CODE)

AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
AC_MSG_NOTICE([VCL platform uses X11: $using_x11])

# ===================================================================
#
# End initial platform setup
#
# ===================================================================

if test "$_os" = "Android" ; then
    # Verify that the NDK and SDK options are proper
    if test -z "$with_android_ndk"; then
        AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
    elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
        AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
    fi

    if test -z "$ANDROID_SDK_DIR"; then
        AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
    elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
        AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
    fi
fi

AC_SUBST(SDKDIRNAME)

AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_LIBS)

# Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
# By default use the ones specified by our build system,
# but explicit override is possible.
AC_MSG_CHECKING(for explicit AFLAGS)
if test -n "$AFLAGS"; then
    AC_MSG_RESULT([$AFLAGS])
    x_AFLAGS=
else
    AC_MSG_RESULT(no)
    x_AFLAGS=[\#]
fi
AC_MSG_CHECKING(for explicit CFLAGS)
if test -n "$CFLAGS"; then
    AC_MSG_RESULT([$CFLAGS])
    x_CFLAGS=
else
    AC_MSG_RESULT(no)
    x_CFLAGS=[\#]
fi
AC_MSG_CHECKING(for explicit CXXFLAGS)
if test -n "$CXXFLAGS"; then
    AC_MSG_RESULT([$CXXFLAGS])
    x_CXXFLAGS=
else
    AC_MSG_RESULT(no)
    x_CXXFLAGS=[\#]
fi
AC_MSG_CHECKING(for explicit OBJCFLAGS)
if test -n "$OBJCFLAGS"; then
    AC_MSG_RESULT([$OBJCFLAGS])
    x_OBJCFLAGS=
else
    AC_MSG_RESULT(no)
    x_OBJCFLAGS=[\#]
fi
AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
if test -n "$OBJCXXFLAGS"; then
    AC_MSG_RESULT([$OBJCXXFLAGS])
    x_OBJCXXFLAGS=
else
    AC_MSG_RESULT(no)
    x_OBJCXXFLAGS=[\#]
fi
AC_MSG_CHECKING(for explicit LDFLAGS)
if test -n "$LDFLAGS"; then
    AC_MSG_RESULT([$LDFLAGS])
    x_LDFLAGS=
else
    AC_MSG_RESULT(no)
    x_LDFLAGS=[\#]
fi
AC_SUBST(AFLAGS)
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(OBJCFLAGS)
AC_SUBST(OBJCXXFLAGS)
AC_SUBST(LDFLAGS)
AC_SUBST(x_AFLAGS)
AC_SUBST(x_CFLAGS)
AC_SUBST(x_CXXFLAGS)
AC_SUBST(x_OBJCFLAGS)
AC_SUBST(x_OBJCXXFLAGS)
AC_SUBST(x_LDFLAGS)

dnl These are potentially set for MSVC, in the code checking for UCRT below:
my_original_CFLAGS=$CFLAGS
my_original_CXXFLAGS=$CXXFLAGS
my_original_CPPFLAGS=$CPPFLAGS

dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
dnl AC_PROG_CC internally.
if test "$_os" != "WINNT"; then
    # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that (and avoid -O2 during AC_PROG_CC,
    # Clang 12.0.1 occasionally SEGVs on some of the test invocations during AC_PROG_CC with -O2):
    save_CFLAGS=$CFLAGS
    CFLAGS=-g
    AC_PROG_CC
    CFLAGS=$save_CFLAGS
    if test -z "$CC_BASE"; then
        CC_BASE=`first_arg_basename "$CC"`
    fi
fi

if test "$_os" != "WINNT"; then
    AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
else
    ENDIANNESS=little
fi
AC_SUBST(ENDIANNESS)

if test "$usable_dlapi" != no; then
    AC_DEFINE([HAVE_DLAPI])
    if test "$test_unix_dlapi" != no; then
        save_LIBS="$LIBS"
        AC_SEARCH_LIBS([dlsym], [dl],
            [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
            [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
        LIBS="$save_LIBS"
        AC_DEFINE([HAVE_UNIX_DLAPI])
    fi
fi
AC_SUBST(UNIX_DLAPI_LIBS)

# Check for a (GNU) backtrace implementation
AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
    save_LIBS="$LIBS"
    AC_SEARCH_LIBS([backtrace], [libexecinfo],
        [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
        [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
    LIBS="$save_LIBS"
])
AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
    AC_DEFINE([HAVE_FEATURE_BACKTRACE])
])

dnl ===================================================================
dnl Sanity checks for Emscripten SDK setup
dnl ===================================================================

EMSCRIPTEN_MIN_MAJOR=3
EMSCRIPTEN_MIN_MINOR=1
EMSCRIPTEN_MIN_TINY=46
EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"

EMSCRIPTEN_WORKERJS=
if test "$_os" = "Emscripten"; then
    AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
    if test -z "$EMSCRIPTEN_VERSION_H"; then
        AS_IF([test -z "$EMSDK"],
              [AC_MSG_ERROR([No \$EMSDK environment variable.])])
        EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
        if test ! -f "$EMSCRIPTEN_VERSION_H"; then
            EMSCRIPTEN_VERSION_H=$EMSDK/emscripten/main/cache/sysroot/include/emscripten/version.h
        fi
    fi
    if test -f "$EMSCRIPTEN_VERSION_H"; then
        EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
        EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
        EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
    else
        EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
        EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
        EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
        EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
    fi

    EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"

    check_semantic_version_three_prefixed EMSCRIPTEN MIN
    if test $? -eq 0; then
        AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
    else
        AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
    fi

    EMSCRIPTEN_ERROR=0
    if ! command -v emconfigure >/dev/null 2>&1; then
        AC_MSG_WARN([emconfigure must be in your \$PATH])
        EMSCRIPTEN_ERROR=1
    fi
    if test -z "$EMMAKEN_JUST_CONFIGURE"; then
        AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
        EMSCRIPTEN_ERROR=1
    fi
    EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
    if ! test -x "$EMSDK_FILE_PACKAGER"; then
        AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
        EMSCRIPTEN_ERROR=1
    fi
    if test $EMSCRIPTEN_ERROR -ne 0; then
        AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
    fi

    dnl Some build-side things are conditional on "EMSCRIPTEN in BUILD_TYPE_FOR_HOST":
    BUILD_TYPE="$BUILD_TYPE EMSCRIPTEN"

    dnl Generation of .worker.js files has been dropped completely from Emscripten 3.1.68, and the
    dnl generated files were just unused dummies since Emscripten 3.1.58:
    AC_MSG_CHECKING([if Emscripten still depends on a separate .worker.js file])
    check_semantic_version_three 3 1 58 "$EMSCRIPTEN_MAJOR" "$EMSCRIPTEN_MINOR" "$EMSCRIPTEN_TINY"
    if test $? -ne 0; then
        AC_MSG_RESULT([yes])
        EMSCRIPTEN_WORKERJS=TRUE
    else
        AC_MSG_RESULT([no])
    fi
fi
AC_SUBST(EMSDK_FILE_PACKAGER)
AC_SUBST(EMSCRIPTEN_EXTRA_QTLOADER_CONFIG)
AC_SUBST(EMSCRIPTEN_EXTRA_SOFFICE_PRE_JS)
AC_SUBST(EMSCRIPTEN_WORKERJS)

###############################################################################
# Extensions switches --enable/--disable
###############################################################################
# By default these should be enabled unless having extra dependencies.
# If there is extra dependency over configure options then the enable should
# be automagic based on whether the requiring feature is enabled or not.
# All this options change anything only with --enable-extension-integration.

# The name of this option and its help string makes it sound as if
# extensions are built anyway, just not integrated in the installer,
# if you use --disable-extension-integration. Is that really the
# case?

AC_ARG_ENABLE(ios-simulator,
    AS_HELP_STRING([--enable-ios-simulator],
        [build for iOS simulator])
)

libo_FUZZ_ARG_ENABLE(extension-integration,
    AS_HELP_STRING([--disable-extension-integration],
        [Disable integration of the built extensions in the installer of the
         product. Use this switch to disable the integration.])
)

AC_ARG_ENABLE(avmedia,
    AS_HELP_STRING([--disable-avmedia],
        [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
,test "${enable_avmedia+set}" = set || enable_avmedia=yes)

AC_ARG_ENABLE(database-connectivity,
    AS_HELP_STRING([--disable-database-connectivity],
        [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
)

# This doesn't mean not building (or "integrating") extensions
# (although it probably should; i.e. it should imply
# --disable-extension-integration I guess), it means not supporting
# any extension mechanism at all
libo_FUZZ_ARG_ENABLE(extensions,
    AS_HELP_STRING([--disable-extensions],
        [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
)

AC_ARG_ENABLE(scripting,
    AS_HELP_STRING([--disable-scripting],
        [Disable BASIC, Java, Python and .NET. Work in progress, use only if you are hacking on it.]),
,test "${enable_scripting+set}" = set || enable_scripting=yes)

# This is mainly for Android and iOS, but could potentially be used in some
# special case otherwise, too, so factored out as a separate setting

AC_ARG_ENABLE(dynamic-loading,
    AS_HELP_STRING([--disable-dynamic-loading],
        [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
)

libo_FUZZ_ARG_ENABLE(report-builder,
    AS_HELP_STRING([--disable-report-builder],
        [Disable the Report Builder.])
)

libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
    AS_HELP_STRING([--enable-ext-wiki-publisher],
        [Enable the Wiki Publisher extension.])
)

libo_FUZZ_ARG_ENABLE(lpsolve,
    AS_HELP_STRING([--disable-lpsolve],
        [Disable compilation of the lp solve solver ])
)
libo_FUZZ_ARG_ENABLE(coinmp,
    AS_HELP_STRING([--disable-coinmp],
        [Disable compilation of the CoinMP solver ])
)

libo_FUZZ_ARG_ENABLE(pdfimport,
    AS_HELP_STRING([--disable-pdfimport],
        [Disable building the PDF import feature.])
)

libo_FUZZ_ARG_ENABLE(pdfium,
    AS_HELP_STRING([--disable-pdfium],
        [Disable building PDFium. Results in insecure PDF signature verification.])
)

libo_FUZZ_ARG_ENABLE(skia,
    AS_HELP_STRING([--disable-skia],
        [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
)

libo_FUZZ_ARG_ENABLE(skia-vulkan-validation,
    AS_HELP_STRING([--enable-skia-vulkan-validation],
        [Enable Vulkan validation layers under Skia. The Vulkan SDK must be installed externally.])
)

###############################################################################

dnl ---------- *** ----------

libo_FUZZ_ARG_ENABLE(mergelibs,
    AS_HELP_STRING([--enable-mergelibs=yes/no/more],
        [Merge several of the smaller libraries into one big "merged" library.
         The "more" option will link even more of the smaller libraries.
         "more" not appropriate for distros which split up LibreOffice into multiple packages.
         It is only appropriate for situations where all of LO is delivered in a single install/package. ])
)

libo_FUZZ_ARG_ENABLE(breakpad,
    AS_HELP_STRING([--enable-breakpad],
        [Enables breakpad for crash reporting.])
)

libo_FUZZ_ARG_ENABLE(crashdump,
    AS_HELP_STRING([--disable-crashdump],
        [Disable dump.ini and dump-file, when --enable-breakpad])
)

AC_ARG_ENABLE(fetch-external,
    AS_HELP_STRING([--disable-fetch-external],
        [Disables fetching external tarballs from web sources.])
)

AC_ARG_ENABLE(fuzzers,
    AS_HELP_STRING([--enable-fuzzers],
        [Enables building libfuzzer targets for fuzz testing.])
)

libo_FUZZ_ARG_ENABLE(pch,
    AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
        [Enables precompiled header support for C++. Forced default on Windows/VC build.
         Using 'system' will include only external headers, 'base' will add also headers
         from base modules, 'normal' will also add all headers except from the module built,
         'full' will use all suitable headers even from a module itself.])
)

libo_FUZZ_ARG_ENABLE(epm,
    AS_HELP_STRING([--enable-epm],
        [LibreOffice includes self-packaging code, that requires epm, however epm is
         useless for large scale package building.])
)

libo_FUZZ_ARG_ENABLE(odk,
    AS_HELP_STRING([--enable-odk],
        [Enable building the Office Development Kit, the part that extensions need to build against])
)

AC_ARG_ENABLE(mpl-subset,
    AS_HELP_STRING([--enable-mpl-subset],
        [Don't compile any pieces which are not MPL or more liberally licensed])
)

libo_FUZZ_ARG_ENABLE(evolution2,
    AS_HELP_STRING([--enable-evolution2],
        [Allows the built-in evolution 2 addressbook connectivity build to be
         enabled.])
)

AC_ARG_ENABLE(avahi,
    AS_HELP_STRING([--enable-avahi],
        [Determines whether to use Avahi to advertise Impress to remote controls.])
)

AC_ARG_ENABLE(msvc-analyze,
    AS_HELP_STRING([--enable-msvc-analyze],
        [Determines whether to enable the Microsoft Visual Studio /analyze flag to provide additional warnings.])
)

libo_FUZZ_ARG_ENABLE(werror,
    AS_HELP_STRING([--enable-werror],
        [Turn warnings to errors. (Has no effect in modules where the treating
         of warnings as errors is disabled explicitly.)]),
,)

libo_FUZZ_ARG_ENABLE(assert-always-abort,
    AS_HELP_STRING([--enable-assert-always-abort],
        [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
,)

libo_FUZZ_ARG_ENABLE(dbgutil,
    AS_HELP_STRING([--enable-dbgutil],
        [Provide debugging support from --enable-debug and include additional debugging
         utilities such as object counting or more expensive checks.
         This is the recommended option for developers.
         Note that this makes the build ABI incompatible, it is not possible to mix object
         files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))

libo_FUZZ_ARG_ENABLE(debug,
    AS_HELP_STRING([--enable-debug],
        [Include debugging information, disable compiler optimization and inlining plus
         extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))

libo_FUZZ_ARG_ENABLE(split-debug,
    AS_HELP_STRING([--disable-split-debug],
        [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
         saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))

libo_FUZZ_ARG_ENABLE(gdb-index,
    AS_HELP_STRING([--disable-gdb-index],
        [Disables creating debug information in the gdb index format, which makes gdb start faster.
         The feature requires a linker that supports the --gdb-index option.]))

libo_FUZZ_ARG_ENABLE(sal-log,
    AS_HELP_STRING([--enable-sal-log],
        [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))

libo_FUZZ_ARG_ENABLE(symbols,
    AS_HELP_STRING([--enable-symbols],
        [Generate debug information.
         By default, enabled for --enable-debug and --enable-dbgutil, disabled
         otherwise. It is possible to explicitly specify gbuild build targets
         (where 'all' means everything, '-' prepended means to not enable, '/' appended means
         everything in the directory; there is no ordering, more specific overrides
         more general, and disabling takes precedence).
         Example: --enable-symbols="all -sw/ -Library_sc".]))

libo_FUZZ_ARG_ENABLE(optimized,
    AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
        [Whether to compile with optimization flags.
         By default, disabled for --enable-debug and --enable-dbgutil, enabled
         otherwise. Using 'debug' will try to use only optimizations that should
         not interfere with debugging. For Emscripten we default to optimized (-O1)
         debug build, as otherwise binaries become too large.]))

libo_FUZZ_ARG_ENABLE(runtime-optimizations,
    AS_HELP_STRING([--disable-runtime-optimizations],
        [Statically disable certain runtime optimizations (like rtl/alloc.h or
         JVM JIT) that are known to interact badly with certain dynamic analysis
         tools (like -fsanitize=address or Valgrind).  By default, disabled iff
         CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
         are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))

AC_ARG_WITH(valgrind,
    AS_HELP_STRING([--with-valgrind],
        [Make availability of Valgrind headers a hard requirement.]))

libo_FUZZ_ARG_ENABLE(compiler-plugins,
    AS_HELP_STRING([--enable-compiler-plugins],
        [Enable compiler plugins that will perform additional checks during
         building. Enabled automatically by --enable-dbgutil.
         Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
COMPILER_PLUGINS_DEBUG=
if test "$enable_compiler_plugins" = debug; then
    enable_compiler_plugins=yes
    COMPILER_PLUGINS_DEBUG=TRUE
fi

libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
    AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
        [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
         relevant in the --disable-compiler-plugins case.]))

libo_FUZZ_ARG_ENABLE(ooenv,
    AS_HELP_STRING([--enable-ooenv],
        [Enable ooenv for the instdir installation.]))

AC_ARG_ENABLE(lto,
    AS_HELP_STRING([--enable-lto],
        [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
         longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
         linker.)]))

AC_ARG_ENABLE(python,
    AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
        [Enables or disables Python support at run-time.
         Also specifies what Python to use at build-time.
         'fully-internal' even forces the internal version for uses of Python
         during the build.
         On macOS the only choices are
         'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
         ]))

libo_FUZZ_ARG_ENABLE(gtk3,
    AS_HELP_STRING([--disable-gtk3],
        [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)

AC_ARG_ENABLE(gtk4,
    AS_HELP_STRING([--enable-gtk4],
        [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))

AC_ARG_ENABLE(atspi-tests,
    AS_HELP_STRING([--disable-atspi-tests],
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.51 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge