tdf#149603 macOS: fix workaround to use web help if Safari is the default browser
[LibreOffice.git] / configure.ac
blobdb33c873cd83965668cac18340a7167fecf93f4f
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.3.5.0.0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
208 have_WARNINGS="no"
209 add_warning()
211     if test "$have_WARNINGS" = "no"; then
212         echo "*************************************" > "$WARNINGS_FILE"
213         have_WARNINGS="yes"
214         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
217         else
218             COLORWARN="* WARNING :"
219         fi
220     fi
221     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
228 dnl from themselves
230 mac_sanitize_path()
232     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235     mac_git_path=`which git 2>/dev/null`
236     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237         mac_path="$mac_path:`dirname $mac_git_path`"
238     fi
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241     mac_gpg_path=`which gpg 2>/dev/null`
242     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243         mac_path="$mac_path:`dirname $mac_gpg_path`"
244     fi
245     PATH="$mac_path"
246     unset mac_path
247     unset mac_git_path
248     unset mac_gpg_path
251 echo "********************************************************************"
252 echo "*"
253 echo "*   Running ${PACKAGE_NAME} build configuration."
254 echo "*"
255 echo "********************************************************************"
256 echo ""
258 dnl ===================================================================
259 dnl checks build and host OSes
260 dnl do this before argument processing to allow for platform dependent defaults
261 dnl ===================================================================
263 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
264 # Linux on WSL) trust that.
265 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
266     ac_cv_host="x86_64-pc-wsl"
267     ac_cv_host_cpu="x86_64"
268     ac_cv_host_os="wsl"
269     ac_cv_build="$ac_cv_host"
270     ac_cv_build_cpu="$ac_cv_host_cpu"
271     ac_cv_build_os="$ac_cv_host_os"
273     # Emulation of Cygwin's cygpath command for WSL.
274     cygpath()
275     {
276         if test -n "$UNITTEST_WSL_CYGPATH"; then
277             echo -n cygpath "$@" "==> "
278         fi
280         # Cygwin's real cygpath has a plethora of options but we use only a few here.
281         local args="$@"
282         local opt
283         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
284         OPTIND=1
286         while getopts dmuwlsp opt; do
287             case "$opt" in
288                 \?)
289                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
290                     ;;
291                 ?)
292                     eval opt_$opt=yes
293                     ;;
294             esac
295         done
297         shift $((OPTIND-1))
299         if test $# -ne 1; then
300             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
301         fi
303         local input="$1"
305         local result
307         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
308             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
310             if test -n "$opt_u"; then
311                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
312             fi
314             case "$input" in
315                 /mnt/*)
316                     # A Windows file in WSL format
317                     input=$(wslpath -w "$input")
318                     ;;
319                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
320                     # Already in Windows format
321                     ;;
322                 /*)
323                     input=$(wslpath -w "$input")
324                     ;;
325                 *)
326                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
327                     ;;
328             esac
329             if test -n "$opt_d" -o -n "$opt_s"; then
330                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
331             fi
332             if test -n "$opt_m"; then
333                 input="${input//\\//}"
334             fi
335             echo "$input"
336         else
337             # Print Unix path
339             case "$input" in
340                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
341                     wslpath -u "$input"
342                     ;;
343                 /)
344                     echo "$input"
345                     ;;
346                 *)
347                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
348                     ;;
349             esac
350         fi
351     }
353     if test -n "$UNITTEST_WSL_CYGPATH"; then
354         BUILDDIR=.
356         # Nothing special with these file names, just arbitrary ones picked to test with
357         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
359         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
360         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
361         # At least on my machine for instance this file does have an 8.3 name
362         cygpath -d /mnt/c/windows/WindowsUpdate.log
363         # But for instance this one doesn't
364         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ws /mnt/c/windows/WindowsUpdate.log
366         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
367         cygpath -ms /mnt/c/windows/WindowsUpdate.log
369         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
370         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
372         exit 0
373     fi
376 AC_CANONICAL_HOST
377 AC_CANONICAL_BUILD
379 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
380     BUILDDIR=.
381     GREP=grep
383     # Use of PathFormat must be after AC_CANONICAL_BUILD above
384     PathFormat /
385     printf "$formatted_path , $formatted_path_unix\n"
387     PathFormat $PWD
388     printf "$formatted_path , $formatted_path_unix\n"
390     PathFormat "$PROGRAMFILESX86"
391     printf "$formatted_path , $formatted_path_unix\n"
393     exit 0
396 AC_MSG_CHECKING([for product name])
397 PRODUCTNAME="AC_PACKAGE_NAME"
398 if test -n "$with_product_name" -a "$with_product_name" != no; then
399     PRODUCTNAME="$with_product_name"
401 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
402     PRODUCTNAME="${PRODUCTNAME}Dev"
404 AC_MSG_RESULT([$PRODUCTNAME])
405 AC_SUBST(PRODUCTNAME)
406 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
407 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
409 dnl ===================================================================
410 dnl Our version is defined by the AC_INIT() at the top of this script.
411 dnl ===================================================================
413 AC_MSG_CHECKING([for package version])
414 if test -n "$with_package_version" -a "$with_package_version" != no; then
415     PACKAGE_VERSION="$with_package_version"
417 AC_MSG_RESULT([$PACKAGE_VERSION])
419 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
421 LIBO_VERSION_MAJOR=$1
422 LIBO_VERSION_MINOR=$2
423 LIBO_VERSION_MICRO=$3
424 LIBO_VERSION_PATCH=$4
426 LIBO_VERSION_SUFFIX=$5
428 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
429 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
430 # they get undoubled before actually passed to sed.
431 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
432 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
433 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
434 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
436 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
437 # three non-negative integers. Please find more information about CFBundleVersion at
438 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
440 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
441 # of at most three non-negative integers. Please find more information about
442 # CFBundleShortVersionString at
443 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
445 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
447 if test "$enable_macosx_sandbox" = yes; then
448     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
449     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
450 else
451     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
452     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
455 AC_SUBST(LIBO_VERSION_MAJOR)
456 AC_SUBST(LIBO_VERSION_MINOR)
457 AC_SUBST(LIBO_VERSION_MICRO)
458 AC_SUBST(LIBO_VERSION_PATCH)
459 AC_SUBST(LIBO_VERSION_SUFFIX)
460 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
461 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
462 AC_SUBST(MACOSX_BUNDLE_VERSION)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
466 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
467 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
469 LIBO_THIS_YEAR=`date +%Y`
470 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
472 dnl ===================================================================
473 dnl Product version
474 dnl ===================================================================
475 AC_MSG_CHECKING([for product version])
476 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
477 AC_MSG_RESULT([$PRODUCTVERSION])
478 AC_SUBST(PRODUCTVERSION)
480 AC_PROG_EGREP
481 # AC_PROG_EGREP doesn't set GREP on all systems as well
482 AC_PATH_PROG(GREP, grep)
484 BUILDDIR=`pwd`
485 cd $srcdir
486 SRC_ROOT=`pwd`
487 cd $BUILDDIR
488 x_Cygwin=[\#]
490 dnl ======================================
491 dnl Required GObject introspection version
492 dnl ======================================
493 INTROSPECTION_REQUIRED_VERSION=1.32.0
495 dnl ===================================================================
496 dnl Search all the common names for GNU Make
497 dnl ===================================================================
498 AC_MSG_CHECKING([for GNU Make])
500 # try to use our own make if it is available and GNUMAKE was not already defined
501 if test -z "$GNUMAKE"; then
502     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
503         GNUMAKE="$LODE_HOME/opt/bin/make"
504     elif test -x "/opt/lo/bin/make"; then
505         GNUMAKE="/opt/lo/bin/make"
506     fi
509 GNUMAKE_WIN_NATIVE=
510 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
511     if test -n "$a"; then
512         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
513         if test $? -eq 0;  then
514             if test "$build_os" = "cygwin"; then
515                 if test -n "$($a -v | grep 'Built for Windows')" ; then
516                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
517                     GNUMAKE_WIN_NATIVE="TRUE"
518                 else
519                     GNUMAKE=`which $a`
520                 fi
521             else
522                 GNUMAKE=`which $a`
523             fi
524             break
525         fi
526     fi
527 done
528 AC_MSG_RESULT($GNUMAKE)
529 if test -z "$GNUMAKE"; then
530     AC_MSG_ERROR([not found. install GNU Make.])
531 else
532     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
533         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
534     fi
537 win_short_path_for_make()
539     local short_path="$1"
540     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541         cygpath -sm "$short_path"
542     else
543         cygpath -u "$(cygpath -d "$short_path")"
544     fi
548 if test "$build_os" = "cygwin"; then
549     PathFormat "$SRC_ROOT"
550     SRC_ROOT="$formatted_path"
551     PathFormat "$BUILDDIR"
552     BUILDDIR="$formatted_path"
553     x_Cygwin=
554     AC_MSG_CHECKING(for explicit COMSPEC)
555     if test -z "$COMSPEC"; then
556         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
557     else
558         AC_MSG_RESULT([found: $COMSPEC])
559     fi
562 AC_SUBST(SRC_ROOT)
563 AC_SUBST(BUILDDIR)
564 AC_SUBST(x_Cygwin)
565 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
566 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
567 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
569 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
570     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
573 # need sed in os checks...
574 AC_PATH_PROGS(SED, sed)
575 if test -z "$SED"; then
576     AC_MSG_ERROR([install sed to run this script])
579 # Set the ENABLE_LTO variable
580 # ===================================================================
581 AC_MSG_CHECKING([whether to use link-time optimization])
582 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
583     ENABLE_LTO="TRUE"
584     AC_MSG_RESULT([yes])
585 else
586     ENABLE_LTO=""
587     AC_MSG_RESULT([no])
589 AC_SUBST(ENABLE_LTO)
591 AC_ARG_ENABLE(fuzz-options,
592     AS_HELP_STRING([--enable-fuzz-options],
593         [Randomly enable or disable each of those configurable options
594          that are supposed to be freely selectable without interdependencies,
595          or where bad interaction from interdependencies is automatically avoided.])
598 dnl ===================================================================
599 dnl When building for Android, --with-android-ndk,
600 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
601 dnl mandatory
602 dnl ===================================================================
604 AC_ARG_WITH(android-ndk,
605     AS_HELP_STRING([--with-android-ndk],
606         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
609 AC_ARG_WITH(android-ndk-toolchain-version,
610     AS_HELP_STRING([--with-android-ndk-toolchain-version],
611         [Specify which toolchain version to use, of those present in the
612         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
613         with_android_ndk_toolchain_version=clang5.0)
615 AC_ARG_WITH(android-sdk,
616     AS_HELP_STRING([--with-android-sdk],
617         [Specify location of the Android SDK. Mandatory when building for Android.]),
620 AC_ARG_WITH(android-api-level,
621     AS_HELP_STRING([--with-android-api-level],
622         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
625 ANDROID_NDK_HOME=
626 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
627     with_android_ndk="$SRC_ROOT/external/android-ndk"
629 if test -n "$with_android_ndk"; then
630     eval ANDROID_NDK_HOME=$with_android_ndk
632     # Set up a lot of pre-canned defaults
634     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
635         if test ! -f $ANDROID_NDK_HOME/source.properties; then
636             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
637         fi
638         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
639     else
640         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
641     fi
642     if test -z "$ANDROID_NDK_VERSION";  then
643         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
644     fi
645     case $ANDROID_NDK_VERSION in
646     r9*|r10*)
647         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
648         ;;
649     11.1.*|12.1.*|13.1.*|14.1.*)
650         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
651         ;;
652     16.*|17.*|18.*|19.*|20.*)
653         ;;
654     *)
655         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
656         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
657         ;;
658     esac
660     ANDROID_API_LEVEL=16
661     if test -n "$with_android_api_level" ; then
662         ANDROID_API_LEVEL="$with_android_api_level"
663     fi
665     android_cpu=$host_cpu
666     if test $host_cpu = arm; then
667         android_platform_prefix=arm-linux-androideabi
668         android_gnu_prefix=$android_platform_prefix
669         LLVM_TRIPLE=armv7a-linux-androideabi
670         ANDROID_APP_ABI=armeabi-v7a
671         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
672     elif test $host_cpu = aarch64; then
673         android_platform_prefix=aarch64-linux-android
674         android_gnu_prefix=$android_platform_prefix
675         LLVM_TRIPLE=$android_platform_prefix
676         # minimum android version that supports aarch64
677         if test "$ANDROID_API_LEVEL" -lt "21" ; then
678             ANDROID_API_LEVEL=21
679         fi
680         ANDROID_APP_ABI=arm64-v8a
681     elif test $host_cpu = x86_64; then
682         android_platform_prefix=x86_64-linux-android
683         android_gnu_prefix=$android_platform_prefix
684         LLVM_TRIPLE=$android_platform_prefix
685         # minimum android version that supports x86_64
686         ANDROID_API_LEVEL=21
687         ANDROID_APP_ABI=x86_64
688     else
689         # host_cpu is something like "i386" or "i686" I guess, NDK uses
690         # "x86" in some contexts
691         android_cpu=x86
692         android_platform_prefix=$android_cpu
693         android_gnu_prefix=i686-linux-android
694         LLVM_TRIPLE=$android_gnu_prefix
695         ANDROID_APP_ABI=x86
696     fi
698     case "$with_android_ndk_toolchain_version" in
699     clang5.0)
700         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
701         ;;
702     *)
703         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
704     esac
706     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
708     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
709     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
710     # manage to link the (app-specific) single huge .so that is built for the app in
711     # android/source/ if there is debug information in a significant part of the object files.
712     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
713     # all objects have been built with debug information.)
714     case $build_os in
715     linux-gnu*)
716         android_HOST_TAG=linux-x86_64
717         ;;
718     darwin*)
719         android_HOST_TAG=darwin-x86_64
720         ;;
721     *)
722         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
723         # ndk would also support windows and windows-x86_64
724         ;;
725     esac
726     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
727     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
728     dnl TODO: NSS build uses it...
729     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
730     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
732     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
733     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
734     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
735     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
736     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
738     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
739     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
740     if test "$ENABLE_LTO" = TRUE; then
741         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
742         # $CC and $CXX when building external libraries
743         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
744     fi
746     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
748     if test -z "$CC"; then
749         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
750         CC_BASE="clang"
751     fi
752     if test -z "$CXX"; then
753         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
754         CXX_BASE="clang++"
755     fi
757 AC_SUBST(ANDROID_NDK_HOME)
758 AC_SUBST(ANDROID_APP_ABI)
759 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
761 dnl ===================================================================
762 dnl --with-android-sdk
763 dnl ===================================================================
764 ANDROID_SDK_HOME=
765 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
766     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
768 if test -n "$with_android_sdk"; then
769     eval ANDROID_SDK_HOME=$with_android_sdk
770     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
772 AC_SUBST(ANDROID_SDK_HOME)
774 AC_ARG_ENABLE([android-lok],
775     AS_HELP_STRING([--enable-android-lok],
776         [The Android app from the android/ subdir needs several tweaks all
777          over the place that break the LOK when used in the Online-based
778          Android app.  This switch indicates that the intent of this build is
779          actually the Online-based, non-modified LOK.])
781 ENABLE_ANDROID_LOK=
782 if test -n "$ANDROID_NDK_HOME" ; then
783     if test "$enable_android_lok" = yes; then
784         ENABLE_ANDROID_LOK=TRUE
785         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
786         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
787     else
788         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
789     fi
791 AC_SUBST([ENABLE_ANDROID_LOK])
793 libo_FUZZ_ARG_ENABLE([android-editing],
794     AS_HELP_STRING([--enable-android-editing],
795         [Enable the experimental editing feature on Android.])
797 ENABLE_ANDROID_EDITING=
798 if test "$enable_android_editing" = yes; then
799     ENABLE_ANDROID_EDITING=TRUE
801 AC_SUBST([ENABLE_ANDROID_EDITING])
803 disable_database_connectivity_dependencies()
805     enable_evolution2=no
806     enable_firebird_sdbc=no
807     enable_mariadb_sdbc=no
808     enable_postgresql_sdbc=no
809     enable_report_builder=no
812 # ===================================================================
814 # Start initial platform setup
816 # The using_* variables reflect platform support and should not be
817 # changed after the "End initial platform setup" block.
818 # This is also true for most test_* variables.
819 # ===================================================================
820 build_crypto=yes
821 test_cmis=yes
822 test_gdb_index=no
823 test_openldap=yes
824 test_split_debug=no
825 test_webdav=yes
827 # There is currently just iOS not using salplug, so this explicitly enables it.
828 # must: using_freetype_fontconfig
829 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
830 using_vclplug=yes
831 # must: using_x11
833 # Default values, as such probably valid just for Linux, set
834 # differently below just for Mac OSX, but at least better than
835 # hardcoding these as we used to do. Much of this is duplicated also
836 # in solenv for old build system and for gbuild, ideally we should
837 # perhaps define stuff like this only here in configure.ac?
839 LINKFLAGSSHL="-shared"
840 PICSWITCH="-fpic"
841 DLLPOST=".so"
843 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
845 INSTROOTBASESUFFIX=
846 INSTROOTCONTENTSUFFIX=
847 SDKDIRNAME=sdk
849 HOST_PLATFORM="$host"
851 host_cpu_for_clang="$host_cpu"
853 case "$host_os" in
855 solaris*)
856     using_freetype_fontconfig=yes
857     using_x11=yes
858     build_skia=yes
859     _os=SunOS
861     dnl ===========================================================
862     dnl Check whether we're using Solaris 10 - SPARC or Intel.
863     dnl ===========================================================
864     AC_MSG_CHECKING([the Solaris operating system release])
865     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
866     if test "$_os_release" -lt "10"; then
867         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
868     else
869         AC_MSG_RESULT([ok ($_os_release)])
870     fi
872     dnl Check whether we're using a SPARC or i386 processor
873     AC_MSG_CHECKING([the processor type])
874     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
875         AC_MSG_RESULT([ok ($host_cpu)])
876     else
877         AC_MSG_ERROR([only SPARC and i386 processors are supported])
878     fi
879     ;;
881 linux-gnu*|k*bsd*-gnu*|linux-musl*)
882     using_freetype_fontconfig=yes
883     using_x11=yes
884     build_skia=yes
885     test_gdb_index=yes
886     test_split_debug=yes
887     if test "$enable_fuzzers" = yes; then
888         test_system_freetype=no
889     fi
890     _os=Linux
891     ;;
893 gnu)
894     using_freetype_fontconfig=yes
895     using_x11=no
896     _os=GNU
897      ;;
899 cygwin*|wsl*)
900     # When building on Windows normally with MSVC under Cygwin,
901     # configure thinks that the host platform (the platform the
902     # built code will run on) is Cygwin, even if it obviously is
903     # Windows, which in Autoconf terminology is called
904     # "mingw32". (Which is misleading as MinGW is the name of the
905     # tool-chain, not an operating system.)
907     # Somewhat confusing, yes. But this configure script doesn't
908     # look at $host etc that much, it mostly uses its own $_os
909     # variable, set here in this case statement.
911     using_freetype_fontconfig=no
912     using_x11=no
913     test_openldap=no
914     build_skia=yes
915     _os=WINNT
917     DLLPOST=".dll"
918     LINKFLAGSNOUNDEFS=
920     if test "$host_cpu" = "aarch64"; then
921         build_skia=no
922         enable_gpgmepp=no
923         enable_coinmp=no
924         enable_firebird_sdbc=no
925     fi
926     ;;
928 darwin*|macos*) # macOS
929     using_freetype_fontconfig=no
930     using_x11=no
931     build_skia=yes
932     if test -n "$LODE_HOME" ; then
933         mac_sanitize_path
934         AC_MSG_NOTICE([sanitized the PATH to $PATH])
935     fi
936     _os=Darwin
937     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
938     INSTROOTCONTENTSUFFIX=/Contents
939     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
940     # See comment above the case "$host_os"
941     LINKFLAGSSHL="-dynamiclib -single_module"
943     # -fPIC is default
944     PICSWITCH=""
946     DLLPOST=".dylib"
948     # -undefined error is the default
949     LINKFLAGSNOUNDEFS=""
950     case "$host_cpu" in
951     aarch64|arm64)
952         case "$host_os" in
953         macos*)
954             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
955             # the "macos" part so be sure to use aarch64-apple-darwin for now.
956             HOST_PLATFORM=aarch64-apple-darwin
957             ;;
958         esac
960         # Apple's Clang uses "arm64"
961         host_cpu_for_clang=arm64
962     esac
965 ios*) # iOS
966     using_freetype_fontconfig=no
967     using_vclplug=no
968     using_x11=no
969     build_crypto=no
970     test_cmis=no
971     test_openldap=no
972     test_webdav=no
973     if test -n "$LODE_HOME" ; then
974         mac_sanitize_path
975         AC_MSG_NOTICE([sanitized the PATH to $PATH])
976     fi
977     enable_gpgmepp=no
978     _os=iOS
979     enable_mpl_subset=yes
980     enable_lotuswordpro=no
981     disable_database_connectivity_dependencies
982     enable_coinmp=no
983     enable_lpsolve=no
984     enable_extension_integration=no
985     enable_xmlhelp=no
986     with_ppds=no
987     if test "$enable_ios_simulator" = "yes"; then
988         host=x86_64-apple-darwin
989     fi
990     # See comment above the case "$host_os"
991     LINKFLAGSSHL="-dynamiclib -single_module"
993     # -fPIC is default
994     PICSWITCH=""
996     DLLPOST=".dylib"
998     # -undefined error is the default
999     LINKFLAGSNOUNDEFS=""
1001     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1002     # part, so use aarch64-apple-darwin for now.
1003     HOST_PLATFORM=aarch64-apple-darwin
1005     # Apple's Clang uses "arm64"
1006     host_cpu_for_clang=arm64
1009 freebsd*)
1010     using_freetype_fontconfig=yes
1011     using_x11=yes
1012     build_skia=yes
1013     AC_MSG_CHECKING([the FreeBSD operating system release])
1014     if test -n "$with_os_version"; then
1015         OSVERSION="$with_os_version"
1016     else
1017         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1018     fi
1019     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1020     AC_MSG_CHECKING([which thread library to use])
1021     if test "$OSVERSION" -lt "500016"; then
1022         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1023         PTHREAD_LIBS="-pthread"
1024     elif test "$OSVERSION" -lt "502102"; then
1025         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1026         PTHREAD_LIBS="-lc_r"
1027     else
1028         PTHREAD_CFLAGS=""
1029         PTHREAD_LIBS="-pthread"
1030     fi
1031     AC_MSG_RESULT([$PTHREAD_LIBS])
1032     _os=FreeBSD
1033     ;;
1035 *netbsd*)
1036     using_freetype_fontconfig=yes
1037     using_x11=yes
1038     test_gtk3_kde5=no
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     using_freetype_fontconfig=yes
1046     using_x11=yes
1047     test_randr=no
1048     test_gstreamer_1_0=no
1049     PTHREAD_LIBS=-pthread
1050     _os=AIX
1051     ;;
1053 openbsd*)
1054     using_freetype_fontconfig=yes
1055     using_x11=yes
1056     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057     PTHREAD_LIBS="-pthread"
1058     _os=OpenBSD
1059     ;;
1061 dragonfly*)
1062     using_freetype_fontconfig=yes
1063     using_x11=yes
1064     build_skia=yes
1065     PTHREAD_LIBS="-pthread"
1066     _os=DragonFly
1067     ;;
1069 linux-android*)
1070     using_freetype_fontconfig=yes
1071     using_headless_plugin=no
1072     using_x11=no
1073     build_crypto=no
1074     test_openldap=no
1075     test_system_freetype=no
1076     test_webdav=no
1077     disable_database_connectivity_dependencies
1078     enable_lotuswordpro=no
1079     enable_mpl_subset=yes
1080     enable_cairo_canvas=no
1081     enable_coinmp=yes
1082     enable_lpsolve=no
1083     enable_odk=no
1084     enable_python=no
1085     enable_xmlhelp=no
1086     _os=Android
1088     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1089     ;;
1091 haiku*)
1092     using_freetype_fontconfig=yes
1093     using_x11=no
1094     test_gtk3_kde5=no
1095     test_kf5=yes
1096     enable_odk=no
1097     enable_coinmp=no
1098     enable_pdfium=no
1099     enable_sdremote=no
1100     enable_postgresql_sdbc=no
1101     enable_firebird_sdbc=no
1102     _os=Haiku
1103     ;;
1105 emscripten)
1106     using_freetype_fontconfig=yes
1107     using_x11=no
1108     test_openldap=no
1109     enable_compiler_plugins=no
1110     test_cmis=no
1111     test_webdav=no
1112     enable_database_connectivity=no
1113     enable_lpsolve=no
1114     enable_xmlhelp=no
1115     with_system_zlib=no
1116     with_theme="breeze"
1117     _os=Emscripten
1118     ;;
1121     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1122     ;;
1123 esac
1125 AC_SUBST(HOST_PLATFORM)
1127 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1128     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1131 # Set defaults, if not set by platform
1132 test "${test_cups+set}" = set || test_cups="$using_x11"
1133 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1134 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1135 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1136 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1137 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1138 # don't handle test_qt5, so it can disable test_kf5 later
1139 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1140 test "${test_randr+set}" = set || test_randr="$using_x11"
1141 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1142 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1144 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1145 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1146 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1148 # convenience / platform overriding "fixes"
1149 # Don't sort!
1150 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1151 test "$test_kf5" = yes && test_qt5=yes
1152 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1153 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1154 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1156 # Keep in sync with the above $using_x11 depending test default list
1157 disable_x11_tests()
1159     test_cups=no
1160     test_dbus=no
1161     test_gstreamer_1_0=no
1162     test_gtk3_kde5=no
1163     test_gtk3=no
1164     test_gtk4=no
1165     test_kf5=no
1166     test_qt5=no
1167     test_qt6=no
1168     test_randr=no
1169     test_xrender=no
1172 test "$using_x11" = yes && USING_X11=TRUE
1174 if test "$using_freetype_fontconfig" = yes; then
1175     if test "$using_headless_plugin" = yes; then
1176         AC_DEFINE(ENABLE_HEADLESS)
1177         ENABLE_HEADLESS=TRUE
1178     fi
1181 AC_SUBST(ENABLE_HEADLESS)
1183 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1184 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1185 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1186 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1188 # ===================================================================
1190 # End initial platform setup
1192 # ===================================================================
1194 if test "$_os" = "Android" ; then
1195     # Verify that the NDK and SDK options are proper
1196     if test -z "$with_android_ndk"; then
1197         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1198     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1199         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1200     fi
1202     if test -z "$ANDROID_SDK_HOME"; then
1203         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1204     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1205         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1206     fi
1208     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1209     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1210         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1211                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1212                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1213         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1214         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1215         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1216     fi
1217     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1218         AC_MSG_WARN([android support repository not found - install with
1219                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1220                      to allow the build to download the specified version of the android support libraries])
1221         add_warning "android support repository not found - install with"
1222         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1223         add_warning "to allow the build to download the specified version of the android support libraries"
1224     fi
1227 if test "$_os" = "AIX"; then
1228     AC_PATH_PROG(GAWK, gawk)
1229     if test -z "$GAWK"; then
1230         AC_MSG_ERROR([gawk not found in \$PATH])
1231     fi
1234 AC_SUBST(SDKDIRNAME)
1236 AC_SUBST(PTHREAD_CFLAGS)
1237 AC_SUBST(PTHREAD_LIBS)
1239 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1240 # By default use the ones specified by our build system,
1241 # but explicit override is possible.
1242 AC_MSG_CHECKING(for explicit AFLAGS)
1243 if test -n "$AFLAGS"; then
1244     AC_MSG_RESULT([$AFLAGS])
1245     x_AFLAGS=
1246 else
1247     AC_MSG_RESULT(no)
1248     x_AFLAGS=[\#]
1250 AC_MSG_CHECKING(for explicit CFLAGS)
1251 if test -n "$CFLAGS"; then
1252     AC_MSG_RESULT([$CFLAGS])
1253     x_CFLAGS=
1254 else
1255     AC_MSG_RESULT(no)
1256     x_CFLAGS=[\#]
1258 AC_MSG_CHECKING(for explicit CXXFLAGS)
1259 if test -n "$CXXFLAGS"; then
1260     AC_MSG_RESULT([$CXXFLAGS])
1261     x_CXXFLAGS=
1262 else
1263     AC_MSG_RESULT(no)
1264     x_CXXFLAGS=[\#]
1266 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1267 if test -n "$OBJCFLAGS"; then
1268     AC_MSG_RESULT([$OBJCFLAGS])
1269     x_OBJCFLAGS=
1270 else
1271     AC_MSG_RESULT(no)
1272     x_OBJCFLAGS=[\#]
1274 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1275 if test -n "$OBJCXXFLAGS"; then
1276     AC_MSG_RESULT([$OBJCXXFLAGS])
1277     x_OBJCXXFLAGS=
1278 else
1279     AC_MSG_RESULT(no)
1280     x_OBJCXXFLAGS=[\#]
1282 AC_MSG_CHECKING(for explicit LDFLAGS)
1283 if test -n "$LDFLAGS"; then
1284     AC_MSG_RESULT([$LDFLAGS])
1285     x_LDFLAGS=
1286 else
1287     AC_MSG_RESULT(no)
1288     x_LDFLAGS=[\#]
1290 AC_SUBST(AFLAGS)
1291 AC_SUBST(CFLAGS)
1292 AC_SUBST(CXXFLAGS)
1293 AC_SUBST(OBJCFLAGS)
1294 AC_SUBST(OBJCXXFLAGS)
1295 AC_SUBST(LDFLAGS)
1296 AC_SUBST(x_AFLAGS)
1297 AC_SUBST(x_CFLAGS)
1298 AC_SUBST(x_CXXFLAGS)
1299 AC_SUBST(x_OBJCFLAGS)
1300 AC_SUBST(x_OBJCXXFLAGS)
1301 AC_SUBST(x_LDFLAGS)
1303 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1304 my_original_CFLAGS=$CFLAGS
1305 my_original_CXXFLAGS=$CXXFLAGS
1306 my_original_CPPFLAGS=$CPPFLAGS
1308 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1309 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1310 dnl AC_PROG_CC internally.
1311 if test "$_os" != "WINNT"; then
1312     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1313     save_CFLAGS=$CFLAGS
1314     AC_PROG_CC
1315     CFLAGS=$save_CFLAGS
1316     if test -z "$CC_BASE"; then
1317         CC_BASE=`first_arg_basename "$CC"`
1318     fi
1321 if test "$_os" != "WINNT"; then
1322     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1323 else
1324     ENDIANNESS=little
1326 AC_SUBST(ENDIANNESS)
1328 if test $_os != "WINNT"; then
1329     save_LIBS="$LIBS"
1330     AC_SEARCH_LIBS([dlsym], [dl],
1331         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1332         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1333     LIBS="$save_LIBS"
1335 AC_SUBST(DLOPEN_LIBS)
1337 # Check for a (GNU) backtrace implementation
1338 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1339 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1340 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1341     save_LIBS="$LIBS"
1342     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1343         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1344         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1345     LIBS="$save_LIBS"
1347 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1348     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1351 dnl ===================================================================
1352 dnl Sanity checks for Emscripten SDK setup
1353 dnl ===================================================================
1355 if test "$_os" = "Emscripten"; then
1356     EMSCRIPTEN_ERROR=0
1357     if ! which emconfigure >/dev/null 2>&1; then
1358         AC_MSG_WARN([emconfigure must be in your \$PATH])
1359         EMSCRIPTEN_ERROR=1
1360     fi
1361     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1362         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1363         EMSCRIPTEN_ERROR=1
1364     fi
1365     if test $EMSCRIPTEN_ERROR -ne 0; then
1366         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1367     fi
1370 ###############################################################################
1371 # Extensions switches --enable/--disable
1372 ###############################################################################
1373 # By default these should be enabled unless having extra dependencies.
1374 # If there is extra dependency over configure options then the enable should
1375 # be automagic based on whether the requiring feature is enabled or not.
1376 # All this options change anything only with --enable-extension-integration.
1378 # The name of this option and its help string makes it sound as if
1379 # extensions are built anyway, just not integrated in the installer,
1380 # if you use --disable-extension-integration. Is that really the
1381 # case?
1383 AC_ARG_ENABLE(ios-simulator,
1384     AS_HELP_STRING([--enable-ios-simulator],
1385         [build for iOS simulator])
1388 libo_FUZZ_ARG_ENABLE(extension-integration,
1389     AS_HELP_STRING([--disable-extension-integration],
1390         [Disable integration of the built extensions in the installer of the
1391          product. Use this switch to disable the integration.])
1394 AC_ARG_ENABLE(avmedia,
1395     AS_HELP_STRING([--disable-avmedia],
1396         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(database-connectivity,
1400     AS_HELP_STRING([--disable-database-connectivity],
1401         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1404 # This doesn't mean not building (or "integrating") extensions
1405 # (although it probably should; i.e. it should imply
1406 # --disable-extension-integration I guess), it means not supporting
1407 # any extension mechanism at all
1408 libo_FUZZ_ARG_ENABLE(extensions,
1409     AS_HELP_STRING([--disable-extensions],
1410         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1413 AC_ARG_ENABLE(scripting,
1414     AS_HELP_STRING([--disable-scripting],
1415         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1418 # This is mainly for Android and iOS, but could potentially be used in some
1419 # special case otherwise, too, so factored out as a separate setting
1421 AC_ARG_ENABLE(dynamic-loading,
1422     AS_HELP_STRING([--disable-dynamic-loading],
1423         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1426 libo_FUZZ_ARG_ENABLE(report-builder,
1427     AS_HELP_STRING([--disable-report-builder],
1428         [Disable the Report Builder.])
1431 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1432     AS_HELP_STRING([--enable-ext-wiki-publisher],
1433         [Enable the Wiki Publisher extension.])
1436 libo_FUZZ_ARG_ENABLE(lpsolve,
1437     AS_HELP_STRING([--disable-lpsolve],
1438         [Disable compilation of the lp solve solver ])
1440 libo_FUZZ_ARG_ENABLE(coinmp,
1441     AS_HELP_STRING([--disable-coinmp],
1442         [Disable compilation of the CoinMP solver ])
1445 libo_FUZZ_ARG_ENABLE(pdfimport,
1446     AS_HELP_STRING([--disable-pdfimport],
1447         [Disable building the PDF import feature.])
1450 libo_FUZZ_ARG_ENABLE(pdfium,
1451     AS_HELP_STRING([--disable-pdfium],
1452         [Disable building PDFium. Results in unsecure PDF signature verification.])
1455 libo_FUZZ_ARG_ENABLE(skia,
1456     AS_HELP_STRING([--disable-skia],
1457         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1460 ###############################################################################
1462 dnl ---------- *** ----------
1464 libo_FUZZ_ARG_ENABLE(mergelibs,
1465     AS_HELP_STRING([--enable-mergelibs],
1466         [Merge several of the smaller libraries into one big, "merged", one.])
1469 libo_FUZZ_ARG_ENABLE(breakpad,
1470     AS_HELP_STRING([--enable-breakpad],
1471         [Enables breakpad for crash reporting.])
1474 libo_FUZZ_ARG_ENABLE(crashdump,
1475     AS_HELP_STRING([--disable-crashdump],
1476         [Disable dump.ini and dump-file, when --enable-breakpad])
1479 AC_ARG_ENABLE(fetch-external,
1480     AS_HELP_STRING([--disable-fetch-external],
1481         [Disables fetching external tarballs from web sources.])
1484 AC_ARG_ENABLE(fuzzers,
1485     AS_HELP_STRING([--enable-fuzzers],
1486         [Enables building libfuzzer targets for fuzz testing.])
1489 libo_FUZZ_ARG_ENABLE(pch,
1490     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1491         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1492          Using 'system' will include only external headers, 'base' will add also headers
1493          from base modules, 'normal' will also add all headers except from the module built,
1494          'full' will use all suitable headers even from a module itself.])
1497 libo_FUZZ_ARG_ENABLE(epm,
1498     AS_HELP_STRING([--enable-epm],
1499         [LibreOffice includes self-packaging code, that requires epm, however epm is
1500          useless for large scale package building.])
1503 libo_FUZZ_ARG_ENABLE(odk,
1504     AS_HELP_STRING([--enable-odk],
1505         [Enable building the Office Development Kit, the part that extensions need to build against])
1508 AC_ARG_ENABLE(mpl-subset,
1509     AS_HELP_STRING([--enable-mpl-subset],
1510         [Don't compile any pieces which are not MPL or more liberally licensed])
1513 libo_FUZZ_ARG_ENABLE(evolution2,
1514     AS_HELP_STRING([--enable-evolution2],
1515         [Allows the built-in evolution 2 addressbook connectivity build to be
1516          enabled.])
1519 AC_ARG_ENABLE(avahi,
1520     AS_HELP_STRING([--enable-avahi],
1521         [Determines whether to use Avahi to advertise Impress to remote controls.])
1524 libo_FUZZ_ARG_ENABLE(werror,
1525     AS_HELP_STRING([--enable-werror],
1526         [Turn warnings to errors. (Has no effect in modules where the treating
1527          of warnings as errors is disabled explicitly.)]),
1530 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1531     AS_HELP_STRING([--enable-assert-always-abort],
1532         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1535 libo_FUZZ_ARG_ENABLE(dbgutil,
1536     AS_HELP_STRING([--enable-dbgutil],
1537         [Provide debugging support from --enable-debug and include additional debugging
1538          utilities such as object counting or more expensive checks.
1539          This is the recommended option for developers.
1540          Note that this makes the build ABI incompatible, it is not possible to mix object
1541          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1543 libo_FUZZ_ARG_ENABLE(debug,
1544     AS_HELP_STRING([--enable-debug],
1545         [Include debugging information, disable compiler optimization and inlining plus
1546          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1548 libo_FUZZ_ARG_ENABLE(split-debug,
1549     AS_HELP_STRING([--disable-split-debug],
1550         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1551          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1553 libo_FUZZ_ARG_ENABLE(gdb-index,
1554     AS_HELP_STRING([--disable-gdb-index],
1555         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1556          The feature requires the gold or lld linker.]))
1558 libo_FUZZ_ARG_ENABLE(sal-log,
1559     AS_HELP_STRING([--enable-sal-log],
1560         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1562 libo_FUZZ_ARG_ENABLE(symbols,
1563     AS_HELP_STRING([--enable-symbols],
1564         [Generate debug information.
1565          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1566          otherwise. It is possible to explicitly specify gbuild build targets
1567          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1568          everything in the directory; there is no ordering, more specific overrides
1569          more general, and disabling takes precedence).
1570          Example: --enable-symbols="all -sw/ -Library_sc".]))
1572 libo_FUZZ_ARG_ENABLE(optimized,
1573     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1574         [Whether to compile with optimization flags.
1575          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1576          otherwise. Using 'debug' will try to use only optimizations that should
1577          not interfere with debugging. For Emscripten we default to optimized (-O1)
1578          debug build, as otherwise binaries become too large.]))
1580 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1581     AS_HELP_STRING([--disable-runtime-optimizations],
1582         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1583          JVM JIT) that are known to interact badly with certain dynamic analysis
1584          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1585          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1586          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1588 AC_ARG_WITH(valgrind,
1589     AS_HELP_STRING([--with-valgrind],
1590         [Make availability of Valgrind headers a hard requirement.]))
1592 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1593     AS_HELP_STRING([--enable-compiler-plugins],
1594         [Enable compiler plugins that will perform additional checks during
1595          building. Enabled automatically by --enable-dbgutil.
1596          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1597 COMPILER_PLUGINS_DEBUG=
1598 if test "$enable_compiler_plugins" = debug; then
1599     enable_compiler_plugins=yes
1600     COMPILER_PLUGINS_DEBUG=TRUE
1603 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1604     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1605         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1606          relevant in the --disable-compiler-plugins case.]))
1608 libo_FUZZ_ARG_ENABLE(ooenv,
1609     AS_HELP_STRING([--enable-ooenv],
1610         [Enable ooenv for the instdir installation.]))
1612 AC_ARG_ENABLE(lto,
1613     AS_HELP_STRING([--enable-lto],
1614         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1615          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1616          linker.)]))
1618 AC_ARG_ENABLE(python,
1619     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1620         [Enables or disables Python support at run-time.
1621          Also specifies what Python to use at build-time.
1622          'fully-internal' even forces the internal version for uses of Python
1623          during the build.
1624          On macOS the only choices are
1625          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1626          ]))
1628 libo_FUZZ_ARG_ENABLE(gtk3,
1629     AS_HELP_STRING([--disable-gtk3],
1630         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1631 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1633 AC_ARG_ENABLE(gtk4,
1634     AS_HELP_STRING([--enable-gtk4],
1635         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1637 AC_ARG_ENABLE(introspection,
1638     AS_HELP_STRING([--enable-introspection],
1639         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1640          Linux distributions.)]))
1642 AC_ARG_ENABLE(split-app-modules,
1643     AS_HELP_STRING([--enable-split-app-modules],
1644         [Split file lists for app modules, e.g. base, calc.
1645          Has effect only with make distro-pack-install]),
1648 AC_ARG_ENABLE(split-opt-features,
1649     AS_HELP_STRING([--enable-split-opt-features],
1650         [Split file lists for some optional features, e.g. pyuno, testtool.
1651          Has effect only with make distro-pack-install]),
1654 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1655     AS_HELP_STRING([--disable-cairo-canvas],
1656         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1659 libo_FUZZ_ARG_ENABLE(dbus,
1660     AS_HELP_STRING([--disable-dbus],
1661         [Determines whether to enable features that depend on dbus.
1662          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1663 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1665 libo_FUZZ_ARG_ENABLE(sdremote,
1666     AS_HELP_STRING([--disable-sdremote],
1667         [Determines whether to enable Impress remote control (i.e. the server component).]),
1668 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1670 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1671     AS_HELP_STRING([--disable-sdremote-bluetooth],
1672         [Determines whether to build sdremote with bluetooth support.
1673          Requires dbus on Linux.]))
1675 libo_FUZZ_ARG_ENABLE(gio,
1676     AS_HELP_STRING([--disable-gio],
1677         [Determines whether to use the GIO support.]),
1678 ,test "${enable_gio+set}" = set || enable_gio=yes)
1680 AC_ARG_ENABLE(qt5,
1681     AS_HELP_STRING([--enable-qt5],
1682         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1683          available.]),
1686 AC_ARG_ENABLE(qt6,
1687     AS_HELP_STRING([--enable-qt6],
1688         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1689          available.]),
1692 AC_ARG_ENABLE(kf5,
1693     AS_HELP_STRING([--enable-kf5],
1694         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1695          KF5 are available.]),
1698 AC_ARG_ENABLE(gtk3_kde5,
1699     AS_HELP_STRING([--enable-gtk3-kde5],
1700         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1701          platforms where Gtk3, Qt5 and Plasma is available.]),
1704 AC_ARG_ENABLE(gui,
1705     AS_HELP_STRING([--disable-gui],
1706         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1707 ,enable_gui=yes)
1709 libo_FUZZ_ARG_ENABLE(randr,
1710     AS_HELP_STRING([--disable-randr],
1711         [Disable RandR support in the vcl project.]),
1712 ,test "${enable_randr+set}" = set || enable_randr=yes)
1714 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1715     AS_HELP_STRING([--disable-gstreamer-1-0],
1716         [Disable building with the gstreamer 1.0 avmedia backend.]),
1717 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1719 libo_FUZZ_ARG_ENABLE([eot],
1720     [AS_HELP_STRING([--enable-eot],
1721         [Enable support for Embedded OpenType fonts.])],
1722 ,test "${enable_eot+set}" = set || enable_eot=no)
1724 libo_FUZZ_ARG_ENABLE(cve-tests,
1725     AS_HELP_STRING([--disable-cve-tests],
1726         [Prevent CVE tests to be executed]),
1729 libo_FUZZ_ARG_ENABLE(chart-tests,
1730     AS_HELP_STRING([--enable-chart-tests],
1731         [Executes chart XShape tests. In a perfect world these tests would be
1732          stable and everyone could run them, in reality it is best to run them
1733          only on a few machines that are known to work and maintained by people
1734          who can judge if a test failure is a regression or not.]),
1737 AC_ARG_ENABLE(build-opensymbol,
1738     AS_HELP_STRING([--enable-build-opensymbol],
1739         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1740          fontforge installed.]),
1743 AC_ARG_ENABLE(dependency-tracking,
1744     AS_HELP_STRING([--enable-dependency-tracking],
1745         [Do not reject slow dependency extractors.])[
1746   --disable-dependency-tracking
1747                           Disables generation of dependency information.
1748                           Speed up one-time builds.],
1751 AC_ARG_ENABLE(icecream,
1752     AS_HELP_STRING([--enable-icecream],
1753         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1754          It defaults to /opt/icecream for the location of the icecream gcc/g++
1755          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1758 AC_ARG_ENABLE(ld,
1759     AS_HELP_STRING([--enable-ld=<linker>],
1760         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1761          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1762          If <linker> contains any ':', the part before the first ':' is used as the value of
1763          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1764          needed for Clang 12).]),
1767 libo_FUZZ_ARG_ENABLE(cups,
1768     AS_HELP_STRING([--disable-cups],
1769         [Do not build cups support.])
1772 AC_ARG_ENABLE(ccache,
1773     AS_HELP_STRING([--disable-ccache],
1774         [Do not try to use ccache automatically.
1775          By default we will try to detect if ccache is available; in that case if
1776          CC/CXX are not yet set, and --enable-icecream is not given, we
1777          attempt to use ccache. --disable-ccache disables ccache completely.
1778          Additionally ccache's depend mode is enabled if possible,
1779          use --enable-ccache=nodepend to enable ccache without depend mode.
1783 AC_ARG_ENABLE(z7-debug,
1784     AS_HELP_STRING([--enable-z7-debug],
1785         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1786          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1787          Enabled by default if ccache is detected.]))
1789 libo_FUZZ_ARG_ENABLE(online-update,
1790     AS_HELP_STRING([--enable-online-update],
1791         [Enable the online update service that will check for new versions of
1792          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1793          If the value is "mar", the experimental Mozilla-like update will be
1794          enabled instead of the traditional update mechanism.]),
1797 AC_ARG_WITH(update-config,
1798     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1799                    [Path to the update config ini file]))
1801 libo_FUZZ_ARG_ENABLE(extension-update,
1802     AS_HELP_STRING([--disable-extension-update],
1803         [Disable possibility to update installed extensions.]),
1806 libo_FUZZ_ARG_ENABLE(release-build,
1807     AS_HELP_STRING([--enable-release-build],
1808         [Enable release build. Note that the "release build" choice is orthogonal to
1809          whether symbols are present, debug info is generated, or optimization
1810          is done.
1811          See http://wiki.documentfoundation.org/Development/DevBuild]),
1814 AC_ARG_ENABLE(windows-build-signing,
1815     AS_HELP_STRING([--enable-windows-build-signing],
1816         [Enable signing of windows binaries (*.exe, *.dll)]),
1819 AC_ARG_ENABLE(silent-msi,
1820     AS_HELP_STRING([--enable-silent-msi],
1821         [Enable MSI with LIMITUI=1 (silent install).]),
1824 AC_ARG_ENABLE(macosx-code-signing,
1825     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1826         [Sign executables, dylibs, frameworks and the app bundle. If you
1827          don't provide an identity the first suitable certificate
1828          in your keychain is used.]),
1831 AC_ARG_ENABLE(macosx-package-signing,
1832     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1833         [Create a .pkg suitable for uploading to the Mac App Store and sign
1834          it. If you don't provide an identity the first suitable certificate
1835          in your keychain is used.]),
1838 AC_ARG_ENABLE(macosx-sandbox,
1839     AS_HELP_STRING([--enable-macosx-sandbox],
1840         [Make the app bundle run in a sandbox. Requires code signing.
1841          Is required by apps distributed in the Mac App Store, and implies
1842          adherence to App Store rules.]),
1845 AC_ARG_WITH(macosx-bundle-identifier,
1846     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1847         [Define the macOS bundle identifier. Default is the somewhat weird
1848          org.libreoffice.script ("script", huh?).]),
1849 ,with_macosx_bundle_identifier=org.libreoffice.script)
1851 AC_ARG_WITH(product-name,
1852     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1853         [Define the product name. Default is AC_PACKAGE_NAME.]),
1854 ,with_product_name=$PRODUCTNAME)
1856 libo_FUZZ_ARG_ENABLE(community-flavor,
1857     AS_HELP_STRING([--disable-community-flavor],
1858         [Disable the Community branding.]),
1861 AC_ARG_WITH(package-version,
1862     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1863         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1866 libo_FUZZ_ARG_ENABLE(readonly-installset,
1867     AS_HELP_STRING([--enable-readonly-installset],
1868         [Prevents any attempts by LibreOffice to write into its installation. That means
1869          at least that no "system-wide" extensions can be added. Partly experimental work in
1870          progress, probably not fully implemented. Always enabled for macOS.]),
1873 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1874     AS_HELP_STRING([--disable-mariadb-sdbc],
1875         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1878 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1879     AS_HELP_STRING([--disable-postgresql-sdbc],
1880         [Disable the build of the PostgreSQL-SDBC driver.])
1883 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1884     AS_HELP_STRING([--disable-lotuswordpro],
1885         [Disable the build of the Lotus Word Pro filter.]),
1886 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1888 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1889     AS_HELP_STRING([--disable-firebird-sdbc],
1890         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1891 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1893 AC_ARG_ENABLE(bogus-pkg-config,
1894     AS_HELP_STRING([--enable-bogus-pkg-config],
1895         [MACOSX only: on MacOSX pkg-config can cause trouble. by default if one is found in the PATH, an error is issued. This flag turn that error into a warning.]),
1898 AC_ARG_ENABLE(openssl,
1899     AS_HELP_STRING([--disable-openssl],
1900         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1901          components will either use GNUTLS or NSS. Work in progress,
1902          use only if you are hacking on it.]),
1903 ,enable_openssl=yes)
1905 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1906     AS_HELP_STRING([--enable-cipher-openssl-backend],
1907         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1908          Requires --enable-openssl.]))
1910 AC_ARG_ENABLE(nss,
1911     AS_HELP_STRING([--disable-nss],
1912         [Disable using NSS. If disabled,
1913          components will either use GNUTLS or openssl. Work in progress,
1914          use only if you are hacking on it.]),
1915 ,enable_nss=yes)
1917 AC_ARG_ENABLE(library-bin-tar,
1918     AS_HELP_STRING([--enable-library-bin-tar],
1919         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1920         Some libraries can save their build result in a tarball
1921         stored in TARFILE_LOCATION. That binary tarball is
1922         uniquely identified by the source tarball,
1923         the content of the config_host.mk file and the content
1924         of the top-level directory in core for that library
1925         If this option is enabled, then if such a tarfile exist, it will be untarred
1926         instead of the source tarfile, and the build step will be skipped for that
1927         library.
1928         If a proper tarfile does not exist, then the normal source-based
1929         build is done for that library and a proper binary tarfile is created
1930         for the next time.]),
1933 AC_ARG_ENABLE(dconf,
1934     AS_HELP_STRING([--disable-dconf],
1935         [Disable the dconf configuration backend (enabled by default where
1936          available).]))
1938 libo_FUZZ_ARG_ENABLE(formula-logger,
1939     AS_HELP_STRING(
1940         [--enable-formula-logger],
1941         [Enable formula logger for logging formula calculation flow in Calc.]
1942     )
1945 AC_ARG_ENABLE(ldap,
1946     AS_HELP_STRING([--disable-ldap],
1947         [Disable LDAP support.]),
1948 ,enable_ldap=yes)
1950 AC_ARG_ENABLE(opencl,
1951     AS_HELP_STRING([--disable-opencl],
1952         [Disable OpenCL support.]),
1953 ,enable_opencl=yes)
1955 libo_FUZZ_ARG_ENABLE(librelogo,
1956     AS_HELP_STRING([--disable-librelogo],
1957         [Do not build LibreLogo.]),
1958 ,enable_librelogo=yes)
1960 AC_ARG_ENABLE(cmis,
1961     AS_HELP_STRING([--disable-cmis],
1962         [Disable CMIS support.]),
1963 ,enable_cmis=yes)
1965 AC_ARG_ENABLE(curl,
1966     AS_HELP_STRING([--disable-curl],
1967         [Disable CURL support.]),
1968 ,enable_curl=yes)
1970 AC_ARG_ENABLE(wasm-strip,
1971     AS_HELP_STRING([--enable-wasm-strip],
1972         [Strip the static build like for WASM/emscripten platform.]),
1973 ,enable_wasm_strip=yes)
1975 AC_ARG_ENABLE(xmlhelp,
1976     AS_HELP_STRING([--disable-xmlhelp],
1977         [Disable XML help support]),
1978 ,enable_xmlhelp=yes)
1981 dnl ===================================================================
1982 dnl Optional Packages (--with/without-)
1983 dnl ===================================================================
1985 AC_ARG_WITH(gcc-home,
1986     AS_HELP_STRING([--with-gcc-home],
1987         [Specify the location of gcc/g++ manually. This can be used in conjunction
1988          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1989          non-default path.]),
1992 AC_ARG_WITH(gnu-patch,
1993     AS_HELP_STRING([--with-gnu-patch],
1994         [Specify location of GNU patch on Solaris or FreeBSD.]),
1997 AC_ARG_WITH(build-platform-configure-options,
1998     AS_HELP_STRING([--with-build-platform-configure-options],
1999         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2002 AC_ARG_WITH(gnu-cp,
2003     AS_HELP_STRING([--with-gnu-cp],
2004         [Specify location of GNU cp on Solaris or FreeBSD.]),
2007 AC_ARG_WITH(external-tar,
2008     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2009         [Specify an absolute path of where to find (and store) tarfiles.]),
2010     TARFILE_LOCATION=$withval ,
2013 AC_ARG_WITH(referenced-git,
2014     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2015         [Specify another checkout directory to reference. This makes use of
2016                  git submodule update --reference, and saves a lot of diskspace
2017                  when having multiple trees side-by-side.]),
2018     GIT_REFERENCE_SRC=$withval ,
2021 AC_ARG_WITH(linked-git,
2022     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2023         [Specify a directory where the repositories of submodules are located.
2024          This uses a method similar to git-new-workdir to get submodules.]),
2025     GIT_LINK_SRC=$withval ,
2028 AC_ARG_WITH(galleries,
2029     AS_HELP_STRING([--with-galleries],
2030         [Specify how galleries should be built. It is possible either to
2031          build these internally from source ("build"),
2032          or to disable them ("no")]),
2035 AC_ARG_WITH(theme,
2036     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2037         [Choose which themes to include. By default those themes with an '*' are included.
2038          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2039          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2042 libo_FUZZ_ARG_WITH(helppack-integration,
2043     AS_HELP_STRING([--without-helppack-integration],
2044         [It will not integrate the helppacks to the installer
2045          of the product. Please use this switch to use the online help
2046          or separate help packages.]),
2049 libo_FUZZ_ARG_WITH(fonts,
2050     AS_HELP_STRING([--without-fonts],
2051         [LibreOffice includes some third-party fonts to provide a reliable basis for
2052          help content, templates, samples, etc. When these fonts are already
2053          known to be available on the system then you should use this option.]),
2056 AC_ARG_WITH(epm,
2057     AS_HELP_STRING([--with-epm],
2058         [Decides which epm to use. Default is to use the one from the system if
2059          one is built. When either this is not there or you say =internal epm
2060          will be built.]),
2063 AC_ARG_WITH(package-format,
2064     AS_HELP_STRING([--with-package-format],
2065         [Specify package format(s) for LibreOffice installation sets. The
2066          implicit --without-package-format leads to no installation sets being
2067          generated. Possible values: aix, archive, bsd, deb, dmg,
2068          installed, msi, pkg, and rpm.
2069          Example: --with-package-format='deb rpm']),
2072 AC_ARG_WITH(tls,
2073     AS_HELP_STRING([--with-tls],
2074         [Decides which TLS/SSL and cryptographic implementations to use for
2075          LibreOffice's code. Notice that this doesn't apply for depending
2076          libraries like "neon", for example. Default is to use NSS
2077          although OpenSSL is also possible. Notice that selecting NSS restricts
2078          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2079          restrict by now the usage of NSS in LO's code. Possible values:
2080          openssl, nss. Example: --with-tls="nss"]),
2083 AC_ARG_WITH(system-libs,
2084     AS_HELP_STRING([--with-system-libs],
2085         [Use libraries already on system -- enables all --with-system-* flags.]),
2088 AC_ARG_WITH(system-bzip2,
2089     AS_HELP_STRING([--with-system-bzip2],
2090         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2091     [with_system_bzip2="$with_system_libs"])
2093 AC_ARG_WITH(system-headers,
2094     AS_HELP_STRING([--with-system-headers],
2095         [Use headers already on system -- enables all --with-system-* flags for
2096          external packages whose headers are the only entities used i.e.
2097          boost/odbc/sane-header(s).]),,
2098     [with_system_headers="$with_system_libs"])
2100 AC_ARG_WITH(system-jars,
2101     AS_HELP_STRING([--without-system-jars],
2102         [When building with --with-system-libs, also the needed jars are expected
2103          on the system. Use this to disable that]),,
2104     [with_system_jars="$with_system_libs"])
2106 AC_ARG_WITH(system-cairo,
2107     AS_HELP_STRING([--with-system-cairo],
2108         [Use cairo libraries already on system.  Happens automatically for
2109          (implicit) --enable-gtk3.]))
2111 AC_ARG_WITH(system-epoxy,
2112     AS_HELP_STRING([--with-system-epoxy],
2113         [Use epoxy libraries already on system.  Happens automatically for
2114          (implicit) --enable-gtk3.]),,
2115        [with_system_epoxy="$with_system_libs"])
2117 AC_ARG_WITH(myspell-dicts,
2118     AS_HELP_STRING([--with-myspell-dicts],
2119         [Adds myspell dictionaries to the LibreOffice installation set]),
2122 AC_ARG_WITH(system-dicts,
2123     AS_HELP_STRING([--without-system-dicts],
2124         [Do not use dictionaries from system paths.]),
2127 AC_ARG_WITH(external-dict-dir,
2128     AS_HELP_STRING([--with-external-dict-dir],
2129         [Specify external dictionary dir.]),
2132 AC_ARG_WITH(external-hyph-dir,
2133     AS_HELP_STRING([--with-external-hyph-dir],
2134         [Specify external hyphenation pattern dir.]),
2137 AC_ARG_WITH(external-thes-dir,
2138     AS_HELP_STRING([--with-external-thes-dir],
2139         [Specify external thesaurus dir.]),
2142 AC_ARG_WITH(system-zlib,
2143     AS_HELP_STRING([--with-system-zlib],
2144         [Use zlib already on system.]),,
2145     [with_system_zlib=auto])
2147 AC_ARG_WITH(system-jpeg,
2148     AS_HELP_STRING([--with-system-jpeg],
2149         [Use jpeg already on system.]),,
2150     [with_system_jpeg="$with_system_libs"])
2152 AC_ARG_WITH(system-clucene,
2153     AS_HELP_STRING([--with-system-clucene],
2154         [Use clucene already on system.]),,
2155     [with_system_clucene="$with_system_libs"])
2157 AC_ARG_WITH(system-expat,
2158     AS_HELP_STRING([--with-system-expat],
2159         [Use expat already on system.]),,
2160     [with_system_expat="$with_system_libs"])
2162 AC_ARG_WITH(system-libxml,
2163     AS_HELP_STRING([--with-system-libxml],
2164         [Use libxml/libxslt already on system.]),,
2165     [with_system_libxml=auto])
2167 AC_ARG_WITH(system-icu,
2168     AS_HELP_STRING([--with-system-icu],
2169         [Use icu already on system.]),,
2170     [with_system_icu="$with_system_libs"])
2172 AC_ARG_WITH(system-ucpp,
2173     AS_HELP_STRING([--with-system-ucpp],
2174         [Use ucpp already on system.]),,
2175     [])
2177 AC_ARG_WITH(system-openldap,
2178     AS_HELP_STRING([--with-system-openldap],
2179         [Use the OpenLDAP LDAP SDK already on system.]),,
2180     [with_system_openldap="$with_system_libs"])
2182 libo_FUZZ_ARG_ENABLE(poppler,
2183     AS_HELP_STRING([--disable-poppler],
2184         [Disable building Poppler.])
2187 AC_ARG_WITH(system-poppler,
2188     AS_HELP_STRING([--with-system-poppler],
2189         [Use system poppler (only needed for PDF import).]),,
2190     [with_system_poppler="$with_system_libs"])
2192 AC_ARG_WITH(system-abseil,
2193     AS_HELP_STRING([--with-system-abseil],
2194         [Use the abseil libraries already on system.]),,
2195     [with_system_abseil="$with_system_libs"])
2197 AC_ARG_WITH(system-openjpeg,
2198     AS_HELP_STRING([--with-system-openjpeg],
2199         [Use the OpenJPEG library already on system.]),,
2200     [with_system_openjpeg="$with_system_libs"])
2202 libo_FUZZ_ARG_ENABLE(gpgmepp,
2203     AS_HELP_STRING([--disable-gpgmepp],
2204         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2207 AC_ARG_WITH(system-gpgmepp,
2208     AS_HELP_STRING([--with-system-gpgmepp],
2209         [Use gpgmepp already on system]),,
2210     [with_system_gpgmepp="$with_system_libs"])
2212 AC_ARG_WITH(system-mariadb,
2213     AS_HELP_STRING([--with-system-mariadb],
2214         [Use MariaDB/MySQL libraries already on system.]),,
2215     [with_system_mariadb="$with_system_libs"])
2217 AC_ARG_ENABLE(bundle-mariadb,
2218     AS_HELP_STRING([--enable-bundle-mariadb],
2219         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2222 AC_ARG_WITH(system-postgresql,
2223     AS_HELP_STRING([--with-system-postgresql],
2224         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2225          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2226     [with_system_postgresql="$with_system_libs"])
2228 AC_ARG_WITH(libpq-path,
2229     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2230         [Use this PostgreSQL C interface (libpq) installation for building
2231          the PostgreSQL-SDBC extension.]),
2234 AC_ARG_WITH(system-firebird,
2235     AS_HELP_STRING([--with-system-firebird],
2236         [Use Firebird libraries already on system, for building the Firebird-SDBC
2237          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2238     [with_system_firebird="$with_system_libs"])
2240 AC_ARG_WITH(system-libtommath,
2241             AS_HELP_STRING([--with-system-libtommath],
2242                            [Use libtommath already on system]),,
2243             [with_system_libtommath="$with_system_libs"])
2245 AC_ARG_WITH(system-hsqldb,
2246     AS_HELP_STRING([--with-system-hsqldb],
2247         [Use hsqldb already on system.]))
2249 AC_ARG_WITH(hsqldb-jar,
2250     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2251         [Specify path to jarfile manually.]),
2252     HSQLDB_JAR=$withval)
2254 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2255     AS_HELP_STRING([--disable-scripting-beanshell],
2256         [Disable support for scripts in BeanShell.]),
2260 AC_ARG_WITH(system-beanshell,
2261     AS_HELP_STRING([--with-system-beanshell],
2262         [Use beanshell already on system.]),,
2263     [with_system_beanshell="$with_system_jars"])
2265 AC_ARG_WITH(beanshell-jar,
2266     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2267         [Specify path to jarfile manually.]),
2268     BSH_JAR=$withval)
2270 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2271     AS_HELP_STRING([--disable-scripting-javascript],
2272         [Disable support for scripts in JavaScript.]),
2276 AC_ARG_WITH(system-rhino,
2277     AS_HELP_STRING([--with-system-rhino],
2278         [Use rhino already on system.]),,)
2279 #    [with_system_rhino="$with_system_jars"])
2280 # Above is not used as we have different debug interface
2281 # patched into internal rhino. This code needs to be fixed
2282 # before we can enable it by default.
2284 AC_ARG_WITH(rhino-jar,
2285     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2286         [Specify path to jarfile manually.]),
2287     RHINO_JAR=$withval)
2289 AC_ARG_WITH(system-jfreereport,
2290     AS_HELP_STRING([--with-system-jfreereport],
2291         [Use JFreeReport already on system.]),,
2292     [with_system_jfreereport="$with_system_jars"])
2294 AC_ARG_WITH(sac-jar,
2295     AS_HELP_STRING([--with-sac-jar=JARFILE],
2296         [Specify path to jarfile manually.]),
2297     SAC_JAR=$withval)
2299 AC_ARG_WITH(libxml-jar,
2300     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2301         [Specify path to jarfile manually.]),
2302     LIBXML_JAR=$withval)
2304 AC_ARG_WITH(flute-jar,
2305     AS_HELP_STRING([--with-flute-jar=JARFILE],
2306         [Specify path to jarfile manually.]),
2307     FLUTE_JAR=$withval)
2309 AC_ARG_WITH(jfreereport-jar,
2310     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2311         [Specify path to jarfile manually.]),
2312     JFREEREPORT_JAR=$withval)
2314 AC_ARG_WITH(liblayout-jar,
2315     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2316         [Specify path to jarfile manually.]),
2317     LIBLAYOUT_JAR=$withval)
2319 AC_ARG_WITH(libloader-jar,
2320     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2321         [Specify path to jarfile manually.]),
2322     LIBLOADER_JAR=$withval)
2324 AC_ARG_WITH(libformula-jar,
2325     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2326         [Specify path to jarfile manually.]),
2327     LIBFORMULA_JAR=$withval)
2329 AC_ARG_WITH(librepository-jar,
2330     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2331         [Specify path to jarfile manually.]),
2332     LIBREPOSITORY_JAR=$withval)
2334 AC_ARG_WITH(libfonts-jar,
2335     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2336         [Specify path to jarfile manually.]),
2337     LIBFONTS_JAR=$withval)
2339 AC_ARG_WITH(libserializer-jar,
2340     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2341         [Specify path to jarfile manually.]),
2342     LIBSERIALIZER_JAR=$withval)
2344 AC_ARG_WITH(libbase-jar,
2345     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2346         [Specify path to jarfile manually.]),
2347     LIBBASE_JAR=$withval)
2349 AC_ARG_WITH(system-odbc,
2350     AS_HELP_STRING([--with-system-odbc],
2351         [Use the odbc headers already on system.]),,
2352     [with_system_odbc="auto"])
2354 AC_ARG_WITH(system-sane,
2355     AS_HELP_STRING([--with-system-sane],
2356         [Use sane.h already on system.]),,
2357     [with_system_sane="$with_system_headers"])
2359 AC_ARG_WITH(system-bluez,
2360     AS_HELP_STRING([--with-system-bluez],
2361         [Use bluetooth.h already on system.]),,
2362     [with_system_bluez="$with_system_headers"])
2364 AC_ARG_WITH(system-curl,
2365     AS_HELP_STRING([--with-system-curl],
2366         [Use curl already on system.]),,
2367     [with_system_curl=auto])
2369 AC_ARG_WITH(system-boost,
2370     AS_HELP_STRING([--with-system-boost],
2371         [Use boost already on system.]),,
2372     [with_system_boost="$with_system_headers"])
2374 AC_ARG_WITH(system-cuckoo,
2375     AS_HELP_STRING([--with-system-cuckoo],
2376         [Use libcuckoo already on system.]),,
2377     [with_system_cuckoo="$with_system_headers"])
2379 AC_ARG_WITH(system-glm,
2380     AS_HELP_STRING([--with-system-glm],
2381         [Use glm already on system.]),,
2382     [with_system_glm="$with_system_headers"])
2384 AC_ARG_WITH(system-hunspell,
2385     AS_HELP_STRING([--with-system-hunspell],
2386         [Use libhunspell already on system.]),,
2387     [with_system_hunspell="$with_system_libs"])
2389 libo_FUZZ_ARG_ENABLE(zxing,
2390     AS_HELP_STRING([--disable-zxing],
2391        [Disable use of zxing external library.]))
2393 AC_ARG_WITH(system-zxing,
2394     AS_HELP_STRING([--with-system-zxing],
2395         [Use libzxing already on system.]),,
2396     [with_system_zxing="$with_system_libs"])
2398 AC_ARG_WITH(system-box2d,
2399     AS_HELP_STRING([--with-system-box2d],
2400         [Use box2d already on system.]),,
2401     [with_system_box2d="$with_system_libs"])
2403 AC_ARG_WITH(system-mythes,
2404     AS_HELP_STRING([--with-system-mythes],
2405         [Use mythes already on system.]),,
2406     [with_system_mythes="$with_system_libs"])
2408 AC_ARG_WITH(system-altlinuxhyph,
2409     AS_HELP_STRING([--with-system-altlinuxhyph],
2410         [Use ALTLinuxhyph already on system.]),,
2411     [with_system_altlinuxhyph="$with_system_libs"])
2413 AC_ARG_WITH(system-lpsolve,
2414     AS_HELP_STRING([--with-system-lpsolve],
2415         [Use lpsolve already on system.]),,
2416     [with_system_lpsolve="$with_system_libs"])
2418 AC_ARG_WITH(system-coinmp,
2419     AS_HELP_STRING([--with-system-coinmp],
2420         [Use CoinMP already on system.]),,
2421     [with_system_coinmp="$with_system_libs"])
2423 AC_ARG_WITH(system-liblangtag,
2424     AS_HELP_STRING([--with-system-liblangtag],
2425         [Use liblangtag library already on system.]),,
2426     [with_system_liblangtag="$with_system_libs"])
2428 AC_ARG_WITH(webdav,
2429     AS_HELP_STRING([--with-webdav],
2430         [Specify which library to use for webdav implementation.
2431          Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2432          Example: --with-webdav="serf"]))
2434 AC_ARG_WITH(linker-hash-style,
2435     AS_HELP_STRING([--with-linker-hash-style],
2436         [Use linker with --hash-style=<style> when linking shared objects.
2437          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2438          if supported on the build system, and "sysv" otherwise.]))
2440 AC_ARG_WITH(jdk-home,
2441     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2442         [If you have installed JDK 9 or later on your system please supply the
2443          path here. Note that this is not the location of the java command but the
2444          location of the entire distribution. In case of cross-compiling, this
2445          is the JDK of the host os. Use --with-build-platform-configure-options
2446          to point to a different build platform JDK.]),
2449 AC_ARG_WITH(help,
2450     AS_HELP_STRING([--with-help],
2451         [Enable the build of help. There is a special parameter "common" that
2452          can be used to bundle only the common part, .e.g help-specific icons.
2453          This is useful when you build the helpcontent separately.])
2454     [
2455                           Usage:     --with-help    build the old local help
2456                                  --without-help     no local help (default)
2457                                  --with-help=html   build the new HTML local help
2458                                  --with-help=online build the new HTML online help
2459     ],
2462 AC_ARG_WITH(omindex,
2463    AS_HELP_STRING([--with-omindex],
2464         [Enable the support of xapian-omega index for online help.])
2465    [
2466                          Usage: --with-omindex=server prepare the pages for omindex
2467                                 but let xapian-omega be built in server.
2468                                 --with-omindex=noxap do not prepare online pages
2469                                 for xapian-omega
2470   ],
2473 libo_FUZZ_ARG_WITH(java,
2474     AS_HELP_STRING([--with-java=<java command>],
2475         [Specify the name of the Java interpreter command. Typically "java"
2476          which is the default.
2478          To build without support for Java components, applets, accessibility
2479          or the XML filters written in Java, use --without-java or --with-java=no.]),
2480     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2481     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2484 AC_ARG_WITH(jvm-path,
2485     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2486         [Use a specific JVM search path at runtime.
2487          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2490 AC_ARG_WITH(ant-home,
2491     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2492         [If you have installed Apache Ant on your system, please supply the path here.
2493          Note that this is not the location of the Ant binary but the location
2494          of the entire distribution.]),
2497 AC_ARG_WITH(symbol-config,
2498     AS_HELP_STRING([--with-symbol-config],
2499         [Configuration for the crashreport symbol upload]),
2500         [],
2501         [with_symbol_config=no])
2503 AC_ARG_WITH(export-validation,
2504     AS_HELP_STRING([--without-export-validation],
2505         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2506 ,with_export_validation=auto)
2508 AC_ARG_WITH(bffvalidator,
2509     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2510         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2511          Requires installed Microsoft Office Binary File Format Validator.
2512          Note: export-validation (--with-export-validation) is required to be turned on.
2513          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2514 ,with_bffvalidator=no)
2516 libo_FUZZ_ARG_WITH(junit,
2517     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2518         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2519          --without-junit disables those tests. Not relevant in the --without-java case.]),
2520 ,with_junit=yes)
2522 AC_ARG_WITH(hamcrest,
2523     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2524         [Specifies the hamcrest jar file to use for JUnit-based tests.
2525          --without-junit disables those tests. Not relevant in the --without-java case.]),
2526 ,with_hamcrest=yes)
2528 AC_ARG_WITH(perl-home,
2529     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2530         [If you have installed Perl 5 Distribution, on your system, please
2531          supply the path here. Note that this is not the location of the Perl
2532          binary but the location of the entire distribution.]),
2535 libo_FUZZ_ARG_WITH(doxygen,
2536     AS_HELP_STRING(
2537         [--with-doxygen=<absolute path to doxygen executable>],
2538         [Specifies the doxygen executable to use when generating ODK C/C++
2539          documentation. --without-doxygen disables generation of ODK C/C++
2540          documentation. Not relevant in the --disable-odk case.]),
2541 ,with_doxygen=yes)
2543 AC_ARG_WITH(visual-studio,
2544     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2545         [Specify which Visual Studio version to use in case several are
2546          installed. Currently 2019 (default) and 2022 are supported.]),
2549 AC_ARG_WITH(windows-sdk,
2550     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2551         [Specify which Windows SDK, or "Windows Kit", version to use
2552          in case the one that came with the selected Visual Studio
2553          is not what you want for some reason. Note that not all compiler/SDK
2554          combinations are supported. The intent is that this option should not
2555          be needed.]),
2558 AC_ARG_WITH(lang,
2559     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2560         [Use this option to build LibreOffice with additional UI language support.
2561          English (US) is always included by default.
2562          Separate multiple languages with space.
2563          For all languages, use --with-lang=ALL.]),
2566 AC_ARG_WITH(locales,
2567     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2568         [Use this option to limit the locale information built in.
2569          Separate multiple locales with space.
2570          Very experimental and might well break stuff.
2571          Just a desperate measure to shrink code and data size.
2572          By default all the locales available is included.
2573          This option is completely unrelated to --with-lang.])
2574     [
2575                           Affects also our character encoding conversion
2576                           tables for encodings mainly targeted for a
2577                           particular locale, like EUC-CN and EUC-TW for
2578                           zh, ISO-2022-JP for ja.
2580                           Affects also our add-on break iterator data for
2581                           some languages.
2583                           For the default, all locales, don't use this switch at all.
2584                           Specifying just the language part of a locale means all matching
2585                           locales will be included.
2586     ],
2589 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2590 libo_FUZZ_ARG_WITH(krb5,
2591     AS_HELP_STRING([--with-krb5],
2592         [Enable MIT Kerberos 5 support in modules that support it.
2593          By default automatically enabled on platforms
2594          where a good system Kerberos 5 is available.]),
2597 libo_FUZZ_ARG_WITH(gssapi,
2598     AS_HELP_STRING([--with-gssapi],
2599         [Enable GSSAPI support in modules that support it.
2600          By default automatically enabled on platforms
2601          where a good system GSSAPI is available.]),
2604 AC_ARG_WITH(iwyu,
2605     AS_HELP_STRING([--with-iwyu],
2606         [Use given IWYU binary path to check unneeded includes instead of building.
2607          Use only if you are hacking on it.]),
2610 libo_FUZZ_ARG_WITH(lxml,
2611     AS_HELP_STRING([--without-lxml],
2612         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2613          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2614          report widget classes and ids.]),
2617 libo_FUZZ_ARG_WITH(latest-c++,
2618     AS_HELP_STRING([--with-latest-c++],
2619         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2620          published standard.]),,
2621         [with_latest_c__=no])
2623 dnl ===================================================================
2624 dnl Branding
2625 dnl ===================================================================
2627 AC_ARG_WITH(branding,
2628     AS_HELP_STRING([--with-branding=/path/to/images],
2629         [Use given path to retrieve branding images set.])
2630     [
2631                           Search for intro.png about.svg and logo.svg.
2632                           If any is missing, default ones will be used instead.
2634                           Search also progress.conf for progress
2635                           settings on intro screen :
2637                           PROGRESSBARCOLOR="255,255,255" Set color of
2638                           progress bar. Comma separated RGB decimal values.
2639                           PROGRESSSIZE="407,6" Set size of progress bar.
2640                           Comma separated decimal values (width, height).
2641                           PROGRESSPOSITION="61,317" Set position of progress
2642                           bar from left,top. Comma separated decimal values.
2643                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2644                           bar frame. Comma separated RGB decimal values.
2645                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2646                           bar text. Comma separated RGB decimal values.
2647                           PROGRESSTEXTBASELINE="287" Set vertical position of
2648                           progress bar text from top. Decimal value.
2650                           Default values will be used if not found.
2651     ],
2655 AC_ARG_WITH(extra-buildid,
2656     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2657         [Show addition build identification in about dialog.]),
2661 AC_ARG_WITH(vendor,
2662     AS_HELP_STRING([--with-vendor="John the Builder"],
2663         [Set vendor of the build.]),
2666 AC_ARG_WITH(privacy-policy-url,
2667     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2668         [The URL to your privacy policy (needed when
2669          enabling online-update or crashreporting via breakpad)]),
2670         [if test "x$with_privacy_policy_url" = "xyes"; then
2671             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2672          elif test "x$with_privacy_policy_url" = "xno"; then
2673             with_privacy_policy_url="undefined"
2674          fi]
2675 ,[with_privacy_policy_url="undefined"])
2677 AC_ARG_WITH(android-package-name,
2678     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2679         [Set Android package name of the build.]),
2682 AC_ARG_WITH(compat-oowrappers,
2683     AS_HELP_STRING([--with-compat-oowrappers],
2684         [Install oo* wrappers in parallel with
2685          lo* ones to keep backward compatibility.
2686          Has effect only with make distro-pack-install]),
2689 AC_ARG_WITH(os-version,
2690     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2691         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2694 AC_ARG_WITH(idlc-cpp,
2695     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2696         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2699 AC_ARG_WITH(parallelism,
2700     AS_HELP_STRING([--with-parallelism],
2701         [Number of jobs to run simultaneously during build. Parallel builds can
2702         save a lot of time on multi-cpu machines. Defaults to the number of
2703         CPUs on the machine, unless you configure --enable-icecream - then to
2704         40.]),
2707 AC_ARG_WITH(all-tarballs,
2708     AS_HELP_STRING([--with-all-tarballs],
2709         [Download all external tarballs unconditionally]))
2711 AC_ARG_WITH(gdrive-client-id,
2712     AS_HELP_STRING([--with-gdrive-client-id],
2713         [Provides the client id of the application for OAuth2 authentication
2714         on Google Drive. If either this or --with-gdrive-client-secret is
2715         empty, the feature will be disabled]),
2718 AC_ARG_WITH(gdrive-client-secret,
2719     AS_HELP_STRING([--with-gdrive-client-secret],
2720         [Provides the client secret of the application for OAuth2
2721         authentication on Google Drive. If either this or
2722         --with-gdrive-client-id is empty, the feature will be disabled]),
2725 AC_ARG_WITH(alfresco-cloud-client-id,
2726     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2727         [Provides the client id of the application for OAuth2 authentication
2728         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2729         empty, the feature will be disabled]),
2732 AC_ARG_WITH(alfresco-cloud-client-secret,
2733     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2734         [Provides the client secret of the application for OAuth2
2735         authentication on Alfresco Cloud. If either this or
2736         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2739 AC_ARG_WITH(onedrive-client-id,
2740     AS_HELP_STRING([--with-onedrive-client-id],
2741         [Provides the client id of the application for OAuth2 authentication
2742         on OneDrive. If either this or --with-onedrive-client-secret is
2743         empty, the feature will be disabled]),
2746 AC_ARG_WITH(onedrive-client-secret,
2747     AS_HELP_STRING([--with-onedrive-client-secret],
2748         [Provides the client secret of the application for OAuth2
2749         authentication on OneDrive. If either this or
2750         --with-onedrive-client-id is empty, the feature will be disabled]),
2752 dnl ===================================================================
2753 dnl Do we want to use pre-build binary tarball for recompile
2754 dnl ===================================================================
2756 if test "$enable_library_bin_tar" = "yes" ; then
2757     USE_LIBRARY_BIN_TAR=TRUE
2758 else
2759     USE_LIBRARY_BIN_TAR=
2761 AC_SUBST(USE_LIBRARY_BIN_TAR)
2763 dnl ===================================================================
2764 dnl Test whether build target is Release Build
2765 dnl ===================================================================
2766 AC_MSG_CHECKING([whether build target is Release Build])
2767 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2768     AC_MSG_RESULT([no])
2769     ENABLE_RELEASE_BUILD=
2770     GET_TASK_ALLOW_ENTITLEMENT='
2771         <!-- We want to be able to debug a hardened process when not building for release -->
2772         <key>com.apple.security.get-task-allow</key>
2773         <true/>'
2774 else
2775     AC_MSG_RESULT([yes])
2776     ENABLE_RELEASE_BUILD=TRUE
2777     GET_TASK_ALLOW_ENTITLEMENT=''
2779 AC_SUBST(ENABLE_RELEASE_BUILD)
2780 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2782 AC_MSG_CHECKING([whether to build a Community flavor])
2783 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2784     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2785     AC_MSG_RESULT([yes])
2786 else
2787     AC_MSG_RESULT([no])
2790 dnl ===================================================================
2791 dnl Test whether to sign Windows Build
2792 dnl ===================================================================
2793 AC_MSG_CHECKING([whether to sign windows build])
2794 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2795     AC_MSG_RESULT([yes])
2796     WINDOWS_BUILD_SIGNING="TRUE"
2797 else
2798     AC_MSG_RESULT([no])
2799     WINDOWS_BUILD_SIGNING="FALSE"
2801 AC_SUBST(WINDOWS_BUILD_SIGNING)
2803 dnl ===================================================================
2804 dnl MacOSX build and runtime environment options
2805 dnl ===================================================================
2807 AC_ARG_WITH(macosx-version-min-required,
2808     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2809         [set the minimum OS version needed to run the built LibreOffice])
2810     [
2811                           e. g.: --with-macosx-version-min-required=10.12
2812     ],
2815 AC_ARG_WITH(macosx-version-max-allowed,
2816     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2817         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2818     [
2819                           e. g.: --with-macosx-version-max-allowed=11.0
2820     ],
2824 dnl ===================================================================
2825 dnl options for stuff used during cross-compilation build
2826 dnl Not quite superseded by --with-build-platform-configure-options.
2827 dnl TODO: check, if the "force" option is still needed anywhere.
2828 dnl ===================================================================
2830 AC_ARG_WITH(system-icu-for-build,
2831     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2832         [Use icu already on system for build tools (cross-compilation only).]))
2835 dnl ===================================================================
2836 dnl Check for incompatible options set by fuzzing, and reset those
2837 dnl automatically to working combinations
2838 dnl ===================================================================
2840 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2841         "$enable_dbus" != "$enable_avahi"; then
2842     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2843     enable_avahi=$enable_dbus
2846 add_lopath_after ()
2848     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2849         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2850     fi
2853 add_lopath_before ()
2855     local IFS=${P_SEP}
2856     local path_cleanup
2857     local dir
2858     for dir in $LO_PATH ; do
2859         if test "$dir" != "$1" ; then
2860             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2861         fi
2862     done
2863     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2866 dnl ===================================================================
2867 dnl check for required programs (grep, awk, sed, bash)
2868 dnl ===================================================================
2870 pathmunge ()
2872     local new_path
2873     if test -n "$1"; then
2874         if test "$build_os" = "cygwin"; then
2875             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2876                 PathFormat "$1"
2877                 new_path=`cygpath -sm "$formatted_path"`
2878             else
2879                 PathFormat "$1"
2880                 new_path=`cygpath -u "$formatted_path"`
2881             fi
2882         else
2883             new_path="$1"
2884         fi
2885         if test "$2" = "after"; then
2886             add_lopath_after "$new_path"
2887         else
2888             add_lopath_before "$new_path"
2889         fi
2890     fi
2893 AC_PROG_AWK
2894 AC_PATH_PROG( AWK, $AWK)
2895 if test -z "$AWK"; then
2896     AC_MSG_ERROR([install awk to run this script])
2899 AC_PATH_PROG(BASH, bash)
2900 if test -z "$BASH"; then
2901     AC_MSG_ERROR([bash not found in \$PATH])
2903 AC_SUBST(BASH)
2905 AC_MSG_CHECKING([for GNU or BSD tar])
2906 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2907     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2908     if test $? -eq 0;  then
2909         GNUTAR=$a
2910         break
2911     fi
2912 done
2913 AC_MSG_RESULT($GNUTAR)
2914 if test -z "$GNUTAR"; then
2915     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2917 AC_SUBST(GNUTAR)
2919 AC_MSG_CHECKING([for tar's option to strip components])
2920 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2921 if test $? -eq 0; then
2922     STRIP_COMPONENTS="--strip-components"
2923 else
2924     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2925     if test $? -eq 0; then
2926         STRIP_COMPONENTS="--strip-path"
2927     else
2928         STRIP_COMPONENTS="unsupported"
2929     fi
2931 AC_MSG_RESULT($STRIP_COMPONENTS)
2932 if test x$STRIP_COMPONENTS = xunsupported; then
2933     AC_MSG_ERROR([you need a tar that is able to strip components.])
2935 AC_SUBST(STRIP_COMPONENTS)
2937 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2938 dnl desktop OSes from "mobile" ones.
2940 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2941 dnl In other words, that when building for an OS that is not a
2942 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2944 dnl Note the direction of the implication; there is no assumption that
2945 dnl cross-compiling would imply a non-desktop OS.
2947 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2948     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2949     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2950     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2953 # Whether to build "avmedia" functionality or not.
2955 if test -z "$enable_avmedia"; then
2956     enable_avmedia=yes
2959 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2960 if test "$enable_avmedia" = yes; then
2961     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2962 else
2963     USE_AVMEDIA_DUMMY='TRUE'
2965 AC_SUBST(USE_AVMEDIA_DUMMY)
2967 # Decide whether to build database connectivity stuff (including Base) or not.
2968 if test "$enable_database_connectivity" != no; then
2969     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2970     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2971 else
2972     if test "$_os" = iOS; then
2973         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2974     fi
2975     disable_database_connectivity_dependencies
2978 if test -z "$enable_extensions"; then
2979     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2980     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2981         enable_extensions=yes
2982     fi
2985 if test "$enable_extensions" = yes; then
2986     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2987     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2988 else
2989     enable_extension_integration=no
2990     enable_extension_update=no
2993 if test -z "$enable_scripting"; then
2994     # Disable scripting for iOS unless specifically overridden
2995     # with --enable-scripting.
2996     if test $_os != iOS -o $_os = Emscripten; then
2997         enable_scripting=yes
2998     fi
3001 DISABLE_SCRIPTING=''
3002 if test "$enable_scripting" = yes; then
3003     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3004     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3005 else
3006     DISABLE_SCRIPTING='TRUE'
3007     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3010 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3011     # Disable dynamic_loading always for iOS and Android
3012     enable_dynamic_loading=no
3013 elif test -z "$enable_dynamic_loading"; then
3014     # Otherwise enable it unless specifically disabled
3015     enable_dynamic_loading=yes
3018 DISABLE_DYNLOADING=''
3019 if test "$enable_dynamic_loading" = yes; then
3020     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3021 else
3022     DISABLE_DYNLOADING='TRUE'
3024 AC_SUBST(DISABLE_DYNLOADING)
3026 # remember SYSBASE value
3027 AC_SUBST(SYSBASE)
3029 dnl ===================================================================
3030 dnl  Sort out various gallery compilation options
3031 dnl ===================================================================
3032 WITH_GALLERY_BUILD=TRUE
3033 AC_MSG_CHECKING([how to build and package galleries])
3034 if test -n "${with_galleries}"; then
3035     if test "$with_galleries" = "build"; then
3036         if test "$enable_database_connectivity" = no; then
3037             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3038         fi
3039         AC_MSG_RESULT([build from source images internally])
3040     elif test "$with_galleries" = "no"; then
3041         WITH_GALLERY_BUILD=
3042         AC_MSG_RESULT([disable non-internal gallery build])
3043     else
3044         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3045     fi
3046 else
3047     if test $_os != iOS -a $_os != Android; then
3048         AC_MSG_RESULT([internal src images for desktop])
3049     else
3050         WITH_GALLERY_BUILD=
3051         AC_MSG_RESULT([disable src image build])
3052     fi
3054 AC_SUBST(WITH_GALLERY_BUILD)
3056 dnl ===================================================================
3057 dnl  Checks if ccache is available
3058 dnl ===================================================================
3059 CCACHE_DEPEND_MODE=
3060 if test "$enable_ccache" = "no"; then
3061     CCACHE=""
3062 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3063     case "%$CC%$CXX%" in
3064     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3065     # assume that's good then
3066     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3067         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3068         CCACHE_DEPEND_MODE=1
3069         ;;
3070     *)
3071         # try to use our own ccache if it is available and CCACHE was not already defined
3072         if test -z "$CCACHE"; then
3073             if test "$_os" = "WINNT"; then
3074                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3075             fi
3076             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3077                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3078             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3079                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3080             fi
3081         fi
3082         AC_PATH_PROG([CCACHE],[ccache],[not found])
3083         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3084             CCACHE=`win_short_path_for_make "$CCACHE"`
3085             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3086             rm -f conftest.txt
3087             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3088             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3089             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3090                 AC_MSG_RESULT(yes)
3091             else
3092                 AC_MSG_RESULT(no)
3093                 CCACHE="not found"
3094             fi
3095             rm -f conftest.txt
3096         fi
3097         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3098             # on windows/VC perhaps sccache is around?
3099             case "%$CC%$CXX%" in
3100             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3101             # assume that's good then
3102             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3103                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3104                 CCACHE_DEPEND_MODE=1
3105                 SCCACHE=1
3106                 ;;
3107             *)
3108                 # for sharing code below, reuse CCACHE env var
3109                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3110                 if test "$CCACHE" != "not found"; then
3111                     CCACHE=`win_short_path_for_make "$CCACHE"`
3112                     SCCACHE=1
3113                     CCACHE_DEPEND_MODE=1
3114                 fi
3115                 ;;
3116             esac
3117         fi
3118         if test "$CCACHE" = "not found"; then
3119             CCACHE=""
3120         fi
3121         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3122             CCACHE_DEPEND_MODE=1
3123             # Need to check for ccache version: otherwise prevents
3124             # caching of the results (like "-x objective-c++" for Mac)
3125             if test $_os = Darwin -o $_os = iOS; then
3126                 # Check ccache version
3127                 AC_MSG_CHECKING([whether version of ccache is suitable])
3128                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3129                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3130                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3131                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3132                 else
3133                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3134                     CCACHE=""
3135                     CCACHE_DEPEND_MODE=
3136                 fi
3137             fi
3138         fi
3139         ;;
3140     esac
3141 else
3142     CCACHE=""
3144 if test "$enable_ccache" = "nodepend"; then
3145     CCACHE_DEPEND_MODE=""
3147 AC_SUBST(CCACHE_DEPEND_MODE)
3149 # sccache defaults are good enough
3150 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3151     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3152     # -p works with both 4.2 and 4.4
3153     ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3154     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3155     if test "$ccache_size" = ""; then
3156         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3157         if test "$ccache_size" = ""; then
3158             ccache_size=0
3159         fi
3160         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3161         if test $ccache_size -lt 1024; then
3162             CCACHE=""
3163             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3164             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3165         else
3166             # warn that ccache may be too small for debug build
3167             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3168             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3169         fi
3170     else
3171         if test $ccache_size -lt 5; then
3172             #warn that ccache may be too small for debug build
3173             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3174             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3175         fi
3176     fi
3179 ENABLE_Z7_DEBUG=
3180 if test "$enable_z7_debug" != no; then
3181     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3182         ENABLE_Z7_DEBUG=TRUE
3183     fi
3184 else
3185     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3186     add_warning "ccache will not work with --disable-z7-debug"
3188 AC_SUBST(ENABLE_Z7_DEBUG)
3190 dnl ===================================================================
3191 dnl  Checks for C compiler,
3192 dnl  The check for the C++ compiler is later on.
3193 dnl ===================================================================
3194 if test "$_os" != "WINNT"; then
3195     GCC_HOME_SET="true"
3196     AC_MSG_CHECKING([gcc home])
3197     if test -z "$with_gcc_home"; then
3198         if test "$enable_icecream" = "yes"; then
3199             if test -d "/usr/lib/icecc/bin"; then
3200                 GCC_HOME="/usr/lib/icecc/"
3201             elif test -d "/usr/libexec/icecc/bin"; then
3202                 GCC_HOME="/usr/libexec/icecc/"
3203             elif test -d "/opt/icecream/bin"; then
3204                 GCC_HOME="/opt/icecream/"
3205             else
3206                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3208             fi
3209         else
3210             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3211             GCC_HOME_SET="false"
3212         fi
3213     else
3214         GCC_HOME="$with_gcc_home"
3215     fi
3216     AC_MSG_RESULT($GCC_HOME)
3217     AC_SUBST(GCC_HOME)
3219     if test "$GCC_HOME_SET" = "true"; then
3220         if test -z "$CC"; then
3221             CC="$GCC_HOME/bin/gcc"
3222             CC_BASE="gcc"
3223         fi
3224         if test -z "$CXX"; then
3225             CXX="$GCC_HOME/bin/g++"
3226             CXX_BASE="g++"
3227         fi
3228     fi
3231 COMPATH=`dirname "$CC"`
3232 if test "$COMPATH" = "."; then
3233     AC_PATH_PROGS(COMPATH, $CC)
3234     dnl double square bracket to get single because of M4 quote...
3235     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3237 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3239 dnl ===================================================================
3240 dnl Java support
3241 dnl ===================================================================
3242 AC_MSG_CHECKING([whether to build with Java support])
3243 if test "$with_java" != "no"; then
3244     if test "$DISABLE_SCRIPTING" = TRUE; then
3245         AC_MSG_RESULT([no, overridden by --disable-scripting])
3246         ENABLE_JAVA=""
3247         with_java=no
3248     else
3249         AC_MSG_RESULT([yes])
3250         ENABLE_JAVA="TRUE"
3251         AC_DEFINE(HAVE_FEATURE_JAVA)
3252     fi
3253 else
3254     AC_MSG_RESULT([no])
3255     ENABLE_JAVA=""
3258 AC_SUBST(ENABLE_JAVA)
3260 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3262 dnl ENABLE_JAVA="" indicate no Java support at all
3264 dnl ===================================================================
3265 dnl Check macOS SDK and compiler
3266 dnl ===================================================================
3268 if test $_os = Darwin; then
3270     # The SDK in the currently selected Xcode should be found.
3272     AC_MSG_CHECKING([what macOS SDK to use])
3273     for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3274         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3275         if test -d "$MACOSX_SDK_PATH"; then
3276             break
3277         else
3278             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3279             if test -d "$MACOSX_SDK_PATH"; then
3280                 break
3281             fi
3282         fi
3283     done
3284     if test ! -d "$MACOSX_SDK_PATH"; then
3285         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3286     fi
3288     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3290     case $macosx_sdk in
3291     10.13)
3292         MACOSX_SDK_VERSION=101300
3293         ;;
3294     10.14)
3295         MACOSX_SDK_VERSION=101400
3296         ;;
3297     10.15)
3298         MACOSX_SDK_VERSION=101500
3299         ;;
3300     11.0)
3301         MACOSX_SDK_VERSION=110000
3302         ;;
3303     11.1)
3304         MACOSX_SDK_VERSION=110100
3305         ;;
3306     11.3)
3307         MACOSX_SDK_VERSION=110300
3308         ;;
3309     12.0)
3310         MACOSX_SDK_VERSION=120000
3311         ;;
3312     12.1)
3313         MACOSX_SDK_VERSION=120100
3314         ;;
3315     12.3)
3316         MACOSX_SDK_VERSION=120300
3317         ;;
3318     *)
3319         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3320         ;;
3321     esac
3323     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3324         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3325     fi
3327     if test "$with_macosx_version_min_required" = "" ; then
3328         if test "$host_cpu" = x86_64; then
3329             with_macosx_version_min_required="10.12";
3330         else
3331             with_macosx_version_min_required="11.0";
3332         fi
3333     fi
3335     if test "$with_macosx_version_max_allowed" = "" ; then
3336         with_macosx_version_max_allowed="$macosx_sdk"
3337     fi
3339     # export this so that "xcrun" invocations later return matching values
3340     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3341     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3342     export DEVELOPER_DIR
3343     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3344     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3346     AC_MSG_CHECKING([whether Xcode is new enough])
3347     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3348     my_xcode_ver2=${my_xcode_ver1#Xcode }
3349     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3350     if test "$my_xcode_ver3" -ge 1103; then
3351         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3352     else
3353         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3354     fi
3356     case "$with_macosx_version_min_required" in
3357     10.12)
3358         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3359         ;;
3360     10.13)
3361         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3362         ;;
3363     10.14)
3364         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3365         ;;
3366     10.15)
3367         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3368         ;;
3369     10.16)
3370         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3371         ;;
3372     11.0)
3373         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3374         ;;
3375     11.1)
3376         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3377         ;;
3378     11.3)
3379         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3380         ;;
3381     12.0)
3382         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3383         ;;
3384     12.1)
3385         MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3386         ;;
3387     12.3)
3388         MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3389         ;;
3390     *)
3391         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.13--12.3])
3392         ;;
3393     esac
3395     LIBTOOL=/usr/bin/libtool
3396     INSTALL_NAME_TOOL=install_name_tool
3397     if test -z "$save_CC"; then
3398         stdlib=-stdlib=libc++
3400         AC_MSG_CHECKING([what C compiler to use])
3401         CC="`xcrun -find clang`"
3402         CC_BASE=`first_arg_basename "$CC"`
3403         if test "$host_cpu" = x86_64; then
3404             CC+=" -target x86_64-apple-macos"
3405         else
3406             CC+=" -target arm64-apple-macos"
3407         fi
3408         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3409         AC_MSG_RESULT([$CC])
3411         AC_MSG_CHECKING([what C++ compiler to use])
3412         CXX="`xcrun -find clang++`"
3413         CXX_BASE=`first_arg_basename "$CXX"`
3414         if test "$host_cpu" = x86_64; then
3415             CXX+=" -target x86_64-apple-macos"
3416         else
3417             CXX+=" -target arm64-apple-macos"
3418         fi
3419         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3420         AC_MSG_RESULT([$CXX])
3422         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3423         AR=`xcrun -find ar`
3424         NM=`xcrun -find nm`
3425         STRIP=`xcrun -find strip`
3426         LIBTOOL=`xcrun -find libtool`
3427         RANLIB=`xcrun -find ranlib`
3428     fi
3430     case "$with_macosx_version_max_allowed" in
3431     10.12)
3432         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3433         ;;
3434     10.13)
3435         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3436         ;;
3437     10.14)
3438         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3439         ;;
3440     10.15)
3441         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3442         ;;
3443     11.0)
3444         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3445         ;;
3446     11.1)
3447         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3448         ;;
3449     11.3)
3450         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3451         ;;
3452     12.0)
3453         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3454         ;;
3455     12.1)
3456         MAC_OS_X_VERSION_MAX_ALLOWED="120100"
3457         ;;
3458     12.3)
3459         MAC_OS_X_VERSION_MAX_ALLOWED="120300"
3460         ;;
3461     *)
3462         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.3])
3463         ;;
3464     esac
3466     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3467     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3468         AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED])
3469     else
3470         AC_MSG_RESULT([ok])
3471     fi
3473     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3474     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3475         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3476     else
3477         AC_MSG_RESULT([ok])
3478     fi
3479     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3480     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3482     AC_MSG_CHECKING([whether to do code signing])
3484     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3485         AC_MSG_RESULT([no])
3486     else
3487         if test "$enable_macosx_code_signing" = yes; then
3488             # By default use the first suitable certificate (?).
3490             # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3491             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3492             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3493             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3494             # "Developer ID Application" one.
3495             identity="Developer ID Application:"
3496         else
3497             identity=$enable_macosx_code_signing
3498         fi
3499         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3500         if test -n "$identity"; then
3501             MACOSX_CODESIGNING_IDENTITY=$identity
3502             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3503             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3504         else
3505             AC_MSG_ERROR([cannot determine identity to use])
3506         fi
3507     fi
3509     AC_MSG_CHECKING([whether to create a Mac App Store package])
3511     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3512         AC_MSG_RESULT([no])
3513     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3514         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3515     else
3516         if test "$enable_macosx_package_signing" = yes; then
3517             # By default use the first suitable certificate.
3518             # It should be a "3rd Party Mac Developer Installer" one
3519             identity="3rd Party Mac Developer Installer:"
3520         else
3521             identity=$enable_macosx_package_signing
3522         fi
3523         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3524         if test -n "$identity"; then
3525             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3526             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3527             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3528         else
3529             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3530         fi
3531     fi
3533     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3534         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3535     fi
3537     AC_MSG_CHECKING([whether to sandbox the application])
3539     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3540         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3541     elif test "$enable_macosx_sandbox" = yes; then
3542         ENABLE_MACOSX_SANDBOX=TRUE
3543         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3544         AC_MSG_RESULT([yes])
3545     else
3546         AC_MSG_RESULT([no])
3547     fi
3549     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3550     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3551     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3553 AC_SUBST(MACOSX_SDK_PATH)
3554 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3555 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3556 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3557 AC_SUBST(INSTALL_NAME_TOOL)
3558 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3559 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3560 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3561 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3562 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3564 dnl ===================================================================
3565 dnl Check iOS SDK and compiler
3566 dnl ===================================================================
3568 if test $_os = iOS; then
3569     AC_MSG_CHECKING([what iOS SDK to use])
3570     current_sdk_ver=15.0
3571     older_sdk_vers="14.5"
3572     if test "$enable_ios_simulator" = "yes"; then
3573         platform=iPhoneSimulator
3574         versionmin=-mios-simulator-version-min=13.6
3575     else
3576         platform=iPhoneOS
3577         versionmin=-miphoneos-version-min=13.6
3578     fi
3579     xcode_developer=`xcode-select -print-path`
3581     for sdkver in $current_sdk_ver $older_sdk_vers; do
3582         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3583         if test -d $t; then
3584             sysroot=$t
3585             break
3586         fi
3587     done
3589     if test -z "$sysroot"; then
3590         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3591     fi
3593     AC_MSG_RESULT($sysroot)
3595     stdlib="-stdlib=libc++"
3597     AC_MSG_CHECKING([what C compiler to use])
3598     CC="`xcrun -find clang`"
3599     CC_BASE=`first_arg_basename "$CC"`
3600     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3601     AC_MSG_RESULT([$CC])
3603     AC_MSG_CHECKING([what C++ compiler to use])
3604     CXX="`xcrun -find clang++`"
3605     CXX_BASE=`first_arg_basename "$CXX"`
3606     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3607     AC_MSG_RESULT([$CXX])
3609     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3610     AR=`xcrun -find ar`
3611     NM=`xcrun -find nm`
3612     STRIP=`xcrun -find strip`
3613     LIBTOOL=`xcrun -find libtool`
3614     RANLIB=`xcrun -find ranlib`
3617 AC_MSG_CHECKING([whether to treat the installation as read-only])
3619 if test $_os = Darwin; then
3620     enable_readonly_installset=yes
3621 elif test "$enable_extensions" != yes; then
3622     enable_readonly_installset=yes
3624 if test "$enable_readonly_installset" = yes; then
3625     AC_MSG_RESULT([yes])
3626     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3627 else
3628     AC_MSG_RESULT([no])
3631 dnl ===================================================================
3632 dnl Structure of install set
3633 dnl ===================================================================
3635 if test $_os = Darwin; then
3636     LIBO_BIN_FOLDER=MacOS
3637     LIBO_ETC_FOLDER=Resources
3638     LIBO_LIBEXEC_FOLDER=MacOS
3639     LIBO_LIB_FOLDER=Frameworks
3640     LIBO_LIB_PYUNO_FOLDER=Resources
3641     LIBO_SHARE_FOLDER=Resources
3642     LIBO_SHARE_HELP_FOLDER=Resources/help
3643     LIBO_SHARE_JAVA_FOLDER=Resources/java
3644     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3645     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3646     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3647     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3648     LIBO_URE_BIN_FOLDER=MacOS
3649     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3650     LIBO_URE_LIB_FOLDER=Frameworks
3651     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3652     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3653 elif test $_os = WINNT; then
3654     LIBO_BIN_FOLDER=program
3655     LIBO_ETC_FOLDER=program
3656     LIBO_LIBEXEC_FOLDER=program
3657     LIBO_LIB_FOLDER=program
3658     LIBO_LIB_PYUNO_FOLDER=program
3659     LIBO_SHARE_FOLDER=share
3660     LIBO_SHARE_HELP_FOLDER=help
3661     LIBO_SHARE_JAVA_FOLDER=program/classes
3662     LIBO_SHARE_PRESETS_FOLDER=presets
3663     LIBO_SHARE_READMES_FOLDER=readmes
3664     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3665     LIBO_SHARE_SHELL_FOLDER=program/shell
3666     LIBO_URE_BIN_FOLDER=program
3667     LIBO_URE_ETC_FOLDER=program
3668     LIBO_URE_LIB_FOLDER=program
3669     LIBO_URE_MISC_FOLDER=program
3670     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3671 else
3672     LIBO_BIN_FOLDER=program
3673     LIBO_ETC_FOLDER=program
3674     LIBO_LIBEXEC_FOLDER=program
3675     LIBO_LIB_FOLDER=program
3676     LIBO_LIB_PYUNO_FOLDER=program
3677     LIBO_SHARE_FOLDER=share
3678     LIBO_SHARE_HELP_FOLDER=help
3679     LIBO_SHARE_JAVA_FOLDER=program/classes
3680     LIBO_SHARE_PRESETS_FOLDER=presets
3681     LIBO_SHARE_READMES_FOLDER=readmes
3682     if test "$enable_fuzzers" != yes; then
3683         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3684     else
3685         LIBO_SHARE_RESOURCE_FOLDER=resource
3686     fi
3687     LIBO_SHARE_SHELL_FOLDER=program/shell
3688     LIBO_URE_BIN_FOLDER=program
3689     LIBO_URE_ETC_FOLDER=program
3690     LIBO_URE_LIB_FOLDER=program
3691     LIBO_URE_MISC_FOLDER=program
3692     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3694 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3695 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3696 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3697 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3698 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3699 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3700 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3701 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3702 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3703 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3704 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3705 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3706 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3707 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3708 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3709 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3711 # Not all of them needed in config_host.mk, add more if need arises
3712 AC_SUBST(LIBO_BIN_FOLDER)
3713 AC_SUBST(LIBO_ETC_FOLDER)
3714 AC_SUBST(LIBO_LIB_FOLDER)
3715 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3716 AC_SUBST(LIBO_SHARE_FOLDER)
3717 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3718 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3719 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3720 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3721 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3722 AC_SUBST(LIBO_URE_BIN_FOLDER)
3723 AC_SUBST(LIBO_URE_ETC_FOLDER)
3724 AC_SUBST(LIBO_URE_LIB_FOLDER)
3725 AC_SUBST(LIBO_URE_MISC_FOLDER)
3726 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3728 dnl ===================================================================
3729 dnl Windows specific tests and stuff
3730 dnl ===================================================================
3732 reg_get_value()
3734     # Return value: $regvalue
3735     unset regvalue
3737     if test "$build_os" = "wsl"; then
3738         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3739         return
3740     fi
3742     local _regentry="/proc/registry${1}/${2}"
3743     if test -f "$_regentry"; then
3744         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3745         # Registry keys read via /proc/registry* are always \0 terminated!
3746         local _regvalue=$(tr -d '\0' < "$_regentry")
3747         if test $? -eq 0; then
3748             regvalue=$_regvalue
3749         fi
3750     fi
3753 # Get a value from the 32-bit side of the Registry
3754 reg_get_value_32()
3756     reg_get_value "32" "$1"
3759 # Get a value from the 64-bit side of the Registry
3760 reg_get_value_64()
3762     reg_get_value "64" "$1"
3765 case "$host_os" in
3766 cygwin*|wsl*)
3767     COM=MSC
3768     OS=WNT
3769     RTL_OS=Windows
3770     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3771         P_SEP=";"
3772     else
3773         P_SEP=:
3774     fi
3775     case "$host_cpu" in
3776     x86_64)
3777         CPUNAME=X86_64
3778         RTL_ARCH=X86_64
3779         PLATFORMID=windows_x86_64
3780         WINDOWS_X64=1
3781         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3782         WIN_HOST_ARCH="x64"
3783         WIN_MULTI_ARCH="x86"
3784         WIN_HOST_BITS=64
3785         ;;
3786     i*86)
3787         CPUNAME=INTEL
3788         RTL_ARCH=x86
3789         PLATFORMID=windows_x86
3790         WIN_HOST_ARCH="x86"
3791         WIN_HOST_BITS=32
3792         WIN_OTHER_ARCH="x64"
3793         ;;
3794     aarch64)
3795         CPUNAME=AARCH64
3796         RTL_ARCH=AARCH64
3797         PLATFORMID=windows_aarch64
3798         WINDOWS_X64=1
3799         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3800         WIN_HOST_ARCH="arm64"
3801         WIN_HOST_BITS=64
3802         with_ucrt_dir=no
3803         ;;
3804     *)
3805         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3806         ;;
3807     esac
3809     case "$build_cpu" in
3810     x86_64) WIN_BUILD_ARCH="x64" ;;
3811     i*86) WIN_BUILD_ARCH="x86" ;;
3812     aarch64) WIN_BUILD_ARCH="arm64" ;;
3813     *)
3814         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3815         ;;
3816     esac
3818     SCPDEFS="$SCPDEFS -D_MSC_VER"
3819     ;;
3820 esac
3822 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3823 # other-arch won't, but wouldn't break the build (x64 on x86).
3824 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3825     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3829 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3830     # To allow building Windows multi-arch releases without cross-tooling
3831     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3832         cross_compiling="yes"
3833     fi
3836 ENABLE_WASM_STRIP=''
3837 if test "$cross_compiling" = "yes"; then
3838     export CROSS_COMPILING=TRUE
3839     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3840         ENABLE_WASM_STRIP=TRUE
3841     fi
3842 else
3843     CROSS_COMPILING=
3844     BUILD_TYPE="$BUILD_TYPE NATIVE"
3846 AC_SUBST(CROSS_COMPILING)
3847 AC_SUBST(ENABLE_WASM_STRIP)
3849 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3850 # NOTE: must _not_ be used for bundled external libraries!
3851 ISYSTEM=
3852 if test "$GCC" = "yes"; then
3853     AC_MSG_CHECKING( for -isystem )
3854     save_CFLAGS=$CFLAGS
3855     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3856     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3857     CFLAGS=$save_CFLAGS
3858     if test -n "$ISYSTEM"; then
3859         AC_MSG_RESULT(yes)
3860     else
3861         AC_MSG_RESULT(no)
3862     fi
3864 if test -z "$ISYSTEM"; then
3865     # fall back to using -I
3866     ISYSTEM=-I
3868 AC_SUBST(ISYSTEM)
3870 dnl ===================================================================
3871 dnl  Check which Visual Studio compiler is used
3872 dnl ===================================================================
3874 map_vs_year_to_version()
3876     # Return value: $vsversion
3878     unset vsversion
3880     case $1 in
3881     2019)
3882         vsversion=16;;
3883     2022)
3884         vsversion=17;;
3885     *)
3886         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3887     esac
3890 vs_versions_to_check()
3892     # Args: $1 (optional) : versions to check, in the order of preference
3893     # Return value: $vsversions
3895     unset vsversions
3897     if test -n "$1"; then
3898         map_vs_year_to_version "$1"
3899         vsversions=$vsversion
3900     else
3901         # Default version is 2019
3902         vsversions="16"
3903     fi
3906 win_get_env_from_vsvars32bat()
3908     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3909     # Also seems to be located in another directory under the same name: vsvars32.bat
3910     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3911     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3912     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3913     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3914     local result
3915     if test "$build_os" = "wsl"; then
3916         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3917     else
3918         chmod +x $WRAPPERBATCHFILEPATH
3919         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3920     fi
3921     rm -f $WRAPPERBATCHFILEPATH
3922     printf '%s' "$result"
3925 find_ucrt()
3927     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3928     if test -n "$regvalue"; then
3929         PathFormat "$regvalue"
3930         UCRTSDKDIR=$formatted_path_unix
3931         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3932         UCRTVERSION=$regvalue
3933         # Rest if not exist
3934         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3935           UCRTSDKDIR=
3936         fi
3937     fi
3938     if test -z "$UCRTSDKDIR"; then
3939         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3940         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3941         if test -f "$ide_env_file"; then
3942             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3943             UCRTSDKDIR=$formatted_path
3944             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3945             dnl Hack needed at least by tml:
3946             if test "$UCRTVERSION" = 10.0.15063.0 \
3947                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3948                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3949             then
3950                 UCRTVERSION=10.0.14393.0
3951             fi
3952         else
3953           AC_MSG_ERROR([No UCRT found])
3954         fi
3955     fi
3958 find_msvc()
3960     # Find Visual C++
3961     # Args: $1 (optional) : The VS version year
3962     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3964     unset vctest vctoolset vcnumwithdot vcbuildnumber
3966     vs_versions_to_check "$1"
3967     if test "$build_os" = wsl; then
3968         vswhere="$PROGRAMFILESX86"
3969     else
3970         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3971     fi
3972     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3973     PathFormat "$vswhere"
3974     vswhere=$formatted_path_unix
3975     for ver in $vsversions; do
3976         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3977         if test -z "$vswhereoutput"; then
3978             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3979         fi
3980         # Fall back to all MS products (this includes VC++ Build Tools)
3981         if ! test -n "$vswhereoutput"; then
3982             AC_MSG_CHECKING([VC++ Build Tools and similar])
3983             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3984         fi
3985         if test -n "$vswhereoutput"; then
3986             PathFormat "$vswhereoutput"
3987             vctest=$formatted_path_unix
3988             break
3989         fi
3990     done
3992     if test -n "$vctest"; then
3993         vcnumwithdot="$ver.0"
3994         case "$vcnumwithdot" in
3995         16.0)
3996             vcyear=2019
3997             vctoolset=v142
3998             ;;
3999         17.0)
4000             vcyear=2022
4001             vctoolset=v143
4002             ;;
4003         esac
4004         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4006     fi
4009 test_cl_exe()
4011     AC_MSG_CHECKING([$1 compiler])
4013     CL_EXE_PATH="$2/cl.exe"
4015     if test ! -f "$CL_EXE_PATH"; then
4016         if test "$1" = "multi-arch"; then
4017             AC_MSG_WARN([no compiler (cl.exe) in $2])
4018             return 1
4019         else
4020             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4021         fi
4022     fi
4024     dnl ===========================================================
4025     dnl  Check for the corresponding mspdb*.dll
4026     dnl ===========================================================
4028     # MSVC 15.0 has libraries from 14.0?
4029     mspdbnum="140"
4031     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4032         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4033     fi
4035     # The compiles has to find its shared libraries
4036     OLD_PATH="$PATH"
4037     TEMP_PATH=`cygpath -d "$2"`
4038     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4040     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4041         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4042     fi
4044     PATH="$OLD_PATH"
4046     AC_MSG_RESULT([$CL_EXE_PATH])
4049 SOLARINC=
4050 MSBUILD_PATH=
4051 DEVENV=
4052 if test "$_os" = "WINNT"; then
4053     AC_MSG_CHECKING([Visual C++])
4054     find_msvc "$with_visual_studio"
4055     if test -z "$vctest"; then
4056         if test -n "$with_visual_studio"; then
4057             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4058         else
4059             AC_MSG_ERROR([no Visual Studio installation found])
4060         fi
4061     fi
4062     AC_MSG_RESULT([])
4064     VC_PRODUCT_DIR="$vctest/VC"
4065     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4067     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4068     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4069         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4070         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4071         if test $? -ne 0; then
4072             WIN_MULTI_ARCH=""
4073             WIN_OTHER_ARCH=""
4074         fi
4075     fi
4077     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4078         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4079         test_cl_exe "build" "$MSVC_BUILD_PATH"
4080     fi
4082     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4083         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4084         test_cl_exe "host" "$MSVC_HOST_PATH"
4085     else
4086         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4087     fi
4089     AC_MSG_CHECKING([for short pathname of VC product directory])
4090     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4091     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4093     UCRTSDKDIR=
4094     UCRTVERSION=
4096     AC_MSG_CHECKING([for UCRT location])
4097     find_ucrt
4098     # find_ucrt errors out if it doesn't find it
4099     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4100     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4101     ucrtincpath_formatted=$formatted_path
4102     # SOLARINC is used for external modules and must be set too.
4103     # And no, it's not sufficient to set SOLARINC only, as configure
4104     # itself doesn't honour it.
4105     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4106     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4107     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4108     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4110     AC_SUBST(UCRTSDKDIR)
4111     AC_SUBST(UCRTVERSION)
4113     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4114     # Find the proper version of MSBuild.exe to use based on the VS version
4115     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4116     if test -z "$regvalue" ; then
4117         if test "$WIN_BUILD_ARCH" != "x64"; then
4118             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4119         else
4120             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4121         fi
4122     fi
4123     if test -d "$regvalue" ; then
4124         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4125         AC_MSG_RESULT([$regvalue])
4126     else
4127         AC_MSG_ERROR([MSBuild.exe location not found])
4128     fi
4130     # Find the version of devenv.exe
4131     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4132     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4133     DEVENV_unix=$(cygpath -u "$DEVENV")
4134     if test ! -e "$DEVENV_unix"; then
4135         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4136     fi
4138     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4139     dnl needed when building CLR code:
4140     if test -z "$MSVC_CXX"; then
4141         # This gives us a posix path with 8.3 filename restrictions
4142         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4143     fi
4145     if test -z "$CC"; then
4146         CC=$MSVC_CXX
4147         CC_BASE=`first_arg_basename "$CC"`
4148     fi
4149     if test -z "$CXX"; then
4150         CXX=$MSVC_CXX
4151         CXX_BASE=`first_arg_basename "$CXX"`
4152     fi
4154     if test -n "$CC"; then
4155         # Remove /cl.exe from CC case insensitive
4156         AC_MSG_NOTICE([found Visual C++ $vcyear])
4158         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4159         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4161         PathFormat "$COMPATH"
4162         COMPATH=`win_short_path_for_make "$formatted_path"`
4164         VCVER=$vcnumwithdot
4165         VCTOOLSET=$vctoolset
4167         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4168         # are always "better", we list them in reverse chronological order.
4170         case "$vcnumwithdot" in
4171         16.0 | 17.0)
4172             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4173             ;;
4174         esac
4176         # The expectation is that --with-windows-sdk should not need to be used
4177         if test -n "$with_windows_sdk"; then
4178             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4179             *" "$with_windows_sdk" "*)
4180                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4181                 ;;
4182             *)
4183                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4184                 ;;
4185             esac
4186         fi
4188         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4189         ac_objext=obj
4190         ac_exeext=exe
4192     else
4193         AC_MSG_ERROR([Visual C++ not found after all, huh])
4194     fi
4196     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4197     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4198         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4199         // between Visual Studio versions and _MSC_VER:
4200         #if _MSC_VER < 1925
4201         #error
4202         #endif
4203     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4205     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4206     # version of the Explorer extension (and maybe other small
4207     # bits, too) needed when installing a 32-bit LibreOffice on a
4208     # 64-bit OS. The 64-bit Explorer extension is a feature that
4209     # has been present since long in OOo. Don't confuse it with
4210     # building LibreOffice itself as 64-bit code.
4212     BUILD_X64=
4213     CXX_X64_BINARY=
4215     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4216         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4217         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4218              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4219         then
4220             BUILD_X64=TRUE
4221             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4222             AC_MSG_RESULT([found])
4223         else
4224             AC_MSG_RESULT([not found])
4225             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4226         fi
4227     elif test "$WIN_HOST_ARCH" = "x64"; then
4228         CXX_X64_BINARY=$CXX
4229     fi
4230     AC_SUBST(BUILD_X64)
4232     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4233     AC_SUBST(CXX_X64_BINARY)
4235     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4236     # needed to support TWAIN scan on both 32- and 64-bit systems
4238     case "$WIN_HOST_ARCH" in
4239     x64)
4240         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4241         if test -n "$CXX_X86_BINARY"; then
4242             BUILD_X86=TRUE
4243             AC_MSG_RESULT([preset])
4244         elif test -n "$WIN_MULTI_ARCH"; then
4245             BUILD_X86=TRUE
4246             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4247             CXX_X86_BINARY+=" /arch:SSE"
4248             AC_MSG_RESULT([found])
4249         else
4250             AC_MSG_RESULT([not found])
4251             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4252         fi
4253         ;;
4254     x86)
4255         BUILD_X86=TRUE
4256         CXX_X86_BINARY=$MSVC_CXX
4257         ;;
4258     esac
4259     AC_SUBST(BUILD_X86)
4260     AC_SUBST(CXX_X86_BINARY)
4262 AC_SUBST(VCVER)
4263 AC_SUBST(VCTOOLSET)
4264 AC_SUBST(DEVENV)
4265 AC_SUBST(MSVC_CXX)
4267 COM_IS_CLANG=
4268 AC_MSG_CHECKING([whether the compiler is actually Clang])
4269 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4270     #ifndef __clang__
4271     you lose
4272     #endif
4273     int foo=42;
4274     ]])],
4275     [AC_MSG_RESULT([yes])
4276      COM_IS_CLANG=TRUE],
4277     [AC_MSG_RESULT([no])])
4278 AC_SUBST(COM_IS_CLANG)
4280 CC_PLAIN=$CC
4281 CLANGVER=
4282 if test "$COM_IS_CLANG" = TRUE; then
4283     AC_MSG_CHECKING([whether Clang is new enough])
4284     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4285         #if !defined __apple_build_version__
4286         #error
4287         #endif
4288         ]])],
4289         [my_apple_clang=yes],[my_apple_clang=])
4290     if test "$my_apple_clang" = yes; then
4291         AC_MSG_RESULT([assumed yes (Apple Clang)])
4292     elif test "$_os" = Emscripten; then
4293         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4294     else
4295         if test "$_os" = WINNT; then
4296             dnl In which case, assume clang-cl:
4297             my_args="/EP /TC"
4298             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4299             dnl clang-cl:
4300             CC_PLAIN=
4301             for i in $CC; do
4302                 case $i in
4303                 -FIIntrin.h)
4304                     ;;
4305                 *)
4306                     CC_PLAIN="$CC_PLAIN $i"
4307                     ;;
4308                 esac
4309             done
4310         else
4311             my_args="-E -P"
4312         fi
4313         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4314         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4315         CLANGVER=`echo $clang_version \
4316             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4317         if test "$CLANGVER" -ge 50002; then
4318             AC_MSG_RESULT([yes ($clang_version)])
4319         else
4320             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4321         fi
4322         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4323         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4324     fi
4327 SHOWINCLUDES_PREFIX=
4328 if test "$_os" = WINNT; then
4329     dnl We need to guess the prefix of the -showIncludes output, it can be
4330     dnl localized
4331     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4332     echo "#include <stdlib.h>" > conftest.c
4333     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4334         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4335     rm -f conftest.c conftest.obj
4336     if test -z "$SHOWINCLUDES_PREFIX"; then
4337         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4338     else
4339         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4340     fi
4342 AC_SUBST(SHOWINCLUDES_PREFIX)
4345 # prefix C with ccache if needed
4347 if test "$CCACHE" != ""; then
4348     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4350     AC_LANG_PUSH([C])
4351     save_CFLAGS=$CFLAGS
4352     CFLAGS="$CFLAGS --ccache-skip -O2"
4353     # msvc does not fail on unknown options, check stdout
4354     if test "$COM" = MSC; then
4355         CFLAGS="$CFLAGS -nologo"
4356     fi
4357     save_ac_c_werror_flag=$ac_c_werror_flag
4358     ac_c_werror_flag=yes
4359     dnl an empty program will do, we're checking the compiler flags
4360     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4361                       [use_ccache=yes], [use_ccache=no])
4362     CFLAGS=$save_CFLAGS
4363     ac_c_werror_flag=$save_ac_c_werror_flag
4364     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4365         AC_MSG_RESULT([yes])
4366     else
4367         CC="$CCACHE $CC"
4368         CC_BASE="ccache $CC_BASE"
4369         AC_MSG_RESULT([no])
4370     fi
4371     AC_LANG_POP([C])
4374 # ===================================================================
4375 # check various GCC options that Clang does not support now but maybe
4376 # will somewhen in the future, check them even for GCC, so that the
4377 # flags are set
4378 # ===================================================================
4380 HAVE_GCC_GGDB2=
4381 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4382     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4383     save_CFLAGS=$CFLAGS
4384     CFLAGS="$CFLAGS -Werror -ggdb2"
4385     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4386     CFLAGS=$save_CFLAGS
4387     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4388         AC_MSG_RESULT([yes])
4389     else
4390         AC_MSG_RESULT([no])
4391     fi
4393     if test "$host_cpu" = "m68k"; then
4394         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4395         save_CFLAGS=$CFLAGS
4396         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4397         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4398         CFLAGS=$save_CFLAGS
4399         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4400             AC_MSG_RESULT([yes])
4401         else
4402             AC_MSG_ERROR([no])
4403         fi
4404     fi
4406 AC_SUBST(HAVE_GCC_GGDB2)
4408 dnl ===================================================================
4409 dnl  Test the gcc version
4410 dnl ===================================================================
4411 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4412     AC_MSG_CHECKING([the GCC version])
4413     _gcc_version=`$CC -dumpfullversion`
4414     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4415         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4416     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4418     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4420     if test "$gcc_full_version" -lt 70000; then
4421         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4422     fi
4423 else
4424     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4425     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4426     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4427     # (which reports itself as GCC 4.2.1).
4428     GCC_VERSION=
4430 AC_SUBST(GCC_VERSION)
4432 dnl Set the ENABLE_DBGUTIL variable
4433 dnl ===================================================================
4434 AC_MSG_CHECKING([whether to build with additional debug utilities])
4435 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4436     ENABLE_DBGUTIL="TRUE"
4437     # this is an extra var so it can have different default on different MSVC
4438     # versions (in case there are version specific problems with it)
4439     MSVC_USE_DEBUG_RUNTIME="TRUE"
4441     AC_MSG_RESULT([yes])
4442     # cppunit and graphite expose STL in public headers
4443     if test "$with_system_cppunit" = "yes"; then
4444         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4445     else
4446         with_system_cppunit=no
4447     fi
4448     if test "$with_system_graphite" = "yes"; then
4449         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4450     else
4451         with_system_graphite=no
4452     fi
4453     if test "$with_system_orcus" = "yes"; then
4454         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4455     else
4456         with_system_orcus=no
4457     fi
4458     if test "$with_system_libcmis" = "yes"; then
4459         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4460     else
4461         with_system_libcmis=no
4462     fi
4463     if test "$with_system_hunspell" = "yes"; then
4464         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4465     else
4466         with_system_hunspell=no
4467     fi
4468     if test "$with_system_gpgmepp" = "yes"; then
4469         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4470     else
4471         with_system_gpgmepp=no
4472     fi
4473     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4474     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4475     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4476     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4477     # of those two is using the system variant:
4478     if test "$with_system_libnumbertext" = "yes"; then
4479         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4480     else
4481         with_system_libnumbertext=no
4482     fi
4483     if test "$with_system_libwps" = "yes"; then
4484         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4485     else
4486         with_system_libwps=no
4487     fi
4488 else
4489     ENABLE_DBGUTIL=""
4490     MSVC_USE_DEBUG_RUNTIME=""
4491     AC_MSG_RESULT([no])
4493 AC_SUBST(ENABLE_DBGUTIL)
4494 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4496 dnl Set the ENABLE_DEBUG variable.
4497 dnl ===================================================================
4498 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4499     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4501 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4502     if test -z "$libo_fuzzed_enable_debug"; then
4503         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4504     else
4505         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4506         enable_debug=yes
4507     fi
4510 AC_MSG_CHECKING([whether to do a debug build])
4511 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4512     ENABLE_DEBUG="TRUE"
4513     if test -n "$ENABLE_DBGUTIL" ; then
4514         AC_MSG_RESULT([yes (dbgutil)])
4515     else
4516         AC_MSG_RESULT([yes])
4517     fi
4518 else
4519     ENABLE_DEBUG=""
4520     AC_MSG_RESULT([no])
4522 AC_SUBST(ENABLE_DEBUG)
4524 dnl ===================================================================
4525 dnl Select the linker to use (gold/lld/ld.bfd).
4526 dnl This is done only after compiler checks (need to know if Clang is
4527 dnl used, for different defaults) and after checking if a debug build
4528 dnl is wanted (non-debug builds get the default linker if not explicitly
4529 dnl specified otherwise).
4530 dnl All checks for linker features/options should come after this.
4531 dnl ===================================================================
4532 check_use_ld()
4534     use_ld=-fuse-ld=${1%%:*}
4535     use_ld_path=${1#*:}
4536     if test "$use_ld_path" != "$1"; then
4537         use_ld="$use_ld --ld-path=$use_ld_path"
4538     fi
4539     use_ld_fail_if_error=$2
4540     use_ld_ok=
4541     AC_MSG_CHECKING([for $use_ld linker support])
4542     use_ld_ldflags_save="$LDFLAGS"
4543     LDFLAGS="$LDFLAGS $use_ld"
4544     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4545 #include <stdio.h>
4546         ],[
4547 printf ("hello world\n");
4548         ])], USE_LD=$use_ld, [])
4549     if test -n "$USE_LD"; then
4550         AC_MSG_RESULT( yes )
4551         use_ld_ok=yes
4552     else
4553         if test -n "$use_ld_fail_if_error"; then
4554             AC_MSG_ERROR( no )
4555         else
4556             AC_MSG_RESULT( no )
4557         fi
4558     fi
4559     if test -n "$use_ld_ok"; then
4560         dnl keep the value of LDFLAGS
4561         return 0
4562     fi
4563     LDFLAGS="$use_ld_ldflags_save"
4564     return 1
4566 USE_LD=
4567 if test "$enable_ld" != "no"; then
4568     if test "$GCC" = "yes"; then
4569         if test -n "$enable_ld"; then
4570             check_use_ld "$enable_ld" fail_if_error
4571         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4572             dnl non-debug builds default to the default linker
4573             true
4574         elif test -n "$COM_IS_CLANG"; then
4575             check_use_ld lld
4576             if test $? -ne 0; then
4577                 check_use_ld gold
4578             fi
4579         else
4580             # For gcc first try gold, new versions also support lld.
4581             check_use_ld gold
4582             if test $? -ne 0; then
4583                 check_use_ld lld
4584             fi
4585         fi
4586         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4587         rm conftest.out
4588         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4589         if test -z "$ld_used"; then
4590             ld_used="unknown"
4591         fi
4592         AC_MSG_CHECKING([for linker that is used])
4593         AC_MSG_RESULT([$ld_used])
4594         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4595             if echo "$ld_used" | grep -q "^GNU ld"; then
4596                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4597                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4598             fi
4599         fi
4600     else
4601         if test "$enable_ld" = "yes"; then
4602             AC_MSG_ERROR([--enable-ld not supported])
4603         fi
4604     fi
4606 AC_SUBST(USE_LD)
4608 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4609 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4610     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4611     bsymbolic_functions_ldflags_save=$LDFLAGS
4612     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4613     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4614 #include <stdio.h>
4615         ],[
4616 printf ("hello world\n");
4617         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4618     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4619         AC_MSG_RESULT( found )
4620     else
4621         AC_MSG_RESULT( not found )
4622     fi
4623     LDFLAGS=$bsymbolic_functions_ldflags_save
4625 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4627 LD_GC_SECTIONS=
4628 if test "$GCC" = "yes"; then
4629     for flag in "--gc-sections" "-dead_strip"; do
4630         AC_MSG_CHECKING([for $flag linker support])
4631         ldflags_save=$LDFLAGS
4632         LDFLAGS="$LDFLAGS -Wl,$flag"
4633         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4634 #include <stdio.h>
4635             ],[
4636 printf ("hello world\n");
4637             ])],[
4638             LD_GC_SECTIONS="-Wl,$flag"
4639             AC_MSG_RESULT( found )
4640             ], [
4641             AC_MSG_RESULT( not found )
4642             ])
4643         LDFLAGS=$ldflags_save
4644         if test -n "$LD_GC_SECTIONS"; then
4645             break
4646         fi
4647     done
4649 AC_SUBST(LD_GC_SECTIONS)
4651 HAVE_GSPLIT_DWARF=
4652 if test "$enable_split_debug" != no; then
4653     use_split_debug=
4654     if test -n "$ENABLE_LTO"; then
4655         true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4656     elif test "$enable_split_debug" = yes; then
4657         use_split_debug=1
4658     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4659     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4660         use_split_debug=1
4661     fi
4662     if test -n "$use_split_debug"; then
4663         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4664         save_CFLAGS=$CFLAGS
4665         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4666         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4667         CFLAGS=$save_CFLAGS
4668         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4669             AC_MSG_RESULT([yes])
4670         else
4671             if test "$enable_split_debug" = yes; then
4672                 AC_MSG_ERROR([no])
4673             else
4674                 AC_MSG_RESULT([no])
4675             fi
4676         fi
4677     fi
4678     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4679         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4680         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4681     fi
4683 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4685 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4686 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4687 save_CFLAGS=$CFLAGS
4688 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4689 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4690 CFLAGS=$save_CFLAGS
4691 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4692     AC_MSG_RESULT([yes])
4693 else
4694     AC_MSG_RESULT([no])
4696 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4698 ENABLE_GDB_INDEX=
4699 if test "$enable_gdb_index" != "no"; then
4700     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4701     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4702         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4703         save_CFLAGS=$CFLAGS
4704         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4705         have_ggnu_pubnames=
4706         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4707         if test "$have_ggnu_pubnames" != "TRUE"; then
4708             if test "$enable_gdb_index" = "yes"; then
4709                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4710             else
4711                 AC_MSG_RESULT( no )
4712             fi
4713         else
4714             AC_MSG_RESULT( yes )
4715             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4716             ldflags_save=$LDFLAGS
4717             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4718             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4719 #include <stdio.h>
4720                 ],[
4721 printf ("hello world\n");
4722                 ])], ENABLE_GDB_INDEX=TRUE, [])
4723             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4724                 AC_MSG_RESULT( yes )
4725             else
4726                 if test "$enable_gdb_index" = "yes"; then
4727                     AC_MSG_ERROR( no )
4728                 else
4729                     AC_MSG_RESULT( no )
4730                 fi
4731             fi
4732             LDFLAGS=$ldflags_save
4733         fi
4734         CFLAGS=$save_CFLAGS
4735         fi
4736     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4737         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4738         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4739     fi
4741 AC_SUBST(ENABLE_GDB_INDEX)
4743 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4744     enable_sal_log=yes
4746 if test "$enable_sal_log" = yes; then
4747     ENABLE_SAL_LOG=TRUE
4749 AC_SUBST(ENABLE_SAL_LOG)
4751 dnl Check for enable symbols option
4752 dnl ===================================================================
4753 AC_MSG_CHECKING([whether to generate debug information])
4754 if test -z "$enable_symbols"; then
4755     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4756         enable_symbols=yes
4757     else
4758         enable_symbols=no
4759     fi
4761 if test "$enable_symbols" = yes; then
4762     ENABLE_SYMBOLS_FOR=all
4763     AC_MSG_RESULT([yes])
4764 elif test "$enable_symbols" = no; then
4765     ENABLE_SYMBOLS_FOR=
4766     AC_MSG_RESULT([no])
4767 else
4768     # Selective debuginfo.
4769     ENABLE_SYMBOLS_FOR="$enable_symbols"
4770     AC_MSG_RESULT([for "$enable_symbols"])
4772 AC_SUBST(ENABLE_SYMBOLS_FOR)
4774 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4775     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4776     AC_MSG_CHECKING([whether enough memory is available for linking])
4777     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4778     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4779     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4780         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4781     else
4782         AC_MSG_RESULT([yes])
4783     fi
4786 ENABLE_OPTIMIZED=
4787 ENABLE_OPTIMIZED_DEBUG=
4788 AC_MSG_CHECKING([whether to compile with optimization flags])
4789 if test -z "$enable_optimized"; then
4790     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4791         enable_optimized=no
4792     else
4793         enable_optimized=yes
4794     fi
4796 if test "$enable_optimized" = yes; then
4797     ENABLE_OPTIMIZED=TRUE
4798     AC_MSG_RESULT([yes])
4799 elif test "$enable_optimized" = debug; then
4800     ENABLE_OPTIMIZED_DEBUG=TRUE
4801     AC_MSG_RESULT([yes (debug)])
4802     HAVE_GCC_OG=
4803     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4804         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4805         save_CFLAGS=$CFLAGS
4806         CFLAGS="$CFLAGS -Werror -Og"
4807         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4808         CFLAGS=$save_CFLAGS
4809         if test "$HAVE_GCC_OG" = "TRUE"; then
4810             AC_MSG_RESULT([yes])
4811         else
4812             AC_MSG_RESULT([no])
4813         fi
4814     fi
4815     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4816         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4817     fi
4818 else
4819     AC_MSG_RESULT([no])
4821 AC_SUBST(ENABLE_OPTIMIZED)
4822 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4825 # determine CPUNAME, OS, ...
4827 case "$host_os" in
4829 aix*)
4830     COM=GCC
4831     CPUNAME=POWERPC
4832     OS=AIX
4833     RTL_OS=AIX
4834     RTL_ARCH=PowerPC
4835     PLATFORMID=aix_powerpc
4836     P_SEP=:
4837     ;;
4839 cygwin*|wsl*)
4840     # Already handled
4841     ;;
4843 darwin*|macos*)
4844     COM=GCC
4845     OS=MACOSX
4846     RTL_OS=MacOSX
4847     P_SEP=:
4849     case "$host_cpu" in
4850     aarch64|arm64)
4851         if test "$enable_ios_simulator" = "yes"; then
4852             OS=iOS
4853         else
4854             CPUNAME=AARCH64
4855             RTL_ARCH=AARCH64
4856             PLATFORMID=macosx_aarch64
4857         fi
4858         ;;
4859     x86_64)
4860         if test "$enable_ios_simulator" = "yes"; then
4861             OS=iOS
4862         fi
4863         CPUNAME=X86_64
4864         RTL_ARCH=X86_64
4865         PLATFORMID=macosx_x86_64
4866         ;;
4867     *)
4868         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4869         ;;
4870     esac
4871     ;;
4873 ios*)
4874     COM=GCC
4875     OS=iOS
4876     RTL_OS=iOS
4877     P_SEP=:
4879     case "$host_cpu" in
4880     aarch64|arm64)
4881         if test "$enable_ios_simulator" = "yes"; then
4882             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4883         fi
4884         ;;
4885     *)
4886         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4887         ;;
4888     esac
4889     CPUNAME=AARCH64
4890     RTL_ARCH=AARCH64
4891     PLATFORMID=ios_arm64
4892     ;;
4894 dragonfly*)
4895     COM=GCC
4896     OS=DRAGONFLY
4897     RTL_OS=DragonFly
4898     P_SEP=:
4900     case "$host_cpu" in
4901     i*86)
4902         CPUNAME=INTEL
4903         RTL_ARCH=x86
4904         PLATFORMID=dragonfly_x86
4905         ;;
4906     x86_64)
4907         CPUNAME=X86_64
4908         RTL_ARCH=X86_64
4909         PLATFORMID=dragonfly_x86_64
4910         ;;
4911     *)
4912         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4913         ;;
4914     esac
4915     ;;
4917 freebsd*)
4918     COM=GCC
4919     RTL_OS=FreeBSD
4920     OS=FREEBSD
4921     P_SEP=:
4923     case "$host_cpu" in
4924     aarch64)
4925         CPUNAME=AARCH64
4926         PLATFORMID=freebsd_aarch64
4927         RTL_ARCH=AARCH64
4928         ;;
4929     i*86)
4930         CPUNAME=INTEL
4931         RTL_ARCH=x86
4932         PLATFORMID=freebsd_x86
4933         ;;
4934     x86_64|amd64)
4935         CPUNAME=X86_64
4936         RTL_ARCH=X86_64
4937         PLATFORMID=freebsd_x86_64
4938         ;;
4939     powerpc64)
4940         CPUNAME=POWERPC64
4941         RTL_ARCH=PowerPC_64
4942         PLATFORMID=freebsd_powerpc64
4943         ;;
4944     powerpc|powerpcspe)
4945         CPUNAME=POWERPC
4946         RTL_ARCH=PowerPC
4947         PLATFORMID=freebsd_powerpc
4948         ;;
4949     *)
4950         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4951         ;;
4952     esac
4953     ;;
4955 haiku*)
4956     COM=GCC
4957     GUIBASE=haiku
4958     RTL_OS=Haiku
4959     OS=HAIKU
4960     P_SEP=:
4962     case "$host_cpu" in
4963     i*86)
4964         CPUNAME=INTEL
4965         RTL_ARCH=x86
4966         PLATFORMID=haiku_x86
4967         ;;
4968     x86_64|amd64)
4969         CPUNAME=X86_64
4970         RTL_ARCH=X86_64
4971         PLATFORMID=haiku_x86_64
4972         ;;
4973     *)
4974         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4975         ;;
4976     esac
4977     ;;
4979 kfreebsd*)
4980     COM=GCC
4981     OS=LINUX
4982     RTL_OS=kFreeBSD
4983     P_SEP=:
4985     case "$host_cpu" in
4987     i*86)
4988         CPUNAME=INTEL
4989         RTL_ARCH=x86
4990         PLATFORMID=kfreebsd_x86
4991         ;;
4992     x86_64)
4993         CPUNAME=X86_64
4994         RTL_ARCH=X86_64
4995         PLATFORMID=kfreebsd_x86_64
4996         ;;
4997     *)
4998         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4999         ;;
5000     esac
5001     ;;
5003 linux-gnu*|linux-musl*)
5004     COM=GCC
5005     OS=LINUX
5006     RTL_OS=Linux
5007     P_SEP=:
5009     case "$host_cpu" in
5011     aarch64)
5012         CPUNAME=AARCH64
5013         PLATFORMID=linux_aarch64
5014         RTL_ARCH=AARCH64
5015         EPM_FLAGS="-a arm64"
5016         ;;
5017     alpha)
5018         CPUNAME=AXP
5019         RTL_ARCH=ALPHA
5020         PLATFORMID=linux_alpha
5021         ;;
5022     arm*)
5023         CPUNAME=ARM
5024         EPM_FLAGS="-a arm"
5025         RTL_ARCH=ARM_EABI
5026         PLATFORMID=linux_arm_eabi
5027         case "$host_cpu" in
5028         arm*-linux)
5029             RTL_ARCH=ARM_OABI
5030             PLATFORMID=linux_arm_oabi
5031             ;;
5032         esac
5033         ;;
5034     hppa)
5035         CPUNAME=HPPA
5036         RTL_ARCH=HPPA
5037         EPM_FLAGS="-a hppa"
5038         PLATFORMID=linux_hppa
5039         ;;
5040     i*86)
5041         CPUNAME=INTEL
5042         RTL_ARCH=x86
5043         PLATFORMID=linux_x86
5044         ;;
5045     ia64)
5046         CPUNAME=IA64
5047         RTL_ARCH=IA64
5048         PLATFORMID=linux_ia64
5049         ;;
5050     mips)
5051         CPUNAME=GODSON
5052         RTL_ARCH=MIPS_EB
5053         EPM_FLAGS="-a mips"
5054         PLATFORMID=linux_mips_eb
5055         ;;
5056     mips64)
5057         CPUNAME=GODSON64
5058         RTL_ARCH=MIPS64_EB
5059         EPM_FLAGS="-a mips64"
5060         PLATFORMID=linux_mips64_eb
5061         ;;
5062     mips64el)
5063         CPUNAME=GODSON64
5064         RTL_ARCH=MIPS64_EL
5065         EPM_FLAGS="-a mips64el"
5066         PLATFORMID=linux_mips64_el
5067         ;;
5068     mipsel)
5069         CPUNAME=GODSON
5070         RTL_ARCH=MIPS_EL
5071         EPM_FLAGS="-a mipsel"
5072         PLATFORMID=linux_mips_el
5073         ;;
5074     m68k)
5075         CPUNAME=M68K
5076         RTL_ARCH=M68K
5077         PLATFORMID=linux_m68k
5078         ;;
5079     powerpc)
5080         CPUNAME=POWERPC
5081         RTL_ARCH=PowerPC
5082         PLATFORMID=linux_powerpc
5083         ;;
5084     powerpc64)
5085         CPUNAME=POWERPC64
5086         RTL_ARCH=PowerPC_64
5087         PLATFORMID=linux_powerpc64
5088         ;;
5089     powerpc64le)
5090         CPUNAME=POWERPC64
5091         RTL_ARCH=PowerPC_64_LE
5092         PLATFORMID=linux_powerpc64_le
5093         ;;
5094     sparc)
5095         CPUNAME=SPARC
5096         RTL_ARCH=SPARC
5097         PLATFORMID=linux_sparc
5098         ;;
5099     sparc64)
5100         CPUNAME=SPARC64
5101         RTL_ARCH=SPARC64
5102         PLATFORMID=linux_sparc64
5103         ;;
5104     s390)
5105         CPUNAME=S390
5106         RTL_ARCH=S390
5107         PLATFORMID=linux_s390
5108         ;;
5109     s390x)
5110         CPUNAME=S390X
5111         RTL_ARCH=S390x
5112         PLATFORMID=linux_s390x
5113         ;;
5114     x86_64)
5115         CPUNAME=X86_64
5116         RTL_ARCH=X86_64
5117         PLATFORMID=linux_x86_64
5118         ;;
5119     *)
5120         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5121         ;;
5122     esac
5123     ;;
5125 linux-android*)
5126     COM=GCC
5127     OS=ANDROID
5128     RTL_OS=Android
5129     P_SEP=:
5131     case "$host_cpu" in
5133     arm|armel)
5134         CPUNAME=ARM
5135         RTL_ARCH=ARM_EABI
5136         PLATFORMID=android_arm_eabi
5137         ;;
5138     aarch64)
5139         CPUNAME=AARCH64
5140         RTL_ARCH=AARCH64
5141         PLATFORMID=android_aarch64
5142         ;;
5143     i*86)
5144         CPUNAME=INTEL
5145         RTL_ARCH=x86
5146         PLATFORMID=android_x86
5147         ;;
5148     x86_64)
5149         CPUNAME=X86_64
5150         RTL_ARCH=X86_64
5151         PLATFORMID=android_x86_64
5152         ;;
5153     *)
5154         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5155         ;;
5156     esac
5157     ;;
5159 *netbsd*)
5160     COM=GCC
5161     OS=NETBSD
5162     RTL_OS=NetBSD
5163     P_SEP=:
5165     case "$host_cpu" in
5166     i*86)
5167         CPUNAME=INTEL
5168         RTL_ARCH=x86
5169         PLATFORMID=netbsd_x86
5170         ;;
5171     powerpc)
5172         CPUNAME=POWERPC
5173         RTL_ARCH=PowerPC
5174         PLATFORMID=netbsd_powerpc
5175         ;;
5176     sparc)
5177         CPUNAME=SPARC
5178         RTL_ARCH=SPARC
5179         PLATFORMID=netbsd_sparc
5180         ;;
5181     x86_64)
5182         CPUNAME=X86_64
5183         RTL_ARCH=X86_64
5184         PLATFORMID=netbsd_x86_64
5185         ;;
5186     *)
5187         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5188         ;;
5189     esac
5190     ;;
5192 openbsd*)
5193     COM=GCC
5194     OS=OPENBSD
5195     RTL_OS=OpenBSD
5196     P_SEP=:
5198     case "$host_cpu" in
5199     i*86)
5200         CPUNAME=INTEL
5201         RTL_ARCH=x86
5202         PLATFORMID=openbsd_x86
5203         ;;
5204     x86_64)
5205         CPUNAME=X86_64
5206         RTL_ARCH=X86_64
5207         PLATFORMID=openbsd_x86_64
5208         ;;
5209     *)
5210         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5211         ;;
5212     esac
5213     SOLARINC="$SOLARINC -I/usr/local/include"
5214     ;;
5216 solaris*)
5217     COM=GCC
5218     OS=SOLARIS
5219     RTL_OS=Solaris
5220     P_SEP=:
5222     case "$host_cpu" in
5223     i*86)
5224         CPUNAME=INTEL
5225         RTL_ARCH=x86
5226         PLATFORMID=solaris_x86
5227         ;;
5228     sparc)
5229         CPUNAME=SPARC
5230         RTL_ARCH=SPARC
5231         PLATFORMID=solaris_sparc
5232         ;;
5233     sparc64)
5234         CPUNAME=SPARC64
5235         RTL_ARCH=SPARC64
5236         PLATFORMID=solaris_sparc64
5237         ;;
5238     *)
5239         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5240         ;;
5241     esac
5242     SOLARINC="$SOLARINC -I/usr/local/include"
5243     ;;
5245 emscripten*)
5246     COM=GCC
5247     OS=EMSCRIPTEN
5248     RTL_OS=Emscripten
5249     P_SEP=:
5251     case "$host_cpu" in
5252     wasm32|wasm64)
5253         ;;
5254     *)
5255         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5256         ;;
5257     esac
5258     CPUNAME=INTEL
5259     RTL_ARCH=x86
5260     PLATFORMID=linux_x86
5261     ;;
5264     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5265     ;;
5266 esac
5268 if test "$with_x" = "no"; then
5269     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5272 DISABLE_GUI=""
5273 if test "$enable_gui" = "no"; then
5274     if test "$using_x11" != yes; then
5275         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5276     fi
5277     USING_X11=
5278     DISABLE_GUI=TRUE
5279 else
5280     AC_DEFINE(HAVE_FEATURE_UI)
5282 AC_SUBST(DISABLE_GUI)
5284 if test "$using_x11" = yes; then
5285     if test "$USING_X11" = TRUE; then
5286         AC_DEFINE(USING_X11)
5287     else
5288         disable_x11_tests
5289     fi
5290 else
5291     if test "$USING_X11" = TRUE; then
5292         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5293     fi
5296 WORKDIR="${BUILDDIR}/workdir"
5297 INSTDIR="${BUILDDIR}/instdir"
5298 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5299 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5300 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5301 AC_SUBST(COM)
5302 AC_SUBST(CPUNAME)
5303 AC_SUBST(RTL_OS)
5304 AC_SUBST(RTL_ARCH)
5305 AC_SUBST(EPM_FLAGS)
5306 AC_SUBST(USING_X11)
5307 AC_SUBST([INSTDIR])
5308 AC_SUBST([INSTROOT])
5309 AC_SUBST([INSTROOTBASE])
5310 AC_SUBST(OS)
5311 AC_SUBST(P_SEP)
5312 AC_SUBST(WORKDIR)
5313 AC_SUBST(PLATFORMID)
5314 AC_SUBST(WINDOWS_X64)
5315 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5317 if test "$OS" = WNT -a "$COM" = MSC; then
5318     case "$CPUNAME" in
5319     INTEL) CPPU_ENV=msci ;;
5320     X86_64) CPPU_ENV=mscx ;;
5321     AARCH64) CPPU_ENV=msca ;;
5322     *)
5323         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5324         ;;
5325     esac
5326 else
5327     CPPU_ENV=gcc3
5329 AC_SUBST(CPPU_ENV)
5331 dnl ===================================================================
5332 dnl Test which package format to use
5333 dnl ===================================================================
5334 AC_MSG_CHECKING([which package format to use])
5335 if test -n "$with_package_format" -a "$with_package_format" != no; then
5336     for i in $with_package_format; do
5337         case "$i" in
5338         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5339             ;;
5340         *)
5341             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5342 aix - AIX software distribution
5343 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5344 deb - Debian software distribution
5345 pkg - Solaris software distribution
5346 rpm - RedHat software distribution
5348 LibreOffice additionally supports:
5349 archive - .tar.gz or .zip
5350 dmg - macOS .dmg
5351 installed - installation tree
5352 msi - Windows .msi
5353         ])
5354             ;;
5355         esac
5356     done
5357     # fakeroot is needed to ensure correct file ownerships/permissions
5358     # inside deb packages and tar archives created on Linux and Solaris.
5359     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5360         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5361         if test "$FAKEROOT" = "no"; then
5362             AC_MSG_ERROR(
5363                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5364         fi
5365     fi
5366     PKGFORMAT="$with_package_format"
5367     AC_MSG_RESULT([$PKGFORMAT])
5368 else
5369     PKGFORMAT=
5370     AC_MSG_RESULT([none])
5372 AC_SUBST(PKGFORMAT)
5374 dnl ===================================================================
5375 dnl handle help related options
5377 dnl If you change help related options, please update README.help
5378 dnl ===================================================================
5380 ENABLE_HTMLHELP=
5381 HELP_OMINDEX_PAGE=
5382 HELP_ONLINE=
5383 WITH_HELPPACKS=
5385 AC_MSG_CHECKING([which help to build])
5386 if test -n "$with_help" -a "$with_help" != "no"; then
5387     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5388     BUILD_TYPE="$BUILD_TYPE HELP"
5389     case "$with_help" in
5390     "html")
5391         ENABLE_HTMLHELP=TRUE
5392         WITH_HELPPACKS=TRUE
5393         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5394         AC_MSG_RESULT([HTML (local)])
5395         ;;
5396     "online")
5397         ENABLE_HTMLHELP=TRUE
5398         HELP_ONLINE=TRUE
5399         AC_MSG_RESULT([HTML (online)])
5400         ;;
5401     yes)
5402         WITH_HELPPACKS=TRUE
5403         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5404         AC_MSG_RESULT([XML (local)])
5405         ;;
5406     *)
5407         AC_MSG_ERROR([Unknown --with-help=$with_help])
5408         ;;
5409     esac
5410 else
5411     AC_MSG_RESULT([no])
5414 AC_MSG_CHECKING([if we need to build the help index tooling])
5415 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5416     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5417     AC_MSG_RESULT([yes])
5418 else
5419     AC_MSG_RESULT([no])
5422 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5423 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5424     if test "$HELP_ONLINE" != TRUE; then
5425         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5426     fi
5427     case "$with_omindex" in
5428     "server")
5429         HELP_OMINDEX_PAGE=TRUE
5430         AC_MSG_RESULT([SERVER])
5431         ;;
5432     "noxap")
5433         AC_MSG_RESULT([NOXAP])
5434         ;;
5435     *)
5436         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5437         ;;
5438     esac
5439 else
5440     AC_MSG_RESULT([no])
5443 AC_MSG_CHECKING([whether to include the XML-help support])
5444 if test "$enable_xmlhelp" = yes; then
5445     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5446     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5447     AC_MSG_RESULT([yes])
5448 else
5449     if test "$with_help" = yes; then
5450         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5451     fi
5452     AC_MSG_RESULT([no])
5455 dnl Test whether to integrate helppacks into the product's installer
5456 AC_MSG_CHECKING([for helppack integration])
5457 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5458     AC_MSG_RESULT([no integration])
5459 else
5460     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5461     AC_MSG_RESULT([integration])
5464 AC_SUBST([ENABLE_HTMLHELP])
5465 AC_SUBST([HELP_OMINDEX_PAGE])
5466 AC_SUBST([HELP_ONLINE])
5467 # WITH_HELPPACKS is used only in configure
5469 dnl ===================================================================
5470 dnl Set up a different compiler to produce tools to run on the build
5471 dnl machine when doing cross-compilation
5472 dnl ===================================================================
5474 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5475 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5476 if test "$cross_compiling" = "yes"; then
5477     AC_MSG_CHECKING([for BUILD platform configuration])
5478     echo
5479     rm -rf CONF-FOR-BUILD config_build.mk
5480     mkdir CONF-FOR-BUILD
5481     # Here must be listed all files needed when running the configure script. In particular, also
5482     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5483     # keep them in the same order as there.
5484     (cd $SRC_ROOT && tar cf - \
5485         config.guess \
5486         bin/get_config_variables \
5487         solenv/bin/getcompver.awk \
5488         solenv/inc/langlist.mk \
5489         download.lst \
5490         config_host.mk.in \
5491         config_host_lang.mk.in \
5492         Makefile.in \
5493         lo.xcent.in \
5494         bin/bffvalidator.sh.in \
5495         bin/odfvalidator.sh.in \
5496         bin/officeotron.sh.in \
5497         hardened_runtime.xcent.in \
5498         instsetoo_native/util/openoffice.lst.in \
5499         config_host/*.in \
5500         sysui/desktop/macosx/Info.plist.in \
5501         .vscode/vs-code-template.code-workspace.in \
5502         ) \
5503     | (cd CONF-FOR-BUILD && tar xf -)
5504     cp configure CONF-FOR-BUILD
5505     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5506     (
5507     unset COM USING_X11 OS CPUNAME
5508     unset CC CXX SYSBASE CFLAGS
5509     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5510     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5511     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5512     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5513     if test -n "$CC_FOR_BUILD"; then
5514         export CC="$CC_FOR_BUILD"
5515         CC_BASE=`first_arg_basename "$CC"`
5516     fi
5517     if test -n "$CXX_FOR_BUILD"; then
5518         export CXX="$CXX_FOR_BUILD"
5519         CXX_BASE=`first_arg_basename "$CXX"`
5520     fi
5521     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5522     cd CONF-FOR-BUILD
5524     # Handle host configuration, which affects the cross-toolset too
5525     sub_conf_opts=""
5526     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5527     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5528     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5529     if test -n "$ENABLE_JAVA"; then
5530         case "$_os" in
5531         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5532         Android)
5533             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5534             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5535             ;;
5536         *)
5537             if test -z "$with_jdk_home"; then
5538                 AC_MSG_ERROR([Missing host JDK! This can't be detected for the build OS, so you have to specify it with --with-jdk-home.])
5539             fi
5540             ;;
5541         esac
5542     else
5543         sub_conf_opts="$sub_conf_opts --without-java"
5544     fi
5545     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5546     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5547     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5548     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5549     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5550     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5552     # Don't bother having configure look for stuff not needed for the build platform anyway
5553     sub_conf_defaults=" \
5554         --build="$build_alias" \
5555         --disable-cairo-canvas \
5556         --disable-cups \
5557         --disable-firebird-sdbc \
5558         --disable-gpgmepp \
5559         --disable-gstreamer-1-0 \
5560         --disable-gtk3 \
5561         --disable-gtk4 \
5562         --disable-mariadb-sdbc \
5563         --disable-nss \
5564         --disable-online-update \
5565         --disable-opencl \
5566         --disable-pdfimport \
5567         --disable-postgresql-sdbc \
5568         --disable-skia \
5569         --enable-icecream="$enable_icecream" \
5570         --without-doxygen \
5571         --without-webdav \
5572         --with-parallelism="$with_parallelism" \
5573         --with-theme="$with_theme" \
5574         --with-tls=openssl \
5576     echo "    Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5577     ./configure \
5578         $sub_conf_defaults \
5579         $sub_conf_opts \
5580         $with_build_platform_configure_options \
5581         --srcdir=$srcdir \
5582         2>&1 | sed -e 's/^/    /'
5583     if test [${PIPESTATUS[0]}] -ne 0; then
5584         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5585     fi
5587     # filter permitted build targets
5588     PERMITTED_BUILD_TARGETS="
5589         AVMEDIA
5590         BOOST
5591         CAIRO
5592         CLUCENE
5593         CUCKOO
5594         CURL
5595         DBCONNECTIVITY
5596         DESKTOP
5597         DYNLOADING
5598         EPOXY
5599         EXPAT
5600         GLM
5601         GRAPHITE
5602         HARFBUZZ
5603         HELPTOOLS
5604         ICU
5605         LCMS2
5606         LIBJPEG_TURBO
5607         LIBLANGTAG
5608         LibO
5609         LIBFFI
5610         LIBPN
5611         LIBXML2
5612         LIBXSLT
5613         MDDS
5614         NATIVE
5615         OPENSSL
5616         ORCUS
5617         PYTHON
5618         SCRIPTING
5619         ZLIB
5621     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5622     # newlined lists, to use grep as a filter
5623     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5624     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5625     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5626     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5628     cp config_host.mk ../config_build.mk
5629     cp config_host_lang.mk ../config_build_lang.mk
5630     mv config.log ../config.Build.log
5631     mkdir -p ../config_build
5632     mv config_host/*.h ../config_build
5633     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5635     # all these will get a _FOR_BUILD postfix
5636     DIRECT_FOR_BUILD_SETTINGS="
5637         CC
5638         CPPU_ENV
5639         CXX
5640         ILIB
5641         JAVA_HOME
5642         JAVAIFLAGS
5643         JDK
5644         LIBO_BIN_FOLDER
5645         LIBO_LIB_FOLDER
5646         LIBO_URE_LIB_FOLDER
5647         LIBO_URE_MISC_FOLDER
5648         OS
5649         SDKDIRNAME
5650         SYSTEM_LIBXML
5651         SYSTEM_LIBXSLT
5653     # these overwrite host config with build config
5654     OVERWRITING_SETTINGS="
5655         ANT
5656         ANT_HOME
5657         ANT_LIB
5658         HSQLDB_USE_JDBC_4_1
5659         JAVA_CLASSPATH_NOT_SET
5660         JAVA_SOURCE_VER
5661         JAVA_TARGET_VER
5662         JAVACFLAGS
5663         JAVACOMPILER
5664         JAVADOC
5665         JAVADOCISGJDOC
5667     # these need some special handling
5668     EXTRA_HANDLED_SETTINGS="
5669         INSTDIR
5670         INSTROOT
5671         PATH
5672         WORKDIR
5674     OLD_PATH=$PATH
5675     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5676     BUILD_PATH=$PATH
5677     PATH=$OLD_PATH
5679     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5680     echo "$line" >>build-config
5682     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5683         VV='$'$V
5684         VV=`eval "echo $VV"`
5685         if test -n "$VV"; then
5686             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5687             echo "$line" >>build-config
5688         fi
5689     done
5691     for V in $OVERWRITING_SETTINGS; do
5692         VV='$'$V
5693         VV=`eval "echo $VV"`
5694         if test -n "$VV"; then
5695             line=${V}='${'${V}:-$VV'}'
5696             echo "$line" >>build-config
5697         fi
5698     done
5700     for V in INSTDIR INSTROOT WORKDIR; do
5701         VV='$'$V
5702         VV=`eval "echo $VV"`
5703         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5704         if test -n "$VV"; then
5705             line="${V}_FOR_BUILD='$VV'"
5706             echo "$line" >>build-config
5707         fi
5708     done
5710     )
5711     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5712     test -f config_build.mk || AC_MSG_ERROR([A file called config_build.mk was supposed to have been copied here, but it isn't found])
5713     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5714              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5716     eval `cat CONF-FOR-BUILD/build-config`
5718     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5720     rm -rf CONF-FOR-BUILD
5721 else
5722     OS_FOR_BUILD="$OS"
5723     CC_FOR_BUILD="$CC"
5724     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5725     CXX_FOR_BUILD="$CXX"
5726     INSTDIR_FOR_BUILD="$INSTDIR"
5727     INSTROOT_FOR_BUILD="$INSTROOT"
5728     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5729     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5730     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5731     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5732     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5733     WORKDIR_FOR_BUILD="$WORKDIR"
5735 AC_SUBST(OS_FOR_BUILD)
5736 AC_SUBST(INSTDIR_FOR_BUILD)
5737 AC_SUBST(INSTROOT_FOR_BUILD)
5738 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5739 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5740 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5741 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5742 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5743 AC_SUBST(WORKDIR_FOR_BUILD)
5744 AC_SUBST(CC_FOR_BUILD)
5745 AC_SUBST(CXX_FOR_BUILD)
5746 AC_SUBST(CPPU_ENV_FOR_BUILD)
5748 dnl ===================================================================
5749 dnl Check for syslog header
5750 dnl ===================================================================
5751 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5753 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5754 dnl ===================================================================
5755 AC_MSG_CHECKING([whether to turn warnings to errors])
5756 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5757     ENABLE_WERROR="TRUE"
5758     PYTHONWARNINGS="error"
5759     AC_MSG_RESULT([yes])
5760 else
5761     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5762         ENABLE_WERROR="TRUE"
5763         PYTHONWARNINGS="error"
5764         AC_MSG_RESULT([yes])
5765     else
5766         AC_MSG_RESULT([no])
5767     fi
5769 AC_SUBST(ENABLE_WERROR)
5770 AC_SUBST(PYTHONWARNINGS)
5772 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5773 dnl ===================================================================
5774 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5775 if test -z "$enable_assert_always_abort"; then
5776    if test "$ENABLE_DEBUG" = TRUE; then
5777        enable_assert_always_abort=yes
5778    else
5779        enable_assert_always_abort=no
5780    fi
5782 if test "$enable_assert_always_abort" = "yes"; then
5783     ASSERT_ALWAYS_ABORT="TRUE"
5784     AC_MSG_RESULT([yes])
5785 else
5786     ASSERT_ALWAYS_ABORT="FALSE"
5787     AC_MSG_RESULT([no])
5789 AC_SUBST(ASSERT_ALWAYS_ABORT)
5791 # Determine whether to use ooenv for the instdir installation
5792 # ===================================================================
5793 if test $_os != "WINNT" -a $_os != "Darwin"; then
5794     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5795     if test -z "$enable_ooenv"; then
5796         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5797             enable_ooenv=yes
5798         else
5799             enable_ooenv=no
5800         fi
5801     fi
5802     if test "$enable_ooenv" = "no"; then
5803         AC_MSG_RESULT([no])
5804     else
5805         ENABLE_OOENV="TRUE"
5806         AC_MSG_RESULT([yes])
5807     fi
5809 AC_SUBST(ENABLE_OOENV)
5811 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5812     if test "$enable_qt5" = "no"; then
5813         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5814     else
5815         enable_qt5=yes
5816     fi
5819 dnl ===================================================================
5820 dnl check for cups support
5821 dnl ===================================================================
5823 AC_MSG_CHECKING([whether to enable CUPS support])
5824 if test "$test_cups" = yes -a "$enable_cups" != no; then
5825     ENABLE_CUPS=TRUE
5826     AC_MSG_RESULT([yes])
5828     AC_MSG_CHECKING([whether cups support is present])
5829     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5830     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5831     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5832         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5833     fi
5834 else
5835     AC_MSG_RESULT([no])
5838 AC_SUBST(ENABLE_CUPS)
5840 # fontconfig checks
5841 if test "$using_freetype_fontconfig" = yes; then
5842     AC_MSG_CHECKING([which fontconfig to use])
5844 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5845     AC_MSG_RESULT([external])
5846     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5847     SYSTEM_FONTCONFIG=TRUE
5848     FilterLibs "${FONTCONFIG_LIBS}"
5849     FONTCONFIG_LIBS="${filteredlibs}"
5850 elif test "$using_freetype_fontconfig" = yes; then
5851     AC_MSG_RESULT([internal])
5852     BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5854 AC_SUBST(FONTCONFIG_CFLAGS)
5855 AC_SUBST(FONTCONFIG_LIBS)
5856 AC_SUBST([SYSTEM_FONTCONFIG])
5858 dnl whether to find & fetch external tarballs?
5859 dnl ===================================================================
5860 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5861    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5862        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5863    else
5864        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5865    fi
5867 if test -z "$TARFILE_LOCATION"; then
5868     if test -d "$SRC_ROOT/src" ; then
5869         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5870         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5871     fi
5872     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5873 else
5874     AbsolutePath "$TARFILE_LOCATION"
5875     PathFormat "${absolute_path}"
5876     TARFILE_LOCATION="${formatted_path}"
5878 AC_SUBST(TARFILE_LOCATION)
5880 AC_MSG_CHECKING([whether we want to fetch tarballs])
5881 if test "$enable_fetch_external" != "no"; then
5882     if test "$with_all_tarballs" = "yes"; then
5883         AC_MSG_RESULT([yes, all of them])
5884         DO_FETCH_TARBALLS="ALL"
5885     else
5886         AC_MSG_RESULT([yes, if we use them])
5887         DO_FETCH_TARBALLS="TRUE"
5888     fi
5889 else
5890     AC_MSG_RESULT([no])
5891     DO_FETCH_TARBALLS=
5893 AC_SUBST(DO_FETCH_TARBALLS)
5895 dnl Test whether to include MySpell dictionaries
5896 dnl ===================================================================
5897 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5898 if test "$with_myspell_dicts" = "yes"; then
5899     AC_MSG_RESULT([yes])
5900     WITH_MYSPELL_DICTS=TRUE
5901     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5902     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5903 else
5904     AC_MSG_RESULT([no])
5905     WITH_MYSPELL_DICTS=
5907 AC_SUBST(WITH_MYSPELL_DICTS)
5909 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5910 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5911     if test "$with_system_dicts" = yes; then
5912         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5913     fi
5914     with_system_dicts=no
5917 AC_MSG_CHECKING([whether to use dicts from external paths])
5918 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5919     AC_MSG_RESULT([yes])
5920     SYSTEM_DICTS=TRUE
5921     AC_MSG_CHECKING([for spelling dictionary directory])
5922     if test -n "$with_external_dict_dir"; then
5923         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5924     else
5925         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5926         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5927             DICT_SYSTEM_DIR=file:///usr/share/myspell
5928         fi
5929     fi
5930     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5931     AC_MSG_CHECKING([for hyphenation patterns directory])
5932     if test -n "$with_external_hyph_dir"; then
5933         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5934     else
5935         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5936     fi
5937     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5938     AC_MSG_CHECKING([for thesaurus directory])
5939     if test -n "$with_external_thes_dir"; then
5940         THES_SYSTEM_DIR=file://$with_external_thes_dir
5941     else
5942         THES_SYSTEM_DIR=file:///usr/share/mythes
5943     fi
5944     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5945 else
5946     AC_MSG_RESULT([no])
5947     SYSTEM_DICTS=
5949 AC_SUBST(SYSTEM_DICTS)
5950 AC_SUBST(DICT_SYSTEM_DIR)
5951 AC_SUBST(HYPH_SYSTEM_DIR)
5952 AC_SUBST(THES_SYSTEM_DIR)
5954 dnl ===================================================================
5955 dnl Precompiled headers.
5956 ENABLE_PCH=""
5957 AC_MSG_CHECKING([whether to enable pch feature])
5958 if test -z "$enable_pch"; then
5959     if test "$_os" = "WINNT"; then
5960         # Enabled by default on Windows.
5961         enable_pch=yes
5962         # never use sccache on auto-enabled PCH builds, except if requested explicitely
5963         if test -z "$enable_ccache" -a "$SCCACHE"; then
5964             CCACHE=""
5965         fi
5966     else
5967         enable_pch=no
5968     fi
5970 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5971     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5973 if test "$enable_pch" = "system"; then
5974     ENABLE_PCH="1"
5975     AC_MSG_RESULT([yes (system headers)])
5976 elif test "$enable_pch" = "base"; then
5977     ENABLE_PCH="2"
5978     AC_MSG_RESULT([yes (system and base headers)])
5979 elif test "$enable_pch" = "normal"; then
5980     ENABLE_PCH="3"
5981     AC_MSG_RESULT([yes (normal)])
5982 elif test "$enable_pch" = "full"; then
5983     ENABLE_PCH="4"
5984     AC_MSG_RESULT([yes (full)])
5985 elif test "$enable_pch" = "yes"; then
5986     # Pick a suitable default.
5987     if test "$GCC" = "yes"; then
5988         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5989         # while making the PCHs larger and rebuilds more likely.
5990         ENABLE_PCH="2"
5991         AC_MSG_RESULT([yes (system and base headers)])
5992     else
5993         # With MSVC the highest level makes a significant difference,
5994         # and it was the default when there used to be no PCH levels.
5995         ENABLE_PCH="4"
5996         AC_MSG_RESULT([yes (full)])
5997     fi
5998 elif test "$enable_pch" = "no"; then
5999     AC_MSG_RESULT([no])
6000 else
6001     AC_MSG_ERROR([Unknown value for --enable-pch])
6003 AC_SUBST(ENABLE_PCH)
6004 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6005 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6006     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6007     if test "$CCACHE_BIN" != "not found"; then
6008         AC_MSG_CHECKING([ccache version])
6009         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6010         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6011         AC_MSG_RESULT([$CCACHE_VERSION])
6012         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6013         if test "$CCACHE_NUMVER" -gt "030701"; then
6014             AC_MSG_RESULT([yes])
6015         else
6016             AC_MSG_RESULT([no (not newer than 3.7.1)])
6017             CCACHE_DEPEND_MODE=
6018         fi
6019     fi
6022 PCH_INSTANTIATE_TEMPLATES=
6023 if test -n "$ENABLE_PCH"; then
6024     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6025     save_CFLAGS=$CFLAGS
6026     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6027     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6028     CFLAGS=$save_CFLAGS
6029     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6030         AC_MSG_RESULT(yes)
6031     else
6032         AC_MSG_RESULT(no)
6033     fi
6035 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6037 BUILDING_PCH_WITH_OBJ=
6038 if test -n "$ENABLE_PCH"; then
6039     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6040     save_CFLAGS=$CFLAGS
6041     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6042     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6043     CFLAGS=$save_CFLAGS
6044     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6045         AC_MSG_RESULT(yes)
6046     else
6047         AC_MSG_RESULT(no)
6048     fi
6050 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6052 PCH_CODEGEN=
6053 PCH_NO_CODEGEN=
6054 fpch_prefix=
6055 if test "$COM" = MSC; then
6056     fpch_prefix="-Xclang "
6058 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6059     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6060     save_CFLAGS=$CFLAGS
6061     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6062     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6063         [
6064         PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
6065         PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
6066         ],[])
6067     CFLAGS=$save_CFLAGS
6068     if test -n "$PCH_CODEGEN"; then
6069         AC_MSG_RESULT(yes)
6070     else
6071         AC_MSG_RESULT(no)
6072     fi
6074 AC_SUBST(PCH_CODEGEN)
6075 AC_SUBST(PCH_NO_CODEGEN)
6076 PCH_DEBUGINFO=
6077 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6078     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6079     save_CFLAGS=$CFLAGS
6080     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6081     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6082     CFLAGS=$save_CFLAGS
6083     if test -n "$PCH_DEBUGINFO"; then
6084         AC_MSG_RESULT(yes)
6085     else
6086         AC_MSG_RESULT(no)
6087     fi
6089 AC_SUBST(PCH_DEBUGINFO)
6091 TAB=`printf '\t'`
6093 AC_MSG_CHECKING([the GNU Make version])
6094 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6095 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6096 if test "$_make_longver" -ge "038200"; then
6097     AC_MSG_RESULT([$GNUMAKE $_make_version])
6099 elif test "$_make_longver" -ge "038100"; then
6100     if test "$build_os" = "cygwin"; then
6101         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6102     fi
6103     AC_MSG_RESULT([$GNUMAKE $_make_version])
6105     dnl ===================================================================
6106     dnl Search all the common names for sha1sum
6107     dnl ===================================================================
6108     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6109     if test -z "$SHA1SUM"; then
6110         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6111     elif test "$SHA1SUM" = "openssl"; then
6112         SHA1SUM="openssl sha1"
6113     fi
6114     AC_MSG_CHECKING([for GNU Make bug 20033])
6115     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6116     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6117 A := \$(wildcard *.a)
6119 .PHONY: all
6120 all: \$(A:.a=.b)
6121 <TAB>@echo survived bug20033.
6123 .PHONY: setup
6124 setup:
6125 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6127 define d1
6128 @echo lala \$(1)
6129 @sleep 1
6130 endef
6132 define d2
6133 @echo tyty \$(1)
6134 @sleep 1
6135 endef
6137 %.b : %.a
6138 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6139 <TAB>\$(call d1,\$(CHECKSUM)),\
6140 <TAB>\$(call d2,\$(CHECKSUM)))
6142     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6143         no_parallelism_make="YES"
6144         AC_MSG_RESULT([yes, disable parallelism])
6145     else
6146         AC_MSG_RESULT([no, keep parallelism enabled])
6147     fi
6148     rm -rf $TESTGMAKEBUG20033
6149 else
6150     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6153 # find if gnumake support file function
6154 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6155 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6156 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6157     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6159 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6160 \$(file >test.txt,Success )
6162 .PHONY: all
6163 all:
6164 <TAB>@cat test.txt
6167 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6168 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6169     HAVE_GNUMAKE_FILE_FUNC=TRUE
6170     AC_MSG_RESULT([yes])
6171 else
6172     AC_MSG_RESULT([no])
6174 rm -rf $TESTGMAKEFILEFUNC
6175 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6177 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6178 STALE_MAKE=
6179 if test "$_make_ver_check" = ""; then
6180    STALE_MAKE=TRUE
6183 HAVE_LD_HASH_STYLE=FALSE
6184 WITH_LINKER_HASH_STYLE=
6185 AC_MSG_CHECKING([for --hash-style gcc linker support])
6186 if test "$GCC" = "yes"; then
6187     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6188         hash_styles="gnu sysv"
6189     elif test "$with_linker_hash_style" = "no"; then
6190         hash_styles=
6191     else
6192         hash_styles="$with_linker_hash_style"
6193     fi
6195     for hash_style in $hash_styles; do
6196         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6197         hash_style_ldflags_save=$LDFLAGS
6198         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6200         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6201             [
6202 #include <stdio.h>
6203             ],[
6204 printf ("");
6205             ])],
6206             [
6207                   HAVE_LD_HASH_STYLE=TRUE
6208                   WITH_LINKER_HASH_STYLE=$hash_style
6209             ],
6210             [HAVE_LD_HASH_STYLE=FALSE],
6211             [HAVE_LD_HASH_STYLE=FALSE])
6212         LDFLAGS=$hash_style_ldflags_save
6213     done
6215     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6216         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6217     else
6218         AC_MSG_RESULT( no )
6219     fi
6220     LDFLAGS=$hash_style_ldflags_save
6221 else
6222     AC_MSG_RESULT( no )
6224 AC_SUBST(HAVE_LD_HASH_STYLE)
6225 AC_SUBST(WITH_LINKER_HASH_STYLE)
6227 dnl ===================================================================
6228 dnl Check whether there's a Perl version available.
6229 dnl ===================================================================
6230 if test -z "$with_perl_home"; then
6231     AC_PATH_PROG(PERL, perl)
6232 else
6233     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6234     _perl_path="$with_perl_home/bin/perl"
6235     if test -x "$_perl_path"; then
6236         PERL=$_perl_path
6237     else
6238         AC_MSG_ERROR([$_perl_path not found])
6239     fi
6242 dnl ===================================================================
6243 dnl Testing for Perl version 5 or greater.
6244 dnl $] is the Perl version variable, it is returned as an integer
6245 dnl ===================================================================
6246 if test "$PERL"; then
6247     AC_MSG_CHECKING([the Perl version])
6248     ${PERL} -e "exit($]);"
6249     _perl_version=$?
6250     if test "$_perl_version" -lt 5; then
6251         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6252     fi
6253     AC_MSG_RESULT([Perl $_perl_version])
6254 else
6255     AC_MSG_ERROR([Perl not found, install Perl 5])
6258 dnl ===================================================================
6259 dnl Testing for required Perl modules
6260 dnl ===================================================================
6262 AC_MSG_CHECKING([for required Perl modules])
6263 perl_use_string="use Cwd ; use Digest::MD5"
6264 if test "$_os" = "WINNT"; then
6265     if test -n "$PKGFORMAT"; then
6266         for i in $PKGFORMAT; do
6267             case "$i" in
6268             msi)
6269                 # for getting fonts versions to use in MSI
6270                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6271                 ;;
6272             esac
6273         done
6274     fi
6276 if test "$with_system_hsqldb" = "yes"; then
6277     perl_use_string="$perl_use_string ; use Archive::Zip"
6279 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6280     # OpenSSL needs that to build
6281     perl_use_string="$perl_use_string ; use FindBin"
6283 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6284     AC_MSG_RESULT([all modules found])
6285 else
6286     AC_MSG_RESULT([failed to find some modules])
6287     # Find out which modules are missing.
6288     for i in $perl_use_string; do
6289         if test "$i" != "use" -a "$i" != ";"; then
6290             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6291                 missing_perl_modules="$missing_perl_modules $i"
6292             fi
6293         fi
6294     done
6295     AC_MSG_ERROR([
6296     The missing Perl modules are: $missing_perl_modules
6297     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6300 dnl ===================================================================
6301 dnl Check for pkg-config
6302 dnl ===================================================================
6303 if test "$_os" != "WINNT"; then
6304     PKG_PROG_PKG_CONFIG
6307 if test "$_os" != "WINNT"; then
6309     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6310     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6311     # explicitly. Or put /path/to/compiler in PATH yourself.
6313     # Use wrappers for LTO
6314     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6315         AC_CHECK_TOOL(AR,gcc-ar)
6316         AC_CHECK_TOOL(NM,gcc-nm)
6317         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6318     else
6319         AC_CHECK_TOOL(AR,ar)
6320         AC_CHECK_TOOL(NM,nm)
6321         AC_CHECK_TOOL(RANLIB,ranlib)
6322     fi
6323     AC_CHECK_TOOL(OBJDUMP,objdump)
6324     AC_CHECK_TOOL(READELF,readelf)
6325     AC_CHECK_TOOL(STRIP,strip)
6327 AC_SUBST(AR)
6328 AC_SUBST(LD)
6329 AC_SUBST(NM)
6330 AC_SUBST(OBJDUMP)
6331 AC_SUBST(PKG_CONFIG)
6332 AC_SUBST(PKG_CONFIG_PATH)
6333 AC_SUBST(PKG_CONFIG_LIBDIR)
6334 AC_SUBST(RANLIB)
6335 AC_SUBST(READELF)
6336 AC_SUBST(STRIP)
6338 dnl ===================================================================
6339 dnl pkg-config checks on macOS
6340 dnl ===================================================================
6342 if test $_os = Darwin; then
6343     AC_MSG_CHECKING([for bogus pkg-config])
6344     if test -n "$PKG_CONFIG"; then
6345         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6346             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6347         else
6348             if test "$enable_bogus_pkg_config" = "yes"; then
6349                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6350             else
6351                 AC_MSG_ERROR([yes, from unknown origin. This *will* break the build. Please modify your PATH variable so that $PKG_CONFIG is no longer found by configure scripts.])
6352             fi
6353         fi
6354     else
6355         AC_MSG_RESULT([no, good])
6356     fi
6359 find_csc()
6361     # Return value: $csctest
6363     unset csctest
6365     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6366     if test -n "$regvalue"; then
6367         csctest=$regvalue
6368         return
6369     fi
6372 find_al()
6374     # Return value: $altest
6376     unset altest
6378     # We need this check to detect 4.6.1 or above.
6379     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6380         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6381         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6382             altest=$regvalue
6383             return
6384         fi
6385     done
6387     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6388         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6389         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6390             altest=$regvalue
6391             return
6392         fi
6393     done
6396 find_dotnetsdk46()
6398     unset frametest
6400     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6401         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6402         if test -n "$regvalue"; then
6403             frametest=$regvalue
6404             return
6405         fi
6406     done
6409 find_winsdk_version()
6411     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6412     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6414     unset winsdktest winsdkbinsubdir winsdklibsubdir
6416     case "$1" in
6417     8.0|8.0A)
6418         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6419         if test -n "$regvalue"; then
6420             winsdktest=$regvalue
6421             winsdklibsubdir=win8
6422             return
6423         fi
6424         ;;
6425     8.1|8.1A)
6426         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6427         if test -n "$regvalue"; then
6428             winsdktest=$regvalue
6429             winsdklibsubdir=winv6.3
6430             return
6431         fi
6432         ;;
6433     10.0)
6434         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6435         if test -n "$regvalue"; then
6436             winsdktest=$regvalue
6437             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6438             if test -n "$regvalue"; then
6439                 winsdkbinsubdir="$regvalue".0
6440                 winsdklibsubdir=$winsdkbinsubdir
6441                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6442                 local tmppath_unix=$(cygpath -u "$tmppath")
6443                 # test exist the SDK path
6444                 if test -d "$tmppath_unix"; then
6445                    # when path is convertible to a short path then path is okay
6446                    cygpath -d "$tmppath" >/dev/null 2>&1
6447                    if test $? -ne 0; then
6448                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6449                    fi
6450                 else
6451                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6452                 fi
6453             fi
6454             return
6455         fi
6456         ;;
6457     esac
6460 find_winsdk()
6462     # Return value: From find_winsdk_version
6464     unset winsdktest
6466     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6467         find_winsdk_version $ver
6468         if test -n "$winsdktest"; then
6469             return
6470         fi
6471     done
6474 find_msms()
6476     # Return value: $msmdir
6478     AC_MSG_CHECKING([for MSVC merge modules directory])
6479     local my_msm_files
6480     local my_msm_dir
6482     dnl Order my_msm_files in increasing order. Then check the directories returned
6483     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6484     dnl the result will be the highest MSM version found in the highest directory.
6486     case "$VCVER" in
6487         16.0 | 17.0)
6488         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6489         ;;
6490     esac
6491     for f in $my_msm_files; do
6492         echo "$as_me:$LINENO: searching for $f" >&5
6493     done
6495     msmdir=
6496     case "$VCVER" in
6497     16.0 | 17.0)
6498         for f in ${my_msm_files}; do
6499             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6500                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6501                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6502                 if test -e "$my_msm_dir${f}"; then
6503                     msmdir=$my_msm_dir
6504                 fi
6505             done
6506         done
6507         ;;
6508     esac
6510     if test -n "$msmdir"; then
6511         msmdir=`cygpath -m "$msmdir"`
6512         AC_MSG_RESULT([$msmdir])
6513     else
6514         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6515             AC_MSG_FAILURE([not found])
6516         else
6517             AC_MSG_WARN([not found (check config.log)])
6518             add_warning "MSM none of ${my_msm_files} found"
6519         fi
6520     fi
6523 find_msvc_x64_dlls()
6525     # Return value: $msvcdllpath, $msvcdlls
6527     AC_MSG_CHECKING([for MSVC x64 DLL path])
6529     dnl Order crtver in increasing order. Then check the directories returned by
6530     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6531     dnl the result will be the highest CRT version found in the highest directory.
6533     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6534     case "$VCVER" in
6535     16.0 | 17.0)
6536         for crtver in 141 142 143; do
6537             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6538                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6539                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6540                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6541                 fi
6542             done
6543         done
6544         ;;
6545     esac
6546     AC_MSG_RESULT([$msvcdllpath])
6547     AC_MSG_CHECKING([for MSVC x64 DLLs])
6548     msvcdlls="msvcp140.dll vcruntime140.dll"
6549     for dll in $msvcdlls; do
6550         if ! test -f "$msvcdllpath/$dll"; then
6551             AC_MSG_FAILURE([missing $dll])
6552         fi
6553     done
6554     AC_MSG_RESULT([found all ($msvcdlls)])
6557 dnl =========================================
6558 dnl Check for the Windows  SDK.
6559 dnl =========================================
6560 if test "$_os" = "WINNT"; then
6561     AC_MSG_CHECKING([for Windows SDK])
6562     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6563         find_winsdk
6564         WINDOWS_SDK_HOME=$winsdktest
6566         # normalize if found
6567         if test -n "$WINDOWS_SDK_HOME"; then
6568             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6569             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6570         fi
6572         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6573     fi
6575     if test -n "$WINDOWS_SDK_HOME"; then
6576         # Remove a possible trailing backslash
6577         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6579         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6580              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6581              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6582             have_windows_sdk_headers=yes
6583         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6584              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6585              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6586             have_windows_sdk_headers=yes
6587         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6588              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6589              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6590             have_windows_sdk_headers=yes
6591         else
6592             have_windows_sdk_headers=no
6593         fi
6595         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6596             have_windows_sdk_libs=yes
6597         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6598             have_windows_sdk_libs=yes
6599         else
6600             have_windows_sdk_libs=no
6601         fi
6603         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6604             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6605 the  Windows SDK are installed.])
6606         fi
6607     fi
6609     if test -z "$WINDOWS_SDK_HOME"; then
6610         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6611     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6612         WINDOWS_SDK_VERSION=80
6613         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6614     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6615         WINDOWS_SDK_VERSION=81
6616         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6617     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6618         WINDOWS_SDK_VERSION=10
6619         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6620     else
6621         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6622     fi
6623     PathFormat "$WINDOWS_SDK_HOME"
6624     WINDOWS_SDK_HOME="$formatted_path"
6625     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6626     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6627         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6628         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6629             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6630         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6631             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6632         fi
6633     fi
6635     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6636     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6637     dnl but not in v8.0), so allow this to be overridden with a
6638     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6639     dnl and configuration error if no WiLangId.vbs is found would arguably be
6640     dnl better, but I do not know under which conditions exactly it is needed by
6641     dnl msiglobal.pm:
6642     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6643         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6644         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6645         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6646             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6647             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6648         fi
6649         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6650             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6651             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6652         fi
6653         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6654             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6655             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6656         fi
6657     fi
6658     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6659         if test -n "$with_package_format" -a "$with_package_format" != no; then
6660             for i in "$with_package_format"; do
6661                 if test "$i" = "msi"; then
6662                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6663                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6664                     fi
6665                 fi
6666             done
6667         fi
6668     fi
6670 AC_SUBST(WINDOWS_SDK_HOME)
6671 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6672 AC_SUBST(WINDOWS_SDK_VERSION)
6673 AC_SUBST(WINDOWS_SDK_WILANGID)
6675 if test "$build_os" = "cygwin"; then
6676     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6677     dnl dir, it also determines that dir's path w/o an arch segment if any,
6678     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6679     AC_MSG_CHECKING([for midl.exe])
6681     find_winsdk
6682     if test -n "$winsdkbinsubdir" \
6683         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6684     then
6685         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6686         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6687     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6688         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6689         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6690     elif test -f "$winsdktest/Bin/midl.exe"; then
6691         MIDL_PATH=$winsdktest/Bin
6692         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6693     fi
6694     if test ! -f "$MIDL_PATH/midl.exe"; then
6695         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6696     else
6697         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6698     fi
6700     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6701     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6703     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6704          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6705          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6706          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6707     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6708          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6709          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6710          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6711     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6712          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6713          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6714          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6715     else
6716         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6717     fi
6719     dnl Check csc.exe
6720     AC_MSG_CHECKING([for csc.exe])
6721     find_csc
6722     if test -f "$csctest/csc.exe"; then
6723         CSC_PATH="$csctest"
6724     fi
6725     if test ! -f "$CSC_PATH/csc.exe"; then
6726         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6727     else
6728         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6729     fi
6731     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6733     dnl Check al.exe
6734     AC_MSG_CHECKING([for al.exe])
6735     find_winsdk
6736     if test -n "$winsdkbinsubdir" \
6737         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6738     then
6739         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6740     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6741         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6742     elif test -f "$winsdktest/Bin/al.exe"; then
6743         AL_PATH="$winsdktest/Bin"
6744     fi
6746     if test -z "$AL_PATH"; then
6747         find_al
6748         if test -f "$altest/bin/al.exe"; then
6749             AL_PATH="$altest/bin"
6750         elif test -f "$altest/al.exe"; then
6751             AL_PATH="$altest"
6752         fi
6753     fi
6754     if test ! -f "$AL_PATH/al.exe"; then
6755         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6756     else
6757         AC_MSG_RESULT([$AL_PATH/al.exe])
6758     fi
6760     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6762     dnl Check mscoree.lib / .NET Framework dir
6763     AC_MSG_CHECKING(.NET Framework)
6764     find_dotnetsdk46
6765     PathFormat "$frametest"
6766     frametest="$formatted_path"
6767     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6768         DOTNET_FRAMEWORK_HOME="$frametest"
6769     else
6770         find_winsdk
6771         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6772             DOTNET_FRAMEWORK_HOME="$winsdktest"
6773         fi
6774     fi
6775     if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6776         AC_MSG_ERROR([mscoree.lib not found])
6777     fi
6778     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6780     PathFormat "$MIDL_PATH"
6781     MIDL_PATH="$formatted_path"
6783     PathFormat "$AL_PATH"
6784     AL_PATH="$formatted_path"
6786     PathFormat "$DOTNET_FRAMEWORK_HOME"
6787     DOTNET_FRAMEWORK_HOME="$formatted_path"
6789     PathFormat "$CSC_PATH"
6790     CSC_PATH="$formatted_path"
6793 dnl ===================================================================
6794 dnl Testing for C++ compiler and version...
6795 dnl ===================================================================
6797 if test "$_os" != "WINNT"; then
6798     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6799     save_CXXFLAGS=$CXXFLAGS
6800     AC_PROG_CXX
6801     CXXFLAGS=$save_CXXFLAGS
6802     if test -z "$CXX_BASE"; then
6803         CXX_BASE=`first_arg_basename "$CXX"`
6804     fi
6807 dnl check for GNU C++ compiler version
6808 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6809     AC_MSG_CHECKING([the GNU C++ compiler version])
6811     _gpp_version=`$CXX -dumpversion`
6812     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6814     if test "$_gpp_majmin" -lt "700"; then
6815         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6816     else
6817         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6818     fi
6820     dnl see https://code.google.com/p/android/issues/detail?id=41770
6821         glibcxx_threads=no
6822         AC_LANG_PUSH([C++])
6823         AC_REQUIRE_CPP
6824         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6825         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6826             #include <bits/c++config.h>]],[[
6827             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6828             && !defined(_GLIBCXX__PTHREADS) \
6829             && !defined(_GLIBCXX_HAS_GTHREADS)
6830             choke me
6831             #endif
6832         ]])],[AC_MSG_RESULT([yes])
6833         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6834         AC_LANG_POP([C++])
6835         if test $glibcxx_threads = yes; then
6836             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6837         fi
6839 AC_SUBST(BOOST_CXXFLAGS)
6842 # prefx CXX with ccache if needed
6844 if test "$CCACHE" != ""; then
6845     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6846     AC_LANG_PUSH([C++])
6847     save_CXXFLAGS=$CXXFLAGS
6848     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6849     # msvc does not fail on unknown options, check stdout
6850     if test "$COM" = MSC; then
6851         CXXFLAGS="$CXXFLAGS -nologo"
6852     fi
6853     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6854     ac_cxx_werror_flag=yes
6855     dnl an empty program will do, we're checking the compiler flags
6856     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6857                       [use_ccache=yes], [use_ccache=no])
6858     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6859         AC_MSG_RESULT([yes])
6860     else
6861         CXX="$CCACHE $CXX"
6862         CXX_BASE="ccache $CXX_BASE"
6863         AC_MSG_RESULT([no])
6864     fi
6865     CXXFLAGS=$save_CXXFLAGS
6866     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6867     AC_LANG_POP([C++])
6870 dnl ===================================================================
6871 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6872 dnl ===================================================================
6874 if test "$_os" != "WINNT"; then
6875     AC_PROG_CXXCPP
6877     dnl Check whether there's a C pre-processor.
6878     AC_PROG_CPP
6882 dnl ===================================================================
6883 dnl Find integral type sizes and alignments
6884 dnl ===================================================================
6886 if test "$_os" != "WINNT"; then
6888     AC_CHECK_SIZEOF(long)
6889     AC_CHECK_SIZEOF(short)
6890     AC_CHECK_SIZEOF(int)
6891     AC_CHECK_SIZEOF(long long)
6892     AC_CHECK_SIZEOF(double)
6893     AC_CHECK_SIZEOF(void*)
6894     AC_CHECK_SIZEOF(size_t)
6896     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6897     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6898     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6899     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6900     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6901     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6903     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6904     m4_pattern_allow([AC_CHECK_ALIGNOF])
6905     m4_ifdef([AC_CHECK_ALIGNOF],
6906         [
6907             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6908             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6909             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6910             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6911         ],
6912         [
6913             case "$_os-$host_cpu" in
6914             Linux-i686)
6915                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6916                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6917                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6918                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6919                 ;;
6920             Linux-x86_64)
6921                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6922                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6923                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6924                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6925                 ;;
6926             *)
6927                 if test -z "$ac_cv_alignof_short" -o \
6928                         -z "$ac_cv_alignof_int" -o \
6929                         -z "$ac_cv_alignof_long" -o \
6930                         -z "$ac_cv_alignof_double"; then
6931                    AC_MSG_ERROR([Your Autoconf doesn't have [AC_][CHECK_ALIGNOF]. You need to set the environment variables ac_cv_alignof_short, ac_cv_alignof_int, ac_cv_alignof_long and ac_cv_alignof_double.])
6932                 fi
6933                 ;;
6934             esac
6935         ])
6937     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6938     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6939     if test $ac_cv_sizeof_long -eq 8; then
6940         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6941     elif test $ac_cv_sizeof_double -eq 8; then
6942         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6943     else
6944         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6945     fi
6947     dnl Check for large file support
6948     AC_SYS_LARGEFILE
6949     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6950         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6951     fi
6952     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6953         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6954     fi
6955 else
6956     # Hardcode for MSVC
6957     SAL_TYPES_SIZEOFSHORT=2
6958     SAL_TYPES_SIZEOFINT=4
6959     SAL_TYPES_SIZEOFLONG=4
6960     SAL_TYPES_SIZEOFLONGLONG=8
6961     if test $WIN_HOST_BITS -eq 32; then
6962         SAL_TYPES_SIZEOFPOINTER=4
6963         SIZEOF_SIZE_T=4
6964     else
6965         SAL_TYPES_SIZEOFPOINTER=8
6966         SIZEOF_SIZE_T=8
6967     fi
6968     SAL_TYPES_ALIGNMENT2=2
6969     SAL_TYPES_ALIGNMENT4=4
6970     SAL_TYPES_ALIGNMENT8=8
6971     LFS_CFLAGS=''
6973 AC_SUBST(LFS_CFLAGS)
6974 AC_SUBST(SIZEOF_SIZE_T)
6976 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6977 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6978 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6979 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6980 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6981 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6982 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6983 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6985 dnl ===================================================================
6986 dnl Check whether to enable runtime optimizations
6987 dnl ===================================================================
6988 ENABLE_RUNTIME_OPTIMIZATIONS=
6989 AC_MSG_CHECKING([whether to enable runtime optimizations])
6990 if test -z "$enable_runtime_optimizations"; then
6991     for i in $CC; do
6992         case $i in
6993         -fsanitize=*)
6994             enable_runtime_optimizations=no
6995             break
6996             ;;
6997         esac
6998     done
7000 if test "$enable_runtime_optimizations" != no; then
7001     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7002     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7003     AC_MSG_RESULT([yes])
7004 else
7005     AC_MSG_RESULT([no])
7007 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7009 dnl ===================================================================
7010 dnl Check if valgrind headers are available
7011 dnl ===================================================================
7012 ENABLE_VALGRIND=
7013 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7014     prev_cppflags=$CPPFLAGS
7015     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7016     # or where does it come from?
7017     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7018     AC_CHECK_HEADER([valgrind/valgrind.h],
7019         [ENABLE_VALGRIND=TRUE])
7020     CPPFLAGS=$prev_cppflags
7022 AC_SUBST([ENABLE_VALGRIND])
7023 if test -z "$ENABLE_VALGRIND"; then
7024     if test "$with_valgrind" = yes; then
7025         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7026     fi
7027     VALGRIND_CFLAGS=
7029 AC_SUBST([VALGRIND_CFLAGS])
7032 dnl ===================================================================
7033 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7034 dnl ===================================================================
7036 # We need at least the sys/sdt.h include header.
7037 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7038 if test "$SDT_H_FOUND" = "TRUE"; then
7039     # Found sys/sdt.h header, now make sure the c++ compiler works.
7040     # Old g++ versions had problems with probes in constructors/destructors.
7041     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7042     AC_LANG_PUSH([C++])
7043     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7044     #include <sys/sdt.h>
7045     class ProbeClass
7046     {
7047     private:
7048       int& ref;
7049       const char *name;
7051     public:
7052       ProbeClass(int& v, const char *n) : ref(v), name(n)
7053       {
7054         DTRACE_PROBE2(_test_, cons, name, ref);
7055       }
7057       void method(int min)
7058       {
7059         DTRACE_PROBE3(_test_, meth, name, ref, min);
7060         ref -= min;
7061       }
7063       ~ProbeClass()
7064       {
7065         DTRACE_PROBE2(_test_, dest, name, ref);
7066       }
7067     };
7068     ]],[[
7069     int i = 64;
7070     DTRACE_PROBE1(_test_, call, i);
7071     ProbeClass inst = ProbeClass(i, "call");
7072     inst.method(24);
7073     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7074           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7075     AC_LANG_POP([C++])
7077 AC_CONFIG_HEADERS([config_host/config_probes.h])
7079 dnl ===================================================================
7080 dnl GCC features
7081 dnl ===================================================================
7082 HAVE_GCC_STACK_CLASH_PROTECTION=
7083 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7084     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7085     save_CFLAGS=$CFLAGS
7086     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7087     AC_LINK_IFELSE(
7088         [AC_LANG_PROGRAM(, [[return 0;]])],
7089         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7090         [AC_MSG_RESULT([no])])
7091     CFLAGS=$save_CFLAGS
7093     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7094     save_CFLAGS=$CFLAGS
7095     CFLAGS="$CFLAGS -Werror -mno-avx"
7096     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7097     CFLAGS=$save_CFLAGS
7098     if test "$HAVE_GCC_AVX" = "TRUE"; then
7099         AC_MSG_RESULT([yes])
7100     else
7101         AC_MSG_RESULT([no])
7102     fi
7104     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7105     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7106     int v = 0;
7107     if (__sync_add_and_fetch(&v, 1) != 1 ||
7108         __sync_sub_and_fetch(&v, 1) != 0)
7109         return 1;
7110     __sync_synchronize();
7111     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7112         v != 1)
7113         return 1;
7114     return 0;
7115 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7116     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7117         AC_MSG_RESULT([yes])
7118         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7119     else
7120         AC_MSG_RESULT([no])
7121     fi
7123     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7124     AC_LANG_PUSH([C++])
7125     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7126             #include <cstddef>
7127             #include <cxxabi.h>
7128             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7129         ])], [
7130             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7131             AC_MSG_RESULT([yes])
7132         ], [AC_MSG_RESULT([no])])
7133     AC_LANG_POP([C++])
7135     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7136     AC_LANG_PUSH([C++])
7137     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7138             #include <cstddef>
7139             #include <cxxabi.h>
7140             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7141         ])], [
7142             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7143             AC_MSG_RESULT([yes])
7144         ], [AC_MSG_RESULT([no])])
7145     AC_LANG_POP([C++])
7147     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7148     AC_LANG_PUSH([C++])
7149     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7150             #include <cxxabi.h>
7151             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7152         ])], [
7153             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7154             AC_MSG_RESULT([yes])
7155         ], [AC_MSG_RESULT([no])])
7156     AC_LANG_POP([C++])
7158     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7159     AC_LANG_PUSH([C++])
7160     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7161             #include <cstddef>
7162             #include <cxxabi.h>
7163             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7164         ])], [
7165             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7166             AC_MSG_RESULT([yes])
7167         ], [AC_MSG_RESULT([no])])
7168     AC_LANG_POP([C++])
7170     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7171     AC_LANG_PUSH([C++])
7172     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7173             #include <cstddef>
7174             #include <cxxabi.h>
7175             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7176         ])], [
7177             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7178             AC_MSG_RESULT([yes])
7179         ], [AC_MSG_RESULT([no])])
7180     AC_LANG_POP([C++])
7182     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7183     AC_LANG_PUSH([C++])
7184     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7185             #include <cxxabi.h>
7186             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7187         ])], [
7188             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7189             AC_MSG_RESULT([yes])
7190         ], [AC_MSG_RESULT([no])])
7191     AC_LANG_POP([C++])
7193     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7194     AC_LANG_PUSH([C++])
7195     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7196             #include <cxxabi.h>
7197             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7198         ])], [
7199             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7200             AC_MSG_RESULT([yes])
7201         ], [AC_MSG_RESULT([no])])
7202     AC_LANG_POP([C++])
7204     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7205     AC_LANG_PUSH([C++])
7206     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7207             #include <cxxabi.h>
7208             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7209         ])], [
7210             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7211             AC_MSG_RESULT([yes])
7212         ], [AC_MSG_RESULT([no])])
7213     AC_LANG_POP([C++])
7215     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7216     AC_LANG_PUSH([C++])
7217     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7218             #include <cstddef>
7219             #include <cxxabi.h>
7220             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7221         ])], [
7222             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7223             AC_MSG_RESULT([yes])
7224         ], [AC_MSG_RESULT([no])])
7225     AC_LANG_POP([C++])
7227     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7228     AC_LANG_PUSH([C++])
7229     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7230             #include <cstddef>
7231             #include <cxxabi.h>
7232             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7233         ])], [
7234             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7235             AC_MSG_RESULT([yes])
7236         ], [AC_MSG_RESULT([no])])
7237     AC_LANG_POP([C++])
7240 AC_SUBST(HAVE_GCC_AVX)
7241 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7242 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7244 dnl ===================================================================
7245 dnl Identify the C++ library
7246 dnl ===================================================================
7248 AC_MSG_CHECKING([what the C++ library is])
7249 HAVE_LIBSTDCPP=
7250 AC_LANG_PUSH([C++])
7251 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7252 #include <utility>
7253 #ifndef __GLIBCXX__
7254 foo bar
7255 #endif
7256 ]])],
7257     [CPP_LIBRARY=GLIBCXX
7258      cpp_library_name="GNU libstdc++"
7259      HAVE_LIBSTDCPP=TRUE
7260     ],
7261     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7262 #include <utility>
7263 #ifndef _LIBCPP_VERSION
7264 foo bar
7265 #endif
7266 ]])],
7267     [CPP_LIBRARY=LIBCPP
7268      cpp_library_name="LLVM libc++"
7269      AC_DEFINE([HAVE_LIBCXX])
7270     ],
7271     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7272 #include <utility>
7273 #ifndef _MSC_VER
7274 foo bar
7275 #endif
7276 ]])],
7277     [CPP_LIBRARY=MSVCRT
7278      cpp_library_name="Microsoft"
7279     ],
7280     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7281 AC_MSG_RESULT([$cpp_library_name])
7282 AC_LANG_POP([C++])
7283 AC_SUBST([HAVE_LIBSTDCPP])
7285 dnl ===================================================================
7286 dnl Check for gperf
7287 dnl ===================================================================
7288 AC_PATH_PROG(GPERF, gperf)
7289 if test -z "$GPERF"; then
7290     AC_MSG_ERROR([gperf not found but needed. Install it.])
7292 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7293     GPERF=`cygpath -m $GPERF`
7295 AC_MSG_CHECKING([whether gperf is new enough])
7296 my_gperf_ver1=$($GPERF --version | head -n 1)
7297 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7298 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7299 if test "$my_gperf_ver3" -ge 301; then
7300     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7301 else
7302     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7304 AC_SUBST(GPERF)
7306 dnl ===================================================================
7307 dnl Check for system libcmis
7308 dnl ===================================================================
7309 # libcmis requires curl and we can't build curl for iOS
7310 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7311     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7312     ENABLE_LIBCMIS=TRUE
7313 else
7314     ENABLE_LIBCMIS=
7316 AC_SUBST(ENABLE_LIBCMIS)
7318 dnl ===================================================================
7319 dnl C++11
7320 dnl ===================================================================
7322 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7323 CXXFLAGS_CXX11=
7324 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7325     if test "$with_latest_c__" = yes; then
7326         CXXFLAGS_CXX11=-std:c++latest
7327     else
7328         CXXFLAGS_CXX11=-std:c++17
7329     fi
7330     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7331 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7332     my_flags='-std=c++17 -std=c++1z'
7333     if test "$with_latest_c__" = yes; then
7334         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7335     fi
7336     for flag in $my_flags; do
7337         if test "$COM" = MSC; then
7338             flag="-Xclang $flag"
7339         fi
7340         save_CXXFLAGS=$CXXFLAGS
7341         CXXFLAGS="$CXXFLAGS $flag -Werror"
7342         if test "$SYSTEM_LIBCMIS" = TRUE; then
7343             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7344         fi
7345         AC_LANG_PUSH([C++])
7346         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7347             #include <algorithm>
7348             #include <functional>
7349             #include <vector>
7351             #if defined SYSTEM_LIBCMIS
7352             // See ucb/source/ucp/cmis/auth_provider.hxx:
7353             #if !defined __clang__
7354             #pragma GCC diagnostic push
7355             #pragma GCC diagnostic ignored "-Wdeprecated"
7356             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7357             #endif
7358             #include <libcmis/libcmis.hxx>
7359             #if !defined __clang__
7360             #pragma GCC diagnostic pop
7361             #endif
7362             #endif
7364             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7365                 std::sort(v.begin(), v.end(), fn);
7366             }
7367             ]])],[CXXFLAGS_CXX11=$flag])
7368         AC_LANG_POP([C++])
7369         CXXFLAGS=$save_CXXFLAGS
7370         if test -n "$CXXFLAGS_CXX11"; then
7371             break
7372         fi
7373     done
7375 if test -n "$CXXFLAGS_CXX11"; then
7376     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7377 else
7378     AC_MSG_ERROR(no)
7380 AC_SUBST(CXXFLAGS_CXX11)
7382 if test "$GCC" = "yes"; then
7383     save_CXXFLAGS=$CXXFLAGS
7384     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7385     CHECK_L_ATOMIC
7386     CXXFLAGS=$save_CXXFLAGS
7387     AC_SUBST(ATOMIC_LIB)
7390 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7391 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7392 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7393 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7394 dnl again towards 4.7.2:
7395 if test $CPP_LIBRARY = GLIBCXX; then
7396     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7397     AC_LANG_PUSH([C++])
7398     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7399 #include <list>
7400 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7401     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7402     //   GCC 4.7.0: 20120322
7403     //   GCC 4.7.1: 20120614
7404     // and using a range check is not possible as the mapping between
7405     // __GLIBCXX__ values and GCC versions is not monotonic
7406 /* ok */
7407 #else
7408 abi broken
7409 #endif
7410         ]])], [AC_MSG_RESULT(no, ok)],
7411         [AC_MSG_ERROR(yes)])
7412     AC_LANG_POP([C++])
7415 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7416 save_CXXFLAGS=$CXXFLAGS
7417 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7418 AC_LANG_PUSH([C++])
7420 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7421 #include <stddef.h>
7423 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7425 namespace
7427         struct b
7428         {
7429                 int i;
7430                 int j;
7431         };
7433 ]], [[
7434 struct a
7436         int i;
7437         int j;
7439 a thinga[]={{0,0}, {1,1}};
7440 b thingb[]={{0,0}, {1,1}};
7441 size_t i = sizeof(sal_n_array_size(thinga));
7442 size_t j = sizeof(sal_n_array_size(thingb));
7443 return !(i != 0 && j != 0);
7445     ], [ AC_MSG_RESULT(yes) ],
7446     [ AC_MSG_ERROR(no)])
7447 AC_LANG_POP([C++])
7448 CXXFLAGS=$save_CXXFLAGS
7450 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7451 if test "$GCC" = yes; then
7452     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7453     AC_LANG_PUSH([C++])
7454     save_CXXFLAGS=$CXXFLAGS
7455     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7456     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7457     CXXFLAGS=$save_CXXFLAGS
7458     AC_LANG_POP([C++])
7459     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7460         AC_MSG_RESULT([yes])
7461     else
7462         AC_MSG_RESULT([no])
7463     fi
7465 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7467 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7468 AC_LANG_PUSH([C++])
7469 save_CXXFLAGS=$CXXFLAGS
7470 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7471 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7472         #include <algorithm>
7473         #include <initializer_list>
7474         #include <vector>
7475         template<typename T> class S {
7476         private:
7477             std::vector<T> v_;
7478         public:
7479             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7480         };
7481         constinit S<int> s{3, 2, 1};
7482     ])], [
7483         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7484         AC_MSG_RESULT([yes])
7485     ], [AC_MSG_RESULT([no])])
7486 CXXFLAGS=$save_CXXFLAGS
7487 AC_LANG_POP([C++])
7489 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7490 AC_LANG_PUSH([C++])
7491 save_CXXFLAGS=$CXXFLAGS
7492 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7493 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7494         #include <span>
7495         #include <type_traits>
7496         // Don't check size_type directly, as it was called index_type before P1872R0:
7497         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7498     ])], [
7499         AC_DEFINE([HAVE_CPP_SPAN],[1])
7500         AC_MSG_RESULT([yes])
7501     ], [AC_MSG_RESULT([no])])
7502 CXXFLAGS=$save_CXXFLAGS
7503 AC_LANG_POP([C++])
7505 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7506 AC_LANG_PUSH([C++])
7507 save_CXXFLAGS=$CXXFLAGS
7508 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7509 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7510         struct S1 { S1(S1 &&); };
7511         struct S2: S1 {};
7512         S1 f(S2 s) { return s; }
7513     ])], [
7514         AC_DEFINE([HAVE_P1155R3],[1])
7515         AC_MSG_RESULT([yes])
7516     ], [AC_MSG_RESULT([no])])
7517 CXXFLAGS=$save_CXXFLAGS
7518 AC_LANG_POP([C++])
7520 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7521 HAVE_CXX20_ATOMIC_REF=
7522 AC_LANG_PUSH([C++])
7523 save_CXXFLAGS=$CXXFLAGS
7524 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7525 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7526         #include <atomic>
7527         int x;
7528         std::atomic_ref<int> y(x);
7529     ])], [
7530         HAVE_CXX20_ATOMIC_REF=TRUE
7531         AC_MSG_RESULT([yes])
7532     ], [AC_MSG_RESULT([no])])
7533 CXXFLAGS=$save_CXXFLAGS
7534 AC_LANG_POP([C++])
7535 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7537 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7538 dnl which is included in -Wextra anyway):
7539 HAVE_WDEPRECATED_COPY_DTOR=
7540 if test "$GCC" = yes; then
7541     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7542     AC_LANG_PUSH([C++])
7543     save_CXXFLAGS=$CXXFLAGS
7544     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7545     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7546             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7547             AC_MSG_RESULT([yes])
7548         ], [AC_MSG_RESULT([no])])
7549     CXXFLAGS=$save_CXXFLAGS
7550     AC_LANG_POP([C++])
7552 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7554 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7555 dnl uninitialized warning for code like
7557 dnl   OString f();
7558 dnl   boost::optional<OString> * g(bool b) {
7559 dnl       boost::optional<OString> o;
7560 dnl       if (b) o = f();
7561 dnl       return new boost::optional<OString>(o);
7562 dnl   }
7564 dnl (as is e.g. present, in a slightly more elaborate form, in
7565 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7566 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7567 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7568 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7569     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7570     AC_LANG_PUSH([C++])
7571     save_CXXFLAGS=$CXXFLAGS
7572     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7573     if test "$ENABLE_OPTIMIZED" = TRUE; then
7574         CXXFLAGS="$CXXFLAGS -O2"
7575     else
7576         CXXFLAGS="$CXXFLAGS -O0"
7577     fi
7578     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7579             #include <new>
7580             void f1(int);
7581             struct S1 {
7582                 ~S1() { f1(n); }
7583                 int n = 0;
7584             };
7585             struct S2 {
7586                 S2() {}
7587                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7588                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7589                 void set(S1 s) {
7590                     new (stg) S1(s);
7591                     init = true;
7592                 }
7593                 bool init = false;
7594                 char stg[sizeof (S1)];
7595             } ;
7596             S1 f2();
7597             S2 * f3(bool b) {
7598                 S2 o;
7599                 if (b) o.set(f2());
7600                 return new S2(o);
7601             }
7602         ]])], [AC_MSG_RESULT([no])], [
7603             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7604             AC_MSG_RESULT([yes])
7605         ])
7606     CXXFLAGS=$save_CXXFLAGS
7607     AC_LANG_POP([C++])
7609 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7611 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7612 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7613 dnl hits us e.g. with GCC 10 and --enable-optimized at
7615 dnl   In file included from include/rtl/string.hxx:49,
7616 dnl                    from include/rtl/ustring.hxx:43,
7617 dnl                    from include/osl/file.hxx:35,
7618 dnl                    from include/codemaker/global.hxx:28,
7619 dnl                    from include/codemaker/options.hxx:23,
7620 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7621 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7622 dnl       inlined from â€˜static char* rtl::ToStringHelper<const char [N]>::addData(char*, const char*) [with long unsigned int N = 3]’ at include/rtl/stringconcat.hxx:147:85,
7623 dnl       inlined from â€˜char* rtl::OStringConcat<T1, T2>::addData(char*) const [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/stringconcat.hxx:226:103,
7624 dnl       inlined from â€˜rtl::OStringBuffer& rtl::OStringBuffer::append(rtl::OStringConcat<T1, T2>&&) [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/strbuf.hxx:599:30,
7625 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7626 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7627 dnl      78 |         memcpy( buffer, data, length );
7628 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7629 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7630 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7631     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7632     AC_LANG_PUSH([C++])
7633     save_CXXFLAGS=$CXXFLAGS
7634     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7635     if test "$ENABLE_OPTIMIZED" = TRUE; then
7636         CXXFLAGS="$CXXFLAGS -O2"
7637     else
7638         CXXFLAGS="$CXXFLAGS -O0"
7639     fi
7640     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7641     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7642             void fill(char const * begin, char const * end, char c);
7643             struct q {
7644                 char ids[4];
7645                 char username[6];
7646             };
7647             void test(q & c) {
7648                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7649                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7650             }
7651         ]])], [AC_MSG_RESULT([no])], [
7652             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7653             AC_MSG_RESULT([yes])
7654         ])
7655     CXXFLAGS=$save_CXXFLAGS
7656     AC_LANG_POP([C++])
7658 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7660 HAVE_DLLEXPORTINLINES=
7661 dnl At least for Clang 14 trunk, -Zc:dllexportInlines- would cause lots of unresolved symbols when
7662 dnl linking e.g. Library_cppuhelper, for whatever reason:
7663 if test "$_os" = "WINNT" && test "$COM_IS_CLANG" != TRUE; then
7664     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7665     AC_LANG_PUSH([C++])
7666     save_CXXFLAGS=$CXXFLAGS
7667     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7668     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7669             HAVE_DLLEXPORTINLINES=TRUE
7670             AC_MSG_RESULT([yes])
7671         ], [AC_MSG_RESULT([no])])
7672     CXXFLAGS=$save_CXXFLAGS
7673     AC_LANG_POP([C++])
7675 AC_SUBST([HAVE_DLLEXPORTINLINES])
7677 dnl ===================================================================
7678 dnl CPU Intrinsics support - SSE, AVX
7679 dnl ===================================================================
7681 CXXFLAGS_INTRINSICS_SSE2=
7682 CXXFLAGS_INTRINSICS_SSSE3=
7683 CXXFLAGS_INTRINSICS_SSE41=
7684 CXXFLAGS_INTRINSICS_SSE42=
7685 CXXFLAGS_INTRINSICS_AVX=
7686 CXXFLAGS_INTRINSICS_AVX2=
7687 CXXFLAGS_INTRINSICS_AVX512=
7688 CXXFLAGS_INTRINSICS_AVX512F=
7689 CXXFLAGS_INTRINSICS_F16C=
7690 CXXFLAGS_INTRINSICS_FMA=
7692 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7693     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7694     flag_sse2=-msse2
7695     flag_ssse3=-mssse3
7696     flag_sse41=-msse4.1
7697     flag_sse42=-msse4.2
7698     flag_avx=-mavx
7699     flag_avx2=-mavx2
7700     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7701     flag_avx512f=-mavx512f
7702     flag_f16c=-mf16c
7703     flag_fma=-mfma
7704 else
7705     # With MSVC using -arch is in fact not necessary for being able
7706     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7707     # even if compiled with -arch:AVX, the -arch option really only affects
7708     # instructions generated for C/C++ code.
7709     # So use the matching same (or lower) -arch options, but only in order
7710     # to generate the best matching instructions for the C++ code surrounding
7711     # the intrinsics.
7712     # SSE2 is the default for x86/x64, so no need to specify the option.
7713     flag_sse2=
7714     # No specific options for these, use the next lower.
7715     flag_ssse3="$flag_sse2"
7716     flag_sse41="$flag_sse2"
7717     flag_sse42="$flag_sse2"
7718     flag_avx=-arch:AVX
7719     flag_avx2=-arch:AVX2
7720     flag_avx512=-arch:AVX512
7721     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7722     flag_avx512f=-arch:AVX2
7723     # No MSVC options for these.
7724     flag_f16c="$flag_sse2"
7725     flag_fma="$flag_sse2"
7728 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7729 AC_LANG_PUSH([C++])
7730 save_CXXFLAGS=$CXXFLAGS
7731 CXXFLAGS="$CXXFLAGS $flag_sse2"
7732 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7733     #include <emmintrin.h>
7734     int main () {
7735         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7736         c = _mm_xor_si128 (a, b);
7737         return 0;
7738     }
7739     ])],
7740     [can_compile_sse2=yes],
7741     [can_compile_sse2=no])
7742 AC_LANG_POP([C++])
7743 CXXFLAGS=$save_CXXFLAGS
7744 AC_MSG_RESULT([${can_compile_sse2}])
7745 if test "${can_compile_sse2}" = "yes" ; then
7746     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7749 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7750 AC_LANG_PUSH([C++])
7751 save_CXXFLAGS=$CXXFLAGS
7752 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7753 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7754     #include <tmmintrin.h>
7755     int main () {
7756         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7757         c = _mm_maddubs_epi16 (a, b);
7758         return 0;
7759     }
7760     ])],
7761     [can_compile_ssse3=yes],
7762     [can_compile_ssse3=no])
7763 AC_LANG_POP([C++])
7764 CXXFLAGS=$save_CXXFLAGS
7765 AC_MSG_RESULT([${can_compile_ssse3}])
7766 if test "${can_compile_ssse3}" = "yes" ; then
7767     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7770 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7771 AC_LANG_PUSH([C++])
7772 save_CXXFLAGS=$CXXFLAGS
7773 CXXFLAGS="$CXXFLAGS $flag_sse41"
7774 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7775     #include <smmintrin.h>
7776     int main () {
7777         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7778         c = _mm_cmpeq_epi64 (a, b);
7779         return 0;
7780     }
7781     ])],
7782     [can_compile_sse41=yes],
7783     [can_compile_sse41=no])
7784 AC_LANG_POP([C++])
7785 CXXFLAGS=$save_CXXFLAGS
7786 AC_MSG_RESULT([${can_compile_sse41}])
7787 if test "${can_compile_sse41}" = "yes" ; then
7788     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7791 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7792 AC_LANG_PUSH([C++])
7793 save_CXXFLAGS=$CXXFLAGS
7794 CXXFLAGS="$CXXFLAGS $flag_sse42"
7795 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7796     #include <nmmintrin.h>
7797     int main () {
7798         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7799         c = _mm_cmpgt_epi64 (a, b);
7800         return 0;
7801     }
7802     ])],
7803     [can_compile_sse42=yes],
7804     [can_compile_sse42=no])
7805 AC_LANG_POP([C++])
7806 CXXFLAGS=$save_CXXFLAGS
7807 AC_MSG_RESULT([${can_compile_sse42}])
7808 if test "${can_compile_sse42}" = "yes" ; then
7809     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7812 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7813 AC_LANG_PUSH([C++])
7814 save_CXXFLAGS=$CXXFLAGS
7815 CXXFLAGS="$CXXFLAGS $flag_avx"
7816 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7817     #include <immintrin.h>
7818     int main () {
7819         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7820         c = _mm256_xor_ps(a, b);
7821         return 0;
7822     }
7823     ])],
7824     [can_compile_avx=yes],
7825     [can_compile_avx=no])
7826 AC_LANG_POP([C++])
7827 CXXFLAGS=$save_CXXFLAGS
7828 AC_MSG_RESULT([${can_compile_avx}])
7829 if test "${can_compile_avx}" = "yes" ; then
7830     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7833 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7834 AC_LANG_PUSH([C++])
7835 save_CXXFLAGS=$CXXFLAGS
7836 CXXFLAGS="$CXXFLAGS $flag_avx2"
7837 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7838     #include <immintrin.h>
7839     int main () {
7840         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7841         c = _mm256_maddubs_epi16(a, b);
7842         return 0;
7843     }
7844     ])],
7845     [can_compile_avx2=yes],
7846     [can_compile_avx2=no])
7847 AC_LANG_POP([C++])
7848 CXXFLAGS=$save_CXXFLAGS
7849 AC_MSG_RESULT([${can_compile_avx2}])
7850 if test "${can_compile_avx2}" = "yes" ; then
7851     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7854 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7855 AC_LANG_PUSH([C++])
7856 save_CXXFLAGS=$CXXFLAGS
7857 CXXFLAGS="$CXXFLAGS $flag_avx512"
7858 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7859     #include <immintrin.h>
7860     int main () {
7861         __m512i a = _mm512_loadu_si512(0);
7862         __m512d v1 = _mm512_load_pd(0);
7863         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7864         __m512d v2 = _mm512_abs_pd(v1);
7865         return 0;
7866     }
7867     ])],
7868     [can_compile_avx512=yes],
7869     [can_compile_avx512=no])
7870 AC_LANG_POP([C++])
7871 CXXFLAGS=$save_CXXFLAGS
7872 AC_MSG_RESULT([${can_compile_avx512}])
7873 if test "${can_compile_avx512}" = "yes" ; then
7874     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7875     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7878 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7879 AC_LANG_PUSH([C++])
7880 save_CXXFLAGS=$CXXFLAGS
7881 CXXFLAGS="$CXXFLAGS $flag_f16c"
7882 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7883     #include <immintrin.h>
7884     int main () {
7885         __m128i a = _mm_set1_epi32 (0);
7886         __m128 c;
7887         c = _mm_cvtph_ps(a);
7888         return 0;
7889     }
7890     ])],
7891     [can_compile_f16c=yes],
7892     [can_compile_f16c=no])
7893 AC_LANG_POP([C++])
7894 CXXFLAGS=$save_CXXFLAGS
7895 AC_MSG_RESULT([${can_compile_f16c}])
7896 if test "${can_compile_f16c}" = "yes" ; then
7897     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7900 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7901 AC_LANG_PUSH([C++])
7902 save_CXXFLAGS=$CXXFLAGS
7903 CXXFLAGS="$CXXFLAGS $flag_fma"
7904 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7905     #include <immintrin.h>
7906     int main () {
7907         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7908         d = _mm256_fmadd_ps(a, b, c);
7909         return 0;
7910     }
7911     ])],
7912     [can_compile_fma=yes],
7913     [can_compile_fma=no])
7914 AC_LANG_POP([C++])
7915 CXXFLAGS=$save_CXXFLAGS
7916 AC_MSG_RESULT([${can_compile_fma}])
7917 if test "${can_compile_fma}" = "yes" ; then
7918     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7921 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7922 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7923 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7924 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7925 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7926 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7927 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7928 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7929 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7930 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7932 dnl ===================================================================
7933 dnl system stl sanity tests
7934 dnl ===================================================================
7935 if test "$_os" != "WINNT"; then
7937     AC_LANG_PUSH([C++])
7939     save_CPPFLAGS="$CPPFLAGS"
7940     if test -n "$MACOSX_SDK_PATH"; then
7941         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7942     fi
7944     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7945     # only.
7946     if test "$CPP_LIBRARY" = GLIBCXX; then
7947         dnl gcc#19664, gcc#22482, rhbz#162935
7948         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7949         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7950         AC_MSG_RESULT([$stlvisok])
7951         if test "$stlvisok" = "no"; then
7952             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7953         fi
7954     fi
7956     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7957     # when we don't make any dynamic libraries?
7958     if test "$DISABLE_DYNLOADING" = ""; then
7959         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7960         cat > conftestlib1.cc <<_ACEOF
7961 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7962 struct S2: S1<int> { virtual ~S2(); };
7963 S2::~S2() {}
7964 _ACEOF
7965         cat > conftestlib2.cc <<_ACEOF
7966 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7967 struct S2: S1<int> { virtual ~S2(); };
7968 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7969 _ACEOF
7970         gccvisinlineshiddenok=yes
7971         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7972             gccvisinlineshiddenok=no
7973         else
7974             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7975             dnl known to not work with -z defs (unsetting which makes the test
7976             dnl moot, though):
7977             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7978             if test "$COM_IS_CLANG" = TRUE; then
7979                 for i in $CXX $CXXFLAGS; do
7980                     case $i in
7981                     -fsanitize=*)
7982                         my_linkflagsnoundefs=
7983                         break
7984                         ;;
7985                     esac
7986                 done
7987             fi
7988             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7989                 gccvisinlineshiddenok=no
7990             fi
7991         fi
7993         rm -fr libconftest*
7994         AC_MSG_RESULT([$gccvisinlineshiddenok])
7995         if test "$gccvisinlineshiddenok" = "no"; then
7996             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7997         fi
7998     fi
8000    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8001     cat >visibility.cxx <<_ACEOF
8002 #pragma GCC visibility push(hidden)
8003 struct __attribute__ ((visibility ("default"))) TestStruct {
8004   static void Init();
8006 __attribute__ ((visibility ("default"))) void TestFunc() {
8007   TestStruct::Init();
8009 _ACEOF
8010     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8011         gccvisbroken=yes
8012     else
8013         case "$host_cpu" in
8014         i?86|x86_64)
8015             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8016                 gccvisbroken=no
8017             else
8018                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8019                     gccvisbroken=no
8020                 else
8021                     gccvisbroken=yes
8022                 fi
8023             fi
8024             ;;
8025         *)
8026             gccvisbroken=no
8027             ;;
8028         esac
8029     fi
8030     rm -f visibility.s visibility.cxx
8032     AC_MSG_RESULT([$gccvisbroken])
8033     if test "$gccvisbroken" = "yes"; then
8034         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8035     fi
8037     CPPFLAGS="$save_CPPFLAGS"
8039     AC_MSG_CHECKING([if CET endbranch is recognized])
8040 cat > endbr.s <<_ACEOF
8041 endbr32
8042 _ACEOF
8043     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8044     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8045         AC_MSG_RESULT([yes])
8046         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8047     else
8048         AC_MSG_RESULT([no])
8049     fi
8050     rm -f endbr.s endbr.o
8051     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8053     AC_LANG_POP([C++])
8056 dnl ===================================================================
8057 dnl  Clang++ tests
8058 dnl ===================================================================
8060 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8061 if test "$GCC" = "yes"; then
8062     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8063     AC_LANG_PUSH([C++])
8064     save_CXXFLAGS=$CXXFLAGS
8065     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8066     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8067     CXXFLAGS=$save_CXXFLAGS
8068     AC_LANG_POP([C++])
8069     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8070         AC_MSG_RESULT([yes])
8071     else
8072         AC_MSG_RESULT([no])
8073     fi
8075 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8077 dnl ===================================================================
8078 dnl Compiler plugins
8079 dnl ===================================================================
8081 COMPILER_PLUGINS=
8082 # currently only Clang
8084 if test "$COM_IS_CLANG" != "TRUE"; then
8085     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8086         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8087         enable_compiler_plugins=no
8088     fi
8091 COMPILER_PLUGINS_COM_IS_CLANG=
8092 if test "$COM_IS_CLANG" = "TRUE"; then
8093     if test -n "$enable_compiler_plugins"; then
8094         compiler_plugins="$enable_compiler_plugins"
8095     elif test -n "$ENABLE_DBGUTIL"; then
8096         compiler_plugins=test
8097     else
8098         compiler_plugins=no
8099     fi
8100     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8101         if test "$CLANGVER" -lt 50002; then
8102             if test "$compiler_plugins" = yes; then
8103                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8104             else
8105                 compiler_plugins=no
8106             fi
8107         fi
8108     fi
8109     if test "$compiler_plugins" != "no"; then
8110         dnl The prefix where Clang resides, override to where Clang resides if
8111         dnl using a source build:
8112         if test -z "$CLANGDIR"; then
8113             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8114         fi
8115         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8116         if test -z "$COMPILER_PLUGINS_CXX"; then
8117             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8118         fi
8119         clangbindir=$CLANGDIR/bin
8120         if test "$build_os" = "cygwin"; then
8121             clangbindir=$(cygpath -u "$clangbindir")
8122         fi
8123         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8124         if test -n "$LLVM_CONFIG"; then
8125             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8126             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8127             if test -z "$CLANGLIBDIR"; then
8128                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8129             fi
8130             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8131             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8132             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8133             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8134                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8135             fi
8136             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8137             clangobjdir=$($LLVM_CONFIG --obj-root)
8138             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8139                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8140             fi
8141         fi
8142         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8143         AC_LANG_PUSH([C++])
8144         save_CXX=$CXX
8145         save_CXXCPP=$CXXCPP
8146         save_CPPFLAGS=$CPPFLAGS
8147         save_CXXFLAGS=$CXXFLAGS
8148         save_LDFLAGS=$LDFLAGS
8149         save_LIBS=$LIBS
8150         CXX=$COMPILER_PLUGINS_CXX
8151         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8152         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8153         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8154         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8155             [COMPILER_PLUGINS=TRUE],
8156             [
8157             if test "$compiler_plugins" = "yes"; then
8158                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8159             else
8160                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8161                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8162             fi
8163             ])
8164         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8165         dnl comment in compilerplugins/Makefile-clang.mk:
8166         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8167             LDFLAGS=""
8168             AC_MSG_CHECKING([for clang libraries to use])
8169             if test -z "$CLANGTOOLLIBS"; then
8170                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8171  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8172                 AC_LINK_IFELSE([
8173                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8174                         [[ clang::FullSourceLoc().dump(); ]])
8175                 ],[CLANGTOOLLIBS="$LIBS"],[])
8176             fi
8177             if test -z "$CLANGTOOLLIBS"; then
8178                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8179                 AC_LINK_IFELSE([
8180                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8181                         [[ clang::FullSourceLoc().dump(); ]])
8182                 ],[CLANGTOOLLIBS="$LIBS"],[])
8183             fi
8184             AC_MSG_RESULT([$CLANGTOOLLIBS])
8185             if test -z "$CLANGTOOLLIBS"; then
8186                 if test "$compiler_plugins" = "yes"; then
8187                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8188                 else
8189                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8190                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8191                 fi
8192                 COMPILER_PLUGINS=
8193             fi
8194             if test -n "$COMPILER_PLUGINS"; then
8195                 if test -z "$CLANGSYSINCLUDE"; then
8196                     if test -n "$LLVM_CONFIG"; then
8197                         # Path to the clang system headers (no idea if there's a better way to get it).
8198                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8199                     fi
8200                 fi
8201             fi
8202         fi
8203         CXX=$save_CXX
8204         CXXCPP=$save_CXXCPP
8205         CPPFLAGS=$save_CPPFLAGS
8206         CXXFLAGS=$save_CXXFLAGS
8207         LDFLAGS=$save_LDFLAGS
8208         LIBS="$save_LIBS"
8209         AC_LANG_POP([C++])
8211         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8212         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8213             #ifndef __clang__
8214             you lose
8215             #endif
8216             int foo=42;
8217             ]])],
8218             [AC_MSG_RESULT([yes])
8219              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8220             [AC_MSG_RESULT([no])])
8221         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8222     fi
8223 else
8224     if test "$enable_compiler_plugins" = "yes"; then
8225         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8226     fi
8228 COMPILER_PLUGINS_ANALYZER_PCH=
8229 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8230     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8232 AC_SUBST(COMPILER_PLUGINS)
8233 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8234 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8235 AC_SUBST(COMPILER_PLUGINS_CXX)
8236 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8237 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8238 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8239 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8240 AC_SUBST(CLANGDIR)
8241 AC_SUBST(CLANGLIBDIR)
8242 AC_SUBST(CLANGTOOLLIBS)
8243 AC_SUBST(CLANGSYSINCLUDE)
8245 # Plugin to help linker.
8246 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8247 # This makes --enable-lto build with clang work.
8248 AC_SUBST(LD_PLUGIN)
8250 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8251 AC_SUBST(HAVE_POSIX_FALLOCATE)
8253 JITC_PROCESSOR_TYPE=""
8254 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8255     # IBMs JDK needs this...
8256     JITC_PROCESSOR_TYPE=6
8257     export JITC_PROCESSOR_TYPE
8259 AC_SUBST([JITC_PROCESSOR_TYPE])
8261 # Misc Windows Stuff
8262 AC_ARG_WITH(ucrt-dir,
8263     AS_HELP_STRING([--with-ucrt-dir],
8264         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8265         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8266         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8267             Windows6.1-KB2999226-x64.msu
8268             Windows6.1-KB2999226-x86.msu
8269             Windows8.1-KB2999226-x64.msu
8270             Windows8.1-KB2999226-x86.msu
8271             Windows8-RT-KB2999226-x64.msu
8272             Windows8-RT-KB2999226-x86.msu
8273         A zip archive including those files is available from Microsoft site:
8274         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8277 UCRT_REDISTDIR="$with_ucrt_dir"
8278 if test $_os = "WINNT"; then
8279     find_msvc_x64_dlls
8280     for i in $PKGFORMAT; do
8281         if test "$i" = msi; then
8282             find_msms
8283             break
8284         fi
8285     done
8286     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8287     MSVC_DLLS="$msvcdlls"
8288     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8289     # MSVC 15.3 changed it to VC141
8290     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8291         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8292     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8293         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8294     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8295         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8296     else
8297         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8298     fi
8300     if test "$UCRT_REDISTDIR" = "no"; then
8301         dnl explicitly disabled
8302         UCRT_REDISTDIR=""
8303     else
8304         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8305                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8306                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8307                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8308                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8309                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8310             UCRT_REDISTDIR=""
8311             if test -n "$PKGFORMAT"; then
8312                for i in $PKGFORMAT; do
8313                    case "$i" in
8314                    msi)
8315                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8316                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8317                        ;;
8318                    esac
8319                done
8320             fi
8321         fi
8322     fi
8325 AC_SUBST(UCRT_REDISTDIR)
8326 AC_SUBST(MSVC_DLL_PATH)
8327 AC_SUBST(MSVC_DLLS)
8328 AC_SUBST(MSM_PATH)
8331 dnl ===================================================================
8332 dnl Checks for Java
8333 dnl ===================================================================
8334 if test "$ENABLE_JAVA" != ""; then
8336     # Windows-specific tests
8337     if test "$build_os" = "cygwin"; then
8338         if test -z "$with_jdk_home"; then
8339             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8340             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8341             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8342             if test -n "$regvalue"; then
8343                 ver=$regvalue
8344                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8345                 with_jdk_home=$regvalue
8346             fi
8347             howfound="found automatically"
8348         else
8349             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8350             howfound="you passed"
8351         fi
8353         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8354             AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8355         fi
8356     fi
8358     # macOS: /usr/libexec/java_home helps to set the current JDK_HOME. Actually JDK_HOME should NOT be set where java (/usr/bin/java) is located.
8359     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8360     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8361         with_jdk_home=`/usr/libexec/java_home`
8362     fi
8364     JAVA_HOME=; export JAVA_HOME
8365     if test -z "$with_jdk_home"; then
8366         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8367     else
8368         _java_path="$with_jdk_home/bin/$with_java"
8369         dnl Check if there is a Java interpreter at all.
8370         if test -x "$_java_path"; then
8371             JAVAINTERPRETER=$_java_path
8372         else
8373             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8374         fi
8375     fi
8377     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8378     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8379     dnl loaded by java to run JunitTests:
8380     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8381         shortjdkhome=`cygpath -d "$with_jdk_home"`
8382         if test $WIN_HOST_BITS -eq 64 -a -f "$with_jdk_home/bin/java.exe" -a "`$shortjdkhome/bin/java.exe -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8383             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8384             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8385         elif test $WIN_HOST_BITS -eq 32 -a -f "$with_jdk_home/bin/java.exe" -a "`$shortjdkhome/bin/java.exe -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8386             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8387             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8388         fi
8390         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8391             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8392         fi
8393         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8394     elif test "$cross_compiling" != "yes"; then
8395         case $CPUNAME in
8396             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8397                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8398                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8399                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8400                 fi
8401                 ;;
8402             *) # assumption: everything else 32-bit
8403                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8404                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8405                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8406                 fi
8407                 ;;
8408         esac
8409     fi
8412 dnl ===================================================================
8413 dnl Checks for JDK.
8414 dnl ===================================================================
8416 # Whether all the complexity here actually is needed any more or not, no idea.
8418 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8419     _gij_longver=0
8420     AC_MSG_CHECKING([the installed JDK])
8421     if test -n "$JAVAINTERPRETER"; then
8422         dnl java -version sends output to stderr!
8423         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8424             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8425         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8426             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8427         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8428             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8429         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8430             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8431         else
8432             JDK=sun
8434             dnl Sun JDK specific tests
8435             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8436             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8438             if test "$_jdk_ver" -lt 10900; then
8439                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8440             fi
8441             if test "$_jdk_ver" -gt 10900; then
8442                 JAVA_CLASSPATH_NOT_SET=TRUE
8443             fi
8445             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8446             if test "$_os" = "WINNT"; then
8447                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8448             fi
8449             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8451             # set to limit VM usage for JunitTests
8452             JAVAIFLAGS=-Xmx64M
8453             # set to limit VM usage for javac
8454             JAVACFLAGS=-J-Xmx128M
8455         fi
8456     else
8457         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8458     fi
8459 else
8460     if test -z "$ENABLE_JAVA"; then
8461         dnl Java disabled
8462         JAVA_HOME=
8463         export JAVA_HOME
8464     elif test "$cross_compiling" = "yes"; then
8465         # Just assume compatibility of build and host JDK
8466         JDK=$JDK_FOR_BUILD
8467         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8468     fi
8471 dnl ===================================================================
8472 dnl Checks for javac
8473 dnl ===================================================================
8474 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8475     javacompiler="javac"
8476     : ${JAVA_SOURCE_VER=8}
8477     : ${JAVA_TARGET_VER=8}
8478     if test -z "$with_jdk_home"; then
8479         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8480     else
8481         _javac_path="$with_jdk_home/bin/$javacompiler"
8482         dnl Check if there is a Java compiler at all.
8483         if test -x "$_javac_path"; then
8484             JAVACOMPILER=$_javac_path
8485         fi
8486     fi
8487     if test -z "$JAVACOMPILER"; then
8488         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8489     fi
8490     if test "$build_os" = "cygwin"; then
8491         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8492             JAVACOMPILER="${JAVACOMPILER}.exe"
8493         fi
8494         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8495     fi
8498 dnl ===================================================================
8499 dnl Checks for javadoc
8500 dnl ===================================================================
8501 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8502     if test -z "$with_jdk_home"; then
8503         AC_PATH_PROG(JAVADOC, javadoc)
8504     else
8505         _javadoc_path="$with_jdk_home/bin/javadoc"
8506         dnl Check if there is a javadoc at all.
8507         if test -x "$_javadoc_path"; then
8508             JAVADOC=$_javadoc_path
8509         else
8510             AC_PATH_PROG(JAVADOC, javadoc)
8511         fi
8512     fi
8513     if test -z "$JAVADOC"; then
8514         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8515     fi
8516     if test "$build_os" = "cygwin"; then
8517         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8518             JAVADOC="${JAVADOC}.exe"
8519         fi
8520         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8521     fi
8523     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8524     JAVADOCISGJDOC="yes"
8525     fi
8527 AC_SUBST(JAVADOC)
8528 AC_SUBST(JAVADOCISGJDOC)
8530 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8531     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8532     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8533         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8534            # try to recover first by looking whether we have an alternative
8535            # system as in Debian or newer SuSEs where following /usr/bin/javac
8536            # over /etc/alternatives/javac leads to the right bindir where we
8537            # just need to strip a bit away to get a valid JAVA_HOME
8538            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8539         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8540             # maybe only one level of symlink (e.g. on Mac)
8541             JAVA_HOME=$(readlink $JAVACOMPILER)
8542             if test "$(dirname $JAVA_HOME)" = "."; then
8543                 # we've got no path to trim back
8544                 JAVA_HOME=""
8545             fi
8546         else
8547             # else warn
8548             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8549             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8550             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8551             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8552         fi
8553         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8554         if test "$JAVA_HOME" != "/usr"; then
8555             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8556                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8557                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8558                 dnl Tiger already returns a JDK path...
8559                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8560             else
8561                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8562                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8563                 dnl that checks which version to run
8564                 if test -f "$JAVA_HOME"; then
8565                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8566                 fi
8567             fi
8568         fi
8569     fi
8570     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8572     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8573     if test -z "$JAVA_HOME"; then
8574         if test "x$with_jdk_home" = "x"; then
8575             cat > findhome.java <<_ACEOF
8576 [import java.io.File;
8578 class findhome
8580     public static void main(String args[])
8581     {
8582         String jrelocation = System.getProperty("java.home");
8583         File jre = new File(jrelocation);
8584         System.out.println(jre.getParent());
8585     }
8587 _ACEOF
8588             AC_MSG_CHECKING([if javac works])
8589             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8590             AC_TRY_EVAL(javac_cmd)
8591             if test $? = 0 -a -f ./findhome.class; then
8592                 AC_MSG_RESULT([javac works])
8593             else
8594                 echo "configure: javac test failed" >&5
8595                 cat findhome.java >&5
8596                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8597             fi
8598             AC_MSG_CHECKING([if gij knows its java.home])
8599             JAVA_HOME=`$JAVAINTERPRETER findhome`
8600             if test $? = 0 -a "$JAVA_HOME" != ""; then
8601                 AC_MSG_RESULT([$JAVA_HOME])
8602             else
8603                 echo "configure: java test failed" >&5
8604                 cat findhome.java >&5
8605                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8606             fi
8607             # clean-up after ourselves
8608             rm -f ./findhome.java ./findhome.class
8609         else
8610             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8611         fi
8612     fi
8614     # now check if $JAVA_HOME is really valid
8615     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8616         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8617             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8618             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8619             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8620             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8621             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8622             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8623         fi
8624     fi
8625     PathFormat "$JAVA_HOME"
8626     JAVA_HOME="$formatted_path"
8629 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8630     "$_os" != Darwin
8631 then
8632     AC_MSG_CHECKING([for JAWT lib])
8633     if test "$_os" = WINNT; then
8634         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8635         JAWTLIB=jawt.lib
8636     else
8637         case "$host_cpu" in
8638         arm*)
8639             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8640             JAVA_ARCH=$my_java_arch
8641             ;;
8642         i*86)
8643             my_java_arch=i386
8644             ;;
8645         m68k)
8646             my_java_arch=m68k
8647             ;;
8648         powerpc)
8649             my_java_arch=ppc
8650             ;;
8651         powerpc64)
8652             my_java_arch=ppc64
8653             ;;
8654         powerpc64le)
8655             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8656             JAVA_ARCH=$my_java_arch
8657             ;;
8658         sparc64)
8659             my_java_arch=sparcv9
8660             ;;
8661         x86_64)
8662             my_java_arch=amd64
8663             ;;
8664         *)
8665             my_java_arch=$host_cpu
8666             ;;
8667         esac
8668         # This is where JDK9 puts the library
8669         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8670             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8671         else
8672             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8673         fi
8674         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8675     fi
8676     AC_MSG_RESULT([$JAWTLIB])
8678 AC_SUBST(JAWTLIB)
8680 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8681     case "$host_os" in
8683     aix*)
8684         JAVAINC="-I$JAVA_HOME/include"
8685         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8686         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8687         ;;
8689     cygwin*|wsl*)
8690         JAVAINC="-I$JAVA_HOME/include/win32"
8691         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8692         ;;
8694     darwin*|macos*)
8695         if test -d "$JAVA_HOME/include/darwin"; then
8696             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8697         else
8698             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8699         fi
8700         ;;
8702     dragonfly*)
8703         JAVAINC="-I$JAVA_HOME/include"
8704         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8705         ;;
8707     freebsd*)
8708         JAVAINC="-I$JAVA_HOME/include"
8709         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8710         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8711         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8712         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8713         ;;
8715     k*bsd*-gnu*)
8716         JAVAINC="-I$JAVA_HOME/include"
8717         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8718         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8719         ;;
8721     linux-gnu*)
8722         JAVAINC="-I$JAVA_HOME/include"
8723         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8724         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8725         ;;
8727     *netbsd*)
8728         JAVAINC="-I$JAVA_HOME/include"
8729         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8730         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8731        ;;
8733     openbsd*)
8734         JAVAINC="-I$JAVA_HOME/include"
8735         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8736         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8737         ;;
8739     solaris*)
8740         JAVAINC="-I$JAVA_HOME/include"
8741         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8742         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8743         ;;
8744     esac
8746 SOLARINC="$SOLARINC $JAVAINC"
8748 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8749     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8750     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8751     JDK_FOR_BUILD=$JDK
8754 AC_SUBST(JAVACFLAGS)
8755 AC_SUBST(JAVACOMPILER)
8756 AC_SUBST(JAVAINTERPRETER)
8757 AC_SUBST(JAVAIFLAGS)
8758 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8759 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8760 AC_SUBST(JAVA_HOME)
8761 AC_SUBST(JAVA_HOME_FOR_BUILD)
8762 AC_SUBST(JDK)
8763 AC_SUBST(JDK_FOR_BUILD)
8764 AC_SUBST(JAVA_SOURCE_VER)
8765 AC_SUBST(JAVA_TARGET_VER)
8768 dnl ===================================================================
8769 dnl Export file validation
8770 dnl ===================================================================
8771 AC_MSG_CHECKING([whether to enable export file validation])
8772 if test "$with_export_validation" != "no"; then
8773     if test -z "$ENABLE_JAVA"; then
8774         if test "$with_export_validation" = "yes"; then
8775             AC_MSG_ERROR([requested, but Java is disabled])
8776         else
8777             AC_MSG_RESULT([no, as Java is disabled])
8778         fi
8779     elif ! test -d "${SRC_ROOT}/schema"; then
8780         if test "$with_export_validation" = "yes"; then
8781             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8782         else
8783             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8784         fi
8785     else
8786         AC_MSG_RESULT([yes])
8787         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8789         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8790         if test -z "$ODFVALIDATOR"; then
8791             # remember to download the ODF toolkit with validator later
8792             AC_MSG_NOTICE([no odfvalidator found, will download it])
8793             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8794             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8796             # and fetch name of odfvalidator jar name from download.lst
8797             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8798             AC_SUBST(ODFVALIDATOR_JAR)
8800             if test -z "$ODFVALIDATOR_JAR"; then
8801                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8802             fi
8803         fi
8804         if test "$build_os" = "cygwin"; then
8805             # In case of Cygwin it will be executed from Windows,
8806             # so we need to run bash and absolute path to validator
8807             # so instead of "odfvalidator" it will be
8808             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8809             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8810         else
8811             ODFVALIDATOR="sh $ODFVALIDATOR"
8812         fi
8813         AC_SUBST(ODFVALIDATOR)
8816         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8817         if test -z "$OFFICEOTRON"; then
8818             # remember to download the officeotron with validator later
8819             AC_MSG_NOTICE([no officeotron found, will download it])
8820             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8821             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8823             # and fetch name of officeotron jar name from download.lst
8824             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8825             AC_SUBST(OFFICEOTRON_JAR)
8827             if test -z "$OFFICEOTRON_JAR"; then
8828                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8829             fi
8830         else
8831             # check version of existing officeotron
8832             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8833             if test 0"$OFFICEOTRON_VER" -lt 704; then
8834                 AC_MSG_ERROR([officeotron too old])
8835             fi
8836         fi
8837         if test "$build_os" = "cygwin"; then
8838             # In case of Cygwin it will be executed from Windows,
8839             # so we need to run bash and absolute path to validator
8840             # so instead of "odfvalidator" it will be
8841             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8842             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8843         else
8844             OFFICEOTRON="sh $OFFICEOTRON"
8845         fi
8846     fi
8847     AC_SUBST(OFFICEOTRON)
8848 else
8849     AC_MSG_RESULT([no])
8852 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8853 if test "$with_bffvalidator" != "no"; then
8854     AC_DEFINE(HAVE_BFFVALIDATOR)
8856     if test "$with_export_validation" = "no"; then
8857         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8858     fi
8860     if test "$with_bffvalidator" = "yes"; then
8861         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8862     else
8863         BFFVALIDATOR="$with_bffvalidator"
8864     fi
8866     if test "$build_os" = "cygwin"; then
8867         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8868             AC_MSG_RESULT($BFFVALIDATOR)
8869         else
8870             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8871         fi
8872     elif test -n "$BFFVALIDATOR"; then
8873         # We are not in Cygwin but need to run Windows binary with wine
8874         AC_PATH_PROGS(WINE, wine)
8876         # so swap in a shell wrapper that converts paths transparently
8877         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8878         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8879         AC_SUBST(BFFVALIDATOR_EXE)
8880         AC_MSG_RESULT($BFFVALIDATOR)
8881     else
8882         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8883     fi
8884     AC_SUBST(BFFVALIDATOR)
8885 else
8886     AC_MSG_RESULT([no])
8889 dnl ===================================================================
8890 dnl Check for C preprocessor to use
8891 dnl ===================================================================
8892 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8893 SYSTEM_UCPP_IS_GCC=
8894 if test -n "$with_idlc_cpp"; then
8895     AC_MSG_RESULT([$with_idlc_cpp])
8896     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8897     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8898     # ucpp will accept -v (to output version), warn about the others as unknown
8899     # and return 1 (due to -v)
8900     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8901     # and return 0 (due to --version ) if all options are supported
8902     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8903     if test $? -eq 0;  then
8904         SYSTEM_UCPP_IS_GCC=TRUE
8905         AC_MSG_RESULT([yes])
8906     else
8907         AC_MSG_RESULT([no])
8908     fi
8909 else
8910     AC_MSG_RESULT([ucpp])
8911     AC_MSG_CHECKING([which ucpp to use])
8912     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8913         AC_MSG_RESULT([external])
8914         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8915     else
8916         AC_MSG_RESULT([internal])
8917         BUILD_TYPE="$BUILD_TYPE UCPP"
8918     fi
8920 AC_SUBST(SYSTEM_UCPP)
8921 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8923 dnl ===================================================================
8924 dnl Check for epm (not needed for Windows)
8925 dnl ===================================================================
8926 AC_MSG_CHECKING([whether to enable EPM for packing])
8927 if test "$enable_epm" = "yes"; then
8928     AC_MSG_RESULT([yes])
8929     if test "$_os" != "WINNT"; then
8930         if test $_os = Darwin; then
8931             EPM=internal
8932         elif test -n "$with_epm"; then
8933             EPM=$with_epm
8934         else
8935             AC_PATH_PROG(EPM, epm, no)
8936         fi
8937         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8938             AC_MSG_NOTICE([EPM will be built.])
8939             BUILD_TYPE="$BUILD_TYPE EPM"
8940             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8941         else
8942             # Gentoo has some epm which is something different...
8943             AC_MSG_CHECKING([whether the found epm is the right epm])
8944             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8945                 AC_MSG_RESULT([yes])
8946             else
8947                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8948             fi
8949             AC_MSG_CHECKING([epm version])
8950             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8951             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8952                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8953                 AC_MSG_RESULT([OK, >= 3.7])
8954             else
8955                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8956                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8957             fi
8958         fi
8959     fi
8961     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8962         AC_MSG_CHECKING([for rpm])
8963         for a in "$RPM" rpmbuild rpm; do
8964             $a --usage >/dev/null 2> /dev/null
8965             if test $? -eq 0; then
8966                 RPM=$a
8967                 break
8968             else
8969                 $a --version >/dev/null 2> /dev/null
8970                 if test $? -eq 0; then
8971                     RPM=$a
8972                     break
8973                 fi
8974             fi
8975         done
8976         if test -z "$RPM"; then
8977             AC_MSG_ERROR([not found])
8978         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8979             RPM_PATH=`which $RPM`
8980             AC_MSG_RESULT([$RPM_PATH])
8981             SCPDEFS="$SCPDEFS -DWITH_RPM"
8982         else
8983             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8984         fi
8985     fi
8986     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8987         AC_PATH_PROG(DPKG, dpkg, no)
8988         if test "$DPKG" = "no"; then
8989             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8990         fi
8991     fi
8992     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8993        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8994         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8995             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8996                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8997                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8998                     AC_MSG_RESULT([yes])
8999                 else
9000                     AC_MSG_RESULT([no])
9001                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9002                         _pt="rpm"
9003                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9004                         add_warning "the rpms will need to be installed with --nodeps"
9005                     else
9006                         _pt="pkg"
9007                     fi
9008                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9009                     add_warning "the ${_pt}s will not be relocatable"
9010                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9011                                  relocation will work, you need to patch your epm with the
9012                                  patch in epm/epm-3.7.patch or build with
9013                                  --with-epm=internal which will build a suitable epm])
9014                 fi
9015             fi
9016         fi
9017     fi
9018     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9019         AC_PATH_PROG(PKGMK, pkgmk, no)
9020         if test "$PKGMK" = "no"; then
9021             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9022         fi
9023     fi
9024     AC_SUBST(RPM)
9025     AC_SUBST(DPKG)
9026     AC_SUBST(PKGMK)
9027 else
9028     for i in $PKGFORMAT; do
9029         case "$i" in
9030         aix | bsd | deb | pkg | rpm | native | portable)
9031             AC_MSG_ERROR(
9032                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9033             ;;
9034         esac
9035     done
9036     AC_MSG_RESULT([no])
9037     EPM=NO
9039 AC_SUBST(EPM)
9041 ENABLE_LWP=
9042 if test "$enable_lotuswordpro" = "yes"; then
9043     ENABLE_LWP="TRUE"
9045 AC_SUBST(ENABLE_LWP)
9047 dnl ===================================================================
9048 dnl Check for building ODK
9049 dnl ===================================================================
9050 if test "$enable_odk" != yes; then
9051     unset DOXYGEN
9052 else
9053     if test "$with_doxygen" = no; then
9054         AC_MSG_CHECKING([for doxygen])
9055         unset DOXYGEN
9056         AC_MSG_RESULT([no])
9057     else
9058         if test "$with_doxygen" = yes; then
9059             AC_PATH_PROG([DOXYGEN], [doxygen])
9060             if test -z "$DOXYGEN"; then
9061                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9062             fi
9063             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9064                 if ! dot -V 2>/dev/null; then
9065                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9066                 fi
9067             fi
9068         else
9069             AC_MSG_CHECKING([for doxygen])
9070             DOXYGEN=$with_doxygen
9071             AC_MSG_RESULT([$DOXYGEN])
9072         fi
9073         if test -n "$DOXYGEN"; then
9074             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9075             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9076             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9077                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9078             fi
9079         fi
9080     fi
9082 AC_SUBST([DOXYGEN])
9084 AC_MSG_CHECKING([whether to build the ODK])
9085 if test "$enable_odk" = yes; then
9086     AC_MSG_RESULT([yes])
9087     BUILD_TYPE="$BUILD_TYPE ODK"
9088 else
9089     AC_MSG_RESULT([no])
9092 dnl ===================================================================
9093 dnl Check for system zlib
9094 dnl ===================================================================
9095 if test "$with_system_zlib" = "auto"; then
9096     case "$_os" in
9097     WINNT)
9098         with_system_zlib="$with_system_libs"
9099         ;;
9100     *)
9101         if test "$enable_fuzzers" != "yes"; then
9102             with_system_zlib=yes
9103         else
9104             with_system_zlib=no
9105         fi
9106         ;;
9107     esac
9110 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9111 dnl and has no pkg-config for it at least on some tinderboxes,
9112 dnl so leaving that out for now
9113 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9114 AC_MSG_CHECKING([which zlib to use])
9115 if test "$with_system_zlib" = "yes"; then
9116     AC_MSG_RESULT([external])
9117     SYSTEM_ZLIB=TRUE
9118     AC_CHECK_HEADER(zlib.h, [],
9119         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9120     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9121         [AC_MSG_ERROR(zlib not found or functional)], [])
9122 else
9123     AC_MSG_RESULT([internal])
9124     SYSTEM_ZLIB=
9125     BUILD_TYPE="$BUILD_TYPE ZLIB"
9126     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9127     if test "$COM" = "MSC"; then
9128         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9129     else
9130         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9131     fi
9133 AC_SUBST(ZLIB_CFLAGS)
9134 AC_SUBST(ZLIB_LIBS)
9135 AC_SUBST(SYSTEM_ZLIB)
9137 dnl ===================================================================
9138 dnl Check for system jpeg
9139 dnl ===================================================================
9140 AC_MSG_CHECKING([which libjpeg to use])
9141 if test "$with_system_jpeg" = "yes"; then
9142     AC_MSG_RESULT([external])
9143     SYSTEM_LIBJPEG=TRUE
9144     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9145         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9146     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9147         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9148 else
9149     SYSTEM_LIBJPEG=
9150     AC_MSG_RESULT([internal, libjpeg-turbo])
9151     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9153     case "$host_cpu" in
9154     x86_64 | amd64 | i*86 | x86 | ia32)
9155         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9156         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9157             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9158                 NASM="$LODE_HOME/opt/bin/nasm"
9159             elif test -x "/opt/lo/bin/nasm"; then
9160                 NASM="/opt/lo/bin/nasm"
9161             fi
9162         fi
9164         if test -n "$NASM"; then
9165             AC_MSG_CHECKING([for object file format of host system])
9166             case "$host_os" in
9167               cygwin* | mingw* | pw32* | wsl*)
9168                 case "$host_cpu" in
9169                   x86_64)
9170                     objfmt='Win64-COFF'
9171                     ;;
9172                   *)
9173                     objfmt='Win32-COFF'
9174                     ;;
9175                 esac
9176               ;;
9177               msdosdjgpp* | go32*)
9178                 objfmt='COFF'
9179               ;;
9180               os2-emx*) # not tested
9181                 objfmt='MSOMF' # obj
9182               ;;
9183               linux*coff* | linux*oldld*)
9184                 objfmt='COFF' # ???
9185               ;;
9186               linux*aout*)
9187                 objfmt='a.out'
9188               ;;
9189               linux*)
9190                 case "$host_cpu" in
9191                   x86_64)
9192                     objfmt='ELF64'
9193                     ;;
9194                   *)
9195                     objfmt='ELF'
9196                     ;;
9197                 esac
9198               ;;
9199               kfreebsd* | freebsd* | netbsd* | openbsd*)
9200                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9201                   objfmt='BSD-a.out'
9202                 else
9203                   case "$host_cpu" in
9204                     x86_64 | amd64)
9205                       objfmt='ELF64'
9206                       ;;
9207                     *)
9208                       objfmt='ELF'
9209                       ;;
9210                   esac
9211                 fi
9212               ;;
9213               solaris* | sunos* | sysv* | sco*)
9214                 case "$host_cpu" in
9215                   x86_64)
9216                     objfmt='ELF64'
9217                     ;;
9218                   *)
9219                     objfmt='ELF'
9220                     ;;
9221                 esac
9222               ;;
9223               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9224                 case "$host_cpu" in
9225                   x86_64)
9226                     objfmt='Mach-O64'
9227                     ;;
9228                   *)
9229                     objfmt='Mach-O'
9230                     ;;
9231                 esac
9232               ;;
9233               *)
9234                 objfmt='ELF ?'
9235               ;;
9236             esac
9238             AC_MSG_RESULT([$objfmt])
9239             if test "$objfmt" = 'ELF ?'; then
9240               objfmt='ELF'
9241               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9242             fi
9244             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9245             case "$objfmt" in
9246               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9247               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9248               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9249               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9250               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9251               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9252               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9253               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9254               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9255               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9256               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9257             esac
9258             AC_MSG_RESULT([$NAFLAGS])
9260             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9261             cat > conftest.asm << EOF
9262             [%line __oline__ "configure"
9263                     section .text
9264                     global  _main,main
9265             _main:
9266             main:   xor     eax,eax
9267                     ret
9268             ]
9270             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9271             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9272               AC_MSG_RESULT(yes)
9273             else
9274               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9275               cat conftest.asm >&AS_MESSAGE_LOG_FD
9276               rm -rf conftest*
9277               AC_MSG_RESULT(no)
9278               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9279               NASM=""
9280             fi
9282         fi
9284         if test -z "$NASM"; then
9285 cat << _EOS
9286 ****************************************************************************
9287 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9288 To get one please:
9290 _EOS
9291             if test "$build_os" = "cygwin"; then
9292 cat << _EOS
9293 install a pre-compiled binary for Win32
9295 mkdir -p /opt/lo/bin
9296 cd /opt/lo/bin
9297 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9298 chmod +x nasm
9300 or get and install one from http://www.nasm.us/
9302 Then re-run autogen.sh
9304 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9305 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9307 _EOS
9308             else
9309 cat << _EOS
9310 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9312 _EOS
9313             fi
9314             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9315             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9316         fi
9317       ;;
9318     esac
9321 AC_SUBST(NASM)
9322 AC_SUBST(NAFLAGS)
9323 AC_SUBST(LIBJPEG_CFLAGS)
9324 AC_SUBST(LIBJPEG_LIBS)
9325 AC_SUBST(SYSTEM_LIBJPEG)
9327 dnl ===================================================================
9328 dnl Check for system clucene
9329 dnl ===================================================================
9330 dnl we should rather be using
9331 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9332 dnl but the contribs-lib check seems tricky
9333 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9334 AC_MSG_CHECKING([which clucene to use])
9335 if test "$with_system_clucene" = "yes"; then
9336     AC_MSG_RESULT([external])
9337     SYSTEM_CLUCENE=TRUE
9338     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9339     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9340     FilterLibs "${CLUCENE_LIBS}"
9341     CLUCENE_LIBS="${filteredlibs}"
9342     AC_LANG_PUSH([C++])
9343     save_CXXFLAGS=$CXXFLAGS
9344     save_CPPFLAGS=$CPPFLAGS
9345     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9346     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9347     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9348     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9349     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9350                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9351     CXXFLAGS=$save_CXXFLAGS
9352     CPPFLAGS=$save_CPPFLAGS
9353     AC_LANG_POP([C++])
9355     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9356 else
9357     AC_MSG_RESULT([internal])
9358     SYSTEM_CLUCENE=
9359     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9362 AC_SUBST(SYSTEM_CLUCENE)
9363 AC_SUBST(CLUCENE_CFLAGS)
9364 AC_SUBST(CLUCENE_LIBS)
9366 dnl ===================================================================
9367 dnl Check for system expat
9368 dnl ===================================================================
9369 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9371 dnl ===================================================================
9372 dnl Check for system xmlsec
9373 dnl ===================================================================
9374 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9376 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9377 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9378     ENABLE_EOT="TRUE"
9379     AC_DEFINE([ENABLE_EOT])
9380     AC_MSG_RESULT([yes])
9382     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9383 else
9384     ENABLE_EOT=
9385     AC_MSG_RESULT([no])
9387 AC_SUBST([ENABLE_EOT])
9389 dnl ===================================================================
9390 dnl Check for DLP libs
9391 dnl ===================================================================
9392 AS_IF([test "$COM" = "MSC"],
9393       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9394       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9396 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9398 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9400 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9402 AS_IF([test "$COM" = "MSC"],
9403       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9404       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9406 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9408 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9410 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9411 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9413 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9415 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9417 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9419 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9420 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9422 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9423 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9425 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9427 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9428 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9430 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9432 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9434 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9436 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9438 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9439 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9441 dnl ===================================================================
9442 dnl Check for system lcms2
9443 dnl ===================================================================
9444 if test "$with_system_lcms2" != "yes"; then
9445     SYSTEM_LCMS2=
9447 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9448 if test "$GCC" = "yes"; then
9449     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9451 if test "$COM" = "MSC"; then # override the above
9452     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9455 dnl ===================================================================
9456 dnl Check for system cppunit
9457 dnl ===================================================================
9458 if test "$_os" != "Android" ; then
9459     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9462 dnl ===================================================================
9463 dnl Check whether freetype is available
9464 dnl ===================================================================
9465 if test "$using_freetype_fontconfig" = yes; then
9466     AC_MSG_CHECKING([which freetype to use])
9468 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9469     AC_MSG_RESULT([external])
9470     # FreeType has 3 different kinds of versions
9471     # * release, like 2.4.10
9472     # * libtool, like 13.0.7 (this what pkg-config returns)
9473     # * soname
9474     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9475     #
9476     # 9.9.3 is 2.2.0
9477     # When the minimal version is at least 2.8.1, remove Skia's check down below.
9478     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9479     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9480     FilterLibs "${FREETYPE_LIBS}"
9481     FREETYPE_LIBS="${filteredlibs}"
9482     SYSTEM_FREETYPE=TRUE
9483 elif test "$using_freetype_fontconfig" = yes; then
9484     AC_MSG_RESULT([internal])
9485     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9486     if test "x$ac_config_site_64bit_host" = xYES; then
9487         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9488     else
9489         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9490     fi
9491     BUILD_TYPE="$BUILD_TYPE FREETYPE"
9493 AC_SUBST(FREETYPE_CFLAGS)
9494 AC_SUBST(FREETYPE_LIBS)
9495 AC_SUBST([SYSTEM_FREETYPE])
9497 # ===================================================================
9498 # Check for system libxslt
9499 # to prevent incompatibilities between internal libxml2 and external libxslt,
9500 # or vice versa, use with_system_libxml here
9501 # ===================================================================
9502 if test "$with_system_libxml" = "auto"; then
9503     case "$_os" in
9504     WINNT|iOS|Android)
9505         with_system_libxml="$with_system_libs"
9506         ;;
9507     Emscripten)
9508         with_system_libxml=no
9509         ;;
9510     *)
9511         if test "$enable_fuzzers" != "yes"; then
9512             with_system_libxml=yes
9513         else
9514             with_system_libxml=no
9515         fi
9516         ;;
9517     esac
9520 AC_MSG_CHECKING([which libxslt to use])
9521 if test "$with_system_libxml" = "yes"; then
9522     AC_MSG_RESULT([external])
9523     SYSTEM_LIBXSLT=TRUE
9524     if test "$_os" = "Darwin"; then
9525         dnl make sure to use SDK path
9526         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9527         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9528         dnl omit -L/usr/lib
9529         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9530         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9531     else
9532         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9533         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9534         FilterLibs "${LIBXSLT_LIBS}"
9535         LIBXSLT_LIBS="${filteredlibs}"
9536         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9537         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9538         FilterLibs "${LIBEXSLT_LIBS}"
9539         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9540     fi
9542     dnl Check for xsltproc
9543     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9544     if test "$XSLTPROC" = "no"; then
9545         AC_MSG_ERROR([xsltproc is required])
9546     fi
9547 else
9548     AC_MSG_RESULT([internal])
9549     SYSTEM_LIBXSLT=
9550     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9552 AC_SUBST(SYSTEM_LIBXSLT)
9553 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9554     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9556 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9558 AC_SUBST(LIBEXSLT_CFLAGS)
9559 AC_SUBST(LIBEXSLT_LIBS)
9560 AC_SUBST(LIBXSLT_CFLAGS)
9561 AC_SUBST(LIBXSLT_LIBS)
9562 AC_SUBST(XSLTPROC)
9564 # ===================================================================
9565 # Check for system libxml
9566 # ===================================================================
9567 AC_MSG_CHECKING([which libxml to use])
9568 if test "$with_system_libxml" = "yes"; then
9569     AC_MSG_RESULT([external])
9570     SYSTEM_LIBXML=TRUE
9571     if test "$_os" = "Darwin"; then
9572         dnl make sure to use SDK path
9573         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9574         dnl omit -L/usr/lib
9575         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9576     elif test $_os = iOS; then
9577         dnl make sure to use SDK path
9578         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9579         LIBXML_CFLAGS="-I$usr/include/libxml2"
9580         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9581     else
9582         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9583         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9584         FilterLibs "${LIBXML_LIBS}"
9585         LIBXML_LIBS="${filteredlibs}"
9586     fi
9588     dnl Check for xmllint
9589     AC_PATH_PROG(XMLLINT, xmllint, no)
9590     if test "$XMLLINT" = "no"; then
9591         AC_MSG_ERROR([xmllint is required])
9592     fi
9593 else
9594     AC_MSG_RESULT([internal])
9595     SYSTEM_LIBXML=
9596     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9597     if test "$COM" = "MSC"; then
9598         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9599     fi
9600     if test "$COM" = "MSC"; then
9601         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9602     else
9603         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9604         if test "$_os" = Android; then
9605             LIBXML_LIBS="$LIBXML_LIBS -lm"
9606         fi
9607     fi
9608     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9610 AC_SUBST(SYSTEM_LIBXML)
9611 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9612     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9614 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9615 AC_SUBST(LIBXML_CFLAGS)
9616 AC_SUBST(LIBXML_LIBS)
9617 AC_SUBST(XMLLINT)
9619 # =====================================================================
9620 # Checking for a Python interpreter with version >= 3.3.
9621 # Optionally user can pass an option to configure, i. e.
9622 # ./configure PYTHON=/usr/bin/python
9623 # =====================================================================
9624 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9625     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9626     # unless PYTHON is defined as above which allows 'system'
9627     enable_python=internal
9629 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9630     if test -n "$PYTHON"; then
9631         PYTHON_FOR_BUILD=$PYTHON
9632     else
9633         # This allows a lack of system python with no error, we use internal one in that case.
9634         AM_PATH_PYTHON([3.3],, [:])
9635         # Clean PYTHON_VERSION checked below if cross-compiling
9636         PYTHON_VERSION=""
9637         if test "$PYTHON" != ":"; then
9638             PYTHON_FOR_BUILD=$PYTHON
9639         fi
9640     fi
9642 AC_SUBST(PYTHON_FOR_BUILD)
9644 # Checks for Python to use for Pyuno
9645 AC_MSG_CHECKING([which Python to use for Pyuno])
9646 case "$enable_python" in
9647 no|disable)
9648     if test -z $PYTHON_FOR_BUILD; then
9649         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9650         # requirement from the choice whether to include Python stuff in the installer, but why
9651         # bother?
9652         if test "$cross_compiling" = yes; then
9653             enable_python=system
9654         else
9655             AC_MSG_ERROR([Python is required at build time.])
9656         fi
9657     fi
9658     enable_python=no
9659     AC_MSG_RESULT([none])
9660     ;;
9661 ""|yes|auto)
9662     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9663         AC_MSG_RESULT([no, overridden by --disable-scripting])
9664         enable_python=no
9665     elif test $build_os = cygwin; then
9666         dnl When building on Windows we don't attempt to use any installed
9667         dnl "system"  Python.
9668         AC_MSG_RESULT([fully internal])
9669         enable_python=internal
9670     elif test "$cross_compiling" = yes; then
9671         AC_MSG_RESULT([system])
9672         enable_python=system
9673     else
9674         # Unset variables set by the above AM_PATH_PYTHON so that
9675         # we actually do check anew.
9676         AC_MSG_RESULT([])
9677         unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir
9678         AM_PATH_PYTHON([3.3],, [:])
9679         AC_MSG_CHECKING([which Python to use for Pyuno])
9680         if test "$PYTHON" = ":"; then
9681             if test -z "$PYTHON_FOR_BUILD"; then
9682                 AC_MSG_RESULT([fully internal])
9683             else
9684                 AC_MSG_RESULT([internal])
9685             fi
9686             enable_python=internal
9687         else
9688             AC_MSG_RESULT([system])
9689             enable_python=system
9690         fi
9691     fi
9692     ;;
9693 internal)
9694     AC_MSG_RESULT([internal])
9695     ;;
9696 fully-internal)
9697     AC_MSG_RESULT([fully internal])
9698     enable_python=internal
9699     ;;
9700 system)
9701     AC_MSG_RESULT([system])
9702     if test "$_os" = Darwin -a -z "$PYTHON"; then
9703         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9704     fi
9705     ;;
9707     AC_MSG_ERROR([Incorrect --enable-python option])
9708     ;;
9709 esac
9711 if test $enable_python != no; then
9712     BUILD_TYPE="$BUILD_TYPE PYUNO"
9715 if test $enable_python = system; then
9716     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9717         # Fallback: Accept these in the environment, or as set above
9718         # for MacOSX.
9719         :
9720     elif test "$cross_compiling" != yes; then
9721         # Unset variables set by the above AM_PATH_PYTHON so that
9722         # we actually do check anew.
9723         unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir
9724         # This causes an error if no python command is found
9725         AM_PATH_PYTHON([3.3])
9726         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9727         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9728         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9729         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9730         if test -z "$PKG_CONFIG"; then
9731             PYTHON_CFLAGS="-I$python_include"
9732             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9733         elif $PKG_CONFIG --exists python-$python_version-embed; then
9734             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9735             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9736         elif $PKG_CONFIG --exists python-$python_version; then
9737             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9738             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9739         else
9740             PYTHON_CFLAGS="-I$python_include"
9741             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9742         fi
9743         FilterLibs "${PYTHON_LIBS}"
9744         PYTHON_LIBS="${filteredlibs}"
9745     else
9746         dnl How to find out the cross-compilation Python installation path?
9747         AC_MSG_CHECKING([for python version])
9748         AS_IF([test -n "$PYTHON_VERSION"],
9749               [AC_MSG_RESULT([$PYTHON_VERSION])],
9750               [AC_MSG_RESULT([not found])
9751                AC_MSG_ERROR([no usable python found])])
9752         test -n "$PYTHON_CFLAGS" && break
9753     fi
9755     dnl Check if the headers really work
9756     save_CPPFLAGS="$CPPFLAGS"
9757     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9758     AC_CHECK_HEADER(Python.h)
9759     CPPFLAGS="$save_CPPFLAGS"
9761     # let the PYTHON_FOR_BUILD match the same python installation that
9762     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9763     # better for PythonTests.
9764     PYTHON_FOR_BUILD=$PYTHON
9767 if test "$with_lxml" != no; then
9768     if test -z "$PYTHON_FOR_BUILD"; then
9769         case $build_os in
9770             cygwin)
9771                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9772                 ;;
9773             *)
9774                 if test "$cross_compiling" != yes ; then
9775                     BUILD_TYPE="$BUILD_TYPE LXML"
9776                 fi
9777                 ;;
9778         esac
9779     else
9780         AC_MSG_CHECKING([for python lxml])
9781         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9782             AC_MSG_RESULT([yes])
9783         else
9784             case $build_os in
9785                 cygwin)
9786                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9787                     ;;
9788                 *)
9789                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9790                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9791                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9792                         else
9793                             BUILD_TYPE="$BUILD_TYPE LXML"
9794                             AC_MSG_RESULT([no, using internal lxml])
9795                         fi
9796                     else
9797                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9798                     fi
9799                     ;;
9800             esac
9801         fi
9802     fi
9805 dnl By now enable_python should be "system", "internal" or "no"
9806 case $enable_python in
9807 system)
9808     SYSTEM_PYTHON=TRUE
9810     if test "x$ac_cv_header_Python_h" != "xyes"; then
9811        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9812     fi
9814     AC_LANG_PUSH(C)
9815     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9816     AC_MSG_CHECKING([for correct python library version])
9817        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9818 #include <Python.h>
9820 int main(int argc, char **argv) {
9821    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9822    else return 1;
9824        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9825     AC_LANG_POP(C)
9827     dnl FIXME Check if the Python library can be linked with, too?
9828     ;;
9830 internal)
9831     SYSTEM_PYTHON=
9832     PYTHON_VERSION_MAJOR=3
9833     PYTHON_VERSION_MINOR=8
9834     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9835     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9836         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9837     fi
9838     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9839     BUILD_TYPE="$BUILD_TYPE PYTHON"
9840     if test "$OS" = LINUX -o "$OS" = WNT ; then
9841         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9842     fi
9843     # Embedded Python dies without Home set
9844     if test "$HOME" = ""; then
9845         export HOME=""
9846     fi
9847     ;;
9849     DISABLE_PYTHON=TRUE
9850     SYSTEM_PYTHON=
9851     ;;
9853     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9854     ;;
9855 esac
9857 AC_SUBST(DISABLE_PYTHON)
9858 AC_SUBST(SYSTEM_PYTHON)
9859 AC_SUBST(PYTHON_CFLAGS)
9860 AC_SUBST(PYTHON_LIBS)
9861 AC_SUBST(PYTHON_VERSION)
9862 AC_SUBST(PYTHON_VERSION_MAJOR)
9863 AC_SUBST(PYTHON_VERSION_MINOR)
9865 AC_MSG_CHECKING([whether to build LibreLogo])
9866 case "$enable_python" in
9867 no|disable)
9868     AC_MSG_RESULT([no; Python disabled])
9869     ;;
9871     if test "${enable_librelogo}" = "no"; then
9872         AC_MSG_RESULT([no])
9873     else
9874         AC_MSG_RESULT([yes])
9875         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9876         AC_DEFINE([ENABLE_LIBRELOGO],1)
9877     fi
9878     ;;
9879 esac
9880 AC_SUBST(ENABLE_LIBRELOGO)
9882 ENABLE_MARIADBC=
9883 MARIADBC_MAJOR=1
9884 MARIADBC_MINOR=0
9885 MARIADBC_MICRO=2
9886 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9887 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9888     ENABLE_MARIADBC=TRUE
9889     AC_MSG_RESULT([yes])
9890     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9891 else
9892     AC_MSG_RESULT([no])
9894 AC_SUBST(ENABLE_MARIADBC)
9895 AC_SUBST(MARIADBC_MAJOR)
9896 AC_SUBST(MARIADBC_MINOR)
9897 AC_SUBST(MARIADBC_MICRO)
9899 if test "$ENABLE_MARIADBC" = "TRUE"; then
9900     dnl ===================================================================
9901     dnl Check for system MariaDB
9902     dnl ===================================================================
9903     AC_MSG_CHECKING([which MariaDB to use])
9904     if test "$with_system_mariadb" = "yes"; then
9905         AC_MSG_RESULT([external])
9906         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9907         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9908         if test -z "$MARIADBCONFIG"; then
9909             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9910             if test -z "$MARIADBCONFIG"; then
9911                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9912                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9913             fi
9914         fi
9915         AC_MSG_CHECKING([MariaDB version])
9916         MARIADB_VERSION=`$MARIADBCONFIG --version`
9917         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9918         if test "$MARIADB_MAJOR" -ge "5"; then
9919             AC_MSG_RESULT([OK])
9920         else
9921             AC_MSG_ERROR([too old, use 5.0.x or later])
9922         fi
9923         AC_MSG_CHECKING([for MariaDB Client library])
9924         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9925         if test "$COM_IS_CLANG" = TRUE; then
9926             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9927         fi
9928         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9929         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9930         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9931         dnl linux32:
9932         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9933             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9934             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9935                 | sed -e 's|/lib64/|/lib/|')
9936         fi
9937         FilterLibs "${MARIADB_LIBS}"
9938         MARIADB_LIBS="${filteredlibs}"
9939         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9940         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9941         if test "$enable_bundle_mariadb" = "yes"; then
9942             AC_MSG_RESULT([yes])
9943             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9944             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9946 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9948 /g' | grep -E '(mysqlclient|mariadb)')
9949             if test "$_os" = "Darwin"; then
9950                 LIBMARIADB=${LIBMARIADB}.dylib
9951             elif test "$_os" = "WINNT"; then
9952                 LIBMARIADB=${LIBMARIADB}.dll
9953             else
9954                 LIBMARIADB=${LIBMARIADB}.so
9955             fi
9956             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9957             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9958             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9959                 AC_MSG_RESULT([found.])
9960                 PathFormat "$LIBMARIADB_PATH"
9961                 LIBMARIADB_PATH="$formatted_path"
9962             else
9963                 AC_MSG_ERROR([not found.])
9964             fi
9965         else
9966             AC_MSG_RESULT([no])
9967             BUNDLE_MARIADB_CONNECTOR_C=
9968         fi
9969     else
9970         AC_MSG_RESULT([internal])
9971         SYSTEM_MARIADB_CONNECTOR_C=
9972         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9973         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9974         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9975     fi
9977     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9978     AC_SUBST(MARIADB_CFLAGS)
9979     AC_SUBST(MARIADB_LIBS)
9980     AC_SUBST(LIBMARIADB)
9981     AC_SUBST(LIBMARIADB_PATH)
9982     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9985 dnl ===================================================================
9986 dnl Check for system hsqldb
9987 dnl ===================================================================
9988 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9989     HSQLDB_USE_JDBC_4_1=
9990     AC_MSG_CHECKING([which hsqldb to use])
9991     if test "$with_system_hsqldb" = "yes"; then
9992         AC_MSG_RESULT([external])
9993         SYSTEM_HSQLDB=TRUE
9994         if test -z $HSQLDB_JAR; then
9995             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9996         fi
9997         if ! test -f $HSQLDB_JAR; then
9998                AC_MSG_ERROR(hsqldb.jar not found.)
9999         fi
10000         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10001         export HSQLDB_JAR
10002         if $PERL -e \
10003            'use Archive::Zip;
10004             my $file = "$ENV{'HSQLDB_JAR'}";
10005             my $zip = Archive::Zip->new( $file );
10006             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10007             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10008             {
10009                 push @l, split(/\n/, $mf);
10010                 foreach my $line (@l)
10011                 {
10012                     if ($line =~ m/Specification-Version:/)
10013                     {
10014                         ($t, $version) = split (/:/,$line);
10015                         $version =~ s/^\s//;
10016                         ($a, $b, $c, $d) = split (/\./,$version);
10017                         if ($c == "0" && $d > "8")
10018                         {
10019                             exit 0;
10020                         }
10021                         else
10022                         {
10023                             exit 1;
10024                         }
10025                     }
10026                 }
10027             }
10028             else
10029             {
10030                 exit 1;
10031             }'; then
10032             AC_MSG_RESULT([yes])
10033         else
10034             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10035         fi
10036     else
10037         AC_MSG_RESULT([internal])
10038         SYSTEM_HSQLDB=
10039         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10040         NEED_ANT=TRUE
10041         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
10042         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
10043         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
10044             AC_MSG_RESULT([yes])
10045             HSQLDB_USE_JDBC_4_1=TRUE
10046         else
10047             AC_MSG_RESULT([no])
10048         fi
10049     fi
10050 else
10051     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10052         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10053     fi
10055 AC_SUBST(SYSTEM_HSQLDB)
10056 AC_SUBST(HSQLDB_JAR)
10057 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10059 dnl ===================================================================
10060 dnl Check for PostgreSQL stuff
10061 dnl ===================================================================
10062 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10063 if test "x$enable_postgresql_sdbc" != "xno"; then
10064     AC_MSG_RESULT([yes])
10065     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10067     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10068         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10069     fi
10070     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10071         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10072     fi
10074     postgres_interface=""
10075     if test "$with_system_postgresql" = "yes"; then
10076         postgres_interface="external PostgreSQL"
10077         SYSTEM_POSTGRESQL=TRUE
10078         if test "$_os" = Darwin; then
10079             supp_path=''
10080             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10081                 pg_supp_path="$P_SEP$d$pg_supp_path"
10082             done
10083         fi
10084         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10085         if test -n "$PGCONFIG"; then
10086             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10087             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10088         else
10089             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10090               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10091               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10092             ],[
10093               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10094             ])
10095         fi
10096         FilterLibs "${POSTGRESQL_LIB}"
10097         POSTGRESQL_LIB="${filteredlibs}"
10098     else
10099         # if/when anything else than PostgreSQL uses Kerberos,
10100         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10101         WITH_KRB5=
10102         WITH_GSSAPI=
10103         case "$_os" in
10104         Darwin)
10105             # macOS has system MIT Kerberos 5 since 10.4
10106             if test "$with_krb5" != "no"; then
10107                 WITH_KRB5=TRUE
10108                 save_LIBS=$LIBS
10109                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10110                 # that the libraries where these functions are located on macOS will change, is it?
10111                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10112                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10113                 KRB5_LIBS=$LIBS
10114                 LIBS=$save_LIBS
10115                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10116                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10117                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10118                 LIBS=$save_LIBS
10119             fi
10120             if test "$with_gssapi" != "no"; then
10121                 WITH_GSSAPI=TRUE
10122                 save_LIBS=$LIBS
10123                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10124                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10125                 GSSAPI_LIBS=$LIBS
10126                 LIBS=$save_LIBS
10127             fi
10128             ;;
10129         WINNT)
10130             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10131                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10132             fi
10133             ;;
10134         Linux|GNU|*BSD|DragonFly)
10135             if test "$with_krb5" != "no"; then
10136                 WITH_KRB5=TRUE
10137                 save_LIBS=$LIBS
10138                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10139                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10140                 KRB5_LIBS=$LIBS
10141                 LIBS=$save_LIBS
10142                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10143                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10144                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10145                 LIBS=$save_LIBS
10146             fi
10147             if test "$with_gssapi" != "no"; then
10148                 WITH_GSSAPI=TRUE
10149                 save_LIBS=$LIBS
10150                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10151                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10152                 GSSAPI_LIBS=$LIBS
10153                 LIBS=$save_LIBS
10154             fi
10155             ;;
10156         *)
10157             if test "$with_krb5" = "yes"; then
10158                 WITH_KRB5=TRUE
10159                 save_LIBS=$LIBS
10160                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10161                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10162                 KRB5_LIBS=$LIBS
10163                 LIBS=$save_LIBS
10164                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10165                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10166                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10167                 LIBS=$save_LIBS
10168             fi
10169             if test "$with_gssapi" = "yes"; then
10170                 WITH_GSSAPI=TRUE
10171                 save_LIBS=$LIBS
10172                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10173                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10174                 LIBS=$save_LIBS
10175                 GSSAPI_LIBS=$LIBS
10176             fi
10177         esac
10179         if test -n "$with_libpq_path"; then
10180             SYSTEM_POSTGRESQL=TRUE
10181             postgres_interface="external libpq"
10182             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10183             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10184         else
10185             SYSTEM_POSTGRESQL=
10186             postgres_interface="internal"
10187             POSTGRESQL_LIB=""
10188             POSTGRESQL_INC="%OVERRIDE_ME%"
10189             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10190         fi
10191     fi
10193     AC_MSG_CHECKING([PostgreSQL C interface])
10194     AC_MSG_RESULT([$postgres_interface])
10196     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10197         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10198         save_CFLAGS=$CFLAGS
10199         save_CPPFLAGS=$CPPFLAGS
10200         save_LIBS=$LIBS
10201         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10202         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10203         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10204         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10205             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10206         CFLAGS=$save_CFLAGS
10207         CPPFLAGS=$save_CPPFLAGS
10208         LIBS=$save_LIBS
10209     fi
10210     BUILD_POSTGRESQL_SDBC=TRUE
10211 else
10212     AC_MSG_RESULT([no])
10214 AC_SUBST(WITH_KRB5)
10215 AC_SUBST(WITH_GSSAPI)
10216 AC_SUBST(GSSAPI_LIBS)
10217 AC_SUBST(KRB5_LIBS)
10218 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10219 AC_SUBST(SYSTEM_POSTGRESQL)
10220 AC_SUBST(POSTGRESQL_INC)
10221 AC_SUBST(POSTGRESQL_LIB)
10223 dnl ===================================================================
10224 dnl Check for Firebird stuff
10225 dnl ===================================================================
10226 ENABLE_FIREBIRD_SDBC=
10227 if test "$enable_firebird_sdbc" = "yes" ; then
10228     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10230     dnl ===================================================================
10231     dnl Check for system Firebird
10232     dnl ===================================================================
10233     AC_MSG_CHECKING([which Firebird to use])
10234     if test "$with_system_firebird" = "yes"; then
10235         AC_MSG_RESULT([external])
10236         SYSTEM_FIREBIRD=TRUE
10237         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10238         if test -z "$FIREBIRDCONFIG"; then
10239             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10240             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10241                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10242             ])
10243             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10244         else
10245             AC_MSG_NOTICE([fb_config found])
10246             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10247             AC_MSG_CHECKING([for Firebird Client library])
10248             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10249             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10250             FilterLibs "${FIREBIRD_LIBS}"
10251             FIREBIRD_LIBS="${filteredlibs}"
10252         fi
10253         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10254         AC_MSG_CHECKING([Firebird version])
10255         if test -n "${FIREBIRD_VERSION}"; then
10256             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10257             if test "$FIREBIRD_MAJOR" -ge "3"; then
10258                 AC_MSG_RESULT([OK])
10259             else
10260                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10261             fi
10262         else
10263             save_CFLAGS="${CFLAGS}"
10264             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10265             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10266 #if defined(FB_API_VER) && FB_API_VER == 30
10267 int fb_api_is_30(void) { return 0; }
10268 #else
10269 #error "Wrong Firebird API version"
10270 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10271             CFLAGS="$save_CFLAGS"
10272         fi
10273         ENABLE_FIREBIRD_SDBC=TRUE
10274         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10275     elif test "$enable_database_connectivity" = no; then
10276         AC_MSG_RESULT([none])
10277     elif test "$cross_compiling" = "yes"; then
10278         AC_MSG_RESULT([none])
10279     else
10280         dnl Embedded Firebird has version 3.0
10281         dnl We need libatomic_ops for any non X86/X64 system
10282         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10283             dnl ===================================================================
10284             dnl Check for system libatomic_ops
10285             dnl ===================================================================
10286             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10287             if test "$with_system_libatomic_ops" = "yes"; then
10288                 SYSTEM_LIBATOMIC_OPS=TRUE
10289                 AC_CHECK_HEADERS(atomic_ops.h, [],
10290                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10291             else
10292                 SYSTEM_LIBATOMIC_OPS=
10293                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10294                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10295                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10296             fi
10297         fi
10299         AC_MSG_RESULT([internal])
10300         SYSTEM_FIREBIRD=
10301         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10302         FIREBIRD_LIBS="-lfbclient"
10304         if test "$with_system_libtommath" = "yes"; then
10305             SYSTEM_LIBTOMMATH=TRUE
10306             dnl check for tommath presence
10307             save_LIBS=$LIBS
10308             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10309             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10310             LIBS=$save_LIBS
10311         else
10312             SYSTEM_LIBTOMMATH=
10313             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10314             LIBTOMMATH_LIBS="-ltommath"
10315             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10316         fi
10318         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10319         ENABLE_FIREBIRD_SDBC=TRUE
10320         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10321     fi
10323 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10324 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10325 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10326 AC_SUBST(LIBATOMIC_OPS_LIBS)
10327 AC_SUBST(SYSTEM_FIREBIRD)
10328 AC_SUBST(FIREBIRD_CFLAGS)
10329 AC_SUBST(FIREBIRD_LIBS)
10330 AC_SUBST(SYSTEM_LIBTOMMATH)
10331 AC_SUBST(LIBTOMMATH_CFLAGS)
10332 AC_SUBST(LIBTOMMATH_LIBS)
10334 dnl ===================================================================
10335 dnl Check for system curl
10336 dnl ===================================================================
10337 AC_MSG_CHECKING([which libcurl to use])
10338 if test "$with_system_curl" = "auto"; then
10339     with_system_curl="$with_system_libs"
10342 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10343     AC_MSG_RESULT([external])
10344     SYSTEM_CURL=TRUE
10346     PKG_CHECK_MODULES(CURL, libcurl >= 7.68.0)
10348     ENABLE_CURL=TRUE
10349 elif test "$enable_curl" = "no"; then
10350     AC_MSG_RESULT([none])
10351 else
10352     AC_MSG_RESULT([internal])
10353     SYSTEM_CURL=
10354     BUILD_TYPE="$BUILD_TYPE CURL"
10355     ENABLE_CURL=TRUE
10357 AC_SUBST(SYSTEM_CURL)
10358 AC_SUBST(CURL_CFLAGS)
10359 AC_SUBST(CURL_LIBS)
10360 AC_SUBST(ENABLE_CURL)
10362 dnl ===================================================================
10363 dnl Check for system boost
10364 dnl ===================================================================
10365 AC_MSG_CHECKING([which boost to use])
10366 if test "$with_system_boost" = "yes"; then
10367     AC_MSG_RESULT([external])
10368     SYSTEM_BOOST=TRUE
10369     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10370     AX_BOOST_DATE_TIME
10371     AX_BOOST_FILESYSTEM
10372     AX_BOOST_IOSTREAMS
10373     AX_BOOST_LOCALE
10374     AC_LANG_PUSH([C++])
10375     save_CXXFLAGS=$CXXFLAGS
10376     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10377     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10378        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10379     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10380        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10381     CXXFLAGS=$save_CXXFLAGS
10382     AC_LANG_POP([C++])
10383     # this is in m4/ax_boost_base.m4
10384     FilterLibs "${BOOST_LDFLAGS}"
10385     BOOST_LDFLAGS="${filteredlibs}"
10386 else
10387     AC_MSG_RESULT([internal])
10388     BUILD_TYPE="$BUILD_TYPE BOOST"
10389     SYSTEM_BOOST=
10390     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10391         # use warning-suppressing wrapper headers
10392         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10393     else
10394         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10395     fi
10397 AC_SUBST(SYSTEM_BOOST)
10399 dnl ===================================================================
10400 dnl Check for system mdds
10401 dnl ===================================================================
10402 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10404 dnl ===================================================================
10405 dnl Check for system cuckoo
10406 dnl ===================================================================
10407 AC_MSG_CHECKING([which cuckoo to use])
10408 if test "$with_system_cuckoo" = "yes"; then
10409     AC_MSG_RESULT([external])
10410     SYSTEM_CUCKOO=TRUE
10411     AC_LANG_PUSH([C++])
10412     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10413        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10414     AC_LANG_POP([C++])
10415 else
10416     AC_MSG_RESULT([internal])
10417     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10418     SYSTEM_CUCKOO=
10419     CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10421 AC_SUBST([CUCKOO_CFLAGS])
10422 AC_SUBST([SYSTEM_CUCKOO])
10424 dnl ===================================================================
10425 dnl Check for system glm
10426 dnl ===================================================================
10427 AC_MSG_CHECKING([which glm to use])
10428 if test "$with_system_glm" = "yes"; then
10429     AC_MSG_RESULT([external])
10430     SYSTEM_GLM=TRUE
10431     AC_LANG_PUSH([C++])
10432     AC_CHECK_HEADER([glm/glm.hpp], [],
10433        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10434     AC_LANG_POP([C++])
10435 else
10436     AC_MSG_RESULT([internal])
10437     BUILD_TYPE="$BUILD_TYPE GLM"
10438     SYSTEM_GLM=
10439     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10441 AC_SUBST([GLM_CFLAGS])
10442 AC_SUBST([SYSTEM_GLM])
10444 dnl ===================================================================
10445 dnl Check for system odbc
10446 dnl ===================================================================
10447 AC_MSG_CHECKING([which odbc headers to use])
10448 if test "$with_system_odbc" = "yes" -o '(' "$with_system_headers" = "yes" -a "$with_system_odbc" = "auto" ')' -o '(' "$_os" = "WINNT" -a  "$with_system_odbc" != "no" ')'; then
10449     AC_MSG_RESULT([external])
10450     SYSTEM_ODBC_HEADERS=TRUE
10452     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10453         save_CPPFLAGS=$CPPFLAGS
10454         find_winsdk
10455         PathFormat "$winsdktest"
10456         CPPFLAGS="$CPPFLAGS -I$formatted_path/include/um -I$formatted_path/Include/$winsdklibsubdir/um -I$formatted_path/include -I$formatted_path/include/shared -I$formatted_path/include/$winsdklibsubdir/shared"
10457         AC_CHECK_HEADER(sqlext.h, [],
10458             [AC_MSG_ERROR(odbc not found. install odbc)],
10459             [#include <windows.h>])
10460         CPPFLAGS=$save_CPPFLAGS
10461     else
10462         AC_CHECK_HEADER(sqlext.h, [],
10463             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10464     fi
10465 elif test "$enable_database_connectivity" = no; then
10466     AC_MSG_RESULT([none])
10467 else
10468     AC_MSG_RESULT([internal])
10469     SYSTEM_ODBC_HEADERS=
10471 AC_SUBST(SYSTEM_ODBC_HEADERS)
10473 dnl ===================================================================
10474 dnl Check for system NSS
10475 dnl ===================================================================
10476 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10477     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,,[
10478         case "$_os" in
10479             Linux)
10480                 with_system_nss=yes
10481             ;;
10482             *)
10483                 with_system_nss=no
10484             ;;
10485         esac])
10486     AC_DEFINE(HAVE_FEATURE_NSS)
10487     ENABLE_NSS=TRUE
10488 elif test $_os != iOS ; then
10489     with_tls=openssl
10491 AC_SUBST(ENABLE_NSS)
10493 dnl ===================================================================
10494 dnl Enable LDAP support
10495 dnl ===================================================================
10497 if test "$test_openldap" = yes; then
10498     AC_MSG_CHECKING([whether to enable LDAP support])
10499     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10500         AC_MSG_RESULT([yes])
10501         ENABLE_LDAP=TRUE
10502     else
10503         if test "$enable_ldap" != "yes"; then
10504             AC_MSG_RESULT([no])
10505         else
10506             AC_MSG_RESULT([no (needs NSS or system openldap)])
10507         fi
10508     fi
10510 dnl ===================================================================
10511 dnl Check for system openldap
10512 dnl ===================================================================
10514     if test "$ENABLE_LDAP" = TRUE; then
10515         AC_MSG_CHECKING([which openldap library to use])
10516         if test "$with_system_openldap" = yes; then
10517             AC_MSG_RESULT([external])
10518             SYSTEM_OPENLDAP=TRUE
10519             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10520             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10521             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10522         else
10523             AC_MSG_RESULT([internal])
10524             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10525         fi
10526     fi
10529 AC_SUBST(ENABLE_LDAP)
10530 AC_SUBST(SYSTEM_OPENLDAP)
10532 dnl ===================================================================
10533 dnl Check for TLS/SSL and cryptographic implementation to use
10534 dnl ===================================================================
10535 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10536 if test -n "$with_tls"; then
10537     case $with_tls in
10538     openssl)
10539         AC_DEFINE(USE_TLS_OPENSSL)
10540         TLS=OPENSSL
10541         AC_MSG_RESULT([$TLS])
10543         if test "$enable_openssl" != "yes"; then
10544             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10545         fi
10547         # warn that OpenSSL has been selected but not all TLS code has this option
10548         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10549         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10550         ;;
10551     nss)
10552         AC_DEFINE(USE_TLS_NSS)
10553         TLS=NSS
10554         AC_MSG_RESULT([$TLS])
10555         ;;
10556     no)
10557         AC_MSG_RESULT([none])
10558         AC_MSG_WARN([Skipping TLS/SSL])
10559         ;;
10560     *)
10561         AC_MSG_RESULT([])
10562         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10563 openssl - OpenSSL
10564 nss - Mozilla's Network Security Services (NSS)
10565     ])
10566         ;;
10567     esac
10568 else
10569     # default to using NSS, it results in smaller oox lib
10570     AC_DEFINE(USE_TLS_NSS)
10571     TLS=NSS
10572     AC_MSG_RESULT([$TLS])
10574 AC_SUBST(TLS)
10576 dnl ===================================================================
10577 dnl Check for system sane
10578 dnl ===================================================================
10579 AC_MSG_CHECKING([which sane header to use])
10580 if test "$with_system_sane" = "yes"; then
10581     AC_MSG_RESULT([external])
10582     AC_CHECK_HEADER(sane/sane.h, [],
10583       [AC_MSG_ERROR(sane not found. install sane)], [])
10584 else
10585     AC_MSG_RESULT([internal])
10586     BUILD_TYPE="$BUILD_TYPE SANE"
10589 dnl ===================================================================
10590 dnl Check for system icu
10591 dnl ===================================================================
10592 SYSTEM_GENBRK=
10593 SYSTEM_GENCCODE=
10594 SYSTEM_GENCMN=
10596 ICU_MAJOR=70
10597 ICU_MINOR=1
10598 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10599 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10600 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10601 AC_MSG_CHECKING([which icu to use])
10602 if test "$with_system_icu" = "yes"; then
10603     AC_MSG_RESULT([external])
10604     SYSTEM_ICU=TRUE
10605     AC_LANG_PUSH([C++])
10606     AC_MSG_CHECKING([for unicode/rbbi.h])
10607     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10608     AC_LANG_POP([C++])
10610     if test "$cross_compiling" != "yes"; then
10611         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10612         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10613         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10614         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10615     fi
10617     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10618         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10619         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10620         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10621         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10622         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10623             AC_MSG_RESULT([yes])
10624         else
10625             AC_MSG_RESULT([no])
10626             if test "$with_system_icu_for_build" != "force"; then
10627                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10628 You can use --with-system-icu-for-build=force to use it anyway.])
10629             fi
10630         fi
10631     fi
10633     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10634         # using the system icu tools can lead to version confusion, use the
10635         # ones from the build environment when cross-compiling
10636         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10637         if test -z "$SYSTEM_GENBRK"; then
10638             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10639         fi
10640         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10641         if test -z "$SYSTEM_GENCCODE"; then
10642             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10643         fi
10644         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10645         if test -z "$SYSTEM_GENCMN"; then
10646             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10647         fi
10648         if test "$ICU_MAJOR" -ge "49"; then
10649             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10650             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10651             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10652         else
10653             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10654             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10655             ICU_RECLASSIFIED_HEBREW_LETTER=
10656         fi
10657     fi
10659     if test "$cross_compiling" = "yes"; then
10660         if test "$ICU_MAJOR" -ge "50"; then
10661             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10662             ICU_MINOR=""
10663         fi
10664     fi
10665 else
10666     AC_MSG_RESULT([internal])
10667     SYSTEM_ICU=
10668     BUILD_TYPE="$BUILD_TYPE ICU"
10669     # surprisingly set these only for "internal" (to be used by various other
10670     # external libs): the system icu-config is quite unhelpful and spits out
10671     # dozens of weird flags and also default path -I/usr/include
10672     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10673     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10675 if test "$ICU_MAJOR" -ge "59"; then
10676     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10677     # with -std=c++11 but not all external libraries can be built with that,
10678     # for those use a bit-compatible typedef uint16_t UChar; see
10679     # icu/source/common/unicode/umachine.h
10680     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10681 else
10682     ICU_UCHAR_TYPE=""
10684 AC_SUBST(SYSTEM_ICU)
10685 AC_SUBST(SYSTEM_GENBRK)
10686 AC_SUBST(SYSTEM_GENCCODE)
10687 AC_SUBST(SYSTEM_GENCMN)
10688 AC_SUBST(ICU_MAJOR)
10689 AC_SUBST(ICU_MINOR)
10690 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10691 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10692 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10693 AC_SUBST(ICU_CFLAGS)
10694 AC_SUBST(ICU_LIBS)
10695 AC_SUBST(ICU_UCHAR_TYPE)
10697 dnl ==================================================================
10698 dnl Breakpad
10699 dnl ==================================================================
10700 DEFAULT_CRASHDUMP_VALUE="true"
10701 AC_MSG_CHECKING([whether to enable breakpad])
10702 if test "$enable_breakpad" != yes; then
10703     AC_MSG_RESULT([no])
10704 else
10705     AC_MSG_RESULT([yes])
10706     ENABLE_BREAKPAD="TRUE"
10707     AC_DEFINE(ENABLE_BREAKPAD)
10708     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10709     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10711     AC_MSG_CHECKING([for disable crash dump])
10712     if test "$enable_crashdump" = no; then
10713         DEFAULT_CRASHDUMP_VALUE="false"
10714         AC_MSG_RESULT([yes])
10715     else
10716        AC_MSG_RESULT([no])
10717     fi
10719     AC_MSG_CHECKING([for crashreport config])
10720     if test "$with_symbol_config" = "no"; then
10721         BREAKPAD_SYMBOL_CONFIG="invalid"
10722         AC_MSG_RESULT([no])
10723     else
10724         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10725         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10726         AC_MSG_RESULT([yes])
10727     fi
10728     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10730 AC_SUBST(ENABLE_BREAKPAD)
10731 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10733 dnl ==================================================================
10734 dnl libfuzzer
10735 dnl ==================================================================
10736 AC_MSG_CHECKING([whether to enable fuzzers])
10737 if test "$enable_fuzzers" != yes; then
10738     AC_MSG_RESULT([no])
10739 else
10740     if test -z $LIB_FUZZING_ENGINE; then
10741       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10742     fi
10743     AC_MSG_RESULT([yes])
10744     ENABLE_FUZZERS="TRUE"
10745     AC_DEFINE([ENABLE_FUZZERS],1)
10746     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10748 AC_SUBST(LIB_FUZZING_ENGINE)
10749 AC_SUBST(ENABLE_FUZZERS)
10751 dnl ===================================================================
10752 dnl Orcus
10753 dnl ===================================================================
10754 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10755 if test "$with_system_orcus" != "yes"; then
10756     if test "$SYSTEM_BOOST" = "TRUE"; then
10757         dnl Link with Boost.System
10758         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10759         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10760         dnl in documentation has no effect.
10761         AX_BOOST_SYSTEM
10762     fi
10764 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10765 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10766 AC_SUBST([BOOST_SYSTEM_LIB])
10767 AC_SUBST(SYSTEM_LIBORCUS)
10769 dnl ===================================================================
10770 dnl HarfBuzz
10771 dnl ===================================================================
10772 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10773                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10774                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10776 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10777                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10778                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10780 if test "$COM" = "MSC"; then # override the above
10781     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10782     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10785 if test "$with_system_harfbuzz" = "yes"; then
10786     if test "$with_system_graphite" = "no"; then
10787         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10788     fi
10789     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10790     save_LIBS="$LIBS"
10791     save_CFLAGS="$CFLAGS"
10792     LIBS="$LIBS $HARFBUZZ_LIBS"
10793     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10794     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10795     LIBS="$save_LIBS"
10796     CFLAGS="$save_CFLAGS"
10797 else
10798     if test "$with_system_graphite" = "yes"; then
10799         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10800     fi
10803 if test "$USING_X11" = TRUE; then
10804     AC_PATH_X
10805     AC_PATH_XTRA
10806     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10808     if test -z "$x_includes"; then
10809         x_includes="default_x_includes"
10810     fi
10811     if test -z "$x_libraries"; then
10812         x_libraries="default_x_libraries"
10813     fi
10814     CFLAGS="$CFLAGS $X_CFLAGS"
10815     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10816     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10817 else
10818     x_includes="no_x_includes"
10819     x_libraries="no_x_libraries"
10822 if test "$USING_X11" = TRUE; then
10823     dnl ===================================================================
10824     dnl Check for extension headers
10825     dnl ===================================================================
10826     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10827      [#include <X11/extensions/shape.h>])
10829     # vcl needs ICE and SM
10830     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10831     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10832         [AC_MSG_ERROR(ICE library not found)])
10833     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10834     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10835         [AC_MSG_ERROR(SM library not found)])
10838 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10839     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10840     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10843 dnl ===================================================================
10844 dnl Check for system Xrender
10845 dnl ===================================================================
10846 AC_MSG_CHECKING([whether to use Xrender])
10847 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10848     AC_MSG_RESULT([yes])
10849     PKG_CHECK_MODULES(XRENDER, xrender)
10850     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10851     FilterLibs "${XRENDER_LIBS}"
10852     XRENDER_LIBS="${filteredlibs}"
10853     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10854       [AC_MSG_ERROR(libXrender not found or functional)], [])
10855     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10856       [AC_MSG_ERROR(Xrender not found. install X)], [])
10857 else
10858     AC_MSG_RESULT([no])
10860 AC_SUBST(XRENDER_CFLAGS)
10861 AC_SUBST(XRENDER_LIBS)
10863 dnl ===================================================================
10864 dnl Check for XRandr
10865 dnl ===================================================================
10866 AC_MSG_CHECKING([whether to enable RandR support])
10867 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10868     AC_MSG_RESULT([yes])
10869     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10870     if test "$ENABLE_RANDR" != "TRUE"; then
10871         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10872                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10873         XRANDR_CFLAGS=" "
10874         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10875           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10876         XRANDR_LIBS="-lXrandr "
10877         ENABLE_RANDR="TRUE"
10878     fi
10879     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10880     FilterLibs "${XRANDR_LIBS}"
10881     XRANDR_LIBS="${filteredlibs}"
10882 else
10883     ENABLE_RANDR=""
10884     AC_MSG_RESULT([no])
10886 AC_SUBST(XRANDR_CFLAGS)
10887 AC_SUBST(XRANDR_LIBS)
10888 AC_SUBST(ENABLE_RANDR)
10890 if test "$test_webdav" = yes; then
10891     if test -z "$with_webdav"; then
10892         WITH_WEBDAV=curl
10893     else
10894         WITH_WEBDAV="$with_webdav"
10895     fi
10898 AC_MSG_CHECKING([for webdav library])
10899 case "$WITH_WEBDAV" in
10900 curl)
10901     AC_MSG_RESULT([curl])
10902     # curl is already mandatory (almost) and checked elsewhere
10903     if test "$enable_curl" = "no"; then
10904         AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10905     fi
10906     ;;
10907 serf)
10908     AC_MSG_RESULT([serf])
10909     # Check for system apr-util
10910     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10911                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10912                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10913     if test "$COM" = "MSC"; then
10914         APR_LIB_DIR="LibR"
10915         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10916         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10917     fi
10919     # Check for system serf
10920     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10921     ;;
10922 neon)
10923     AC_MSG_RESULT([neon])
10924     # Check for system neon
10925     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10926     if test "$with_system_neon" = "yes"; then
10927         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10928     else
10929         NEON_VERSION=0312
10930     fi
10931     AC_SUBST(NEON_VERSION)
10932     ;;
10934     AC_MSG_RESULT([none, disabled])
10935     WITH_WEBDAV=""
10936     ;;
10937 esac
10938 AC_SUBST(WITH_WEBDAV)
10940 dnl ===================================================================
10941 dnl Check for disabling cve_tests
10942 dnl ===================================================================
10943 AC_MSG_CHECKING([whether to execute CVE tests])
10944 # If not explicitly enabled or disabled, default
10945 if test -z "$enable_cve_tests"; then
10946     case "$OS" in
10947     WNT)
10948         # Default cves off for Windows with its wild and wonderful
10949         # variety of AV software kicking in and panicking
10950         enable_cve_tests=no
10951         ;;
10952     *)
10953         # otherwise yes
10954         enable_cve_tests=yes
10955         ;;
10956     esac
10958 if test "$enable_cve_tests" = "no"; then
10959     AC_MSG_RESULT([no])
10960     DISABLE_CVE_TESTS=TRUE
10961     AC_SUBST(DISABLE_CVE_TESTS)
10962 else
10963     AC_MSG_RESULT([yes])
10966 dnl ===================================================================
10967 dnl Check for enabling chart XShape tests
10968 dnl ===================================================================
10969 AC_MSG_CHECKING([whether to execute chart XShape tests])
10970 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10971     AC_MSG_RESULT([yes])
10972     ENABLE_CHART_TESTS=TRUE
10973     AC_SUBST(ENABLE_CHART_TESTS)
10974 else
10975     AC_MSG_RESULT([no])
10978 dnl ===================================================================
10979 dnl Check for system openssl
10980 dnl ===================================================================
10981 ENABLE_OPENSSL=
10982 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10983 if test "$enable_openssl" = "yes"; then
10984     AC_MSG_RESULT([no])
10985     ENABLE_OPENSSL=TRUE
10986     if test "$_os" = Darwin ; then
10987         # OpenSSL is deprecated when building for 10.7 or later.
10988         #
10989         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10990         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10992         with_system_openssl=no
10993         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10994     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10995             && test "$with_system_openssl" != "no"; then
10996         with_system_openssl=yes
10997         SYSTEM_OPENSSL=TRUE
10998         OPENSSL_CFLAGS=
10999         OPENSSL_LIBS="-lssl -lcrypto"
11000     else
11001         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11002     fi
11003     if test "$with_system_openssl" = "yes"; then
11004         AC_MSG_CHECKING([whether openssl supports SHA512])
11005         AC_LANG_PUSH([C])
11006         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11007             SHA512_CTX context;
11008 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11009         AC_LANG_POP(C)
11010     fi
11011 else
11012     AC_MSG_RESULT([yes])
11014     # warn that although OpenSSL is disabled, system libraries may depend on it
11015     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11016     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11019 AC_SUBST([ENABLE_OPENSSL])
11021 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11022     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11023         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11024         enable_cipher_openssl_backend=no
11025     else
11026         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11027     fi
11029 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11030 ENABLE_CIPHER_OPENSSL_BACKEND=
11031 if test "$enable_cipher_openssl_backend" = yes; then
11032     AC_MSG_RESULT([yes])
11033     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11034 else
11035     AC_MSG_RESULT([no])
11037 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11039 dnl ===================================================================
11040 dnl Select the crypto backends used by LO
11041 dnl ===================================================================
11043 if test "$build_crypto" = yes; then
11044     if test "$OS" = WNT; then
11045         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11046         AC_DEFINE([USE_CRYPTO_MSCAPI])
11047     elif test "$ENABLE_NSS" = TRUE; then
11048         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11049         AC_DEFINE([USE_CRYPTO_NSS])
11050     fi
11053 dnl ===================================================================
11054 dnl Check for building gnutls
11055 dnl ===================================================================
11056 AC_MSG_CHECKING([whether to use gnutls])
11057 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
11058     AC_MSG_RESULT([yes])
11059     AM_PATH_LIBGCRYPT()
11060     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
11061         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
11062                       available in the system to use as replacement.]]))
11063     FilterLibs "${LIBGCRYPT_LIBS}"
11064     LIBGCRYPT_LIBS="${filteredlibs}"
11065 else
11066     AC_MSG_RESULT([no])
11069 AC_SUBST([LIBGCRYPT_CFLAGS])
11070 AC_SUBST([LIBGCRYPT_LIBS])
11072 dnl ===================================================================
11073 dnl Check for system redland
11074 dnl ===================================================================
11075 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11076 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11077 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11078 if test "$with_system_redland" = "yes"; then
11079     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11080             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11081 else
11082     RAPTOR_MAJOR="0"
11083     RASQAL_MAJOR="3"
11084     REDLAND_MAJOR="0"
11086 AC_SUBST(RAPTOR_MAJOR)
11087 AC_SUBST(RASQAL_MAJOR)
11088 AC_SUBST(REDLAND_MAJOR)
11090 dnl ===================================================================
11091 dnl Check for system hunspell
11092 dnl ===================================================================
11093 AC_MSG_CHECKING([which libhunspell to use])
11094 if test "$with_system_hunspell" = "yes"; then
11095     AC_MSG_RESULT([external])
11096     SYSTEM_HUNSPELL=TRUE
11097     AC_LANG_PUSH([C++])
11098     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11099     if test "$HUNSPELL_PC" != "TRUE"; then
11100         AC_CHECK_HEADER(hunspell.hxx, [],
11101             [
11102             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11103             [AC_MSG_ERROR(hunspell headers not found.)], [])
11104             ], [])
11105         AC_CHECK_LIB([hunspell], [main], [:],
11106            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11107         HUNSPELL_LIBS=-lhunspell
11108     fi
11109     AC_LANG_POP([C++])
11110     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11111     FilterLibs "${HUNSPELL_LIBS}"
11112     HUNSPELL_LIBS="${filteredlibs}"
11113 else
11114     AC_MSG_RESULT([internal])
11115     SYSTEM_HUNSPELL=
11116     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11117     if test "$COM" = "MSC"; then
11118         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11119     else
11120         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11121     fi
11122     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11124 AC_SUBST(SYSTEM_HUNSPELL)
11125 AC_SUBST(HUNSPELL_CFLAGS)
11126 AC_SUBST(HUNSPELL_LIBS)
11128 dnl ===================================================================
11129 dnl Check for system zxing
11130 dnl ===================================================================
11131 AC_MSG_CHECKING([whether to use zxing])
11132 if test "$enable_zxing" = "no"; then
11133     AC_MSG_RESULT([no])
11134     ENABLE_ZXING=
11135     SYSTEM_ZXING=
11136 else
11137     AC_MSG_RESULT([yes])
11138     ENABLE_ZXING=TRUE
11139     AC_MSG_CHECKING([which libzxing to use])
11140     if test "$with_system_zxing" = "yes"; then
11141         AC_MSG_RESULT([external])
11142         SYSTEM_ZXING=TRUE
11143         ZXING_CFLAGS=
11144         AC_LANG_PUSH([C++])
11145         save_CXXFLAGS=$CXXFLAGS
11146         save_IFS=$IFS
11147         IFS=$P_SEP
11148         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11149             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11150             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11151             dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11152             dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11153             dnl unsetting IFS."):
11154             IFS=$save_IFS
11155             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11156             dnl ignore them here:
11157             if test -z "$i"; then
11158                 continue
11159             fi
11160             dnl TODO: White space in $i would cause problems:
11161             CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11162             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11163                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11164         done
11165         CXXFLAGS=$save_CXXFLAGS
11166         if test -z "$ZXING_CFLAGS"; then
11167             AC_MSG_ERROR(zxing headers not found.)
11168         fi
11169         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11170             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11171             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11172         AC_LANG_POP([C++])
11173         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11174         FilterLibs "${ZXING_LIBS}"
11175         ZXING_LIBS="${filteredlibs}"
11176     else
11177         AC_MSG_RESULT([internal])
11178         SYSTEM_ZXING=
11179         BUILD_TYPE="$BUILD_TYPE ZXING"
11180     fi
11181     if test "$ENABLE_ZXING" = TRUE; then
11182         AC_DEFINE(ENABLE_ZXING)
11183     fi
11185 AC_SUBST(SYSTEM_ZXING)
11186 AC_SUBST(ENABLE_ZXING)
11187 AC_SUBST(ZXING_CFLAGS)
11188 AC_SUBST(ZXING_LIBS)
11190 dnl ===================================================================
11191 dnl Check for system box2d
11192 dnl ===================================================================
11193 AC_MSG_CHECKING([which box2d to use])
11194 if test "$with_system_box2d" = "yes"; then
11195     AC_MSG_RESULT([external])
11196     SYSTEM_BOX2D=TRUE
11197     AC_LANG_PUSH([C++])
11198     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11199         [BOX2D_H_FOUND='FALSE'])
11200     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11201         _BOX2D_LIB=box2d
11202         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11203     else
11204         # fail this. there's no other alternative to check when we are here.
11205         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11206             [AC_MSG_ERROR(box2d headers not found.)])
11207         _BOX2D_LIB=Box2D
11208         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11209     fi
11210     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11211         [ AC_MSG_ERROR(box2d library not found.) ], [])
11212     BOX2D_LIBS=-l$_BOX2D_LIB
11213     AC_LANG_POP([C++])
11214     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11215     FilterLibs "${BOX2D_LIBS}"
11216     BOX2D_LIBS="${filteredlibs}"
11217 else
11218     AC_MSG_RESULT([internal])
11219     SYSTEM_BOX2D=
11220     BUILD_TYPE="$BUILD_TYPE BOX2D"
11222 AC_SUBST(SYSTEM_BOX2D)
11223 AC_SUBST(BOX2D_CFLAGS)
11224 AC_SUBST(BOX2D_LIBS)
11226 dnl ===================================================================
11227 dnl Checking for altlinuxhyph
11228 dnl ===================================================================
11229 AC_MSG_CHECKING([which altlinuxhyph to use])
11230 if test "$with_system_altlinuxhyph" = "yes"; then
11231     AC_MSG_RESULT([external])
11232     SYSTEM_HYPH=TRUE
11233     AC_CHECK_HEADER(hyphen.h, [],
11234        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11235     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11236        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11237        [#include <hyphen.h>])
11238     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11239         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11240     if test -z "$HYPHEN_LIB"; then
11241         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11242            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11243     fi
11244     if test -z "$HYPHEN_LIB"; then
11245         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11246            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11247     fi
11248 else
11249     AC_MSG_RESULT([internal])
11250     SYSTEM_HYPH=
11251     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11252     if test "$COM" = "MSC"; then
11253         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11254     else
11255         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11256     fi
11258 AC_SUBST(SYSTEM_HYPH)
11259 AC_SUBST(HYPHEN_LIB)
11261 dnl ===================================================================
11262 dnl Checking for mythes
11263 dnl ===================================================================
11264 AC_MSG_CHECKING([which mythes to use])
11265 if test "$with_system_mythes" = "yes"; then
11266     AC_MSG_RESULT([external])
11267     SYSTEM_MYTHES=TRUE
11268     AC_LANG_PUSH([C++])
11269     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11270     if test "$MYTHES_PKGCONFIG" = "no"; then
11271         AC_CHECK_HEADER(mythes.hxx, [],
11272             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11273         AC_CHECK_LIB([mythes-1.2], [main], [:],
11274             [ MYTHES_FOUND=no], [])
11275     if test "$MYTHES_FOUND" = "no"; then
11276         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11277                 [ MYTHES_FOUND=no], [])
11278     fi
11279     if test "$MYTHES_FOUND" = "no"; then
11280         AC_MSG_ERROR([mythes library not found!.])
11281     fi
11282     fi
11283     AC_LANG_POP([C++])
11284     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11285     FilterLibs "${MYTHES_LIBS}"
11286     MYTHES_LIBS="${filteredlibs}"
11287 else
11288     AC_MSG_RESULT([internal])
11289     SYSTEM_MYTHES=
11290     BUILD_TYPE="$BUILD_TYPE MYTHES"
11291     if test "$COM" = "MSC"; then
11292         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11293     else
11294         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11295     fi
11297 AC_SUBST(SYSTEM_MYTHES)
11298 AC_SUBST(MYTHES_CFLAGS)
11299 AC_SUBST(MYTHES_LIBS)
11301 dnl ===================================================================
11302 dnl How should we build the linear programming solver ?
11303 dnl ===================================================================
11305 ENABLE_COINMP=
11306 AC_MSG_CHECKING([whether to build with CoinMP])
11307 if test "$enable_coinmp" != "no"; then
11308     ENABLE_COINMP=TRUE
11309     AC_MSG_RESULT([yes])
11310     if test "$with_system_coinmp" = "yes"; then
11311         SYSTEM_COINMP=TRUE
11312         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11313         FilterLibs "${COINMP_LIBS}"
11314         COINMP_LIBS="${filteredlibs}"
11315     else
11316         BUILD_TYPE="$BUILD_TYPE COINMP"
11317     fi
11318 else
11319     AC_MSG_RESULT([no])
11321 AC_SUBST(ENABLE_COINMP)
11322 AC_SUBST(SYSTEM_COINMP)
11323 AC_SUBST(COINMP_CFLAGS)
11324 AC_SUBST(COINMP_LIBS)
11326 ENABLE_LPSOLVE=
11327 AC_MSG_CHECKING([whether to build with lpsolve])
11328 if test "$enable_lpsolve" != "no"; then
11329     ENABLE_LPSOLVE=TRUE
11330     AC_MSG_RESULT([yes])
11331 else
11332     AC_MSG_RESULT([no])
11334 AC_SUBST(ENABLE_LPSOLVE)
11336 if test "$ENABLE_LPSOLVE" = TRUE; then
11337     AC_MSG_CHECKING([which lpsolve to use])
11338     if test "$with_system_lpsolve" = "yes"; then
11339         AC_MSG_RESULT([external])
11340         SYSTEM_LPSOLVE=TRUE
11341         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11342            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11343         save_LIBS=$LIBS
11344         # some systems need this. Like Ubuntu...
11345         AC_CHECK_LIB(m, floor)
11346         AC_CHECK_LIB(dl, dlopen)
11347         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11348             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11349         LIBS=$save_LIBS
11350     else
11351         AC_MSG_RESULT([internal])
11352         SYSTEM_LPSOLVE=
11353         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11354     fi
11356 AC_SUBST(SYSTEM_LPSOLVE)
11358 dnl ===================================================================
11359 dnl Checking for libexttextcat
11360 dnl ===================================================================
11361 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11362 if test "$with_system_libexttextcat" = "yes"; then
11363     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11365 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11367 dnl ===================================================================
11368 dnl Checking for libnumbertext
11369 dnl ===================================================================
11370 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11371 if test "$with_system_libnumbertext" = "yes"; then
11372     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11373     SYSTEM_LIBNUMBERTEXT=YES
11374 else
11375     SYSTEM_LIBNUMBERTEXT=
11376     AC_LANG_PUSH([C++])
11377     save_CPPFLAGS=$CPPFLAGS
11378     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11379     AC_CHECK_HEADERS([codecvt regex])
11380     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11381             [ LIBNUMBERTEXT_CFLAGS=''
11382               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11383                            Enable libnumbertext fallback (missing number to number name conversion).])
11384             ])
11385     CPPFLAGS=$save_CPPFLAGS
11386     AC_LANG_POP([C++])
11388 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11389 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11390 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11392 dnl ***************************************
11393 dnl testing libc version for Linux...
11394 dnl ***************************************
11395 if test "$_os" = "Linux"; then
11396     AC_MSG_CHECKING([whether the libc is recent enough])
11397     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11398     #include <features.h>
11399     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11400     #error glibc >= 2.1 is required
11401     #endif
11402     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11405 dnl =========================================
11406 dnl Check for uuidgen
11407 dnl =========================================
11408 if test "$_os" = "WINNT"; then
11409     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11410     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11411     UUIDGEN=uuidgen.exe
11412     AC_SUBST(UUIDGEN)
11413 else
11414     AC_PATH_PROG([UUIDGEN], [uuidgen])
11415     if test -z "$UUIDGEN"; then
11416         AC_MSG_WARN([uuid is needed for building installation sets])
11417     fi
11420 dnl ***************************************
11421 dnl Checking for bison and flex
11422 dnl ***************************************
11423 AC_PATH_PROG(BISON, bison)
11424 if test -z "$BISON"; then
11425     AC_MSG_ERROR([no bison found in \$PATH, install it])
11426 else
11427     AC_MSG_CHECKING([the bison version])
11428     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11429     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11430     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11431     dnl cause
11432     dnl
11433     dnl   idlc/source/parser.y:222:15: error: externally available entity 'YYSTYPE' is not previously declared in an included file (if it is only used in this translation unit, put it in an unnamed namespace; otherwise, provide a declaration of it in an included file) [loplugin:external]
11434     dnl   typedef union YYSTYPE
11435     dnl           ~~~~~~^~~~~~~
11436     dnl
11437     dnl while at least 3.4.1 is know to be good:
11438     if test "$COMPILER_PLUGINS" = TRUE; then
11439         if test "$_bison_longver" -lt 2004; then
11440             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11441         fi
11442     else
11443         if test "$_bison_longver" -lt 2000; then
11444             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11445         fi
11446     fi
11448 AC_SUBST([BISON])
11450 AC_PATH_PROG(FLEX, flex)
11451 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11452     FLEX=`cygpath -m $FLEX`
11454 if test -z "$FLEX"; then
11455     AC_MSG_ERROR([no flex found in \$PATH, install it])
11456 else
11457     AC_MSG_CHECKING([the flex version])
11458     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11459     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11460         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11461     fi
11463 AC_SUBST([FLEX])
11464 dnl ***************************************
11465 dnl Checking for patch
11466 dnl ***************************************
11467 AC_PATH_PROG(PATCH, patch)
11468 if test -z "$PATCH"; then
11469     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11472 dnl On Solaris or macOS, check if --with-gnu-patch was used
11473 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11474     if test -z "$with_gnu_patch"; then
11475         GNUPATCH=$PATCH
11476     else
11477         if test -x "$with_gnu_patch"; then
11478             GNUPATCH=$with_gnu_patch
11479         else
11480             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11481         fi
11482     fi
11484     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11485     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11486         AC_MSG_RESULT([yes])
11487     else
11488         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11489     fi
11490 else
11491     GNUPATCH=$PATCH
11494 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11495     GNUPATCH=`cygpath -m $GNUPATCH`
11498 dnl We also need to check for --with-gnu-cp
11500 if test -z "$with_gnu_cp"; then
11501     # check the place where the good stuff is hidden on Solaris...
11502     if test -x /usr/gnu/bin/cp; then
11503         GNUCP=/usr/gnu/bin/cp
11504     else
11505         AC_PATH_PROGS(GNUCP, gnucp cp)
11506     fi
11507     if test -z $GNUCP; then
11508         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11509     fi
11510 else
11511     if test -x "$with_gnu_cp"; then
11512         GNUCP=$with_gnu_cp
11513     else
11514         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11515     fi
11518 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11519     GNUCP=`cygpath -m $GNUCP`
11522 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11523 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11524     AC_MSG_RESULT([yes])
11525 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11526     AC_MSG_RESULT([yes])
11527 else
11528     case "$build_os" in
11529     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11530         x_GNUCP=[\#]
11531         GNUCP=''
11532         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11533         ;;
11534     *)
11535         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11536         ;;
11537     esac
11540 AC_SUBST(GNUPATCH)
11541 AC_SUBST(GNUCP)
11542 AC_SUBST(x_GNUCP)
11544 dnl ***************************************
11545 dnl testing assembler path
11546 dnl ***************************************
11547 ML_EXE=""
11548 if test "$_os" = "WINNT"; then
11549     case "$WIN_HOST_ARCH" in
11550     x86) assembler=ml.exe ;;
11551     x64) assembler=ml64.exe ;;
11552     arm64) assembler=armasm64.exe ;;
11553     esac
11555     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11556     if test -f "$MSVC_HOST_PATH/$assembler"; then
11557         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11558         AC_MSG_RESULT([$ML_EXE])
11559     else
11560         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11561     fi
11564 AC_SUBST(ML_EXE)
11566 dnl ===================================================================
11567 dnl We need zip and unzip
11568 dnl ===================================================================
11569 AC_PATH_PROG(ZIP, zip)
11570 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11571 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11572     AC_MSG_ERROR([Zip version 3.0 or newer is required to build, please install it and make sure it is the one found first in PATH],,)
11575 AC_PATH_PROG(UNZIP, unzip)
11576 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11578 dnl ===================================================================
11579 dnl Zip must be a specific type for different build types.
11580 dnl ===================================================================
11581 if test $build_os = cygwin; then
11582     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11583         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11584     fi
11587 dnl ===================================================================
11588 dnl We need touch with -h option support.
11589 dnl ===================================================================
11590 AC_PATH_PROG(TOUCH, touch)
11591 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11592 touch "$WARNINGS_FILE"
11593 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11594     AC_MSG_ERROR([touch version with -h option support is required to build, please install it and make sure it is the one found first in PATH],,)
11597 dnl ===================================================================
11598 dnl Check for system epoxy
11599 dnl ===================================================================
11600 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11602 dnl ===================================================================
11603 dnl Set vcl option: coordinate device in double or sal_Int32
11604 dnl ===================================================================
11606 dnl disabled for now, we don't want subtle differences between OSs
11607 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11608 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11609 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11610 dnl     AC_MSG_RESULT([double])
11611 dnl else
11612 dnl     AC_MSG_RESULT([sal_Int32])
11613 dnl fi
11615 dnl ===================================================================
11616 dnl Show which vclplugs will be built.
11617 dnl ===================================================================
11618 R=""
11619 if test "$USING_X11" != TRUE; then
11620     enable_gtk3=no
11623 ENABLE_GTK3=""
11624 if test "x$enable_gtk3" = "xyes"; then
11625     ENABLE_GTK3="TRUE"
11626     AC_DEFINE(ENABLE_GTK3)
11627     R="$R gtk3"
11629 AC_SUBST(ENABLE_GTK3)
11631 ENABLE_GTK3_KDE5=""
11632 if test "x$enable_gtk3_kde5" = "xyes"; then
11633     ENABLE_GTK3_KDE5="TRUE"
11634     AC_DEFINE(ENABLE_GTK3_KDE5)
11635     R="$R gtk3_kde5"
11637 AC_SUBST(ENABLE_GTK3_KDE5)
11639 ENABLE_GTK4=""
11640 if test "x$enable_gtk4" = "xyes"; then
11641     ENABLE_GTK4="TRUE"
11642     AC_DEFINE(ENABLE_GTK4)
11643     R="$R gtk4"
11645 AC_SUBST(ENABLE_GTK4)
11647 ENABLE_QT5=""
11648 if test "x$enable_qt5" = "xyes"; then
11649     ENABLE_QT5="TRUE"
11650     AC_DEFINE(ENABLE_QT5)
11651     R="$R qt5"
11653 AC_SUBST(ENABLE_QT5)
11655 ENABLE_QT6=""
11656 if test "x$enable_qt6" = "xyes"; then
11657     ENABLE_QT6="TRUE"
11658     AC_DEFINE(ENABLE_QT6)
11659     R="$R qt6"
11661 AC_SUBST(ENABLE_QT6)
11664 ENABLE_KF5=""
11665 if test "x$enable_kf5" = "xyes"; then
11666     ENABLE_KF5="TRUE"
11667     AC_DEFINE(ENABLE_KF5)
11668     R="$R kf5"
11670 AC_SUBST(ENABLE_KF5)
11672 if test "x$USING_X11" = "xyes"; then
11673     R="$R gen"
11676 if test "$_os" = "WINNT"; then
11677     R="$R win"
11678 elif test "$_os" = "Darwin"; then
11679     R="$R osx"
11680 elif test "$_os" = "iOS"; then
11681     R="ios"
11682 elif test "$_os" = Android; then
11683     R="android"
11686 build_vcl_plugins="$R"
11687 if test -z "$build_vcl_plugins"; then
11688     build_vcl_plugins=" none"
11690 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11691 VCL_PLUGIN_INFO=$R
11692 AC_SUBST([VCL_PLUGIN_INFO])
11694 dnl ===================================================================
11695 dnl Check for GTK libraries
11696 dnl ===================================================================
11698 GTK3_CFLAGS=""
11699 GTK3_LIBS=""
11700 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11701     if test "$with_system_cairo" = no; then
11702         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11703     fi
11704     : ${with_system_cairo:=yes}
11705     PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo)
11706     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11707     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11708     FilterLibs "${GTK3_LIBS}"
11709     GTK3_LIBS="${filteredlibs}"
11711     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11712     if test "$with_system_epoxy" != "yes"; then
11713         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11714         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11715                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11716     fi
11718 AC_SUBST(GTK3_LIBS)
11719 AC_SUBST(GTK3_CFLAGS)
11721 GTK4_CFLAGS=""
11722 GTK4_LIBS=""
11723 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11724     if test "$with_system_cairo" = no; then
11725         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11726     fi
11727     : ${with_system_cairo:=yes}
11728     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11729     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11730     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11731     FilterLibs "${GTK4_LIBS}"
11732     GTK4_LIBS="${filteredlibs}"
11734     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11735     if test "$with_system_epoxy" != "yes"; then
11736         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11737         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11738                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11739     fi
11741 AC_SUBST(GTK4_LIBS)
11742 AC_SUBST(GTK4_CFLAGS)
11744 if test "$enable_introspection" = yes; then
11745     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11746         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11747     else
11748         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11749     fi
11752 dnl ===================================================================
11753 dnl check for dbus support
11754 dnl ===================================================================
11755 ENABLE_DBUS=""
11756 DBUS_CFLAGS=""
11757 DBUS_LIBS=""
11758 DBUS_GLIB_CFLAGS=""
11759 DBUS_GLIB_LIBS=""
11760 DBUS_HAVE_GLIB=""
11762 if test "$enable_dbus" = "no"; then
11763     test_dbus=no
11766 AC_MSG_CHECKING([whether to enable DBUS support])
11767 if test "$test_dbus" = "yes"; then
11768     ENABLE_DBUS="TRUE"
11769     AC_MSG_RESULT([yes])
11770     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11771     AC_DEFINE(ENABLE_DBUS)
11772     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11773     FilterLibs "${DBUS_LIBS}"
11774     DBUS_LIBS="${filteredlibs}"
11776     # Glib is needed for BluetoothServer
11777     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11778     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11779         [
11780             DBUS_HAVE_GLIB="TRUE"
11781             AC_DEFINE(DBUS_HAVE_GLIB,1)
11782         ],
11783         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11784     )
11785 else
11786     AC_MSG_RESULT([no])
11789 AC_SUBST(ENABLE_DBUS)
11790 AC_SUBST(DBUS_CFLAGS)
11791 AC_SUBST(DBUS_LIBS)
11792 AC_SUBST(DBUS_GLIB_CFLAGS)
11793 AC_SUBST(DBUS_GLIB_LIBS)
11794 AC_SUBST(DBUS_HAVE_GLIB)
11796 AC_MSG_CHECKING([whether to enable Impress remote control])
11797 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11798     AC_MSG_RESULT([yes])
11799     ENABLE_SDREMOTE=TRUE
11800     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11801         <true/>"
11802     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11804     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11805         # The Bluetooth code doesn't compile with macOS SDK 10.15
11806         if test "$enable_sdremote_bluetooth" = yes; then
11807             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11808         fi
11809         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11810         enable_sdremote_bluetooth=no
11811     fi
11812     # If not explicitly enabled or disabled, default
11813     if test -z "$enable_sdremote_bluetooth"; then
11814         case "$OS" in
11815         LINUX|MACOSX|WNT)
11816             # Default to yes for these
11817             enable_sdremote_bluetooth=yes
11818             ;;
11819         *)
11820             # otherwise no
11821             enable_sdremote_bluetooth=no
11822             ;;
11823         esac
11824     fi
11825     # $enable_sdremote_bluetooth is guaranteed non-empty now
11827     if test "$enable_sdremote_bluetooth" != "no"; then
11828         if test "$OS" = "LINUX"; then
11829             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11830                 AC_MSG_RESULT([yes])
11831                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11832                 dnl ===================================================================
11833                 dnl Check for system bluez
11834                 dnl ===================================================================
11835                 AC_MSG_CHECKING([which Bluetooth header to use])
11836                 if test "$with_system_bluez" = "yes"; then
11837                     AC_MSG_RESULT([external])
11838                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11839                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11840                     SYSTEM_BLUEZ=TRUE
11841                 else
11842                     AC_MSG_RESULT([internal])
11843                     SYSTEM_BLUEZ=
11844                 fi
11845             else
11846                 AC_MSG_RESULT([no, dbus disabled])
11847                 ENABLE_SDREMOTE_BLUETOOTH=
11848                 SYSTEM_BLUEZ=
11849             fi
11850         else
11851             AC_MSG_RESULT([yes])
11852             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11853             SYSTEM_BLUEZ=
11854         fi
11855     else
11856         AC_MSG_RESULT([no])
11857         ENABLE_SDREMOTE_BLUETOOTH=
11858         SYSTEM_BLUEZ=
11859         SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11860         <key>com.apple.security.device.bluetooth</key>
11861         <true/>"
11862     fi
11863 else
11864     ENABLE_SDREMOTE=
11865     SYSTEM_BLUEZ=
11866     AC_MSG_RESULT([no])
11868 AC_SUBST(ENABLE_SDREMOTE)
11869 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11870 AC_SUBST(SDREMOTE_ENTITLEMENT)
11871 AC_SUBST(SYSTEM_BLUEZ)
11873 dnl ===================================================================
11874 dnl Check whether to enable GIO support
11875 dnl ===================================================================
11876 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11877     AC_MSG_CHECKING([whether to enable GIO support])
11878     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11879         dnl Need at least 2.26 for the dbus support.
11880         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11881                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11882         if test "$ENABLE_GIO" = "TRUE"; then
11883             AC_DEFINE(ENABLE_GIO)
11884             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11885             FilterLibs "${GIO_LIBS}"
11886             GIO_LIBS="${filteredlibs}"
11887         fi
11888     else
11889         AC_MSG_RESULT([no])
11890     fi
11892 AC_SUBST(ENABLE_GIO)
11893 AC_SUBST(GIO_CFLAGS)
11894 AC_SUBST(GIO_LIBS)
11897 dnl ===================================================================
11899 SPLIT_APP_MODULES=""
11900 if test "$enable_split_app_modules" = "yes"; then
11901     SPLIT_APP_MODULES="TRUE"
11903 AC_SUBST(SPLIT_APP_MODULES)
11905 SPLIT_OPT_FEATURES=""
11906 if test "$enable_split_opt_features" = "yes"; then
11907     SPLIT_OPT_FEATURES="TRUE"
11909 AC_SUBST(SPLIT_OPT_FEATURES)
11911 dnl ===================================================================
11912 dnl Check whether the GStreamer libraries are available.
11913 dnl ===================================================================
11915 ENABLE_GSTREAMER_1_0=""
11917 if test "$test_gstreamer_1_0" = yes; then
11919     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11920     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11921         ENABLE_GSTREAMER_1_0="TRUE"
11922         AC_MSG_RESULT([yes])
11923         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11924         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11925         FilterLibs "${GSTREAMER_1_0_LIBS}"
11926         GSTREAMER_1_0_LIBS="${filteredlibs}"
11927         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11928     else
11929         AC_MSG_RESULT([no])
11930     fi
11932 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11933 AC_SUBST(GSTREAMER_1_0_LIBS)
11934 AC_SUBST(ENABLE_GSTREAMER_1_0)
11936 ENABLE_OPENGL_TRANSITIONS=
11937 ENABLE_OPENGL_CANVAS=
11938 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11939    : # disable
11940 elif test "$_os" = "Darwin"; then
11941     # We use frameworks on macOS, no need for detail checks
11942     ENABLE_OPENGL_TRANSITIONS=TRUE
11943     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11944     ENABLE_OPENGL_CANVAS=TRUE
11945 elif test $_os = WINNT; then
11946     ENABLE_OPENGL_TRANSITIONS=TRUE
11947     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11948     ENABLE_OPENGL_CANVAS=TRUE
11949 else
11950     if test "$USING_X11" = TRUE; then
11951         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11952         ENABLE_OPENGL_TRANSITIONS=TRUE
11953         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11954         ENABLE_OPENGL_CANVAS=TRUE
11955     fi
11958 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11959 AC_SUBST(ENABLE_OPENGL_CANVAS)
11961 dnl =================================================
11962 dnl Check whether to build with OpenCL support.
11963 dnl =================================================
11965 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11966     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11967     # platform (optional at run-time, used through clew).
11968     BUILD_TYPE="$BUILD_TYPE OPENCL"
11969     AC_DEFINE(HAVE_FEATURE_OPENCL)
11972 dnl =================================================
11973 dnl Check whether to build with dconf support.
11974 dnl =================================================
11976 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11977     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11978         if test "$enable_dconf" = yes; then
11979             AC_MSG_ERROR([dconf not found])
11980         else
11981             enable_dconf=no
11982         fi])
11984 AC_MSG_CHECKING([whether to enable dconf])
11985 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11986     DCONF_CFLAGS=
11987     DCONF_LIBS=
11988     ENABLE_DCONF=
11989     AC_MSG_RESULT([no])
11990 else
11991     ENABLE_DCONF=TRUE
11992     AC_DEFINE(ENABLE_DCONF)
11993     AC_MSG_RESULT([yes])
11995 AC_SUBST([DCONF_CFLAGS])
11996 AC_SUBST([DCONF_LIBS])
11997 AC_SUBST([ENABLE_DCONF])
11999 # pdf import?
12000 AC_MSG_CHECKING([whether to build the PDF import feature])
12001 ENABLE_PDFIMPORT=
12002 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12003     AC_MSG_RESULT([yes])
12004     ENABLE_PDFIMPORT=TRUE
12005     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12006 else
12007     AC_MSG_RESULT([no])
12010 # Pdfium?
12011 AC_MSG_CHECKING([whether to build PDFium])
12012 ENABLE_PDFIUM=
12013 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12014     AC_MSG_RESULT([yes])
12015     ENABLE_PDFIUM=TRUE
12016     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12017 else
12018     AC_MSG_RESULT([no])
12020 AC_SUBST(ENABLE_PDFIUM)
12022 if test "$ENABLE_PDFIUM" = "TRUE"; then
12023         AC_MSG_CHECKING([which OpenJPEG library to use])
12024         if test "$with_system_openjpeg" = "yes"; then
12025                 SYSTEM_OPENJPEG2=TRUE
12026                 AC_MSG_RESULT([external])
12027                 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12028                 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12029                 FilterLibs "${OPENJPEG2_LIBS}"
12030                 OPENJPEG2_LIBS="${filteredlibs}"
12031         else
12032                 SYSTEM_OPENJPEG2=FALSE
12033                 AC_MSG_RESULT([internal])
12034         fi
12035         AC_MSG_CHECKING([which Abseil library to use])
12036         if test "$with_system_abseil" = "yes"; then
12037                 AC_MSG_RESULT([external])
12038                 SYSTEM_ABSEIL=TRUE
12039                 AC_LANG_PUSH([C++])
12040                 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12041                         [AC_MSG_ERROR(abseil headers not found.)], [])
12042                 #ABSEIL_CFLAGS=-I/usr/include
12043                 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
12044                         [ AC_MSG_ERROR([libabsl_bad_optional_access library not found.]) ])
12045                 AC_LANG_POP([C++])
12046                 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12047                 FilterLibs "${ABSEIL_LIBS}"
12048                 ABSEIL_LIBS="${filteredlibs}"
12049         else
12050                 AC_MSG_RESULT([internal])
12051         fi
12053 AC_SUBST(SYSTEM_OPENJPEG2)
12054 AC_SUBST(SYSTEM_ABSEIL)
12055 AC_SUBST(ABSEIL_CFLAGS)
12056 AC_SUBST(ABSEIL_LIBS)
12058 dnl ===================================================================
12059 dnl Check for poppler
12060 dnl ===================================================================
12061 ENABLE_POPPLER=
12062 AC_MSG_CHECKING([whether to build Poppler])
12063 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12064     AC_MSG_RESULT([yes])
12065     ENABLE_POPPLER=TRUE
12066     AC_DEFINE(HAVE_FEATURE_POPPLER)
12067 else
12068     AC_MSG_RESULT([no])
12070 AC_SUBST(ENABLE_POPPLER)
12072 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12073     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12076 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12077     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12080 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12081     dnl ===================================================================
12082     dnl Check for system poppler
12083     dnl ===================================================================
12084     AC_MSG_CHECKING([which PDF import poppler to use])
12085     if test "$with_system_poppler" = "yes"; then
12086         AC_MSG_RESULT([external])
12087         SYSTEM_POPPLER=TRUE
12088         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12089         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12090         FilterLibs "${POPPLER_LIBS}"
12091         POPPLER_LIBS="${filteredlibs}"
12092     else
12093         AC_MSG_RESULT([internal])
12094         SYSTEM_POPPLER=
12095         BUILD_TYPE="$BUILD_TYPE POPPLER"
12096     fi
12097     AC_DEFINE([ENABLE_PDFIMPORT],1)
12099 AC_SUBST(ENABLE_PDFIMPORT)
12100 AC_SUBST(SYSTEM_POPPLER)
12101 AC_SUBST(POPPLER_CFLAGS)
12102 AC_SUBST(POPPLER_LIBS)
12104 # Skia?
12105 ENABLE_SKIA=
12106 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12107     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12108     if test "$SYSTEM_FREETYPE" = TRUE; then
12109         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12110             [skia_freetype_ok=yes],
12111             [skia_freetype_ok=no])
12112     else # internal is ok
12113         skia_freetype_ok=yes
12114     fi
12115     AC_MSG_CHECKING([whether to build Skia])
12116     if test "$skia_freetype_ok" = "yes"; then
12117         if test "$enable_skia" = "debug"; then
12118             AC_MSG_RESULT([yes (debug)])
12119             ENABLE_SKIA_DEBUG=TRUE
12120         else
12121             AC_MSG_RESULT([yes])
12122             ENABLE_SKIA_DEBUG=
12123         fi
12124         ENABLE_SKIA=TRUE
12125         AC_DEFINE(HAVE_FEATURE_SKIA)
12126         BUILD_TYPE="$BUILD_TYPE SKIA"
12128         if test "$OS" = "MACOSX"; then
12129             AC_DEFINE(SK_SUPPORT_GPU,1)
12130             AC_DEFINE(SK_METAL,1)
12131             SKIA_GPU=METAL
12132             AC_SUBST(SKIA_GPU)
12133         else
12134             AC_DEFINE(SK_SUPPORT_GPU,1)
12135             AC_DEFINE(SK_VULKAN,1)
12136             SKIA_GPU=VULKAN
12137             AC_SUBST(SKIA_GPU)
12138         fi
12140         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12141             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12142             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12143         fi
12144     else
12145         AC_MSG_RESULT([no (freetype too old)])
12146         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12147     fi
12149 else
12150     AC_MSG_CHECKING([whether to build Skia])
12151     AC_MSG_RESULT([no])
12153 AC_SUBST(ENABLE_SKIA)
12154 AC_SUBST(ENABLE_SKIA_DEBUG)
12156 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12157 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12158 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12159 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12160 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12161 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12162 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12163 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12164 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12165 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12166 HAVE_LO_CLANG_DLLEXPORTINLINES=
12168 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12169     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12170         AC_MSG_CHECKING([for Clang])
12171         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12172     else
12173         if test "$_os" = "WINNT"; then
12174             AC_MSG_CHECKING([for clang-cl])
12175             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12176                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12177                 dnl explicitly set -m32/-m64
12178                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12179                 LO_CLANG_CXX="$LO_CLANG_CC"
12180                 AC_MSG_RESULT([$LO_CLANG_CC])
12181             else
12182                 AC_MSG_RESULT([no])
12183             fi
12184         else
12185             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12186             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12187         fi
12188     fi
12189     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12190         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12191         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12192         if test "$clang2_ver" -lt 50002; then
12193             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12194             LO_CLANG_CC=
12195             LO_CLANG_CXX=
12196         fi
12197     fi
12198     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12199         save_CXX="$CXX"
12200         CXX="$LO_CLANG_CXX"
12201         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12202         AC_LANG_PUSH([C++])
12203         save_CXXFLAGS=$CXXFLAGS
12204         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12205         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12206                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12207                 AC_MSG_RESULT([yes])
12208             ], [AC_MSG_RESULT([no])])
12209         CXXFLAGS=$save_CXXFLAGS
12210         AC_LANG_POP([C++])
12211         CXX="$save_CXX"
12212         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12213             AC_MSG_ERROR([Clang compiler does not support -Zc:dllexportInlines-. The Skia library needs to be built using a newer Clang version, or use --disable-skia.])
12214         fi
12215     fi
12216     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12217         # Skia is the default on Windows and Mac, so hard-require Clang.
12218         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12219         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12220             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12221         else
12222             AC_MSG_WARN([Clang compiler not found.])
12223         fi
12224     else
12226         save_CXX="$CXX"
12227         CXX="$LO_CLANG_CXX"
12228         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12229         flag_sse2=-msse2
12230         flag_ssse3=-mssse3
12231         flag_sse41=-msse4.1
12232         flag_sse42=-msse4.2
12233         flag_avx=-mavx
12234         flag_avx2=-mavx2
12235         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12236         flag_avx512f=-mavx512f
12237         flag_f16c=-mf16c
12238         flag_fma=-mfma
12240         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12241         AC_LANG_PUSH([C++])
12242         save_CXXFLAGS=$CXXFLAGS
12243         CXXFLAGS="$CXXFLAGS $flag_sse2"
12244         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12245             #include <emmintrin.h>
12246             int main () {
12247                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12248                 c = _mm_xor_si128 (a, b);
12249                 return 0;
12250             }
12251             ])],
12252             [can_compile_sse2=yes],
12253             [can_compile_sse2=no])
12254         AC_LANG_POP([C++])
12255         CXXFLAGS=$save_CXXFLAGS
12256         AC_MSG_RESULT([${can_compile_sse2}])
12257         if test "${can_compile_sse2}" = "yes" ; then
12258             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12259         fi
12261         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12262         AC_LANG_PUSH([C++])
12263         save_CXXFLAGS=$CXXFLAGS
12264         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12265         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12266             #include <tmmintrin.h>
12267             int main () {
12268                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12269                 c = _mm_maddubs_epi16 (a, b);
12270                 return 0;
12271             }
12272             ])],
12273             [can_compile_ssse3=yes],
12274             [can_compile_ssse3=no])
12275         AC_LANG_POP([C++])
12276         CXXFLAGS=$save_CXXFLAGS
12277         AC_MSG_RESULT([${can_compile_ssse3}])
12278         if test "${can_compile_ssse3}" = "yes" ; then
12279             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12280         fi
12282         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12283         AC_LANG_PUSH([C++])
12284         save_CXXFLAGS=$CXXFLAGS
12285         CXXFLAGS="$CXXFLAGS $flag_sse41"
12286         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12287             #include <smmintrin.h>
12288             int main () {
12289                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12290                 c = _mm_cmpeq_epi64 (a, b);
12291                 return 0;
12292             }
12293             ])],
12294             [can_compile_sse41=yes],
12295             [can_compile_sse41=no])
12296         AC_LANG_POP([C++])
12297         CXXFLAGS=$save_CXXFLAGS
12298         AC_MSG_RESULT([${can_compile_sse41}])
12299         if test "${can_compile_sse41}" = "yes" ; then
12300             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12301         fi
12303         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12304         AC_LANG_PUSH([C++])
12305         save_CXXFLAGS=$CXXFLAGS
12306         CXXFLAGS="$CXXFLAGS $flag_sse42"
12307         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12308             #include <nmmintrin.h>
12309             int main () {
12310                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12311                 c = _mm_cmpgt_epi64 (a, b);
12312                 return 0;
12313             }
12314             ])],
12315             [can_compile_sse42=yes],
12316             [can_compile_sse42=no])
12317         AC_LANG_POP([C++])
12318         CXXFLAGS=$save_CXXFLAGS
12319         AC_MSG_RESULT([${can_compile_sse42}])
12320         if test "${can_compile_sse42}" = "yes" ; then
12321             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12322         fi
12324         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12325         AC_LANG_PUSH([C++])
12326         save_CXXFLAGS=$CXXFLAGS
12327         CXXFLAGS="$CXXFLAGS $flag_avx"
12328         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12329             #include <immintrin.h>
12330             int main () {
12331                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12332                 c = _mm256_xor_ps(a, b);
12333                 return 0;
12334             }
12335             ])],
12336             [can_compile_avx=yes],
12337             [can_compile_avx=no])
12338         AC_LANG_POP([C++])
12339         CXXFLAGS=$save_CXXFLAGS
12340         AC_MSG_RESULT([${can_compile_avx}])
12341         if test "${can_compile_avx}" = "yes" ; then
12342             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12343         fi
12345         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12346         AC_LANG_PUSH([C++])
12347         save_CXXFLAGS=$CXXFLAGS
12348         CXXFLAGS="$CXXFLAGS $flag_avx2"
12349         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12350             #include <immintrin.h>
12351             int main () {
12352                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12353                 c = _mm256_maddubs_epi16(a, b);
12354                 return 0;
12355             }
12356             ])],
12357             [can_compile_avx2=yes],
12358             [can_compile_avx2=no])
12359         AC_LANG_POP([C++])
12360         CXXFLAGS=$save_CXXFLAGS
12361         AC_MSG_RESULT([${can_compile_avx2}])
12362         if test "${can_compile_avx2}" = "yes" ; then
12363             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12364         fi
12366         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12367         AC_LANG_PUSH([C++])
12368         save_CXXFLAGS=$CXXFLAGS
12369         CXXFLAGS="$CXXFLAGS $flag_avx512"
12370         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12371             #include <immintrin.h>
12372             int main () {
12373                 __m512i a = _mm512_loadu_si512(0);
12374                 __m512d v1 = _mm512_load_pd(0);
12375                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12376                 __m512d v2 = _mm512_abs_pd(v1);
12377                 return 0;
12378             }
12379             ])],
12380             [can_compile_avx512=yes],
12381             [can_compile_avx512=no])
12382         AC_LANG_POP([C++])
12383         CXXFLAGS=$save_CXXFLAGS
12384         AC_MSG_RESULT([${can_compile_avx512}])
12385         if test "${can_compile_avx512}" = "yes" ; then
12386             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12387             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12388         fi
12390         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12391         AC_LANG_PUSH([C++])
12392         save_CXXFLAGS=$CXXFLAGS
12393         CXXFLAGS="$CXXFLAGS $flag_f16c"
12394         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12395             #include <immintrin.h>
12396             int main () {
12397                 __m128i a = _mm_set1_epi32 (0);
12398                 __m128 c;
12399                 c = _mm_cvtph_ps(a);
12400                 return 0;
12401             }
12402             ])],
12403             [can_compile_f16c=yes],
12404             [can_compile_f16c=no])
12405         AC_LANG_POP([C++])
12406         CXXFLAGS=$save_CXXFLAGS
12407         AC_MSG_RESULT([${can_compile_f16c}])
12408         if test "${can_compile_f16c}" = "yes" ; then
12409             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12410         fi
12412         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12413         AC_LANG_PUSH([C++])
12414         save_CXXFLAGS=$CXXFLAGS
12415         CXXFLAGS="$CXXFLAGS $flag_fma"
12416         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12417             #include <immintrin.h>
12418             int main () {
12419                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12420                 d = _mm256_fmadd_ps(a, b, c);
12421                 return 0;
12422             }
12423             ])],
12424             [can_compile_fma=yes],
12425             [can_compile_fma=no])
12426         AC_LANG_POP([C++])
12427         CXXFLAGS=$save_CXXFLAGS
12428         AC_MSG_RESULT([${can_compile_fma}])
12429         if test "${can_compile_fma}" = "yes" ; then
12430             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12431         fi
12433         CXX="$save_CXX"
12434     fi
12437 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12439 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12440     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12441     AC_LANG_PUSH([C])
12442     save_CC="$CC"
12443     CC="$LO_CLANG_CC"
12444     save_CFLAGS=$CFLAGS
12445     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12446     dnl an empty program will do, we're checking the compiler flags
12447     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12448                       [use_ccache=yes], [use_ccache=no])
12449     CFLAGS=$save_CFLAGS
12450     CC=$save_CC
12451     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12452         AC_MSG_RESULT([yes])
12453     else
12454         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12455         AC_MSG_RESULT([no])
12456     fi
12457     AC_LANG_POP([C])
12459     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12460     AC_LANG_PUSH([C++])
12461     save_CXX="$CXX"
12462     CXX="$LO_CLANG_CXX"
12463     save_CXXFLAGS=$CXXFLAGS
12464     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12465     dnl an empty program will do, we're checking the compiler flags
12466     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12467                       [use_ccache=yes], [use_ccache=no])
12468     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12469         AC_MSG_RESULT([yes])
12470     else
12471         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12472         AC_MSG_RESULT([no])
12473     fi
12474     CXXFLAGS=$save_CXXFLAGS
12475     CXX=$save_CXX
12476     AC_LANG_POP([C++])
12479 AC_SUBST(LO_CLANG_CC)
12480 AC_SUBST(LO_CLANG_CXX)
12481 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12482 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12483 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12484 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12485 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12486 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12487 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12488 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12489 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12490 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12491 AC_SUBST(CLANG_USE_LD)
12492 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12494 SYSTEM_GPGMEPP=
12496 if test "$enable_gpgmepp" = no; then
12497     AC_MSG_CHECKING([whether to enable gpgmepp])
12498     AC_MSG_RESULT([no])
12499 elif test "$enable_mpl_subset" = "yes"; then
12500     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12501     AC_MSG_RESULT([yes])
12502 elif test "$enable_fuzzers" = "yes"; then
12503     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12504     AC_MSG_RESULT([yes])
12505 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12506     dnl ===================================================================
12507     dnl Check for system gpgme
12508     dnl ===================================================================
12509     AC_MSG_CHECKING([which gpgmepp to use])
12510     if test "$with_system_gpgmepp" = "yes"; then
12511         AC_MSG_RESULT([external])
12512         SYSTEM_GPGMEPP=TRUE
12514         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12515         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12516             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12517         # progress_callback is the only func with plain C linkage
12518         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12519         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12520             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12521         AC_CHECK_HEADER(gpgme.h, [],
12522             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12523     else
12524         AC_MSG_RESULT([internal])
12525         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12527         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12528         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12529         if test "$_os" != "WINNT"; then
12530             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12531             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12532         fi
12533     fi
12534     ENABLE_GPGMEPP=TRUE
12535     AC_DEFINE([HAVE_FEATURE_GPGME])
12536     AC_PATH_PROG(GPG, gpg)
12537     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12538     # so let's exclude that manually for the moment
12539     if test -n "$GPG" -a "$_os" != "WINNT"; then
12540         # make sure we not only have a working gpgme, but a full working
12541         # gpg installation to run OpenPGP signature verification
12542         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12543     fi
12544     if test "$_os" = "Linux"; then
12545       uid=`id -u`
12546       AC_MSG_CHECKING([for /run/user/$uid])
12547       if test -d /run/user/$uid; then
12548         AC_MSG_RESULT([yes])
12549         AC_PATH_PROG(GPGCONF, gpgconf)
12551         # Older versions of gpgconf are not working as expected, since
12552         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12553         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12554         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12555         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12556         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12557         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12558         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12559           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12560           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12561           if $GPGCONF --dump-options > /dev/null ; then
12562             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12563               AC_MSG_RESULT([yes])
12564               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12565               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12566             else
12567               AC_MSG_RESULT([no])
12568             fi
12569           else
12570             AC_MSG_RESULT([no. missing or broken gpgconf?])
12571           fi
12572         else
12573           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12574         fi
12575       else
12576         AC_MSG_RESULT([no])
12577      fi
12578    fi
12580 AC_SUBST(ENABLE_GPGMEPP)
12581 AC_SUBST(SYSTEM_GPGMEPP)
12582 AC_SUBST(GPG_ERROR_CFLAGS)
12583 AC_SUBST(GPG_ERROR_LIBS)
12584 AC_SUBST(LIBASSUAN_CFLAGS)
12585 AC_SUBST(LIBASSUAN_LIBS)
12586 AC_SUBST(GPGMEPP_CFLAGS)
12587 AC_SUBST(GPGMEPP_LIBS)
12589 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12590 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12591     AC_MSG_RESULT([yes])
12592     ENABLE_MEDIAWIKI=TRUE
12593     BUILD_TYPE="$BUILD_TYPE XSLTML"
12594     if test  "x$with_java" = "xno"; then
12595         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12596     fi
12597 else
12598     AC_MSG_RESULT([no])
12599     ENABLE_MEDIAWIKI=
12600     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12602 AC_SUBST(ENABLE_MEDIAWIKI)
12604 AC_MSG_CHECKING([whether to build the Report Builder])
12605 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12606     AC_MSG_RESULT([yes])
12607     ENABLE_REPORTBUILDER=TRUE
12608     AC_MSG_CHECKING([which jfreereport libs to use])
12609     if test "$with_system_jfreereport" = "yes"; then
12610         SYSTEM_JFREEREPORT=TRUE
12611         AC_MSG_RESULT([external])
12612         if test -z $SAC_JAR; then
12613             SAC_JAR=/usr/share/java/sac.jar
12614         fi
12615         if ! test -f $SAC_JAR; then
12616              AC_MSG_ERROR(sac.jar not found.)
12617         fi
12619         if test -z $LIBXML_JAR; then
12620             if test -f /usr/share/java/libxml-1.0.0.jar; then
12621                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12622             elif test -f /usr/share/java/libxml.jar; then
12623                 LIBXML_JAR=/usr/share/java/libxml.jar
12624             else
12625                 AC_MSG_ERROR(libxml.jar replacement not found.)
12626             fi
12627         elif ! test -f $LIBXML_JAR; then
12628             AC_MSG_ERROR(libxml.jar not found.)
12629         fi
12631         if test -z $FLUTE_JAR; then
12632             if test -f /usr/share/java/flute-1.3.0.jar; then
12633                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12634             elif test -f /usr/share/java/flute.jar; then
12635                 FLUTE_JAR=/usr/share/java/flute.jar
12636             else
12637                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12638             fi
12639         elif ! test -f $FLUTE_JAR; then
12640             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12641         fi
12643         if test -z $JFREEREPORT_JAR; then
12644             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12645                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12646             elif test -f /usr/share/java/flow-engine.jar; then
12647                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12648             else
12649                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12650             fi
12651         elif ! test -f  $JFREEREPORT_JAR; then
12652                 AC_MSG_ERROR(jfreereport.jar not found.)
12653         fi
12655         if test -z $LIBLAYOUT_JAR; then
12656             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12657                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12658             elif test -f /usr/share/java/liblayout.jar; then
12659                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12660             else
12661                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12662             fi
12663         elif ! test -f $LIBLAYOUT_JAR; then
12664                 AC_MSG_ERROR(liblayout.jar not found.)
12665         fi
12667         if test -z $LIBLOADER_JAR; then
12668             if test -f /usr/share/java/libloader-1.0.0.jar; then
12669                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12670             elif test -f /usr/share/java/libloader.jar; then
12671                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12672             else
12673                 AC_MSG_ERROR(libloader.jar replacement not found.)
12674             fi
12675         elif ! test -f  $LIBLOADER_JAR; then
12676             AC_MSG_ERROR(libloader.jar not found.)
12677         fi
12679         if test -z $LIBFORMULA_JAR; then
12680             if test -f /usr/share/java/libformula-0.2.0.jar; then
12681                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12682             elif test -f /usr/share/java/libformula.jar; then
12683                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12684             else
12685                 AC_MSG_ERROR(libformula.jar replacement not found.)
12686             fi
12687         elif ! test -f $LIBFORMULA_JAR; then
12688                 AC_MSG_ERROR(libformula.jar not found.)
12689         fi
12691         if test -z $LIBREPOSITORY_JAR; then
12692             if test -f /usr/share/java/librepository-1.0.0.jar; then
12693                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12694             elif test -f /usr/share/java/librepository.jar; then
12695                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12696             else
12697                 AC_MSG_ERROR(librepository.jar replacement not found.)
12698             fi
12699         elif ! test -f $LIBREPOSITORY_JAR; then
12700             AC_MSG_ERROR(librepository.jar not found.)
12701         fi
12703         if test -z $LIBFONTS_JAR; then
12704             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12705                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12706             elif test -f /usr/share/java/libfonts.jar; then
12707                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12708             else
12709                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12710             fi
12711         elif ! test -f $LIBFONTS_JAR; then
12712                 AC_MSG_ERROR(libfonts.jar not found.)
12713         fi
12715         if test -z $LIBSERIALIZER_JAR; then
12716             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12717                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12718             elif test -f /usr/share/java/libserializer.jar; then
12719                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12720             else
12721                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12722             fi
12723         elif ! test -f $LIBSERIALIZER_JAR; then
12724                 AC_MSG_ERROR(libserializer.jar not found.)
12725         fi
12727         if test -z $LIBBASE_JAR; then
12728             if test -f /usr/share/java/libbase-1.0.0.jar; then
12729                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12730             elif test -f /usr/share/java/libbase.jar; then
12731                 LIBBASE_JAR=/usr/share/java/libbase.jar
12732             else
12733                 AC_MSG_ERROR(libbase.jar replacement not found.)
12734             fi
12735         elif ! test -f $LIBBASE_JAR; then
12736             AC_MSG_ERROR(libbase.jar not found.)
12737         fi
12739     else
12740         AC_MSG_RESULT([internal])
12741         SYSTEM_JFREEREPORT=
12742         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12743         NEED_ANT=TRUE
12744     fi
12745 else
12746     AC_MSG_RESULT([no])
12747     ENABLE_REPORTBUILDER=
12748     SYSTEM_JFREEREPORT=
12750 AC_SUBST(ENABLE_REPORTBUILDER)
12751 AC_SUBST(SYSTEM_JFREEREPORT)
12752 AC_SUBST(SAC_JAR)
12753 AC_SUBST(LIBXML_JAR)
12754 AC_SUBST(FLUTE_JAR)
12755 AC_SUBST(JFREEREPORT_JAR)
12756 AC_SUBST(LIBBASE_JAR)
12757 AC_SUBST(LIBLAYOUT_JAR)
12758 AC_SUBST(LIBLOADER_JAR)
12759 AC_SUBST(LIBFORMULA_JAR)
12760 AC_SUBST(LIBREPOSITORY_JAR)
12761 AC_SUBST(LIBFONTS_JAR)
12762 AC_SUBST(LIBSERIALIZER_JAR)
12764 # scripting provider for BeanShell?
12765 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12766 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12767     AC_MSG_RESULT([yes])
12768     ENABLE_SCRIPTING_BEANSHELL=TRUE
12770     dnl ===================================================================
12771     dnl Check for system beanshell
12772     dnl ===================================================================
12773     AC_MSG_CHECKING([which beanshell to use])
12774     if test "$with_system_beanshell" = "yes"; then
12775         AC_MSG_RESULT([external])
12776         SYSTEM_BSH=TRUE
12777         if test -z $BSH_JAR; then
12778             BSH_JAR=/usr/share/java/bsh.jar
12779         fi
12780         if ! test -f $BSH_JAR; then
12781             AC_MSG_ERROR(bsh.jar not found.)
12782         fi
12783     else
12784         AC_MSG_RESULT([internal])
12785         SYSTEM_BSH=
12786         BUILD_TYPE="$BUILD_TYPE BSH"
12787     fi
12788 else
12789     AC_MSG_RESULT([no])
12790     ENABLE_SCRIPTING_BEANSHELL=
12791     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12793 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12794 AC_SUBST(SYSTEM_BSH)
12795 AC_SUBST(BSH_JAR)
12797 # scripting provider for JavaScript?
12798 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12799 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12800     AC_MSG_RESULT([yes])
12801     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12803     dnl ===================================================================
12804     dnl Check for system rhino
12805     dnl ===================================================================
12806     AC_MSG_CHECKING([which rhino to use])
12807     if test "$with_system_rhino" = "yes"; then
12808         AC_MSG_RESULT([external])
12809         SYSTEM_RHINO=TRUE
12810         if test -z $RHINO_JAR; then
12811             RHINO_JAR=/usr/share/java/js.jar
12812         fi
12813         if ! test -f $RHINO_JAR; then
12814             AC_MSG_ERROR(js.jar not found.)
12815         fi
12816     else
12817         AC_MSG_RESULT([internal])
12818         SYSTEM_RHINO=
12819         BUILD_TYPE="$BUILD_TYPE RHINO"
12820         NEED_ANT=TRUE
12821     fi
12822 else
12823     AC_MSG_RESULT([no])
12824     ENABLE_SCRIPTING_JAVASCRIPT=
12825     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12827 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12828 AC_SUBST(SYSTEM_RHINO)
12829 AC_SUBST(RHINO_JAR)
12831 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12832 # paths should be added to library search path. So lets put all 64-bit
12833 # platforms there.
12834 supports_multilib=
12835 case "$host_cpu" in
12836 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12837     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12838         supports_multilib="yes"
12839     fi
12840     ;;
12842     ;;
12843 esac
12845 dnl ===================================================================
12846 dnl QT5 Integration
12847 dnl ===================================================================
12849 QT5_CFLAGS=""
12850 QT5_LIBS=""
12851 QMAKE5="qmake"
12852 MOC5="moc"
12853 QT5_GOBJECT_CFLAGS=""
12854 QT5_GOBJECT_LIBS=""
12855 QT5_HAVE_GOBJECT=""
12856 QT5_PLATFORMS_SRCDIR=""
12857 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12858         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12859         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12860 then
12861     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12862     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12864     if test -n "$supports_multilib"; then
12865         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12866     fi
12868     qt5_test_include="QtWidgets/qapplication.h"
12869     if test "$_os" = "Emscripten"; then
12870         qt5_test_library="libQt5Widgets.a"
12871     else
12872         qt5_test_library="libQt5Widgets.so"
12873     fi
12875     dnl Check for qmake5
12876     if test -n "$QT5DIR"; then
12877         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12878     else
12879         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12880     fi
12881     if test "$QMAKE5" = "no"; then
12882         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12883     else
12884         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12885         if test -z "$qmake5_test_ver"; then
12886             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12887         fi
12888         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12889         qt5_minimal_minor="6"
12890         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12891             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12892         else
12893             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12894         fi
12895     fi
12897     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12898     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12899     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12900     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12902     AC_MSG_CHECKING([for Qt5 headers])
12903     qt5_incdir="no"
12904     for inc_dir in $qt5_incdirs; do
12905         if test -r "$inc_dir/$qt5_test_include"; then
12906             qt5_incdir="$inc_dir"
12907             break
12908         fi
12909     done
12910     AC_MSG_RESULT([$qt5_incdir])
12911     if test "x$qt5_incdir" = "xno"; then
12912         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12913     fi
12914     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12915     AC_LANG_PUSH([C++])
12916     save_CPPFLAGS=$CPPFLAGS
12917     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12918     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12919         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12920     CPPFLAGS=$save_CPPFLAGS
12921     AC_LANG_POP([C++])
12923     AC_MSG_CHECKING([for Qt5 libraries])
12924     qt5_libdir="no"
12925     for lib_dir in $qt5_libdirs; do
12926         if test -r "$lib_dir/$qt5_test_library"; then
12927             qt5_libdir="$lib_dir"
12928             break
12929         fi
12930     done
12931     AC_MSG_RESULT([$qt5_libdir])
12932     if test "x$qt5_libdir" = "xno"; then
12933         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12934     fi
12936     if test "$_os" = "Emscripten"; then
12937         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12938             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12939         fi
12940         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12941             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12942         fi
12943     fi
12945     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12946     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12947     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12948     if test "$_os" = "Emscripten"; then
12949         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12950     fi
12952     if test "$USING_X11" = TRUE; then
12953         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12954         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12955             QT5_HAVE_XCB_ICCCM=1
12956             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12957         ],[
12958             AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)])
12959             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12960         ])
12961         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12962         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12963         QT5_USING_X11=1
12964         AC_DEFINE(QT5_USING_X11)
12965     fi
12967     dnl Check for Meta Object Compiler
12969     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12970     if test "$MOC5" = "no"; then
12971         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12972 the root of your Qt installation by exporting QT5DIR before running "configure".])
12973     fi
12975     if test "$test_gstreamer_1_0" = yes; then
12976         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12977                 QT5_HAVE_GOBJECT=1
12978                 AC_DEFINE(QT5_HAVE_GOBJECT)
12979             ],
12980             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12981         )
12982     fi
12984 AC_SUBST(QT5_CFLAGS)
12985 AC_SUBST(QT5_LIBS)
12986 AC_SUBST(MOC5)
12987 AC_SUBST(QT5_GOBJECT_CFLAGS)
12988 AC_SUBST(QT5_GOBJECT_LIBS)
12989 AC_SUBST(QT5_HAVE_GOBJECT)
12990 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12992 dnl ===================================================================
12993 dnl QT6 Integration
12994 dnl ===================================================================
12996 QT6_CFLAGS=""
12997 QT6_LIBS=""
12998 QMAKE6="qmake"
12999 MOC6="moc"
13000 QT6_PLATFORMS_SRCDIR=""
13001 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13002 then
13003     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13004     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13006     if test -n "$supports_multilib"; then
13007         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13008     fi
13010     qt6_test_include="QtWidgets/qapplication.h"
13011     if test "$_os" = "Emscripten"; then
13012         qt6_test_library="libQt6Widgets.a"
13013     else
13014         qt6_test_library="libQt6Widgets.so"
13015     fi
13017     dnl Check for qmake6
13018     if test -n "$QT6DIR"; then
13019         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13020     else
13021         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
13022     fi
13023     if test "$QMAKE6" = "no"; then
13024         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13025     else
13026         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13027         if test -z "$qmake6_test_ver"; then
13028             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13029         fi
13030         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13031     fi
13033     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13034     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13035     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13036     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13038     AC_MSG_CHECKING([for Qt6 headers])
13039     qt6_incdir="no"
13040     for inc_dir in $qt6_incdirs; do
13041         if test -r "$inc_dir/$qt6_test_include"; then
13042             qt6_incdir="$inc_dir"
13043             break
13044         fi
13045     done
13046     AC_MSG_RESULT([$qt6_incdir])
13047     if test "x$qt6_incdir" = "xno"; then
13048         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13049     fi
13050     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13051     AC_LANG_PUSH([C++])
13052     save_CPPFLAGS=$CPPFLAGS
13053     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13054     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13055         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13056     CPPFLAGS=$save_CPPFLAGS
13057     AC_LANG_POP([C++])
13059     AC_MSG_CHECKING([for Qt6 libraries])
13060     qt6_libdir="no"
13061     for lib_dir in $qt6_libdirs; do
13062         if test -r "$lib_dir/$qt6_test_library"; then
13063             qt6_libdir="$lib_dir"
13064             break
13065         fi
13066     done
13067     AC_MSG_RESULT([$qt6_libdir])
13068     if test "x$qt6_libdir" = "xno"; then
13069         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13070     fi
13072     if test "$_os" = "Emscripten"; then
13073         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13074             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13075         fi
13076         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13077             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13078         fi
13079     fi
13081     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13082     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13083     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13084     if test "$_os" = "Emscripten"; then
13085         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13086     fi
13088     if test "$USING_X11" = TRUE; then
13089         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13090         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13091         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13092         QT6_USING_X11=1
13093         AC_DEFINE(QT6_USING_X11)
13094     fi
13096     dnl Check for Meta Object Compiler
13098     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13099     if test "$MOC6" = "no"; then
13100         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13101 the root of your Qt installation by exporting QT6DIR before running "configure".])
13102     fi
13104 AC_SUBST(QT6_CFLAGS)
13105 AC_SUBST(QT6_LIBS)
13106 AC_SUBST(MOC6)
13107 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13109 dnl ===================================================================
13110 dnl KF5 Integration
13111 dnl ===================================================================
13113 KF5_CFLAGS=""
13114 KF5_LIBS=""
13115 KF5_CONFIG="kf5-config"
13116 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13117         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13118 then
13119     if test "$OS" = "HAIKU"; then
13120         haiku_arch="`echo $RTL_ARCH | tr X x`"
13121         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13122         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13123     fi
13125     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13126     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13127     if test -n "$supports_multilib"; then
13128         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13129     fi
13131     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13132     kf5_test_library="libKF5KIOFileWidgets.so"
13133     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13135     dnl kf5 KDE4 support compatibility installed
13136     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13137     if test "$KF5_CONFIG" != "no"; then
13138         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13139         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13140     fi
13142     dnl Check for KF5 headers
13143     AC_MSG_CHECKING([for KF5 headers])
13144     kf5_incdir="no"
13145     for kf5_check in $kf5_incdirs; do
13146         if test -r "$kf5_check/$kf5_test_include"; then
13147             kf5_incdir="$kf5_check/KF5"
13148             break
13149         fi
13150     done
13151     AC_MSG_RESULT([$kf5_incdir])
13152     if test "x$kf5_incdir" = "xno"; then
13153         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13154     fi
13156     dnl Check for KF5 libraries
13157     AC_MSG_CHECKING([for KF5 libraries])
13158     kf5_libdir="no"
13159     for kf5_check in $kf5_libdirs; do
13160         if test -r "$kf5_check/$kf5_test_library"; then
13161             kf5_libdir="$kf5_check"
13162             break
13163         fi
13164     done
13166     AC_MSG_RESULT([$kf5_libdir])
13167     if test "x$kf5_libdir" = "xno"; then
13168         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13169     fi
13171     KF5_CFLAGS="-I$kf5_incdir -I$kf5_incdir/KCoreAddons -I$kf5_incdir/KI18n -I$kf5_incdir/KConfigCore -I$kf5_incdir/KWindowSystem -I$kf5_incdir/KIOCore -I$kf5_incdir/KIOWidgets -I$kf5_incdir/KIOFileWidgets -I$qt5_incdir -I$qt5_incdir/QtCore -I$qt5_incdir/QtGui -I$qt5_incdir/QtWidgets -I$qt5_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13172     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13173     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13175     if test "$USING_X11" = TRUE; then
13176         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13177     fi
13179     AC_LANG_PUSH([C++])
13180     save_CXXFLAGS=$CXXFLAGS
13181     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13182     AC_MSG_CHECKING([whether KDE is >= 5.0])
13183        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13184 #include <kcoreaddons_version.h>
13186 int main(int argc, char **argv) {
13187        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13188        else return 1;
13190        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13191     CXXFLAGS=$save_CXXFLAGS
13192     AC_LANG_POP([C++])
13194 AC_SUBST(KF5_CFLAGS)
13195 AC_SUBST(KF5_LIBS)
13197 dnl ===================================================================
13198 dnl Test whether to include Evolution 2 support
13199 dnl ===================================================================
13200 AC_MSG_CHECKING([whether to enable evolution 2 support])
13201 if test "$enable_evolution2" = yes; then
13202     AC_MSG_RESULT([yes])
13203     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13204     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13205     FilterLibs "${GOBJECT_LIBS}"
13206     GOBJECT_LIBS="${filteredlibs}"
13207     ENABLE_EVOAB2="TRUE"
13208 else
13209     AC_MSG_RESULT([no])
13211 AC_SUBST(ENABLE_EVOAB2)
13212 AC_SUBST(GOBJECT_CFLAGS)
13213 AC_SUBST(GOBJECT_LIBS)
13215 dnl ===================================================================
13216 dnl Test which themes to include
13217 dnl ===================================================================
13218 AC_MSG_CHECKING([which themes to include])
13219 # if none given use default subset of available themes
13220 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13221     with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
13224 WITH_THEMES=""
13225 if test "x$with_theme" != "xno"; then
13226     for theme in $with_theme; do
13227         case $theme in
13228         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
13229         default) real_theme=colibre ;;
13230         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13231         esac
13232         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13233     done
13235 AC_MSG_RESULT([$WITH_THEMES])
13236 AC_SUBST([WITH_THEMES])
13237 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13238 for theme in $with_theme; do
13239     case $theme in
13240     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13241     *) ;;
13242     esac
13243 done
13245 ###############################################################################
13246 # Extensions checking
13247 ###############################################################################
13248 AC_MSG_CHECKING([for extensions integration])
13249 if test "x$enable_extension_integration" != "xno"; then
13250     WITH_EXTENSION_INTEGRATION=TRUE
13251     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13252     AC_MSG_RESULT([yes, use integration])
13253 else
13254     WITH_EXTENSION_INTEGRATION=
13255     AC_MSG_RESULT([no, do not integrate])
13257 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13259 dnl Should any extra extensions be included?
13260 dnl There are standalone tests for each of these below.
13261 WITH_EXTRA_EXTENSIONS=
13262 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13264 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13265 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13266 if test "x$with_java" != "xno"; then
13267     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13268     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13271 AC_MSG_CHECKING([whether to build opens___.ttf])
13272 if test "$enable_build_opensymbol" = "yes"; then
13273     AC_MSG_RESULT([yes])
13274     AC_PATH_PROG(FONTFORGE, fontforge)
13275     if test -z "$FONTFORGE"; then
13276         AC_MSG_ERROR([fontforge not installed])
13277     fi
13278 else
13279     AC_MSG_RESULT([no])
13280     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13282 AC_SUBST(FONTFORGE)
13284 dnl ===================================================================
13285 dnl Test whether to include fonts
13286 dnl ===================================================================
13287 AC_MSG_CHECKING([whether to include third-party fonts])
13288 if test "$with_fonts" != "no"; then
13289     AC_MSG_RESULT([yes])
13290     WITH_FONTS=TRUE
13291     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13292     AC_DEFINE(HAVE_MORE_FONTS)
13293 else
13294     AC_MSG_RESULT([no])
13295     WITH_FONTS=
13296     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13298 AC_SUBST(WITH_FONTS)
13301 dnl ===================================================================
13302 dnl Test whether to enable online update service
13303 dnl ===================================================================
13304 AC_MSG_CHECKING([whether to enable online update])
13305 ENABLE_ONLINE_UPDATE=
13306 ENABLE_ONLINE_UPDATE_MAR=
13307 UPDATE_CONFIG=
13308 if test "$enable_online_update" = ""; then
13309     AC_MSG_RESULT([no])
13310 else
13311     if test "$enable_online_update" = "mar"; then
13312         AC_MSG_RESULT([yes - MAR-based online update])
13313         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13314         if test "$with_update_config" = ""; then
13315             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13316         fi
13317         UPDATE_CONFIG="$with_update_config"
13318         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13319     elif test "$enable_online_update" = "yes"; then
13320         AC_MSG_RESULT([yes])
13321         ENABLE_ONLINE_UPDATE="TRUE"
13322     else
13323         AC_MSG_RESULT([no])
13324     fi
13326 AC_SUBST(ENABLE_ONLINE_UPDATE)
13327 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13328 AC_SUBST(UPDATE_CONFIG)
13331 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13332 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13333     if test "x$with_privacy_policy_url" = "xundefined"; then
13334         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13335     fi
13337 AC_SUBST(PRIVACY_POLICY_URL)
13338 dnl ===================================================================
13339 dnl Test whether we need bzip2
13340 dnl ===================================================================
13341 SYSTEM_BZIP2=
13342 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13343     AC_MSG_CHECKING([whether to use system bzip2])
13344     if test "$with_system_bzip2" = yes; then
13345         SYSTEM_BZIP2=TRUE
13346         AC_MSG_RESULT([yes])
13347         PKG_CHECK_MODULES(BZIP2, bzip2)
13348         FilterLibs "${BZIP2_LIBS}"
13349         BZIP2_LIBS="${filteredlibs}"
13350     else
13351         AC_MSG_RESULT([no])
13352         BUILD_TYPE="$BUILD_TYPE BZIP2"
13353     fi
13355 AC_SUBST(SYSTEM_BZIP2)
13356 AC_SUBST(BZIP2_CFLAGS)
13357 AC_SUBST(BZIP2_LIBS)
13359 dnl ===================================================================
13360 dnl Test whether to enable extension update
13361 dnl ===================================================================
13362 AC_MSG_CHECKING([whether to enable extension update])
13363 ENABLE_EXTENSION_UPDATE=
13364 if test "x$enable_extension_update" = "xno"; then
13365     AC_MSG_RESULT([no])
13366 else
13367     AC_MSG_RESULT([yes])
13368     ENABLE_EXTENSION_UPDATE="TRUE"
13369     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13370     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13372 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13375 dnl ===================================================================
13376 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13377 dnl ===================================================================
13378 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13379 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13380     AC_MSG_RESULT([no])
13381     ENABLE_SILENT_MSI=
13382 else
13383     AC_MSG_RESULT([yes])
13384     ENABLE_SILENT_MSI=TRUE
13385     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13387 AC_SUBST(ENABLE_SILENT_MSI)
13389 AC_MSG_CHECKING([whether and how to use Xinerama])
13390 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13391     if test "$x_libraries" = "default_x_libraries"; then
13392         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13393         if test "x$XINERAMALIB" = x; then
13394            XINERAMALIB="/usr/lib"
13395         fi
13396     else
13397         XINERAMALIB="$x_libraries"
13398     fi
13399     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13400         # we have both versions, let the user decide but use the dynamic one
13401         # per default
13402         USE_XINERAMA=TRUE
13403         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13404             XINERAMA_LINK=dynamic
13405         else
13406             XINERAMA_LINK=static
13407         fi
13408     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13409         # we have only the dynamic version
13410         USE_XINERAMA=TRUE
13411         XINERAMA_LINK=dynamic
13412     elif test -e "$XINERAMALIB/libXinerama.a"; then
13413         # static version
13414         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13415             USE_XINERAMA=TRUE
13416             XINERAMA_LINK=static
13417         else
13418             USE_XINERAMA=
13419             XINERAMA_LINK=none
13420         fi
13421     else
13422         # no Xinerama
13423         USE_XINERAMA=
13424         XINERAMA_LINK=none
13425     fi
13426     if test "$USE_XINERAMA" = "TRUE"; then
13427         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13428         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13429             [AC_MSG_ERROR(Xinerama header not found.)], [])
13430         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13431         if test "x$XEXTLIB" = x; then
13432            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13433         fi
13434         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13435         if test "$_os" = "FreeBSD"; then
13436             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13437         fi
13438         if test "$_os" = "Linux"; then
13439             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13440         fi
13441         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13442             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13443     else
13444         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13445     fi
13446 else
13447     USE_XINERAMA=
13448     XINERAMA_LINK=none
13449     AC_MSG_RESULT([no])
13451 AC_SUBST(USE_XINERAMA)
13452 AC_SUBST(XINERAMA_LINK)
13454 dnl ===================================================================
13455 dnl Test whether to build cairo or rely on the system version
13456 dnl ===================================================================
13458 if test "$test_cairo" = "yes"; then
13459     AC_MSG_CHECKING([whether to use the system cairo])
13461     : ${with_system_cairo:=$with_system_libs}
13462     if test "$with_system_cairo" = "yes"; then
13463         SYSTEM_CAIRO=TRUE
13464         AC_MSG_RESULT([yes])
13466         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13467         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13468         FilterLibs "${CAIRO_LIBS}"
13469         CAIRO_LIBS="${filteredlibs}"
13471         if test "$test_xrender" = "yes"; then
13472             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13473             AC_LANG_PUSH([C])
13474             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13475 #ifdef PictStandardA8
13476 #else
13477       return fail;
13478 #endif
13479 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13481             AC_LANG_POP([C])
13482         fi
13483     else
13484         AC_MSG_RESULT([no])
13485         BUILD_TYPE="$BUILD_TYPE CAIRO"
13486     fi
13488     if test "$enable_cairo_canvas" != no; then
13489         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13490         ENABLE_CAIRO_CANVAS=TRUE
13491     fi
13494 AC_SUBST(CAIRO_CFLAGS)
13495 AC_SUBST(CAIRO_LIBS)
13496 AC_SUBST(ENABLE_CAIRO_CANVAS)
13497 AC_SUBST(SYSTEM_CAIRO)
13499 dnl ===================================================================
13500 dnl Test whether to use avahi
13501 dnl ===================================================================
13502 if test "$_os" = "WINNT"; then
13503     # Windows uses bundled mDNSResponder
13504     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13505 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13506     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13507                       [ENABLE_AVAHI="TRUE"])
13508     AC_DEFINE(HAVE_FEATURE_AVAHI)
13509     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13510     FilterLibs "${AVAHI_LIBS}"
13511     AVAHI_LIBS="${filteredlibs}"
13514 AC_SUBST(ENABLE_AVAHI)
13515 AC_SUBST(AVAHI_CFLAGS)
13516 AC_SUBST(AVAHI_LIBS)
13518 dnl ===================================================================
13519 dnl Test whether to use liblangtag
13520 dnl ===================================================================
13521 SYSTEM_LIBLANGTAG=
13522 AC_MSG_CHECKING([whether to use system liblangtag])
13523 if test "$with_system_liblangtag" = yes; then
13524     SYSTEM_LIBLANGTAG=TRUE
13525     AC_MSG_RESULT([yes])
13526     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13527     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13528     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13529     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13530     FilterLibs "${LIBLANGTAG_LIBS}"
13531     LIBLANGTAG_LIBS="${filteredlibs}"
13532 else
13533     SYSTEM_LIBLANGTAG=
13534     AC_MSG_RESULT([no])
13535     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13536     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13537     if test "$COM" = "MSC"; then
13538         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13539     else
13540         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13541     fi
13543 AC_SUBST(SYSTEM_LIBLANGTAG)
13544 AC_SUBST(LIBLANGTAG_CFLAGS)
13545 AC_SUBST(LIBLANGTAG_LIBS)
13547 dnl ===================================================================
13548 dnl Test whether to build libpng or rely on the system version
13549 dnl ===================================================================
13551 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13553 dnl ===================================================================
13554 dnl Check for runtime JVM search path
13555 dnl ===================================================================
13556 if test "$ENABLE_JAVA" != ""; then
13557     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13558     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13559         AC_MSG_RESULT([yes])
13560         if ! test -d "$with_jvm_path"; then
13561             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13562         fi
13563         if ! test -d "$with_jvm_path"jvm; then
13564             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13565         fi
13566         JVM_ONE_PATH_CHECK="$with_jvm_path"
13567         AC_SUBST(JVM_ONE_PATH_CHECK)
13568     else
13569         AC_MSG_RESULT([no])
13570     fi
13573 dnl ===================================================================
13574 dnl Test for the presence of Ant and that it works
13575 dnl ===================================================================
13577 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13578     ANT_HOME=; export ANT_HOME
13579     WITH_ANT_HOME=; export WITH_ANT_HOME
13580     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13581         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13582             if test "$_os" = "WINNT"; then
13583                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13584             else
13585                 with_ant_home="$LODE_HOME/opt/ant"
13586             fi
13587         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13588             with_ant_home="$LODE_HOME/opt/ant"
13589         fi
13590     fi
13591     if test -z "$with_ant_home"; then
13592         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13593     else
13594         if test "$_os" = "WINNT"; then
13595             # AC_PATH_PROGS needs unix path
13596             with_ant_home=`cygpath -u "$with_ant_home"`
13597         fi
13598         AbsolutePath "$with_ant_home"
13599         with_ant_home=$absolute_path
13600         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13601         WITH_ANT_HOME=$with_ant_home
13602         ANT_HOME=$with_ant_home
13603     fi
13605     if test -z "$ANT"; then
13606         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13607     else
13608         # resolve relative or absolute symlink
13609         while test -h "$ANT"; do
13610             a_cwd=`pwd`
13611             a_basename=`basename "$ANT"`
13612             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13613             cd "`dirname "$ANT"`"
13614             cd "`dirname "$a_script"`"
13615             ANT="`pwd`"/"`basename "$a_script"`"
13616             cd "$a_cwd"
13617         done
13619         AC_MSG_CHECKING([if $ANT works])
13620         mkdir -p conftest.dir
13621         a_cwd=$(pwd)
13622         cd conftest.dir
13623         cat > conftest.java << EOF
13624         public class conftest {
13625             int testmethod(int a, int b) {
13626                     return a + b;
13627             }
13628         }
13631         cat > conftest.xml << EOF
13632         <project name="conftest" default="conftest">
13633         <target name="conftest">
13634             <javac srcdir="." includes="conftest.java">
13635             </javac>
13636         </target>
13637         </project>
13640         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13641         if test $? = 0 -a -f ./conftest.class; then
13642             AC_MSG_RESULT([Ant works])
13643             if test -z "$WITH_ANT_HOME"; then
13644                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13645                 if test -z "$ANT_HOME"; then
13646                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13647                 fi
13648             else
13649                 ANT_HOME="$WITH_ANT_HOME"
13650             fi
13651         else
13652             echo "configure: Ant test failed" >&5
13653             cat conftest.java >&5
13654             cat conftest.xml >&5
13655             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13656         fi
13657         cd "$a_cwd"
13658         rm -fr conftest.dir
13659     fi
13660     if test -z "$ANT_HOME"; then
13661         ANT_HOME="NO_ANT_HOME"
13662     else
13663         PathFormat "$ANT_HOME"
13664         ANT_HOME="$formatted_path"
13665         PathFormat "$ANT"
13666         ANT="$formatted_path"
13667     fi
13669     dnl Checking for ant.jar
13670     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13671         AC_MSG_CHECKING([Ant lib directory])
13672         if test -f $ANT_HOME/lib/ant.jar; then
13673             ANT_LIB="$ANT_HOME/lib"
13674         else
13675             if test -f $ANT_HOME/ant.jar; then
13676                 ANT_LIB="$ANT_HOME"
13677             else
13678                 if test -f /usr/share/java/ant.jar; then
13679                     ANT_LIB=/usr/share/java
13680                 else
13681                     if test -f /usr/share/ant-core/lib/ant.jar; then
13682                         ANT_LIB=/usr/share/ant-core/lib
13683                     else
13684                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13685                             ANT_LIB="$ANT_HOME/lib/ant"
13686                         else
13687                             if test -f /usr/share/lib/ant/ant.jar; then
13688                                 ANT_LIB=/usr/share/lib/ant
13689                             else
13690                                 AC_MSG_ERROR([Ant libraries not found!])
13691                             fi
13692                         fi
13693                     fi
13694                 fi
13695             fi
13696         fi
13697         PathFormat "$ANT_LIB"
13698         ANT_LIB="$formatted_path"
13699         AC_MSG_RESULT([Ant lib directory found.])
13700     fi
13702     ant_minver=1.6.0
13703     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13705     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13706     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13707     ant_version_major=`echo $ant_version | cut -d. -f1`
13708     ant_version_minor=`echo $ant_version | cut -d. -f2`
13709     echo "configure: ant_version $ant_version " >&5
13710     echo "configure: ant_version_major $ant_version_major " >&5
13711     echo "configure: ant_version_minor $ant_version_minor " >&5
13712     if test "$ant_version_major" -ge "2"; then
13713         AC_MSG_RESULT([yes, $ant_version])
13714     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13715         AC_MSG_RESULT([yes, $ant_version])
13716     else
13717         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13718     fi
13720     rm -f conftest* core core.* *.core
13722 AC_SUBST(ANT)
13723 AC_SUBST(ANT_HOME)
13724 AC_SUBST(ANT_LIB)
13726 OOO_JUNIT_JAR=
13727 HAMCREST_JAR=
13728 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13729     AC_MSG_CHECKING([for JUnit 4])
13730     if test "$with_junit" = "yes"; then
13731         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13732             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13733         elif test -e /usr/share/java/junit4.jar; then
13734             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13735         else
13736            if test -e /usr/share/lib/java/junit.jar; then
13737               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13738            else
13739               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13740            fi
13741         fi
13742     else
13743         OOO_JUNIT_JAR=$with_junit
13744     fi
13745     if test "$_os" = "WINNT"; then
13746         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13747     fi
13748     printf 'import org.junit.Before;' > conftest.java
13749     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13750         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13751     else
13752         AC_MSG_ERROR(
13753 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13754  specify its pathname via --with-junit=..., or disable it via --without-junit])
13755     fi
13756     rm -f conftest.class conftest.java
13757     if test $OOO_JUNIT_JAR != ""; then
13758         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13759     fi
13761     AC_MSG_CHECKING([for included Hamcrest])
13762     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13763     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13764         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13765     else
13766         AC_MSG_RESULT([Not included])
13767         AC_MSG_CHECKING([for standalone hamcrest jar.])
13768         if test "$with_hamcrest" = "yes"; then
13769             if test -e /usr/share/lib/java/hamcrest.jar; then
13770                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13771             elif test -e /usr/share/java/hamcrest/core.jar; then
13772                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13773             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13774                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13775             else
13776                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13777             fi
13778         else
13779             HAMCREST_JAR=$with_hamcrest
13780         fi
13781         if test "$_os" = "WINNT"; then
13782             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13783         fi
13784         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13785             AC_MSG_RESULT([$HAMCREST_JAR])
13786         else
13787             AC_MSG_ERROR([junit does not contain hamcrest; please use a junit jar that includes hamcrest, install a hamcrest jar in the default location (/usr/share/java),
13788                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13789         fi
13790     fi
13791     rm -f conftest.class conftest.java
13793 AC_SUBST(OOO_JUNIT_JAR)
13794 AC_SUBST(HAMCREST_JAR)
13797 AC_SUBST(SCPDEFS)
13800 # check for wget and curl
13802 WGET=
13803 CURL=
13805 if test "$enable_fetch_external" != "no"; then
13807 CURL=`which curl 2>/dev/null`
13809 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13810     # wget new enough?
13811     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13812     if test $? -eq 0; then
13813         WGET=$i
13814         break
13815     fi
13816 done
13818 if test -z "$WGET" -a -z "$CURL"; then
13819     AC_MSG_ERROR([neither wget nor curl found!])
13824 AC_SUBST(WGET)
13825 AC_SUBST(CURL)
13828 # check for sha256sum
13830 SHA256SUM=
13832 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13833     eval "$i -a 256 --version" > /dev/null 2>&1
13834     ret=$?
13835     if test $ret -eq 0; then
13836         SHA256SUM="$i -a 256"
13837         break
13838     fi
13839 done
13841 if test -z "$SHA256SUM"; then
13842     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13843         eval "$i --version" > /dev/null 2>&1
13844         ret=$?
13845         if test $ret -eq 0; then
13846             SHA256SUM=$i
13847             break
13848         fi
13849     done
13852 if test -z "$SHA256SUM"; then
13853     AC_MSG_ERROR([no sha256sum found!])
13856 AC_SUBST(SHA256SUM)
13858 dnl ===================================================================
13859 dnl Dealing with l10n options
13860 dnl ===================================================================
13861 AC_MSG_CHECKING([which languages to be built])
13862 # get list of all languages
13863 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13864 # the sed command does the following:
13865 #   + if a line ends with a backslash, append the next line to it
13866 #   + adds " on the beginning of the value (after =)
13867 #   + adds " at the end of the value
13868 #   + removes en-US; we want to put it on the beginning
13869 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13870 [eval $(sed -e :a -e '/\\$/N; s/\\\n//; ta' -n -e 's/=/="/;s/\([^\\]\)$/\1"/;s/en-US//;/^completelangiso/p' $SRC_ROOT/solenv/inc/langlist.mk)]
13871 ALL_LANGS="en-US $completelangiso"
13872 # check the configured localizations
13873 WITH_LANG="$with_lang"
13875 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13876 # (Norwegian is "nb" and "nn".)
13877 if test "$WITH_LANG" = "no"; then
13878     WITH_LANG=
13881 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13882     AC_MSG_RESULT([en-US])
13883 else
13884     AC_MSG_RESULT([$WITH_LANG])
13885     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13886     if test -z "$MSGFMT"; then
13887         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13888             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13889         elif test -x "/opt/lo/bin/msgfmt"; then
13890             MSGFMT="/opt/lo/bin/msgfmt"
13891         else
13892             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13893             if test -z "$MSGFMT"; then
13894                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13895             fi
13896         fi
13897     fi
13898     if test -z "$MSGUNIQ"; then
13899         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13900             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13901         elif test -x "/opt/lo/bin/msguniq"; then
13902             MSGUNIQ="/opt/lo/bin/msguniq"
13903         else
13904             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13905             if test -z "$MSGUNIQ"; then
13906                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13907             fi
13908         fi
13909     fi
13911 AC_SUBST(MSGFMT)
13912 AC_SUBST(MSGUNIQ)
13913 # check that the list is valid
13914 for lang in $WITH_LANG; do
13915     test "$lang" = "ALL" && continue
13916     # need to check for the exact string, so add space before and after the list of all languages
13917     for vl in $ALL_LANGS; do
13918         if test "$vl" = "$lang"; then
13919            break
13920         fi
13921     done
13922     if test "$vl" != "$lang"; then
13923         # if you're reading this - you prolly quoted your languages remove the quotes ...
13924         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13925     fi
13926 done
13927 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13928     echo $WITH_LANG | grep -q en-US
13929     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13931 # list with substituted ALL
13932 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13933 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13934 test "$WITH_LANG" = "en-US" && WITH_LANG=
13935 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13936     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13937     ALL_LANGS=`echo $ALL_LANGS qtz`
13939 AC_SUBST(ALL_LANGS)
13940 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13941 AC_SUBST(WITH_LANG)
13942 AC_SUBST(WITH_LANG_LIST)
13943 AC_SUBST(GIT_NEEDED_SUBMODULES)
13945 WITH_POOR_HELP_LOCALIZATIONS=
13946 if test -d "$SRC_ROOT/translations/source"; then
13947     for l in `ls -1 $SRC_ROOT/translations/source`; do
13948         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13949             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13950         fi
13951     done
13953 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13955 if test -n "$with_locales"; then
13956     WITH_LOCALES="$with_locales"
13958     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13959     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13960     # config_host/config_locales.h.in
13961     for locale in $WITH_LOCALES; do
13962         lang=${locale%_*}
13964         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13966         case $lang in
13967         hi|mr*ne)
13968             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13969             ;;
13970         bg|ru)
13971             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13972             ;;
13973         esac
13974     done
13975 else
13976     AC_DEFINE(WITH_LOCALE_ALL)
13978 AC_SUBST(WITH_LOCALES)
13980 dnl git submodule update --reference
13981 dnl ===================================================================
13982 if test -n "${GIT_REFERENCE_SRC}"; then
13983     for repo in ${GIT_NEEDED_SUBMODULES}; do
13984         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13985             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13986         fi
13987     done
13989 AC_SUBST(GIT_REFERENCE_SRC)
13991 dnl git submodules linked dirs
13992 dnl ===================================================================
13993 if test -n "${GIT_LINK_SRC}"; then
13994     for repo in ${GIT_NEEDED_SUBMODULES}; do
13995         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13996             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13997         fi
13998     done
14000 AC_SUBST(GIT_LINK_SRC)
14002 dnl branding
14003 dnl ===================================================================
14004 AC_MSG_CHECKING([for alternative branding images directory])
14005 # initialize mapped arrays
14006 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14007 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14009 if test -z "$with_branding" -o "$with_branding" = "no"; then
14010     AC_MSG_RESULT([none])
14011     DEFAULT_BRAND_IMAGES="$brand_files"
14012 else
14013     if ! test -d $with_branding ; then
14014         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14015     else
14016         AC_MSG_RESULT([$with_branding])
14017         CUSTOM_BRAND_DIR="$with_branding"
14018         for lfile in $brand_files
14019         do
14020             if ! test -f $with_branding/$lfile ; then
14021                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14022                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14023             else
14024                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14025             fi
14026         done
14027         check_for_progress="yes"
14028     fi
14030 AC_SUBST([BRAND_INTRO_IMAGES])
14031 AC_SUBST([CUSTOM_BRAND_DIR])
14032 AC_SUBST([CUSTOM_BRAND_IMAGES])
14033 AC_SUBST([DEFAULT_BRAND_IMAGES])
14036 AC_MSG_CHECKING([for 'intro' progress settings])
14037 PROGRESSBARCOLOR=
14038 PROGRESSSIZE=
14039 PROGRESSPOSITION=
14040 PROGRESSFRAMECOLOR=
14041 PROGRESSTEXTCOLOR=
14042 PROGRESSTEXTBASELINE=
14044 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14045     source "$with_branding/progress.conf"
14046     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14047 else
14048     AC_MSG_RESULT([none])
14051 AC_SUBST(PROGRESSBARCOLOR)
14052 AC_SUBST(PROGRESSSIZE)
14053 AC_SUBST(PROGRESSPOSITION)
14054 AC_SUBST(PROGRESSFRAMECOLOR)
14055 AC_SUBST(PROGRESSTEXTCOLOR)
14056 AC_SUBST(PROGRESSTEXTBASELINE)
14059 dnl ===================================================================
14060 dnl Custom build version
14061 dnl ===================================================================
14062 AC_MSG_CHECKING([for extra build ID])
14063 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14064     EXTRA_BUILDID="$with_extra_buildid"
14066 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14067 if test -n "$EXTRA_BUILDID" ; then
14068     AC_MSG_RESULT([$EXTRA_BUILDID])
14069 else
14070     AC_MSG_RESULT([not set])
14072 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14074 OOO_VENDOR=
14075 AC_MSG_CHECKING([for vendor])
14076 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14077     OOO_VENDOR="$USERNAME"
14079     if test -z "$OOO_VENDOR"; then
14080         OOO_VENDOR="$USER"
14081     fi
14083     if test -z "$OOO_VENDOR"; then
14084         OOO_VENDOR="`id -u -n`"
14085     fi
14087     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14088 else
14089     OOO_VENDOR="$with_vendor"
14090     AC_MSG_RESULT([$OOO_VENDOR])
14092 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14093 AC_SUBST(OOO_VENDOR)
14095 if test "$_os" = "Android" ; then
14096     ANDROID_PACKAGE_NAME=
14097     AC_MSG_CHECKING([for Android package name])
14098     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14099         if test -n "$ENABLE_DEBUG"; then
14100             # Default to the package name that makes ndk-gdb happy.
14101             ANDROID_PACKAGE_NAME="org.libreoffice"
14102         else
14103             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14104         fi
14106         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14107     else
14108         ANDROID_PACKAGE_NAME="$with_android_package_name"
14109         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14110     fi
14111     AC_SUBST(ANDROID_PACKAGE_NAME)
14114 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14115 if test "$with_compat_oowrappers" = "yes"; then
14116     WITH_COMPAT_OOWRAPPERS=TRUE
14117     AC_MSG_RESULT(yes)
14118 else
14119     WITH_COMPAT_OOWRAPPERS=
14120     AC_MSG_RESULT(no)
14122 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14124 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14125 AC_MSG_CHECKING([for install dirname])
14126 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14127     INSTALLDIRNAME="$with_install_dirname"
14129 AC_MSG_RESULT([$INSTALLDIRNAME])
14130 AC_SUBST(INSTALLDIRNAME)
14132 AC_MSG_CHECKING([for prefix])
14133 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14134 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14135 PREFIXDIR="$prefix"
14136 AC_MSG_RESULT([$PREFIXDIR])
14137 AC_SUBST(PREFIXDIR)
14139 LIBDIR=[$(eval echo $(eval echo $libdir))]
14140 AC_SUBST(LIBDIR)
14142 DATADIR=[$(eval echo $(eval echo $datadir))]
14143 AC_SUBST(DATADIR)
14145 MANDIR=[$(eval echo $(eval echo $mandir))]
14146 AC_SUBST(MANDIR)
14148 DOCDIR=[$(eval echo $(eval echo $docdir))]
14149 AC_SUBST(DOCDIR)
14151 BINDIR=[$(eval echo $(eval echo $bindir))]
14152 AC_SUBST(BINDIR)
14154 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14155 AC_SUBST(INSTALLDIR)
14157 TESTINSTALLDIR="${BUILDDIR}/test-install"
14158 AC_SUBST(TESTINSTALLDIR)
14161 # ===================================================================
14162 # OAuth2 id and secrets
14163 # ===================================================================
14165 AC_MSG_CHECKING([for Google Drive client id and secret])
14166 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14167     AC_MSG_RESULT([not set])
14168     GDRIVE_CLIENT_ID="\"\""
14169     GDRIVE_CLIENT_SECRET="\"\""
14170 else
14171     AC_MSG_RESULT([set])
14172     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14173     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14175 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14176 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14178 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14179 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14180     AC_MSG_RESULT([not set])
14181     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14182     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14183 else
14184     AC_MSG_RESULT([set])
14185     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14186     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14188 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14189 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14191 AC_MSG_CHECKING([for OneDrive client id and secret])
14192 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14193     AC_MSG_RESULT([not set])
14194     ONEDRIVE_CLIENT_ID="\"\""
14195     ONEDRIVE_CLIENT_SECRET="\"\""
14196 else
14197     AC_MSG_RESULT([set])
14198     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14199     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14201 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14202 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14205 dnl ===================================================================
14206 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14207 dnl --enable-dependency-tracking configure option
14208 dnl ===================================================================
14209 AC_MSG_CHECKING([whether to enable dependency tracking])
14210 if test "$enable_dependency_tracking" = "no"; then
14211     nodep=TRUE
14212     AC_MSG_RESULT([no])
14213 else
14214     AC_MSG_RESULT([yes])
14216 AC_SUBST(nodep)
14218 dnl ===================================================================
14219 dnl Number of CPUs to use during the build
14220 dnl ===================================================================
14221 AC_MSG_CHECKING([for number of processors to use])
14222 # plain --with-parallelism is just the default
14223 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14224     if test "$with_parallelism" = "no"; then
14225         PARALLELISM=0
14226     else
14227         PARALLELISM=$with_parallelism
14228     fi
14229 else
14230     if test "$enable_icecream" = "yes"; then
14231         PARALLELISM="40"
14232     else
14233         case `uname -s` in
14235         Darwin|FreeBSD|NetBSD|OpenBSD)
14236             PARALLELISM=`sysctl -n hw.ncpu`
14237             ;;
14239         Linux)
14240             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14241         ;;
14242         # what else than above does profit here *and* has /proc?
14243         *)
14244             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14245             ;;
14246         esac
14248         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14249         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14250     fi
14253 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14254     if test -z "$with_parallelism"; then
14255             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14256             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14257             PARALLELISM="1"
14258     else
14259         add_warning "make 3.81 is prone to crashes with parallelism > 1. Since --with-parallelism was explicitly given, it is honored, but do not complain when make segfaults on you."
14260     fi
14263 if test $PARALLELISM -eq 0; then
14264     AC_MSG_RESULT([explicit make -j option needed])
14265 else
14266     AC_MSG_RESULT([$PARALLELISM])
14268 AC_SUBST(PARALLELISM)
14270 IWYU_PATH="$with_iwyu"
14271 AC_SUBST(IWYU_PATH)
14272 if test ! -z "$IWYU_PATH"; then
14273     if test ! -f "$IWYU_PATH"; then
14274         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14275     fi
14279 # Set up ILIB for MSVC build
14281 ILIB1=
14282 if test "$build_os" = "cygwin"; then
14283     ILIB="."
14284     if test -n "$JAVA_HOME"; then
14285         ILIB="$ILIB;$JAVA_HOME/lib"
14286     fi
14287     ILIB1=-link
14288     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14289     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14290     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14291     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14292     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14293         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14294         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14295     fi
14296     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14297     ucrtlibpath_formatted=$formatted_path
14298     ILIB="$ILIB;$ucrtlibpath_formatted"
14299     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14300     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14301         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14302     else
14303         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14304     fi
14306     if test "$cross_compiling" != "yes"; then
14307         ILIB_FOR_BUILD="$ILIB"
14308     fi
14310 AC_SUBST(ILIB)
14311 AC_SUBST(ILIB_FOR_BUILD)
14313 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14314 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14315 dnl from consteval constructor initializing const variable",
14316 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14317 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14318 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14319 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14320 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14321 dnl constructor in ternary expression (/std:c++latest)":
14322 AC_LANG_PUSH([C++])
14323 save_CXX=$CXX
14324 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14325     CXX="env LIB=$ILIB $CXX"
14327 save_CXXFLAGS=$CXXFLAGS
14328 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14329 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14330         struct S {
14331             consteval S() { i = 1; }
14332             int i = 0;
14333         };
14334         S const s;
14336         struct S1 { consteval S1(int) {} };
14337         struct S2 {
14338             S1 x;
14339             S2(): x(0) {}
14340         };
14342         struct S3 {
14343             consteval S3() {}
14344             union {
14345                 int a;
14346                 unsigned b = 0;
14347             };
14348         };
14349         void f() { S3(); }
14351         struct S4 { consteval S4() = default; };
14352         void f4(bool b) { b ? S4() : S4(); }
14353     ], [
14354         return (s.i == 1) ? 0 : 1;
14355     ])], [
14356         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14357         AC_MSG_RESULT([yes])
14358     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14359 CXX=$save_CXX
14360 CXXFLAGS=$save_CXXFLAGS
14361 AC_LANG_POP([C++])
14363 # ===================================================================
14364 # Creating bigger shared library to link against
14365 # ===================================================================
14366 AC_MSG_CHECKING([whether to create huge library])
14367 MERGELIBS=
14369 if test $_os = iOS -o $_os = Android; then
14370     # Never any point in mergelibs for these as we build just static
14371     # libraries anyway...
14372     enable_mergelibs=no
14375 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14376     if test $_os != Linux -a $_os != WINNT; then
14377         add_warning "--enable-mergelibs is not tested for this platform"
14378     fi
14379     MERGELIBS="TRUE"
14380     AC_MSG_RESULT([yes])
14381     AC_DEFINE(ENABLE_MERGELIBS)
14382 else
14383     AC_MSG_RESULT([no])
14385 AC_SUBST([MERGELIBS])
14387 dnl ===================================================================
14388 dnl icerun is a wrapper that stops us spawning tens of processes
14389 dnl locally - for tools that can't be executed on the compile cluster
14390 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14391 dnl ===================================================================
14392 AC_MSG_CHECKING([whether to use icerun wrapper])
14393 ICECREAM_RUN=
14394 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14395     ICECREAM_RUN=icerun
14396     AC_MSG_RESULT([yes])
14397 else
14398     AC_MSG_RESULT([no])
14400 AC_SUBST(ICECREAM_RUN)
14402 dnl ===================================================================
14403 dnl Setup the ICECC_VERSION for the build the same way it was set for
14404 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14405 dnl ===================================================================
14406 x_ICECC_VERSION=[\#]
14407 if test -n "$ICECC_VERSION" ; then
14408     x_ICECC_VERSION=
14410 AC_SUBST(x_ICECC_VERSION)
14411 AC_SUBST(ICECC_VERSION)
14413 dnl ===================================================================
14415 AC_MSG_CHECKING([MPL subset])
14416 MPL_SUBSET=
14418 if test "$enable_mpl_subset" = "yes"; then
14419     warn_report=false
14420     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14421         warn_report=true
14422     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14423         warn_report=true
14424     fi
14425     if test "$warn_report" = "true"; then
14426         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14427     fi
14428     if test "x$enable_postgresql_sdbc" != "xno"; then
14429         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14430     fi
14431     if test "$enable_lotuswordpro" = "yes"; then
14432         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14433     fi
14434     if test "$WITH_WEBDAV" = "neon"; then
14435         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14436     fi
14437     if test -n "$ENABLE_POPPLER"; then
14438         if test "x$SYSTEM_POPPLER" = "x"; then
14439             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14440         fi
14441     fi
14442     # cf. m4/libo_check_extension.m4
14443     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14444         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14445     fi
14446     for theme in $WITH_THEMES; do
14447         case $theme in
14448         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14449             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14450         *) : ;;
14451         esac
14452     done
14454     ENABLE_OPENGL_TRANSITIONS=
14456     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14457         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14458     fi
14460     MPL_SUBSET="TRUE"
14461     AC_DEFINE(MPL_HAVE_SUBSET)
14462     AC_MSG_RESULT([only])
14463 else
14464     AC_MSG_RESULT([no restrictions])
14466 AC_SUBST(MPL_SUBSET)
14468 dnl ===================================================================
14470 AC_MSG_CHECKING([formula logger])
14471 ENABLE_FORMULA_LOGGER=
14473 if test "x$enable_formula_logger" = "xyes"; then
14474     AC_MSG_RESULT([yes])
14475     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14476     ENABLE_FORMULA_LOGGER=TRUE
14477 elif test -n "$ENABLE_DBGUTIL" ; then
14478     AC_MSG_RESULT([yes])
14479     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14480     ENABLE_FORMULA_LOGGER=TRUE
14481 else
14482     AC_MSG_RESULT([no])
14485 AC_SUBST(ENABLE_FORMULA_LOGGER)
14487 dnl ===================================================================
14488 dnl Checking for active Antivirus software.
14489 dnl ===================================================================
14491 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14492     AC_MSG_CHECKING([for active Antivirus software])
14493     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14494     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14495         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14496             AC_MSG_RESULT([found])
14497             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14498             echo $EICAR_STRING > $SRC_ROOT/eicar
14499             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14500             rm $SRC_ROOT/eicar
14501             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14502                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14503             fi
14504             echo $EICAR_STRING > $BUILDDIR/eicar
14505             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14506             rm $BUILDDIR/eicar
14507             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14508                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14509             fi
14510             add_warning "To speed up builds and avoid failures in unit tests, it is highly recommended that you exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST"
14511         else
14512             AC_MSG_RESULT([not found])
14513         fi
14514     else
14515         AC_MSG_RESULT([n/a])
14516     fi
14519 dnl ===================================================================
14520 dnl Setting up the environment.
14521 dnl ===================================================================
14522 AC_MSG_NOTICE([setting up the build environment variables...])
14524 AC_SUBST(COMPATH)
14526 if test "$build_os" = "cygwin"; then
14527     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14528         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14529         ATL_INCLUDE="$COMPATH/atlmfc/include"
14530     elif test -d "$COMPATH/atlmfc/lib"; then
14531         ATL_LIB="$COMPATH/atlmfc/lib"
14532         ATL_INCLUDE="$COMPATH/atlmfc/include"
14533     else
14534         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14535         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14536     fi
14537     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14538     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14539     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14541     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14542     PathFormat "/usr/bin/find.exe"
14543     FIND="$formatted_path"
14544     PathFormat "/usr/bin/sort.exe"
14545     SORT="$formatted_path"
14546     PathFormat "/usr/bin/grep.exe"
14547     WIN_GREP="$formatted_path"
14548     PathFormat "/usr/bin/ls.exe"
14549     WIN_LS="$formatted_path"
14550     PathFormat "/usr/bin/touch.exe"
14551     WIN_TOUCH="$formatted_path"
14552 else
14553     FIND=find
14554     SORT=sort
14557 AC_SUBST(ATL_INCLUDE)
14558 AC_SUBST(ATL_LIB)
14559 AC_SUBST(FIND)
14560 AC_SUBST(SORT)
14561 AC_SUBST(WIN_GREP)
14562 AC_SUBST(WIN_LS)
14563 AC_SUBST(WIN_TOUCH)
14565 AC_SUBST(BUILD_TYPE)
14567 AC_SUBST(SOLARINC)
14569 PathFormat "$PERL"
14570 PERL="$formatted_path"
14571 AC_SUBST(PERL)
14573 if test -n "$TMPDIR"; then
14574     TEMP_DIRECTORY="$TMPDIR"
14575 else
14576     TEMP_DIRECTORY="/tmp"
14578 if test "$build_os" = "cygwin"; then
14579     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14581 AC_SUBST(TEMP_DIRECTORY)
14583 # setup the PATH for the environment
14584 if test -n "$LO_PATH_FOR_BUILD"; then
14585     LO_PATH="$LO_PATH_FOR_BUILD"
14586     case "$host_os" in
14587     cygwin*|wsl*)
14588         pathmunge "$MSVC_HOST_PATH" "before"
14589         ;;
14590     esac
14591 else
14592     LO_PATH="$PATH"
14594     case "$host_os" in
14596     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14597         if test "$ENABLE_JAVA" != ""; then
14598             pathmunge "$JAVA_HOME/bin" "after"
14599         fi
14600         ;;
14602     cygwin*|wsl*)
14603         # Win32 make needs native paths
14604         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14605             LO_PATH=`cygpath -p -m "$PATH"`
14606         fi
14607         if test "$WIN_BUILD_ARCH" = "x64"; then
14608             # needed for msi packaging
14609             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14610         fi
14611         # .NET 4.6 and higher don't have bin directory
14612         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14613             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14614         fi
14615         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14616         pathmunge "$CSC_PATH" "before"
14617         pathmunge "$MIDL_PATH" "before"
14618         pathmunge "$AL_PATH" "before"
14619         pathmunge "$MSVC_MULTI_PATH" "before"
14620         pathmunge "$MSVC_BUILD_PATH" "before"
14621         if test -n "$MSBUILD_PATH" ; then
14622             pathmunge "$MSBUILD_PATH" "before"
14623         fi
14624         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14625         if test "$ENABLE_JAVA" != ""; then
14626             if test -d "$JAVA_HOME/jre/bin/client"; then
14627                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14628             fi
14629             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14630                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14631             fi
14632             pathmunge "$JAVA_HOME/bin" "before"
14633         fi
14634         pathmunge "$MSVC_HOST_PATH" "before"
14635         ;;
14637     solaris*)
14638         pathmunge "/usr/css/bin" "before"
14639         if test "$ENABLE_JAVA" != ""; then
14640             pathmunge "$JAVA_HOME/bin" "after"
14641         fi
14642         ;;
14643     esac
14646 AC_SUBST(LO_PATH)
14648 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14649 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14650     x_LO_ELFCHECK_ALLOWLIST=
14651 else
14652     x_LO_ELFCHECK_ALLOWLIST=[\#]
14654 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14655 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14657 libo_FUZZ_SUMMARY
14659 # Generate a configuration sha256 we can use for deps
14660 if test -f config_host.mk; then
14661     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14663 if test -f config_host_lang.mk; then
14664     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14667 CFLAGS=$my_original_CFLAGS
14668 CXXFLAGS=$my_original_CXXFLAGS
14669 CPPFLAGS=$my_original_CPPFLAGS
14671 AC_CONFIG_LINKS([include:include])
14673 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14674 # BUILD platform configuration] - otherwise breaks cross building
14675 AC_CONFIG_FILES([config_host.mk
14676                  config_host_lang.mk
14677                  Makefile
14678                  lo.xcent
14679                  bin/bffvalidator.sh
14680                  bin/odfvalidator.sh
14681                  bin/officeotron.sh
14682                  hardened_runtime.xcent
14683                  instsetoo_native/util/openoffice.lst
14684                  sysui/desktop/macosx/Info.plist
14685                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14686 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14687 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14688 AC_CONFIG_HEADERS([config_host/config_clang.h])
14689 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14690 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14691 AC_CONFIG_HEADERS([config_host/config_eot.h])
14692 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14693 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14694 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14695 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14696 AC_CONFIG_HEADERS([config_host/config_features.h])
14697 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14698 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14699 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14700 AC_CONFIG_HEADERS([config_host/config_folders.h])
14701 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14702 AC_CONFIG_HEADERS([config_host/config_gio.h])
14703 AC_CONFIG_HEADERS([config_host/config_global.h])
14704 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14705 AC_CONFIG_HEADERS([config_host/config_java.h])
14706 AC_CONFIG_HEADERS([config_host/config_langs.h])
14707 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14708 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14709 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14710 AC_CONFIG_HEADERS([config_host/config_locales.h])
14711 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14712 AC_CONFIG_HEADERS([config_host/config_oox.h])
14713 AC_CONFIG_HEADERS([config_host/config_options.h])
14714 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14715 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14716 AC_CONFIG_HEADERS([config_host/config_skia.h])
14717 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14718 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14719 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14720 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14721 AC_CONFIG_HEADERS([config_host/config_version.h])
14722 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14723 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14724 AC_CONFIG_HEADERS([config_host/config_python.h])
14725 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14726 AC_OUTPUT
14728 if test "$CROSS_COMPILING" = TRUE; then
14729     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14732 # touch the config timestamp file
14733 if test ! -f config_host.mk.stamp; then
14734     echo > config_host.mk.stamp
14735 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14736     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14737 else
14738     echo > config_host.mk.stamp
14741 # touch the config lang timestamp file
14742 if test ! -f config_host_lang.mk.stamp; then
14743     echo > config_host_lang.mk.stamp
14744 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14745     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14746 else
14747     echo > config_host_lang.mk.stamp
14751 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14752         -a "$build_os" = "cygwin"; then
14754 cat << _EOS
14755 ****************************************************************************
14756 WARNING:
14757 Your make version is known to be horribly slow, and hard to debug
14758 problems with. To get a reasonably functional make please do:
14760 to install a pre-compiled binary make for Win32
14762  mkdir -p /opt/lo/bin
14763  cd /opt/lo/bin
14764  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14765  cp make-4.2.1-msvc.exe make
14766  chmod +x make
14768 to install from source:
14769 place yourself in a working directory of you choice.
14771  git clone git://git.savannah.gnu.org/make.git
14773  [go to Start menu, open "Visual Studio 2019" or "Visual Studio 2022", and then click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14774  set PATH=%PATH%;C:\Cygwin\bin
14775  [or Cygwin64, if that is what you have]
14776  cd path-to-make-repo-you-cloned-above
14777  build_w32.bat --without-guile
14779 should result in a WinRel/gnumake.exe.
14780 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14782 Then re-run autogen.sh
14784 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14785 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14787 _EOS
14788 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14789     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14794 cat << _EOF
14795 ****************************************************************************
14797 To build, run:
14798 $GNUMAKE
14800 To view some help, run:
14801 $GNUMAKE help
14803 _EOF
14805 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14806     cat << _EOF
14807 After the build has finished successfully, you can immediately run what you built using the command:
14808 _EOF
14810     if test $_os = Darwin; then
14811         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14812     else
14813         echo instdir/program/soffice
14814     fi
14815     cat << _EOF
14817 If you want to run the smoketest, run:
14818 $GNUMAKE check
14820 _EOF
14823 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14824     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14825     cat "$WARNINGS_FILE_FOR_BUILD"
14826     echo
14829 if test -s "$WARNINGS_FILE"; then
14830     echo "HOST config ($WARNINGS_FILE)"
14831     cat "$WARNINGS_FILE"
14834 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: