Bump version to 22.05.15.1
[LibreOffice.git] / configure.ac
blobebf1c706cb7b9bac5aaaf3f5c8565a1a57167af5
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([Collabora Office],[22.05.15.1],[],[],[https://collaboraoffice.com/])
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     if test "$COM" = "MSC"; then
50         for f in $1; do
51             if test "x$f" != "x${f#-L}"; then
52                 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53             elif test "x$f" != "x${f#-l}"; then
54                 filteredlibs="$filteredlibs ${f:2}.lib"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
62                 # let's start with Fedora's paths for now
63                 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64                     # ignore it: on UNIXoids it is searched by default anyway
65                     # but if it's given explicitly then it may override other paths
66                     # (on macOS it would be an error to use it instead of SDK)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
78     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79     # function is called also on Unix.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
83     # $formatted_path is the argument in Windows format, but using forward slashes instead of
84     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85     # or shell metacharacters).
86     #
87     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
101     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$1"
114     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115         if test "$build_os" = "wsl"; then
116             formatted_path=$(echo "$formatted_path" | tr -d '\r')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
134                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
135             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136                 formatted_path=`cygpath -sm "$formatted_path"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
144         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146         if test "$fp_count_slash$fp_count_colon" != "00"; then
147             if test "$fp_count_colon" = "0"; then
148                 new_formatted_path=`realpath "$formatted_path"`
149                 if test $? -ne 0;  then
150                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
182         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183         if test "$fp_count_space" != "0"; then
184             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
185         fi
186     fi
187     if test "$build_os" = "wsl"; then
188         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189         formatted_path_unix=$(wslpath "$formatted_path")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
198     # There appears to be no simple and portable method to get an absolute and
199     # canonical path, so we try creating the directory if does not exist and
200     # utilizing the shell and pwd.
202     # Args: $1: A possibly relative pathname
203     # Return value: $absolute_path
205     local rel="$1"
206     absolute_path=""
207     test ! -e "$rel" && mkdir -p "$rel"
208     if test -d "$rel" ; then
209         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
210         absolute_path="$(pwd)"
211         cd - > /dev/null
212     else
213         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
214     fi
217 WARNINGS_FILE=config.warn
218 WARNINGS_FILE_FOR_BUILD=config.Build.warn
219 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
220 have_WARNINGS="no"
221 add_warning()
223     if test "$have_WARNINGS" = "no"; then
224         echo "*************************************" > "$WARNINGS_FILE"
225         have_WARNINGS="yes"
226         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
227             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
228             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
229         else
230             COLORWARN="* WARNING :"
231         fi
232     fi
233     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
236 dnl Some Mac User have the bad habit of letting a lot of crap
237 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
238 dnl that confuse the build.
239 dnl For the ones that use LODE, let's be nice and protect them
240 dnl from themselves
242 mac_sanitize_path()
244     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
245 dnl a common but nevertheless necessary thing that may be in a fancy
246 dnl path location is git, so make sure we have it
247     mac_git_path=`which git 2>/dev/null`
248     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
249         mac_path="$mac_path:`dirname $mac_git_path`"
250     fi
251 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
252 dnl path location is gpg, so make sure we find it
253     mac_gpg_path=`which gpg 2>/dev/null`
254     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
255         mac_path="$mac_path:`dirname $mac_gpg_path`"
256     fi
257     PATH="$mac_path"
258     unset mac_path
259     unset mac_git_path
260     unset mac_gpg_path
263 echo "********************************************************************"
264 echo "*"
265 echo "*   Running ${PACKAGE_NAME} build configuration."
266 echo "*"
267 echo "********************************************************************"
268 echo ""
270 dnl ===================================================================
271 dnl checks build and host OSes
272 dnl do this before argument processing to allow for platform dependent defaults
273 dnl ===================================================================
275 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
276 # Linux on WSL) trust that.
277 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
278     ac_cv_host="x86_64-pc-wsl"
279     ac_cv_host_cpu="x86_64"
280     ac_cv_host_os="wsl"
281     ac_cv_build="$ac_cv_host"
282     ac_cv_build_cpu="$ac_cv_host_cpu"
283     ac_cv_build_os="$ac_cv_host_os"
285     # Emulation of Cygwin's cygpath command for WSL.
286     cygpath()
287     {
288         if test -n "$UNITTEST_WSL_CYGPATH"; then
289             echo -n cygpath "$@" "==> "
290         fi
292         # Cygwin's real cygpath has a plethora of options but we use only a few here.
293         local args="$@"
294         local opt
295         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
296         OPTIND=1
298         while getopts dmuwlsp opt; do
299             case "$opt" in
300                 \?)
301                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
302                     ;;
303                 ?)
304                     eval opt_$opt=yes
305                     ;;
306             esac
307         done
309         shift $((OPTIND-1))
311         if test $# -ne 1; then
312             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
313         fi
315         local input="$1"
317         local result
319         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
320             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
322             if test -n "$opt_u"; then
323                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
324             fi
326             case "$input" in
327                 /mnt/*)
328                     # A Windows file in WSL format
329                     input=$(wslpath -w "$input")
330                     ;;
331                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
332                     # Already in Windows format
333                     ;;
334                 /*)
335                     input=$(wslpath -w "$input")
336                     ;;
337                 *)
338                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
339                     ;;
340             esac
341             if test -n "$opt_d" -o -n "$opt_s"; then
342                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
343             fi
344             if test -n "$opt_m"; then
345                 input="${input//\\//}"
346             fi
347             echo "$input"
348         else
349             # Print Unix path
351             case "$input" in
352                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
353                     wslpath -u "$input"
354                     ;;
355                 /)
356                     echo "$input"
357                     ;;
358                 *)
359                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
360                     ;;
361             esac
362         fi
363     }
365     if test -n "$UNITTEST_WSL_CYGPATH"; then
366         BUILDDIR=.
368         # Nothing special with these file names, just arbitrary ones picked to test with
369         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
370         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
371         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
372         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
373         # At least on my machine for instance this file does have an 8.3 name
374         cygpath -d /mnt/c/windows/WindowsUpdate.log
375         # But for instance this one doesn't
376         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
377         cygpath -ws /mnt/c/windows/WindowsUpdate.log
378         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
379         cygpath -ms /mnt/c/windows/WindowsUpdate.log
381         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
382         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
384         exit 0
385     fi
388 AC_CANONICAL_HOST
389 AC_CANONICAL_BUILD
391 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
392     BUILDDIR=.
393     GREP=grep
395     # Use of PathFormat must be after AC_CANONICAL_BUILD above
396     PathFormat /
397     printf "$formatted_path , $formatted_path_unix\n"
399     PathFormat $PWD
400     printf "$formatted_path , $formatted_path_unix\n"
402     PathFormat "$PROGRAMFILESX86"
403     printf "$formatted_path , $formatted_path_unix\n"
405     exit 0
408 AC_MSG_CHECKING([for product name])
409 PRODUCTNAME="AC_PACKAGE_NAME"
410 if test -n "$with_product_name" -a "$with_product_name" != no; then
411     PRODUCTNAME="$with_product_name"
413 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
414     PRODUCTNAME="${PRODUCTNAME}Dev"
415     PRODUCTNAME=AC_PACKAGE_NAME
417 AC_MSG_RESULT([$PRODUCTNAME])
418 AC_SUBST(PRODUCTNAME)
419 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
420 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
422 dnl ===================================================================
423 dnl Our version is defined by the AC_INIT() at the top of this script.
424 dnl ===================================================================
426 AC_MSG_CHECKING([for package version])
427 if test -n "$with_package_version" -a "$with_package_version" != no; then
428     PACKAGE_VERSION="$with_package_version"
430 AC_MSG_RESULT([$PACKAGE_VERSION])
432 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
434 LIBO_VERSION_MAJOR=$1
435 LIBO_VERSION_MINOR=$2
436 LIBO_VERSION_MICRO=$3
437 LIBO_VERSION_PATCH=$4
439 LIBO_VERSION_SUFFIX=$5
441 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
442 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
443 # they get undoubled before actually passed to sed.
444 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
445 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
446 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
447 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
449 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
450 # three non-negative integers. Please find more information about CFBundleVersion at
451 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
453 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
454 # of at most three non-negative integers. Please find more information about
455 # CFBundleShortVersionString at
456 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
458 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
459 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
461 AC_SUBST(LIBO_VERSION_MAJOR)
462 AC_SUBST(LIBO_VERSION_MINOR)
463 AC_SUBST(LIBO_VERSION_MICRO)
464 AC_SUBST(LIBO_VERSION_PATCH)
465 AC_SUBST(LIBO_VERSION_SUFFIX)
466 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
467 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
468 AC_SUBST(MACOSX_BUNDLE_VERSION)
470 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
471 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
472 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
473 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
475 LIBO_THIS_YEAR=`date +%Y`
476 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
478 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$ac_configure_args"]],[Options passed to configure script])
480 dnl ===================================================================
481 dnl Product version
482 dnl ===================================================================
483 AC_MSG_CHECKING([for product version])
484 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
485 AC_MSG_RESULT([$PRODUCTVERSION])
486 AC_SUBST(PRODUCTVERSION)
488 AC_PROG_EGREP
489 # AC_PROG_EGREP doesn't set GREP on all systems as well
490 AC_PATH_PROG(GREP, grep)
492 BUILDDIR=`pwd`
493 cd $srcdir
494 SRC_ROOT=`pwd`
495 cd $BUILDDIR
496 x_Cygwin=[\#]
498 dnl ======================================
499 dnl Required GObject introspection version
500 dnl ======================================
501 INTROSPECTION_REQUIRED_VERSION=1.32.0
503 dnl ===================================================================
504 dnl Search all the common names for GNU Make
505 dnl ===================================================================
506 AC_MSG_CHECKING([for GNU Make])
508 # try to use our own make if it is available and GNUMAKE was not already defined
509 if test -z "$GNUMAKE"; then
510     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
511         GNUMAKE="$LODE_HOME/opt/bin/make"
512     elif test -x "/opt/lo/bin/make"; then
513         GNUMAKE="/opt/lo/bin/make"
514     fi
517 GNUMAKE_WIN_NATIVE=
518 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
519     if test -n "$a"; then
520         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
521         if test $? -eq 0;  then
522             if test "$build_os" = "cygwin"; then
523                 if test -n "$($a -v | grep 'Built for Windows')" ; then
524                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
525                     GNUMAKE_WIN_NATIVE="TRUE"
526                 else
527                     GNUMAKE=`which $a`
528                 fi
529             else
530                 GNUMAKE=`which $a`
531             fi
532             break
533         fi
534     fi
535 done
536 AC_MSG_RESULT($GNUMAKE)
537 if test -z "$GNUMAKE"; then
538     AC_MSG_ERROR([not found. install GNU Make.])
539 else
540     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
542     fi
545 win_short_path_for_make()
547     local short_path="$1"
548     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
549         cygpath -sm "$short_path"
550     else
551         cygpath -u "$(cygpath -d "$short_path")"
552     fi
556 if test "$build_os" = "cygwin"; then
557     PathFormat "$SRC_ROOT"
558     SRC_ROOT="$formatted_path"
559     PathFormat "$BUILDDIR"
560     BUILDDIR="$formatted_path"
561     x_Cygwin=
562     AC_MSG_CHECKING(for explicit COMSPEC)
563     if test -z "$COMSPEC"; then
564         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
565     else
566         AC_MSG_RESULT([found: $COMSPEC])
567     fi
570 AC_SUBST(SRC_ROOT)
571 AC_SUBST(BUILDDIR)
572 AC_SUBST(x_Cygwin)
573 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
574 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
575 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
577 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
578     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
581 # need sed in os checks...
582 AC_PATH_PROGS(SED, sed)
583 if test -z "$SED"; then
584     AC_MSG_ERROR([install sed to run this script])
587 # Set the ENABLE_LTO variable
588 # ===================================================================
589 AC_MSG_CHECKING([whether to use link-time optimization])
590 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
591     ENABLE_LTO="TRUE"
592     AC_MSG_RESULT([yes])
593 else
594     ENABLE_LTO=""
595     AC_MSG_RESULT([no])
597 AC_SUBST(ENABLE_LTO)
599 AC_ARG_ENABLE(fuzz-options,
600     AS_HELP_STRING([--enable-fuzz-options],
601         [Randomly enable or disable each of those configurable options
602          that are supposed to be freely selectable without interdependencies,
603          or where bad interaction from interdependencies is automatically avoided.])
606 dnl ===================================================================
607 dnl When building for Android, --with-android-ndk,
608 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
609 dnl mandatory
610 dnl ===================================================================
612 AC_ARG_WITH(android-ndk,
613     AS_HELP_STRING([--with-android-ndk],
614         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
617 AC_ARG_WITH(android-ndk-toolchain-version,
618     AS_HELP_STRING([--with-android-ndk-toolchain-version],
619         [Specify which toolchain version to use, of those present in the
620         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
621         with_android_ndk_toolchain_version=clang5.0)
623 AC_ARG_WITH(android-sdk,
624     AS_HELP_STRING([--with-android-sdk],
625         [Specify location of the Android SDK. Mandatory when building for Android.]),
628 AC_ARG_WITH(android-api-level,
629     AS_HELP_STRING([--with-android-api-level],
630         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
633 ANDROID_NDK_HOME=
634 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
635     with_android_ndk="$SRC_ROOT/external/android-ndk"
637 if test -n "$with_android_ndk"; then
638     eval ANDROID_NDK_HOME=$with_android_ndk
640     # Set up a lot of pre-canned defaults
642     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
643         if test ! -f $ANDROID_NDK_HOME/source.properties; then
644             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
645         fi
646         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
647     else
648         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
649     fi
650     if test -z "$ANDROID_NDK_VERSION";  then
651         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
652     fi
653     case $ANDROID_NDK_VERSION in
654     r9*|r10*)
655         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
656         ;;
657     11.1.*|12.1.*|13.1.*|14.1.*)
658         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
659         ;;
660     16.*|17.*|18.*|19.*|20.*)
661         ;;
662     *)
663         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
664         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
665         ;;
666     esac
668     ANDROID_API_LEVEL=16
669     if test -n "$with_android_api_level" ; then
670         ANDROID_API_LEVEL="$with_android_api_level"
671     fi
673     android_cpu=$host_cpu
674     if test $host_cpu = arm; then
675         android_platform_prefix=arm-linux-androideabi
676         android_gnu_prefix=$android_platform_prefix
677         LLVM_TRIPLE=armv7a-linux-androideabi
678         ANDROID_APP_ABI=armeabi-v7a
679         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
680     elif test $host_cpu = aarch64; then
681         android_platform_prefix=aarch64-linux-android
682         android_gnu_prefix=$android_platform_prefix
683         LLVM_TRIPLE=$android_platform_prefix
684         # minimum android version that supports aarch64
685         if test "$ANDROID_API_LEVEL" -lt "21" ; then
686             ANDROID_API_LEVEL=21
687         fi
688         ANDROID_APP_ABI=arm64-v8a
689     elif test $host_cpu = x86_64; then
690         android_platform_prefix=x86_64-linux-android
691         android_gnu_prefix=$android_platform_prefix
692         LLVM_TRIPLE=$android_platform_prefix
693         # minimum android version that supports x86_64
694         ANDROID_API_LEVEL=21
695         ANDROID_APP_ABI=x86_64
696     else
697         # host_cpu is something like "i386" or "i686" I guess, NDK uses
698         # "x86" in some contexts
699         android_cpu=x86
700         android_platform_prefix=$android_cpu
701         android_gnu_prefix=i686-linux-android
702         LLVM_TRIPLE=$android_gnu_prefix
703         ANDROID_APP_ABI=x86
704     fi
706     case "$with_android_ndk_toolchain_version" in
707     clang5.0)
708         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
709         ;;
710     *)
711         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
712     esac
714     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
716     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
717     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
718     # manage to link the (app-specific) single huge .so that is built for the app in
719     # android/source/ if there is debug information in a significant part of the object files.
720     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
721     # all objects have been built with debug information.)
722     case $build_os in
723     linux-gnu*)
724         android_HOST_TAG=linux-x86_64
725         ;;
726     darwin*)
727         android_HOST_TAG=darwin-x86_64
728         ;;
729     *)
730         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
731         # ndk would also support windows and windows-x86_64
732         ;;
733     esac
734     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
735     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
736     dnl TODO: NSS build uses it...
737     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
738     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
740     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
741     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
742     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
743     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
744     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
746     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
747     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
748     if test "$ENABLE_LTO" = TRUE; then
749         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
750         # $CC and $CXX when building external libraries
751         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
752     fi
754     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
756     if test -z "$CC"; then
757         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
758         CC_BASE="clang"
759     fi
760     if test -z "$CXX"; then
761         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
762         CXX_BASE="clang++"
763     fi
765 AC_SUBST(ANDROID_NDK_HOME)
766 AC_SUBST(ANDROID_APP_ABI)
767 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
769 dnl ===================================================================
770 dnl --with-android-sdk
771 dnl ===================================================================
772 ANDROID_SDK_HOME=
773 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
774     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
776 if test -n "$with_android_sdk"; then
777     eval ANDROID_SDK_HOME=$with_android_sdk
778     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
780 AC_SUBST(ANDROID_SDK_HOME)
782 AC_ARG_ENABLE([android-lok],
783     AS_HELP_STRING([--enable-android-lok],
784         [The Android app from the android/ subdir needs several tweaks all
785          over the place that break the LOK when used in the Online-based
786          Android app.  This switch indicates that the intent of this build is
787          actually the Online-based, non-modified LOK.])
789 ENABLE_ANDROID_LOK=
790 if test -n "$ANDROID_NDK_HOME" ; then
791     if test "$enable_android_lok" = yes; then
792         ENABLE_ANDROID_LOK=TRUE
793         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
794         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
795     else
796         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
797     fi
799 AC_SUBST([ENABLE_ANDROID_LOK])
801 libo_FUZZ_ARG_ENABLE([android-editing],
802     AS_HELP_STRING([--enable-android-editing],
803         [Enable the experimental editing feature on Android.])
805 ENABLE_ANDROID_EDITING=
806 if test "$enable_android_editing" = yes; then
807     ENABLE_ANDROID_EDITING=TRUE
809 AC_SUBST([ENABLE_ANDROID_EDITING])
811 disable_database_connectivity_dependencies()
813     enable_evolution2=no
814     enable_firebird_sdbc=no
815     enable_mariadb_sdbc=no
816     enable_postgresql_sdbc=no
817     enable_report_builder=no
820 # ===================================================================
822 # Start initial platform setup
824 # The using_* variables reflect platform support and should not be
825 # changed after the "End initial platform setup" block.
826 # This is also true for most test_* variables.
827 # ===================================================================
828 build_crypto=yes
829 test_cmis=yes
830 test_clucene=no
831 test_gdb_index=no
832 test_openldap=yes
833 test_split_debug=no
834 test_webdav=yes
836 # There is currently just iOS not using salplug, so this explicitly enables it.
837 # must: using_freetype_fontconfig
838 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
839 using_vclplug=yes
840 # must: using_x11
842 # Default values, as such probably valid just for Linux, set
843 # differently below just for Mac OSX, but at least better than
844 # hardcoding these as we used to do. Much of this is duplicated also
845 # in solenv for old build system and for gbuild, ideally we should
846 # perhaps define stuff like this only here in configure.ac?
848 LINKFLAGSSHL="-shared"
849 PICSWITCH="-fpic"
850 DLLPOST=".so"
852 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
854 INSTROOTBASESUFFIX=
855 INSTROOTCONTENTSUFFIX=
856 SDKDIRNAME=sdk
858 HOST_PLATFORM="$host"
860 host_cpu_for_clang="$host_cpu"
862 case "$host_os" in
864 solaris*)
865     using_freetype_fontconfig=yes
866     using_x11=yes
867     build_skia=yes
868     _os=SunOS
870     dnl ===========================================================
871     dnl Check whether we're using Solaris 10 - SPARC or Intel.
872     dnl ===========================================================
873     AC_MSG_CHECKING([the Solaris operating system release])
874     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
875     if test "$_os_release" -lt "10"; then
876         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
877     else
878         AC_MSG_RESULT([ok ($_os_release)])
879     fi
881     dnl Check whether we're using a SPARC or i386 processor
882     AC_MSG_CHECKING([the processor type])
883     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
884         AC_MSG_RESULT([ok ($host_cpu)])
885     else
886         AC_MSG_ERROR([only SPARC and i386 processors are supported])
887     fi
888     ;;
890 linux-gnu*|k*bsd*-gnu*|linux-musl*)
891     using_freetype_fontconfig=yes
892     using_x11=yes
893     build_skia=yes
894     test_gdb_index=yes
895     test_split_debug=yes
896     if test "$enable_fuzzers" = yes; then
897         test_system_freetype=no
898     fi
899     _os=Linux
900     ;;
902 gnu)
903     using_freetype_fontconfig=yes
904     using_x11=no
905     _os=GNU
906      ;;
908 cygwin*|wsl*)
909     # When building on Windows normally with MSVC under Cygwin,
910     # configure thinks that the host platform (the platform the
911     # built code will run on) is Cygwin, even if it obviously is
912     # Windows, which in Autoconf terminology is called
913     # "mingw32". (Which is misleading as MinGW is the name of the
914     # tool-chain, not an operating system.)
916     # Somewhat confusing, yes. But this configure script doesn't
917     # look at $host etc that much, it mostly uses its own $_os
918     # variable, set here in this case statement.
920     using_freetype_fontconfig=no
921     using_x11=no
922     test_openldap=no
923     build_skia=yes
924     _os=WINNT
926     DLLPOST=".dll"
927     LINKFLAGSNOUNDEFS=
929     if test "$host_cpu" = "aarch64"; then
930         build_skia=no
931         enable_gpgmepp=no
932         enable_coinmp=no
933         enable_firebird_sdbc=no
934     fi
935     ;;
937 darwin*|macos*) # macOS
938     using_freetype_fontconfig=no
939     using_x11=no
940     build_skia=yes
941     if test -n "$LODE_HOME" ; then
942         mac_sanitize_path
943         AC_MSG_NOTICE([sanitized the PATH to $PATH])
944     fi
945     _os=Darwin
946     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
947     INSTROOTCONTENTSUFFIX=/Contents
948     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
949     # See comment above the case "$host_os"
950     LINKFLAGSSHL="-dynamiclib -single_module"
952     # -fPIC is default
953     PICSWITCH=""
955     DLLPOST=".dylib"
957     # -undefined error is the default
958     LINKFLAGSNOUNDEFS=""
959     case "$host_cpu" in
960     aarch64|arm64)
961         case "$host_os" in
962         macos*)
963             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
964             # the "macos" part so be sure to use aarch64-apple-darwin for now.
965             HOST_PLATFORM=aarch64-apple-darwin
966             ;;
967         esac
969         # Apple's Clang uses "arm64"
970         host_cpu_for_clang=arm64
971     esac
974 ios*) # iOS
975     using_freetype_fontconfig=no
976     using_vclplug=no
977     using_x11=no
978     build_crypto=no
979     test_cmis=no
980     test_openldap=no
981     test_webdav=no
982     if test -n "$LODE_HOME" ; then
983         mac_sanitize_path
984         AC_MSG_NOTICE([sanitized the PATH to $PATH])
985     fi
986     enable_gpgmepp=no
987     _os=iOS
988     enable_mpl_subset=yes
989     enable_lotuswordpro=no
990     disable_database_connectivity_dependencies
991     enable_coinmp=no
992     enable_lpsolve=no
993     enable_extension_integration=no
994     enable_xmlhelp=no
995     with_ppds=no
996     if test "$enable_ios_simulator" = "yes"; then
997         host=x86_64-apple-darwin
998     fi
999     # See comment above the case "$host_os"
1000     LINKFLAGSSHL="-dynamiclib -single_module"
1002     # -fPIC is default
1003     PICSWITCH=""
1005     DLLPOST=".dylib"
1007     # -undefined error is the default
1008     LINKFLAGSNOUNDEFS=""
1010     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1011     # part, so use aarch64-apple-darwin for now.
1012     HOST_PLATFORM=aarch64-apple-darwin
1014     # Apple's Clang uses "arm64"
1015     host_cpu_for_clang=arm64
1018 freebsd*)
1019     using_freetype_fontconfig=yes
1020     using_x11=yes
1021     build_skia=yes
1022     AC_MSG_CHECKING([the FreeBSD operating system release])
1023     if test -n "$with_os_version"; then
1024         OSVERSION="$with_os_version"
1025     else
1026         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1027     fi
1028     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1029     AC_MSG_CHECKING([which thread library to use])
1030     if test "$OSVERSION" -lt "500016"; then
1031         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1032         PTHREAD_LIBS="-pthread"
1033     elif test "$OSVERSION" -lt "502102"; then
1034         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1035         PTHREAD_LIBS="-lc_r"
1036     else
1037         PTHREAD_CFLAGS=""
1038         PTHREAD_LIBS="-pthread"
1039     fi
1040     AC_MSG_RESULT([$PTHREAD_LIBS])
1041     _os=FreeBSD
1042     ;;
1044 *netbsd*)
1045     using_freetype_fontconfig=yes
1046     using_x11=yes
1047     test_gtk3_kde5=no
1048     build_skia=yes
1049     PTHREAD_LIBS="-pthread -lpthread"
1050     _os=NetBSD
1051     ;;
1053 aix*)
1054     using_freetype_fontconfig=yes
1055     using_x11=yes
1056     test_randr=no
1057     test_gstreamer_1_0=no
1058     PTHREAD_LIBS=-pthread
1059     _os=AIX
1060     ;;
1062 openbsd*)
1063     using_freetype_fontconfig=yes
1064     using_x11=yes
1065     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1066     PTHREAD_LIBS="-pthread"
1067     _os=OpenBSD
1068     ;;
1070 dragonfly*)
1071     using_freetype_fontconfig=yes
1072     using_x11=yes
1073     build_skia=yes
1074     PTHREAD_LIBS="-pthread"
1075     _os=DragonFly
1076     ;;
1078 linux-android*)
1079     using_freetype_fontconfig=yes
1080     using_headless_plugin=no
1081     using_x11=no
1082     build_crypto=no
1083     test_openldap=no
1084     test_system_freetype=no
1085     test_webdav=no
1086     disable_database_connectivity_dependencies
1087     enable_lotuswordpro=no
1088     enable_mpl_subset=yes
1089     enable_cairo_canvas=no
1090     enable_coinmp=yes
1091     enable_lpsolve=no
1092     enable_odk=no
1093     enable_python=no
1094     enable_xmlhelp=no
1095     _os=Android
1097     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1098     ;;
1100 haiku*)
1101     using_freetype_fontconfig=yes
1102     using_x11=no
1103     test_gtk3_kde5=no
1104     test_kf5=yes
1105     enable_odk=no
1106     enable_coinmp=no
1107     enable_pdfium=no
1108     enable_sdremote=no
1109     enable_postgresql_sdbc=no
1110     enable_firebird_sdbc=no
1111     _os=Haiku
1112     ;;
1114 emscripten)
1115     using_freetype_fontconfig=yes
1116     using_x11=no
1117     test_openldap=no
1118     enable_compiler_plugins=no
1119     test_cmis=no
1120     test_webdav=no
1121     enable_database_connectivity=no
1122     enable_lpsolve=no
1123     enable_xmlhelp=no
1124     with_system_zlib=no
1125     with_theme="breeze"
1126     _os=Emscripten
1127     ;;
1130     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1131     ;;
1132 esac
1134 AC_SUBST(HOST_PLATFORM)
1136 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1137     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1140 # Set defaults, if not set by platform
1141 test "${test_cups+set}" = set || test_cups="$using_x11"
1142 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1143 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1144 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1145 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1146 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1147 # don't handle test_qt5, so it can disable test_kf5 later
1148 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1149 test "${test_randr+set}" = set || test_randr="$using_x11"
1150 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1151 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1153 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1154 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1155 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1157 # convenience / platform overriding "fixes"
1158 # Don't sort!
1159 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1160 test "$test_kf5" = yes && test_qt5=yes
1161 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1162 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1163 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1165 # Keep in sync with the above $using_x11 depending test default list
1166 disable_x11_tests()
1168     test_cups=no
1169     test_dbus=no
1170     test_gstreamer_1_0=no
1171     test_gtk3_kde5=no
1172     test_gtk3=no
1173     test_gtk4=no
1174     test_kf5=no
1175     test_qt5=no
1176     test_qt6=no
1177     test_randr=no
1178     test_xrender=no
1181 test "$using_x11" = yes && USING_X11=TRUE
1183 if test "$using_freetype_fontconfig" = yes; then
1184     if test "$using_headless_plugin" = yes; then
1185         AC_DEFINE(ENABLE_HEADLESS)
1186         ENABLE_HEADLESS=TRUE
1187     fi
1188 else
1189     test_fontconfig=no
1190     test_freetype=no
1193 AC_SUBST(ENABLE_HEADLESS)
1195 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1196 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1197 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1198 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1200 # ===================================================================
1202 # End initial platform setup
1204 # ===================================================================
1206 if test "$_os" = "Android" ; then
1207     # Verify that the NDK and SDK options are proper
1208     if test -z "$with_android_ndk"; then
1209         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1210     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1211         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1212     fi
1214     if test -z "$ANDROID_SDK_HOME"; then
1215         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1216     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1217         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1218     fi
1220     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1221     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1222         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1223                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1224                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1225         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1226         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1227         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1228     fi
1229     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1230         AC_MSG_WARN([android support repository not found - install with
1231                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1232                      to allow the build to download the specified version of the android support libraries])
1233         add_warning "android support repository not found - install with"
1234         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1235         add_warning "to allow the build to download the specified version of the android support libraries"
1236     fi
1239 if test "$_os" = "AIX"; then
1240     AC_PATH_PROG(GAWK, gawk)
1241     if test -z "$GAWK"; then
1242         AC_MSG_ERROR([gawk not found in \$PATH])
1243     fi
1246 AC_SUBST(SDKDIRNAME)
1248 AC_SUBST(PTHREAD_CFLAGS)
1249 AC_SUBST(PTHREAD_LIBS)
1251 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1252 # By default use the ones specified by our build system,
1253 # but explicit override is possible.
1254 AC_MSG_CHECKING(for explicit AFLAGS)
1255 if test -n "$AFLAGS"; then
1256     AC_MSG_RESULT([$AFLAGS])
1257     x_AFLAGS=
1258 else
1259     AC_MSG_RESULT(no)
1260     x_AFLAGS=[\#]
1262 AC_MSG_CHECKING(for explicit CFLAGS)
1263 if test -n "$CFLAGS"; then
1264     AC_MSG_RESULT([$CFLAGS])
1265     x_CFLAGS=
1266 else
1267     AC_MSG_RESULT(no)
1268     x_CFLAGS=[\#]
1270 AC_MSG_CHECKING(for explicit CXXFLAGS)
1271 if test -n "$CXXFLAGS"; then
1272     AC_MSG_RESULT([$CXXFLAGS])
1273     x_CXXFLAGS=
1274 else
1275     AC_MSG_RESULT(no)
1276     x_CXXFLAGS=[\#]
1278 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1279 if test -n "$OBJCFLAGS"; then
1280     AC_MSG_RESULT([$OBJCFLAGS])
1281     x_OBJCFLAGS=
1282 else
1283     AC_MSG_RESULT(no)
1284     x_OBJCFLAGS=[\#]
1286 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1287 if test -n "$OBJCXXFLAGS"; then
1288     AC_MSG_RESULT([$OBJCXXFLAGS])
1289     x_OBJCXXFLAGS=
1290 else
1291     AC_MSG_RESULT(no)
1292     x_OBJCXXFLAGS=[\#]
1294 AC_MSG_CHECKING(for explicit LDFLAGS)
1295 if test -n "$LDFLAGS"; then
1296     AC_MSG_RESULT([$LDFLAGS])
1297     x_LDFLAGS=
1298 else
1299     AC_MSG_RESULT(no)
1300     x_LDFLAGS=[\#]
1302 AC_SUBST(AFLAGS)
1303 AC_SUBST(CFLAGS)
1304 AC_SUBST(CXXFLAGS)
1305 AC_SUBST(OBJCFLAGS)
1306 AC_SUBST(OBJCXXFLAGS)
1307 AC_SUBST(LDFLAGS)
1308 AC_SUBST(x_AFLAGS)
1309 AC_SUBST(x_CFLAGS)
1310 AC_SUBST(x_CXXFLAGS)
1311 AC_SUBST(x_OBJCFLAGS)
1312 AC_SUBST(x_OBJCXXFLAGS)
1313 AC_SUBST(x_LDFLAGS)
1315 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1316 my_original_CFLAGS=$CFLAGS
1317 my_original_CXXFLAGS=$CXXFLAGS
1318 my_original_CPPFLAGS=$CPPFLAGS
1320 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1321 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1322 dnl AC_PROG_CC internally.
1323 if test "$_os" != "WINNT"; then
1324     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1325     save_CFLAGS=$CFLAGS
1326     AC_PROG_CC
1327     CFLAGS=$save_CFLAGS
1328     if test -z "$CC_BASE"; then
1329         CC_BASE=`first_arg_basename "$CC"`
1330     fi
1333 if test "$_os" != "WINNT"; then
1334     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1335 else
1336     ENDIANNESS=little
1338 AC_SUBST(ENDIANNESS)
1340 if test $_os != "WINNT"; then
1341     save_LIBS="$LIBS"
1342     AC_SEARCH_LIBS([dlsym], [dl],
1343         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1344         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1345     LIBS="$save_LIBS"
1347 AC_SUBST(DLOPEN_LIBS)
1349 # Check for a (GNU) backtrace implementation
1350 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1351 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1352 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1353     save_LIBS="$LIBS"
1354     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1355         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1356         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1357     LIBS="$save_LIBS"
1359 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1360     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1363 dnl ===================================================================
1364 dnl Sanity checks for Emscripten SDK setup
1365 dnl ===================================================================
1367 if test "$_os" = "Emscripten"; then
1368     EMSCRIPTEN_ERROR=0
1369     if ! which emconfigure >/dev/null 2>&1; then
1370         AC_MSG_WARN([emconfigure must be in your \$PATH])
1371         EMSCRIPTEN_ERROR=1
1372     fi
1373     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1374         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1375         EMSCRIPTEN_ERROR=1
1376     fi
1377     if test $EMSCRIPTEN_ERROR -ne 0; then
1378         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1379     fi
1382 ###############################################################################
1383 # Extensions switches --enable/--disable
1384 ###############################################################################
1385 # By default these should be enabled unless having extra dependencies.
1386 # If there is extra dependency over configure options then the enable should
1387 # be automagic based on whether the requiring feature is enabled or not.
1388 # All this options change anything only with --enable-extension-integration.
1390 # The name of this option and its help string makes it sound as if
1391 # extensions are built anyway, just not integrated in the installer,
1392 # if you use --disable-extension-integration. Is that really the
1393 # case?
1395 AC_ARG_ENABLE(ios-simulator,
1396     AS_HELP_STRING([--enable-ios-simulator],
1397         [build for iOS simulator])
1400 libo_FUZZ_ARG_ENABLE(extension-integration,
1401     AS_HELP_STRING([--disable-extension-integration],
1402         [Disable integration of the built extensions in the installer of the
1403          product. Use this switch to disable the integration.])
1406 AC_ARG_ENABLE(avmedia,
1407     AS_HELP_STRING([--disable-avmedia],
1408         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1411 AC_ARG_ENABLE(database-connectivity,
1412     AS_HELP_STRING([--disable-database-connectivity],
1413         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1416 # This doesn't mean not building (or "integrating") extensions
1417 # (although it probably should; i.e. it should imply
1418 # --disable-extension-integration I guess), it means not supporting
1419 # any extension mechanism at all
1420 libo_FUZZ_ARG_ENABLE(extensions,
1421     AS_HELP_STRING([--disable-extensions],
1422         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1425 AC_ARG_ENABLE(scripting,
1426     AS_HELP_STRING([--disable-scripting],
1427         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1430 # This is mainly for Android and iOS, but could potentially be used in some
1431 # special case otherwise, too, so factored out as a separate setting
1433 AC_ARG_ENABLE(dynamic-loading,
1434     AS_HELP_STRING([--disable-dynamic-loading],
1435         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1438 libo_FUZZ_ARG_ENABLE(report-builder,
1439     AS_HELP_STRING([--disable-report-builder],
1440         [Disable the Report Builder.])
1443 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1444     AS_HELP_STRING([--enable-ext-wiki-publisher],
1445         [Enable the Wiki Publisher extension.])
1448 libo_FUZZ_ARG_ENABLE(lpsolve,
1449     AS_HELP_STRING([--disable-lpsolve],
1450         [Disable compilation of the lp solve solver ])
1452 libo_FUZZ_ARG_ENABLE(coinmp,
1453     AS_HELP_STRING([--disable-coinmp],
1454         [Disable compilation of the CoinMP solver ])
1457 libo_FUZZ_ARG_ENABLE(pdfimport,
1458     AS_HELP_STRING([--disable-pdfimport],
1459         [Disable building the PDF import feature.])
1462 libo_FUZZ_ARG_ENABLE(pdfium,
1463     AS_HELP_STRING([--disable-pdfium],
1464         [Disable building PDFium. Results in unsecure PDF signature verification.])
1467 libo_FUZZ_ARG_ENABLE(skia,
1468     AS_HELP_STRING([--disable-skia],
1469         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1472 ###############################################################################
1474 dnl ---------- *** ----------
1476 libo_FUZZ_ARG_ENABLE(mergelibs,
1477     AS_HELP_STRING([--enable-mergelibs],
1478         [Merge several of the smaller libraries into one big, "merged", one.])
1481 libo_FUZZ_ARG_ENABLE(breakpad,
1482     AS_HELP_STRING([--enable-breakpad],
1483         [Enables breakpad for crash reporting.])
1486 libo_FUZZ_ARG_ENABLE(crashdump,
1487     AS_HELP_STRING([--disable-crashdump],
1488         [Disable dump.ini and dump-file, when --enable-breakpad])
1491 AC_ARG_ENABLE(fetch-external,
1492     AS_HELP_STRING([--disable-fetch-external],
1493         [Disables fetching external tarballs from web sources.])
1496 AC_ARG_ENABLE(fuzzers,
1497     AS_HELP_STRING([--enable-fuzzers],
1498         [Enables building libfuzzer targets for fuzz testing.])
1501 libo_FUZZ_ARG_ENABLE(pch,
1502     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1503         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1504          Using 'system' will include only external headers, 'base' will add also headers
1505          from base modules, 'normal' will also add all headers except from the module built,
1506          'full' will use all suitable headers even from a module itself.])
1509 libo_FUZZ_ARG_ENABLE(epm,
1510     AS_HELP_STRING([--enable-epm],
1511         [LibreOffice includes self-packaging code, that requires epm, however epm is
1512          useless for large scale package building.])
1515 libo_FUZZ_ARG_ENABLE(odk,
1516     AS_HELP_STRING([--enable-odk],
1517         [Enable building the Office Development Kit, the part that extensions need to build against])
1520 AC_ARG_ENABLE(mpl-subset,
1521     AS_HELP_STRING([--enable-mpl-subset],
1522         [Don't compile any pieces which are not MPL or more liberally licensed])
1525 libo_FUZZ_ARG_ENABLE(evolution2,
1526     AS_HELP_STRING([--enable-evolution2],
1527         [Allows the built-in evolution 2 addressbook connectivity build to be
1528          enabled.])
1531 AC_ARG_ENABLE(avahi,
1532     AS_HELP_STRING([--enable-avahi],
1533         [Determines whether to use Avahi to advertise Impress to remote controls.])
1536 libo_FUZZ_ARG_ENABLE(werror,
1537     AS_HELP_STRING([--enable-werror],
1538         [Turn warnings to errors. (Has no effect in modules where the treating
1539          of warnings as errors is disabled explicitly.)]),
1542 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1543     AS_HELP_STRING([--enable-assert-always-abort],
1544         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1547 libo_FUZZ_ARG_ENABLE(dbgutil,
1548     AS_HELP_STRING([--enable-dbgutil],
1549         [Provide debugging support from --enable-debug and include additional debugging
1550          utilities such as object counting or more expensive checks.
1551          This is the recommended option for developers.
1552          Note that this makes the build ABI incompatible, it is not possible to mix object
1553          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1555 libo_FUZZ_ARG_ENABLE(debug,
1556     AS_HELP_STRING([--enable-debug],
1557         [Include debugging information, disable compiler optimization and inlining plus
1558          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1560 libo_FUZZ_ARG_ENABLE(split-debug,
1561     AS_HELP_STRING([--disable-split-debug],
1562         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1563          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1565 libo_FUZZ_ARG_ENABLE(gdb-index,
1566     AS_HELP_STRING([--disable-gdb-index],
1567         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1568          The feature requires the gold or lld linker.]))
1570 libo_FUZZ_ARG_ENABLE(sal-log,
1571     AS_HELP_STRING([--enable-sal-log],
1572         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1574 libo_FUZZ_ARG_ENABLE(symbols,
1575     AS_HELP_STRING([--enable-symbols],
1576         [Generate debug information.
1577          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1578          otherwise. It is possible to explicitly specify gbuild build targets
1579          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1580          everything in the directory; there is no ordering, more specific overrides
1581          more general, and disabling takes precedence).
1582          Example: --enable-symbols="all -sw/ -Library_sc".]))
1584 libo_FUZZ_ARG_ENABLE(optimized,
1585     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1586         [Whether to compile with optimization flags.
1587          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1588          otherwise. Using 'debug' will try to use only optimizations that should
1589          not interfere with debugging. For Emscripten we default to optimized (-O1)
1590          debug build, as otherwise binaries become too large.]))
1592 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1593     AS_HELP_STRING([--disable-runtime-optimizations],
1594         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1595          JVM JIT) that are known to interact badly with certain dynamic analysis
1596          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1597          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1598          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1600 AC_ARG_WITH(valgrind,
1601     AS_HELP_STRING([--with-valgrind],
1602         [Make availability of Valgrind headers a hard requirement.]))
1604 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1605     AS_HELP_STRING([--enable-compiler-plugins],
1606         [Enable compiler plugins that will perform additional checks during
1607          building. Enabled automatically by --enable-dbgutil.
1608          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1609 COMPILER_PLUGINS_DEBUG=
1610 if test "$enable_compiler_plugins" = debug; then
1611     enable_compiler_plugins=yes
1612     COMPILER_PLUGINS_DEBUG=TRUE
1615 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1616     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1617         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1618          relevant in the --disable-compiler-plugins case.]))
1620 libo_FUZZ_ARG_ENABLE(ooenv,
1621     AS_HELP_STRING([--enable-ooenv],
1622         [Enable ooenv for the instdir installation.]))
1624 AC_ARG_ENABLE(lto,
1625     AS_HELP_STRING([--enable-lto],
1626         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1627          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1628          linker.)]))
1630 AC_ARG_ENABLE(python,
1631     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1632         [Enables or disables Python support at run-time.
1633          Also specifies what Python to use at build-time.
1634          'fully-internal' even forces the internal version for uses of Python
1635          during the build.
1636          On macOS the only choices are
1637          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1638          ]))
1640 libo_FUZZ_ARG_ENABLE(gtk3,
1641     AS_HELP_STRING([--disable-gtk3],
1642         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1643 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1645 AC_ARG_ENABLE(gtk4,
1646     AS_HELP_STRING([--enable-gtk4],
1647         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1649 AC_ARG_ENABLE(introspection,
1650     AS_HELP_STRING([--enable-introspection],
1651         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1652          Linux distributions.)]))
1654 AC_ARG_ENABLE(split-app-modules,
1655     AS_HELP_STRING([--enable-split-app-modules],
1656         [Split file lists for app modules, e.g. base, calc.
1657          Has effect only with make distro-pack-install]),
1660 AC_ARG_ENABLE(split-opt-features,
1661     AS_HELP_STRING([--enable-split-opt-features],
1662         [Split file lists for some optional features, e.g. pyuno, testtool.
1663          Has effect only with make distro-pack-install]),
1666 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1667     AS_HELP_STRING([--disable-cairo-canvas],
1668         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1671 libo_FUZZ_ARG_ENABLE(dbus,
1672     AS_HELP_STRING([--disable-dbus],
1673         [Determines whether to enable features that depend on dbus.
1674          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1675 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1677 libo_FUZZ_ARG_ENABLE(sdremote,
1678     AS_HELP_STRING([--disable-sdremote],
1679         [Determines whether to enable Impress remote control (i.e. the server component).]),
1680 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1682 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1683     AS_HELP_STRING([--disable-sdremote-bluetooth],
1684         [Determines whether to build sdremote with bluetooth support.
1685          Requires dbus on Linux.]))
1687 libo_FUZZ_ARG_ENABLE(gio,
1688     AS_HELP_STRING([--disable-gio],
1689         [Determines whether to use the GIO support.]),
1690 ,test "${enable_gio+set}" = set || enable_gio=yes)
1692 AC_ARG_ENABLE(qt5,
1693     AS_HELP_STRING([--enable-qt5],
1694         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1695          available.]),
1698 AC_ARG_ENABLE(qt6,
1699     AS_HELP_STRING([--enable-qt6],
1700         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1701          available.]),
1704 AC_ARG_ENABLE(kf5,
1705     AS_HELP_STRING([--enable-kf5],
1706         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1707          KF5 are available.]),
1710 AC_ARG_ENABLE(gtk3_kde5,
1711     AS_HELP_STRING([--enable-gtk3-kde5],
1712         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1713          platforms where Gtk3, Qt5 and Plasma is available.]),
1716 AC_ARG_ENABLE(gui,
1717     AS_HELP_STRING([--disable-gui],
1718         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1719 ,enable_gui=yes)
1721 libo_FUZZ_ARG_ENABLE(randr,
1722     AS_HELP_STRING([--disable-randr],
1723         [Disable RandR support in the vcl project.]),
1724 ,test "${enable_randr+set}" = set || enable_randr=yes)
1726 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1727     AS_HELP_STRING([--disable-gstreamer-1-0],
1728         [Disable building with the gstreamer 1.0 avmedia backend.]),
1729 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1731 libo_FUZZ_ARG_ENABLE([eot],
1732     [AS_HELP_STRING([--enable-eot],
1733         [Enable support for Embedded OpenType fonts.])],
1734 ,test "${enable_eot+set}" = set || enable_eot=no)
1736 libo_FUZZ_ARG_ENABLE(cve-tests,
1737     AS_HELP_STRING([--disable-cve-tests],
1738         [Prevent CVE tests to be executed]),
1741 libo_FUZZ_ARG_ENABLE(chart-tests,
1742     AS_HELP_STRING([--enable-chart-tests],
1743         [Executes chart XShape tests. In a perfect world these tests would be
1744          stable and everyone could run them, in reality it is best to run them
1745          only on a few machines that are known to work and maintained by people
1746          who can judge if a test failure is a regression or not.]),
1749 AC_ARG_ENABLE(build-opensymbol,
1750     AS_HELP_STRING([--enable-build-opensymbol],
1751         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1752          fontforge installed.]),
1755 AC_ARG_ENABLE(dependency-tracking,
1756     AS_HELP_STRING([--enable-dependency-tracking],
1757         [Do not reject slow dependency extractors.])[
1758   --disable-dependency-tracking
1759                           Disables generation of dependency information.
1760                           Speed up one-time builds.],
1763 AC_ARG_ENABLE(icecream,
1764     AS_HELP_STRING([--enable-icecream],
1765         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1766          It defaults to /opt/icecream for the location of the icecream gcc/g++
1767          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1770 AC_ARG_ENABLE(ld,
1771     AS_HELP_STRING([--enable-ld=<linker>],
1772         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1773          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1774          If <linker> contains any ':', the part before the first ':' is used as the value of
1775          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1776          needed for Clang 12).]),
1779 libo_FUZZ_ARG_ENABLE(cups,
1780     AS_HELP_STRING([--disable-cups],
1781         [Do not build cups support.])
1784 AC_ARG_ENABLE(ccache,
1785     AS_HELP_STRING([--disable-ccache],
1786         [Do not try to use ccache automatically.
1787          By default we will try to detect if ccache is available; in that case if
1788          CC/CXX are not yet set, and --enable-icecream is not given, we
1789          attempt to use ccache. --disable-ccache disables ccache completely.
1790          Additionally ccache's depend mode is enabled if possible,
1791          use --enable-ccache=nodepend to enable ccache without depend mode.
1795 AC_ARG_ENABLE(z7-debug,
1796     AS_HELP_STRING([--enable-z7-debug],
1797         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1798          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1799          Enabled by default if ccache is detected.]))
1801 libo_FUZZ_ARG_ENABLE(online-update,
1802     AS_HELP_STRING([--enable-online-update],
1803         [Enable the online update service that will check for new versions of
1804          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1805          If the value is "mar", the experimental Mozilla-like update will be
1806          enabled instead of the traditional update mechanism.]),
1809 AC_ARG_WITH(update-config,
1810     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1811                    [Path to the update config ini file]))
1813 libo_FUZZ_ARG_ENABLE(extension-update,
1814     AS_HELP_STRING([--disable-extension-update],
1815         [Disable possibility to update installed extensions.]),
1818 libo_FUZZ_ARG_ENABLE(release-build,
1819     AS_HELP_STRING([--enable-release-build],
1820         [Enable release build. Note that the "release build" choice is orthogonal to
1821          whether symbols are present, debug info is generated, or optimization
1822          is done.
1823          See http://wiki.documentfoundation.org/Development/DevBuild]),
1826 AC_ARG_ENABLE(windows-build-signing,
1827     AS_HELP_STRING([--enable-windows-build-signing],
1828         [Enable signing of windows binaries (*.exe, *.dll)]),
1831 AC_ARG_ENABLE(silent-msi,
1832     AS_HELP_STRING([--enable-silent-msi],
1833         [Enable MSI with LIMITUI=1 (silent install).]),
1836 AC_ARG_ENABLE(macosx-code-signing,
1837     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1838         [Sign executables, dylibs, frameworks and the app bundle. If you
1839          don't provide an identity the first suitable certificate
1840          in your keychain is used.]),
1843 AC_ARG_ENABLE(macosx-package-signing,
1844     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1845         [Create a .pkg suitable for uploading to the Mac App Store and sign
1846          it. If you don't provide an identity the first suitable certificate
1847          in your keychain is used.]),
1850 AC_ARG_ENABLE(macosx-sandbox,
1851     AS_HELP_STRING([--enable-macosx-sandbox],
1852         [Make the app bundle run in a sandbox. Requires code signing.
1853          Is required by apps distributed in the Mac App Store, and implies
1854          adherence to App Store rules.]),
1857 AC_ARG_WITH(macosx-bundle-identifier,
1858     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1859         [Define the macOS bundle identifier. Default is the somewhat weird
1860          org.libreoffice.script ("script", huh?).]),
1861 ,with_macosx_bundle_identifier=org.libreoffice.script)
1863 AC_ARG_WITH(macosx-provisioning-profile,
1864     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1865         [Specify the path to a provisioning profile to use]),
1868 AC_ARG_WITH(product-name,
1869     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1870         [Define the product name. Default is AC_PACKAGE_NAME.]),
1871 ,with_product_name=$PRODUCTNAME)
1873 libo_FUZZ_ARG_ENABLE(community-flavor,
1874     AS_HELP_STRING([--disable-community-flavor],
1875         [Disable the Community branding.]),
1878 AC_ARG_WITH(package-version,
1879     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1880         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1883 libo_FUZZ_ARG_ENABLE(readonly-installset,
1884     AS_HELP_STRING([--enable-readonly-installset],
1885         [Prevents any attempts by LibreOffice to write into its installation. That means
1886          at least that no "system-wide" extensions can be added. Partly experimental work in
1887          progress, probably not fully implemented. Always enabled for macOS.]),
1890 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1891     AS_HELP_STRING([--disable-mariadb-sdbc],
1892         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1895 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1896     AS_HELP_STRING([--disable-postgresql-sdbc],
1897         [Disable the build of the PostgreSQL-SDBC driver.])
1900 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1901     AS_HELP_STRING([--disable-lotuswordpro],
1902         [Disable the build of the Lotus Word Pro filter.]),
1903 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1905 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1906     AS_HELP_STRING([--disable-firebird-sdbc],
1907         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1908 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1910 AC_ARG_ENABLE(bogus-pkg-config,
1911     AS_HELP_STRING([--enable-bogus-pkg-config],
1912         [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.]),
1915 AC_ARG_ENABLE(openssl,
1916     AS_HELP_STRING([--disable-openssl],
1917         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1918          components will either use GNUTLS or NSS. Work in progress,
1919          use only if you are hacking on it.]),
1920 ,enable_openssl=yes)
1922 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1923     AS_HELP_STRING([--enable-cipher-openssl-backend],
1924         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1925          Requires --enable-openssl.]))
1927 AC_ARG_ENABLE(nss,
1928     AS_HELP_STRING([--disable-nss],
1929         [Disable using NSS. If disabled,
1930          components will either use GNUTLS or openssl. Work in progress,
1931          use only if you are hacking on it.]),
1932 ,enable_nss=yes)
1934 AC_ARG_ENABLE(library-bin-tar,
1935     AS_HELP_STRING([--enable-library-bin-tar],
1936         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1937         Some libraries can save their build result in a tarball
1938         stored in TARFILE_LOCATION. That binary tarball is
1939         uniquely identified by the source tarball,
1940         the content of the config_host.mk file and the content
1941         of the top-level directory in core for that library
1942         If this option is enabled, then if such a tarfile exist, it will be untarred
1943         instead of the source tarfile, and the build step will be skipped for that
1944         library.
1945         If a proper tarfile does not exist, then the normal source-based
1946         build is done for that library and a proper binary tarfile is created
1947         for the next time.]),
1950 AC_ARG_ENABLE(dconf,
1951     AS_HELP_STRING([--disable-dconf],
1952         [Disable the dconf configuration backend (enabled by default where
1953          available).]))
1955 libo_FUZZ_ARG_ENABLE(formula-logger,
1956     AS_HELP_STRING(
1957         [--enable-formula-logger],
1958         [Enable formula logger for logging formula calculation flow in Calc.]
1959     )
1962 AC_ARG_ENABLE(ldap,
1963     AS_HELP_STRING([--disable-ldap],
1964         [Disable LDAP support.]),
1965 ,enable_ldap=yes)
1967 AC_ARG_ENABLE(opencl,
1968     AS_HELP_STRING([--disable-opencl],
1969         [Disable OpenCL support.]),
1970 ,enable_opencl=yes)
1972 libo_FUZZ_ARG_ENABLE(librelogo,
1973     AS_HELP_STRING([--disable-librelogo],
1974         [Do not build LibreLogo.]),
1975 ,enable_librelogo=yes)
1977 AC_ARG_ENABLE(cmis,
1978     AS_HELP_STRING([--disable-cmis],
1979         [Disable CMIS support.]),
1980 ,enable_cmis=yes)
1982 AC_ARG_ENABLE(curl,
1983     AS_HELP_STRING([--disable-curl],
1984         [Disable CURL support.]),
1985 ,enable_curl=yes)
1987 AC_ARG_ENABLE(wasm-strip,
1988     AS_HELP_STRING([--enable-wasm-strip],
1989         [Strip the static build like for WASM/emscripten platform.]),
1990 ,enable_wasm_strip=yes)
1992 AC_ARG_ENABLE(xmlhelp,
1993     AS_HELP_STRING([--disable-xmlhelp],
1994         [Disable XML help support]),
1995 ,enable_xmlhelp=yes)
1998 dnl ===================================================================
1999 dnl Optional Packages (--with/without-)
2000 dnl ===================================================================
2002 AC_ARG_WITH(gcc-home,
2003     AS_HELP_STRING([--with-gcc-home],
2004         [Specify the location of gcc/g++ manually. This can be used in conjunction
2005          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2006          non-default path.]),
2009 AC_ARG_WITH(gnu-patch,
2010     AS_HELP_STRING([--with-gnu-patch],
2011         [Specify location of GNU patch on Solaris or FreeBSD.]),
2014 AC_ARG_WITH(build-platform-configure-options,
2015     AS_HELP_STRING([--with-build-platform-configure-options],
2016         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2019 AC_ARG_WITH(gnu-cp,
2020     AS_HELP_STRING([--with-gnu-cp],
2021         [Specify location of GNU cp on Solaris or FreeBSD.]),
2024 AC_ARG_WITH(external-tar,
2025     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2026         [Specify an absolute path of where to find (and store) tarfiles.]),
2027     TARFILE_LOCATION=$withval ,
2030 AC_ARG_WITH(referenced-git,
2031     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2032         [Specify another checkout directory to reference. This makes use of
2033                  git submodule update --reference, and saves a lot of diskspace
2034                  when having multiple trees side-by-side.]),
2035     GIT_REFERENCE_SRC=$withval ,
2038 AC_ARG_WITH(linked-git,
2039     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2040         [Specify a directory where the repositories of submodules are located.
2041          This uses a method similar to git-new-workdir to get submodules.]),
2042     GIT_LINK_SRC=$withval ,
2045 AC_ARG_WITH(galleries,
2046     AS_HELP_STRING([--with-galleries],
2047         [Specify how galleries should be built. It is possible either to
2048          build these internally from source ("build"),
2049          or to disable them ("no")]),
2052 AC_ARG_WITH(theme,
2053     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2054         [Choose which themes to include. By default those themes with an '*' are included.
2055          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2056          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2059 libo_FUZZ_ARG_WITH(helppack-integration,
2060     AS_HELP_STRING([--without-helppack-integration],
2061         [It will not integrate the helppacks to the installer
2062          of the product. Please use this switch to use the online help
2063          or separate help packages.]),
2066 libo_FUZZ_ARG_WITH(fonts,
2067     AS_HELP_STRING([--without-fonts],
2068         [LibreOffice includes some third-party fonts to provide a reliable basis for
2069          help content, templates, samples, etc. When these fonts are already
2070          known to be available on the system then you should use this option.]),
2073 AC_ARG_ENABLE(noto-font,
2074     AS_HELP_STRING([--enable-noto-font],
2075         [Add more Google Noto fonts.]),
2078 AC_ARG_WITH(epm,
2079     AS_HELP_STRING([--with-epm],
2080         [Decides which epm to use. Default is to use the one from the system if
2081          one is built. When either this is not there or you say =internal epm
2082          will be built.]),
2085 AC_ARG_WITH(package-format,
2086     AS_HELP_STRING([--with-package-format],
2087         [Specify package format(s) for LibreOffice installation sets. The
2088          implicit --without-package-format leads to no installation sets being
2089          generated. Possible values: aix, archive, bsd, deb, dmg,
2090          installed, msi, pkg, and rpm.
2091          Example: --with-package-format='deb rpm']),
2094 AC_ARG_WITH(tls,
2095     AS_HELP_STRING([--with-tls],
2096         [Decides which TLS/SSL and cryptographic implementations to use for
2097          LibreOffice's code. Notice that this doesn't apply for depending
2098          libraries like "neon", for example. Default is to use NSS
2099          although OpenSSL is also possible. Notice that selecting NSS restricts
2100          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2101          restrict by now the usage of NSS in LO's code. Possible values:
2102          openssl, nss. Example: --with-tls="nss"]),
2105 AC_ARG_WITH(system-libs,
2106     AS_HELP_STRING([--with-system-libs],
2107         [Use libraries already on system -- enables all --with-system-* flags.]),
2110 AC_ARG_WITH(system-bzip2,
2111     AS_HELP_STRING([--with-system-bzip2],
2112         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2113     [with_system_bzip2="$with_system_libs"])
2115 AC_ARG_WITH(system-headers,
2116     AS_HELP_STRING([--with-system-headers],
2117         [Use headers already on system -- enables all --with-system-* flags for
2118          external packages whose headers are the only entities used i.e.
2119          boost/odbc/sane-header(s).]),,
2120     [with_system_headers="$with_system_libs"])
2122 AC_ARG_WITH(system-jars,
2123     AS_HELP_STRING([--without-system-jars],
2124         [When building with --with-system-libs, also the needed jars are expected
2125          on the system. Use this to disable that]),,
2126     [with_system_jars="$with_system_libs"])
2128 AC_ARG_WITH(system-cairo,
2129     AS_HELP_STRING([--with-system-cairo],
2130         [Use cairo libraries already on system.  Happens automatically for
2131          (implicit) --enable-gtk3.]))
2133 AC_ARG_WITH(system-epoxy,
2134     AS_HELP_STRING([--with-system-epoxy],
2135         [Use epoxy libraries already on system.  Happens automatically for
2136          (implicit) --enable-gtk3.]),,
2137        [with_system_epoxy="$with_system_libs"])
2139 AC_ARG_WITH(myspell-dicts,
2140     AS_HELP_STRING([--with-myspell-dicts],
2141         [Adds myspell dictionaries to the LibreOffice installation set]),
2144 AC_ARG_WITH(system-dicts,
2145     AS_HELP_STRING([--without-system-dicts],
2146         [Do not use dictionaries from system paths.]),
2149 AC_ARG_WITH(external-dict-dir,
2150     AS_HELP_STRING([--with-external-dict-dir],
2151         [Specify external dictionary dir.]),
2154 AC_ARG_WITH(external-hyph-dir,
2155     AS_HELP_STRING([--with-external-hyph-dir],
2156         [Specify external hyphenation pattern dir.]),
2159 AC_ARG_WITH(external-thes-dir,
2160     AS_HELP_STRING([--with-external-thes-dir],
2161         [Specify external thesaurus dir.]),
2164 AC_ARG_WITH(system-zlib,
2165     AS_HELP_STRING([--with-system-zlib],
2166         [Use zlib already on system.]),,
2167     [with_system_zlib=auto])
2169 AC_ARG_WITH(system-jpeg,
2170     AS_HELP_STRING([--with-system-jpeg],
2171         [Use jpeg already on system.]),,
2172     [with_system_jpeg="$with_system_libs"])
2174 AC_ARG_WITH(system-clucene,
2175     AS_HELP_STRING([--with-system-clucene],
2176         [Use clucene already on system.]),,
2177     [with_system_clucene="$with_system_libs"])
2179 AC_ARG_WITH(system-expat,
2180     AS_HELP_STRING([--with-system-expat],
2181         [Use expat already on system.]),,
2182     [with_system_expat="$with_system_libs"])
2184 AC_ARG_WITH(system-libxml,
2185     AS_HELP_STRING([--with-system-libxml],
2186         [Use libxml/libxslt already on system.]),,
2187     [with_system_libxml=auto])
2189 AC_ARG_WITH(system-icu,
2190     AS_HELP_STRING([--with-system-icu],
2191         [Use icu already on system.]),,
2192     [with_system_icu="$with_system_libs"])
2194 AC_ARG_WITH(system-ucpp,
2195     AS_HELP_STRING([--with-system-ucpp],
2196         [Use ucpp already on system.]),,
2197     [])
2199 AC_ARG_WITH(system-openldap,
2200     AS_HELP_STRING([--with-system-openldap],
2201         [Use the OpenLDAP LDAP SDK already on system.]),,
2202     [with_system_openldap="$with_system_libs"])
2204 libo_FUZZ_ARG_ENABLE(poppler,
2205     AS_HELP_STRING([--disable-poppler],
2206         [Disable building Poppler.])
2209 AC_ARG_WITH(system-poppler,
2210     AS_HELP_STRING([--with-system-poppler],
2211         [Use system poppler (only needed for PDF import).]),,
2212     [with_system_poppler="$with_system_libs"])
2214 AC_ARG_WITH(system-abseil,
2215     AS_HELP_STRING([--with-system-abseil],
2216         [Use the abseil libraries already on system.]),,
2217     [with_system_abseil="$with_system_libs"])
2219 AC_ARG_WITH(system-openjpeg,
2220     AS_HELP_STRING([--with-system-openjpeg],
2221         [Use the OpenJPEG library already on system.]),,
2222     [with_system_openjpeg="$with_system_libs"])
2224 libo_FUZZ_ARG_ENABLE(gpgmepp,
2225     AS_HELP_STRING([--disable-gpgmepp],
2226         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2229 AC_ARG_WITH(system-gpgmepp,
2230     AS_HELP_STRING([--with-system-gpgmepp],
2231         [Use gpgmepp already on system]),,
2232     [with_system_gpgmepp="$with_system_libs"])
2234 AC_ARG_WITH(system-mariadb,
2235     AS_HELP_STRING([--with-system-mariadb],
2236         [Use MariaDB/MySQL libraries already on system.]),,
2237     [with_system_mariadb="$with_system_libs"])
2239 AC_ARG_ENABLE(bundle-mariadb,
2240     AS_HELP_STRING([--enable-bundle-mariadb],
2241         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2244 AC_ARG_WITH(system-postgresql,
2245     AS_HELP_STRING([--with-system-postgresql],
2246         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2247          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2248     [with_system_postgresql="$with_system_libs"])
2250 AC_ARG_WITH(libpq-path,
2251     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2252         [Use this PostgreSQL C interface (libpq) installation for building
2253          the PostgreSQL-SDBC extension.]),
2256 AC_ARG_WITH(system-firebird,
2257     AS_HELP_STRING([--with-system-firebird],
2258         [Use Firebird libraries already on system, for building the Firebird-SDBC
2259          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2260     [with_system_firebird="$with_system_libs"])
2262 AC_ARG_WITH(system-libtommath,
2263             AS_HELP_STRING([--with-system-libtommath],
2264                            [Use libtommath already on system]),,
2265             [with_system_libtommath="$with_system_libs"])
2267 AC_ARG_WITH(system-hsqldb,
2268     AS_HELP_STRING([--with-system-hsqldb],
2269         [Use hsqldb already on system.]))
2271 AC_ARG_WITH(hsqldb-jar,
2272     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2273         [Specify path to jarfile manually.]),
2274     HSQLDB_JAR=$withval)
2276 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2277     AS_HELP_STRING([--disable-scripting-beanshell],
2278         [Disable support for scripts in BeanShell.]),
2282 AC_ARG_WITH(system-beanshell,
2283     AS_HELP_STRING([--with-system-beanshell],
2284         [Use beanshell already on system.]),,
2285     [with_system_beanshell="$with_system_jars"])
2287 AC_ARG_WITH(beanshell-jar,
2288     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2289         [Specify path to jarfile manually.]),
2290     BSH_JAR=$withval)
2292 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2293     AS_HELP_STRING([--disable-scripting-javascript],
2294         [Disable support for scripts in JavaScript.]),
2298 AC_ARG_WITH(system-rhino,
2299     AS_HELP_STRING([--with-system-rhino],
2300         [Use rhino already on system.]),,)
2301 #    [with_system_rhino="$with_system_jars"])
2302 # Above is not used as we have different debug interface
2303 # patched into internal rhino. This code needs to be fixed
2304 # before we can enable it by default.
2306 AC_ARG_WITH(rhino-jar,
2307     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2308         [Specify path to jarfile manually.]),
2309     RHINO_JAR=$withval)
2311 AC_ARG_WITH(system-jfreereport,
2312     AS_HELP_STRING([--with-system-jfreereport],
2313         [Use JFreeReport already on system.]),,
2314     [with_system_jfreereport="$with_system_jars"])
2316 AC_ARG_WITH(sac-jar,
2317     AS_HELP_STRING([--with-sac-jar=JARFILE],
2318         [Specify path to jarfile manually.]),
2319     SAC_JAR=$withval)
2321 AC_ARG_WITH(libxml-jar,
2322     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2323         [Specify path to jarfile manually.]),
2324     LIBXML_JAR=$withval)
2326 AC_ARG_WITH(flute-jar,
2327     AS_HELP_STRING([--with-flute-jar=JARFILE],
2328         [Specify path to jarfile manually.]),
2329     FLUTE_JAR=$withval)
2331 AC_ARG_WITH(jfreereport-jar,
2332     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2333         [Specify path to jarfile manually.]),
2334     JFREEREPORT_JAR=$withval)
2336 AC_ARG_WITH(liblayout-jar,
2337     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2338         [Specify path to jarfile manually.]),
2339     LIBLAYOUT_JAR=$withval)
2341 AC_ARG_WITH(libloader-jar,
2342     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2343         [Specify path to jarfile manually.]),
2344     LIBLOADER_JAR=$withval)
2346 AC_ARG_WITH(libformula-jar,
2347     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2348         [Specify path to jarfile manually.]),
2349     LIBFORMULA_JAR=$withval)
2351 AC_ARG_WITH(librepository-jar,
2352     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2353         [Specify path to jarfile manually.]),
2354     LIBREPOSITORY_JAR=$withval)
2356 AC_ARG_WITH(libfonts-jar,
2357     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2358         [Specify path to jarfile manually.]),
2359     LIBFONTS_JAR=$withval)
2361 AC_ARG_WITH(libserializer-jar,
2362     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2363         [Specify path to jarfile manually.]),
2364     LIBSERIALIZER_JAR=$withval)
2366 AC_ARG_WITH(libbase-jar,
2367     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2368         [Specify path to jarfile manually.]),
2369     LIBBASE_JAR=$withval)
2371 AC_ARG_WITH(system-odbc,
2372     AS_HELP_STRING([--with-system-odbc],
2373         [Use the odbc headers already on system.]),,
2374     [with_system_odbc="auto"])
2376 AC_ARG_WITH(system-sane,
2377     AS_HELP_STRING([--with-system-sane],
2378         [Use sane.h already on system.]),,
2379     [with_system_sane="$with_system_headers"])
2381 AC_ARG_WITH(system-bluez,
2382     AS_HELP_STRING([--with-system-bluez],
2383         [Use bluetooth.h already on system.]),,
2384     [with_system_bluez="$with_system_headers"])
2386 AC_ARG_WITH(system-curl,
2387     AS_HELP_STRING([--with-system-curl],
2388         [Use curl already on system.]),,
2389     [with_system_curl=auto])
2391 AC_ARG_WITH(system-boost,
2392     AS_HELP_STRING([--with-system-boost],
2393         [Use boost already on system.]),,
2394     [with_system_boost="$with_system_headers"])
2396 AC_ARG_WITH(system-glm,
2397     AS_HELP_STRING([--with-system-glm],
2398         [Use glm already on system.]),,
2399     [with_system_glm="$with_system_headers"])
2401 AC_ARG_WITH(system-hunspell,
2402     AS_HELP_STRING([--with-system-hunspell],
2403         [Use libhunspell already on system.]),,
2404     [with_system_hunspell="$with_system_libs"])
2406 libo_FUZZ_ARG_ENABLE(zxing,
2407     AS_HELP_STRING([--disable-zxing],
2408        [Disable use of zxing external library.]))
2410 AC_ARG_WITH(system-zxing,
2411     AS_HELP_STRING([--with-system-zxing],
2412         [Use libzxing already on system.]),,
2413     [with_system_zxing="$with_system_libs"])
2415 AC_ARG_WITH(system-box2d,
2416     AS_HELP_STRING([--with-system-box2d],
2417         [Use box2d already on system.]),,
2418     [with_system_box2d="$with_system_libs"])
2420 AC_ARG_WITH(system-mythes,
2421     AS_HELP_STRING([--with-system-mythes],
2422         [Use mythes already on system.]),,
2423     [with_system_mythes="$with_system_libs"])
2425 AC_ARG_WITH(system-altlinuxhyph,
2426     AS_HELP_STRING([--with-system-altlinuxhyph],
2427         [Use ALTLinuxhyph already on system.]),,
2428     [with_system_altlinuxhyph="$with_system_libs"])
2430 AC_ARG_WITH(system-lpsolve,
2431     AS_HELP_STRING([--with-system-lpsolve],
2432         [Use lpsolve already on system.]),,
2433     [with_system_lpsolve="$with_system_libs"])
2435 AC_ARG_WITH(system-coinmp,
2436     AS_HELP_STRING([--with-system-coinmp],
2437         [Use CoinMP already on system.]),,
2438     [with_system_coinmp="$with_system_libs"])
2440 AC_ARG_WITH(system-liblangtag,
2441     AS_HELP_STRING([--with-system-liblangtag],
2442         [Use liblangtag library already on system.]),,
2443     [with_system_liblangtag="$with_system_libs"])
2445 AC_ARG_WITH(webdav,
2446     AS_HELP_STRING([--with-webdav],
2447         [Specify which library to use for webdav implementation.
2448          Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2449          Example: --with-webdav="serf"]))
2451 AC_ARG_WITH(linker-hash-style,
2452     AS_HELP_STRING([--with-linker-hash-style],
2453         [Use linker with --hash-style=<style> when linking shared objects.
2454          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2455          if supported on the build system, and "sysv" otherwise.]))
2457 AC_ARG_WITH(jdk-home,
2458     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2459         [If you have installed JDK 9 or later on your system please supply the
2460          path here. Note that this is not the location of the java command but the
2461          location of the entire distribution. In case of cross-compiling, this
2462          is the JDK of the host os. Use --with-build-platform-configure-options
2463          to point to a different build platform JDK.]),
2466 AC_ARG_WITH(help,
2467     AS_HELP_STRING([--with-help],
2468         [Enable the build of help. There is a special parameter "common" that
2469          can be used to bundle only the common part, .e.g help-specific icons.
2470          This is useful when you build the helpcontent separately.])
2471     [
2472                           Usage:     --with-help    build the old local help
2473                                  --without-help     no local help (default)
2474                                  --with-help=html   build the new HTML local help
2475                                  --with-help=online build the new HTML online help
2476     ],
2479 AC_ARG_WITH(omindex,
2480    AS_HELP_STRING([--with-omindex],
2481         [Enable the support of xapian-omega index for online help.])
2482    [
2483                          Usage: --with-omindex=server prepare the pages for omindex
2484                                 but let xapian-omega be built in server.
2485                                 --with-omindex=noxap do not prepare online pages
2486                                 for xapian-omega
2487   ],
2490 libo_FUZZ_ARG_WITH(java,
2491     AS_HELP_STRING([--with-java=<java command>],
2492         [Specify the name of the Java interpreter command. Typically "java"
2493          which is the default.
2495          To build without support for Java components, applets, accessibility
2496          or the XML filters written in Java, use --without-java or --with-java=no.]),
2497     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2498     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2501 AC_ARG_WITH(jvm-path,
2502     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2503         [Use a specific JVM search path at runtime.
2504          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2507 AC_ARG_WITH(ant-home,
2508     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2509         [If you have installed Apache Ant on your system, please supply the path here.
2510          Note that this is not the location of the Ant binary but the location
2511          of the entire distribution.]),
2514 AC_ARG_WITH(symbol-config,
2515     AS_HELP_STRING([--with-symbol-config],
2516         [Configuration for the crashreport symbol upload]),
2517         [],
2518         [with_symbol_config=no])
2520 AC_ARG_WITH(export-validation,
2521     AS_HELP_STRING([--without-export-validation],
2522         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2523 ,with_export_validation=auto)
2525 AC_ARG_WITH(bffvalidator,
2526     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2527         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2528          Requires installed Microsoft Office Binary File Format Validator.
2529          Note: export-validation (--with-export-validation) is required to be turned on.
2530          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2531 ,with_bffvalidator=no)
2533 libo_FUZZ_ARG_WITH(junit,
2534     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2535         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2536          --without-junit disables those tests. Not relevant in the --without-java case.]),
2537 ,with_junit=yes)
2539 AC_ARG_WITH(hamcrest,
2540     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2541         [Specifies the hamcrest jar file to use for JUnit-based tests.
2542          --without-junit disables those tests. Not relevant in the --without-java case.]),
2543 ,with_hamcrest=yes)
2545 AC_ARG_WITH(perl-home,
2546     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2547         [If you have installed Perl 5 Distribution, on your system, please
2548          supply the path here. Note that this is not the location of the Perl
2549          binary but the location of the entire distribution.]),
2552 libo_FUZZ_ARG_WITH(doxygen,
2553     AS_HELP_STRING(
2554         [--with-doxygen=<absolute path to doxygen executable>],
2555         [Specifies the doxygen executable to use when generating ODK C/C++
2556          documentation. --without-doxygen disables generation of ODK C/C++
2557          documentation. Not relevant in the --disable-odk case.]),
2558 ,with_doxygen=yes)
2560 AC_ARG_WITH(visual-studio,
2561     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2562         [Specify which Visual Studio version to use in case several are
2563          installed. Currently 2019 (default) and 2022 are supported.]),
2566 AC_ARG_WITH(windows-sdk,
2567     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2568         [Specify which Windows SDK, or "Windows Kit", version to use
2569          in case the one that came with the selected Visual Studio
2570          is not what you want for some reason. Note that not all compiler/SDK
2571          combinations are supported. The intent is that this option should not
2572          be needed.]),
2575 AC_ARG_WITH(lang,
2576     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2577         [Use this option to build LibreOffice with additional UI language support.
2578          English (US) is always included by default.
2579          Separate multiple languages with space.
2580          For all languages, use --with-lang=ALL.]),
2583 AC_ARG_WITH(locales,
2584     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2585         [Use this option to limit the locale information built in.
2586          Separate multiple locales with space.
2587          Very experimental and might well break stuff.
2588          Just a desperate measure to shrink code and data size.
2589          By default all the locales available is included.
2590          This option is completely unrelated to --with-lang.])
2591     [
2592                           Affects also our character encoding conversion
2593                           tables for encodings mainly targeted for a
2594                           particular locale, like EUC-CN and EUC-TW for
2595                           zh, ISO-2022-JP for ja.
2597                           Affects also our add-on break iterator data for
2598                           some languages.
2600                           For the default, all locales, don't use this switch at all.
2601                           Specifying just the language part of a locale means all matching
2602                           locales will be included.
2603     ],
2606 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2607 libo_FUZZ_ARG_WITH(krb5,
2608     AS_HELP_STRING([--with-krb5],
2609         [Enable MIT Kerberos 5 support in modules that support it.
2610          By default automatically enabled on platforms
2611          where a good system Kerberos 5 is available.]),
2614 libo_FUZZ_ARG_WITH(gssapi,
2615     AS_HELP_STRING([--with-gssapi],
2616         [Enable GSSAPI support in modules that support it.
2617          By default automatically enabled on platforms
2618          where a good system GSSAPI is available.]),
2621 AC_ARG_WITH(iwyu,
2622     AS_HELP_STRING([--with-iwyu],
2623         [Use given IWYU binary path to check unneeded includes instead of building.
2624          Use only if you are hacking on it.]),
2627 libo_FUZZ_ARG_WITH(lxml,
2628     AS_HELP_STRING([--without-lxml],
2629         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2630          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2631          report widget classes and ids.]),
2634 libo_FUZZ_ARG_WITH(latest-c++,
2635     AS_HELP_STRING([--with-latest-c++],
2636         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2637          published standard.]),,
2638         [with_latest_c__=no])
2640 AC_ARG_WITH(gtk3-build,
2641     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2642         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2643          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2645 dnl ===================================================================
2646 dnl Branding
2647 dnl ===================================================================
2649 AC_ARG_WITH(branding,
2650     AS_HELP_STRING([--with-branding=/path/to/images],
2651         [Use given path to retrieve branding images set.])
2652     [
2653                           Search for intro.png about.svg and logo.svg.
2654                           If any is missing, default ones will be used instead.
2656                           Search also progress.conf for progress
2657                           settings on intro screen :
2659                           PROGRESSBARCOLOR="255,255,255" Set color of
2660                           progress bar. Comma separated RGB decimal values.
2661                           PROGRESSSIZE="407,6" Set size of progress bar.
2662                           Comma separated decimal values (width, height).
2663                           PROGRESSPOSITION="61,317" Set position of progress
2664                           bar from left,top. Comma separated decimal values.
2665                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2666                           bar frame. Comma separated RGB decimal values.
2667                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2668                           bar text. Comma separated RGB decimal values.
2669                           PROGRESSTEXTBASELINE="287" Set vertical position of
2670                           progress bar text from top. Decimal value.
2672                           Default values will be used if not found.
2673     ],
2677 AC_ARG_WITH(extra-buildid,
2678     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2679         [Show addition build identification in about dialog.]),
2683 AC_ARG_WITH(vendor,
2684     AS_HELP_STRING([--with-vendor="John the Builder"],
2685         [Set vendor of the build.]),
2688 AC_ARG_WITH(privacy-policy-url,
2689     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2690         [The URL to your privacy policy (needed when
2691          enabling online-update or crashreporting via breakpad)]),
2692         [if test "x$with_privacy_policy_url" = "xyes"; then
2693             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2694          elif test "x$with_privacy_policy_url" = "xno"; then
2695             with_privacy_policy_url="undefined"
2696          fi]
2697 ,[with_privacy_policy_url="undefined"])
2699 AC_ARG_WITH(android-package-name,
2700     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2701         [Set Android package name of the build.]),
2704 AC_ARG_WITH(compat-oowrappers,
2705     AS_HELP_STRING([--with-compat-oowrappers],
2706         [Install oo* wrappers in parallel with
2707          lo* ones to keep backward compatibility.
2708          Has effect only with make distro-pack-install]),
2711 AC_ARG_WITH(os-version,
2712     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2713         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2716 AC_ARG_WITH(idlc-cpp,
2717     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2718         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2721 AC_ARG_WITH(parallelism,
2722     AS_HELP_STRING([--with-parallelism],
2723         [Number of jobs to run simultaneously during build. Parallel builds can
2724         save a lot of time on multi-cpu machines. Defaults to the number of
2725         CPUs on the machine, unless you configure --enable-icecream - then to
2726         40.]),
2729 AC_ARG_WITH(all-tarballs,
2730     AS_HELP_STRING([--with-all-tarballs],
2731         [Download all external tarballs unconditionally]))
2733 AC_ARG_WITH(gdrive-client-id,
2734     AS_HELP_STRING([--with-gdrive-client-id],
2735         [Provides the client id of the application for OAuth2 authentication
2736         on Google Drive. If either this or --with-gdrive-client-secret is
2737         empty, the feature will be disabled]),
2740 AC_ARG_WITH(gdrive-client-secret,
2741     AS_HELP_STRING([--with-gdrive-client-secret],
2742         [Provides the client secret of the application for OAuth2
2743         authentication on Google Drive. If either this or
2744         --with-gdrive-client-id is empty, the feature will be disabled]),
2747 AC_ARG_WITH(alfresco-cloud-client-id,
2748     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2749         [Provides the client id of the application for OAuth2 authentication
2750         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2751         empty, the feature will be disabled]),
2754 AC_ARG_WITH(alfresco-cloud-client-secret,
2755     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2756         [Provides the client secret of the application for OAuth2
2757         authentication on Alfresco Cloud. If either this or
2758         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2761 AC_ARG_WITH(onedrive-client-id,
2762     AS_HELP_STRING([--with-onedrive-client-id],
2763         [Provides the client id of the application for OAuth2 authentication
2764         on OneDrive. If either this or --with-onedrive-client-secret is
2765         empty, the feature will be disabled]),
2768 AC_ARG_WITH(onedrive-client-secret,
2769     AS_HELP_STRING([--with-onedrive-client-secret],
2770         [Provides the client secret of the application for OAuth2
2771         authentication on OneDrive. If either this or
2772         --with-onedrive-client-id is empty, the feature will be disabled]),
2774 dnl ===================================================================
2775 dnl Do we want to use pre-build binary tarball for recompile
2776 dnl ===================================================================
2778 if test "$enable_library_bin_tar" = "yes" ; then
2779     USE_LIBRARY_BIN_TAR=TRUE
2780 else
2781     USE_LIBRARY_BIN_TAR=
2783 AC_SUBST(USE_LIBRARY_BIN_TAR)
2785 dnl ===================================================================
2786 dnl Test whether build target is Release Build
2787 dnl ===================================================================
2788 AC_MSG_CHECKING([whether build target is Release Build])
2789 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2790     AC_MSG_RESULT([no])
2791     ENABLE_RELEASE_BUILD=
2792     GET_TASK_ALLOW_ENTITLEMENT='
2793         <!-- We want to be able to debug a hardened process when not building for release -->
2794         <key>com.apple.security.get-task-allow</key>
2795         <true/>'
2796 else
2797     AC_MSG_RESULT([yes])
2798     ENABLE_RELEASE_BUILD=TRUE
2799     GET_TASK_ALLOW_ENTITLEMENT=''
2801 AC_SUBST(ENABLE_RELEASE_BUILD)
2802 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2804 AC_MSG_CHECKING([whether to build a Community flavor])
2805 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2806     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2807     AC_MSG_RESULT([yes])
2808 else
2809     AC_MSG_RESULT([no])
2812 dnl ===================================================================
2813 dnl Test whether to sign Windows Build
2814 dnl ===================================================================
2815 AC_MSG_CHECKING([whether to sign windows build])
2816 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2817     AC_MSG_RESULT([yes])
2818     WINDOWS_BUILD_SIGNING="TRUE"
2819 else
2820     AC_MSG_RESULT([no])
2821     WINDOWS_BUILD_SIGNING="FALSE"
2823 AC_SUBST(WINDOWS_BUILD_SIGNING)
2825 dnl ===================================================================
2826 dnl MacOSX build and runtime environment options
2827 dnl ===================================================================
2829 AC_ARG_WITH(macosx-version-min-required,
2830     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2831         [set the minimum OS version needed to run the built LibreOffice])
2832     [
2833                           e. g.: --with-macosx-version-min-required=10.12
2834     ],
2838 dnl ===================================================================
2839 dnl options for stuff used during cross-compilation build
2840 dnl Not quite superseded by --with-build-platform-configure-options.
2841 dnl TODO: check, if the "force" option is still needed anywhere.
2842 dnl ===================================================================
2844 AC_ARG_WITH(system-icu-for-build,
2845     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2846         [Use icu already on system for build tools (cross-compilation only).]))
2849 dnl ===================================================================
2850 dnl Check for incompatible options set by fuzzing, and reset those
2851 dnl automatically to working combinations
2852 dnl ===================================================================
2854 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2855         "$enable_dbus" != "$enable_avahi"; then
2856     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2857     enable_avahi=$enable_dbus
2860 add_lopath_after ()
2862     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2863         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2864     fi
2867 add_lopath_before ()
2869     local IFS=${P_SEP}
2870     local path_cleanup
2871     local dir
2872     for dir in $LO_PATH ; do
2873         if test "$dir" != "$1" ; then
2874             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2875         fi
2876     done
2877     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2880 dnl ===================================================================
2881 dnl check for required programs (grep, awk, sed, bash)
2882 dnl ===================================================================
2884 pathmunge ()
2886     local new_path
2887     if test -n "$1"; then
2888         if test "$build_os" = "cygwin"; then
2889             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2890                 PathFormat "$1"
2891                 new_path=`cygpath -sm "$formatted_path"`
2892             else
2893                 PathFormat "$1"
2894                 new_path=`cygpath -u "$formatted_path"`
2895             fi
2896         else
2897             new_path="$1"
2898         fi
2899         if test "$2" = "after"; then
2900             add_lopath_after "$new_path"
2901         else
2902             add_lopath_before "$new_path"
2903         fi
2904     fi
2907 AC_PROG_AWK
2908 AC_PATH_PROG( AWK, $AWK)
2909 if test -z "$AWK"; then
2910     AC_MSG_ERROR([install awk to run this script])
2913 AC_PATH_PROG(BASH, bash)
2914 if test -z "$BASH"; then
2915     AC_MSG_ERROR([bash not found in \$PATH])
2917 AC_SUBST(BASH)
2919 # prefer parallel comression tools, if available
2920 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2921 if test -z "$COMPRESSIONTOOL"; then
2922     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2923     if test -z "$COMPRESSIONTOOL"; then
2924         AC_MSG_ERROR([gzip not found in \$PATH])
2925     fi
2927 AC_SUBST(COMPRESSIONTOOL)
2929 # use GNU parallel for packaging, if available
2930 AC_PATH_PROG(GNUPARALLEL, parallel)
2931 AC_SUBST(GNUPARALLEL)
2933 AC_MSG_CHECKING([for GNU or BSD tar])
2934 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2935     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2936     if test $? -eq 0;  then
2937         GNUTAR=$a
2938         break
2939     fi
2940 done
2941 AC_MSG_RESULT($GNUTAR)
2942 if test -z "$GNUTAR"; then
2943     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2945 AC_SUBST(GNUTAR)
2947 AC_MSG_CHECKING([for tar's option to strip components])
2948 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2949 if test $? -eq 0; then
2950     STRIP_COMPONENTS="--strip-components"
2951 else
2952     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2953     if test $? -eq 0; then
2954         STRIP_COMPONENTS="--strip-path"
2955     else
2956         STRIP_COMPONENTS="unsupported"
2957     fi
2959 AC_MSG_RESULT($STRIP_COMPONENTS)
2960 if test x$STRIP_COMPONENTS = xunsupported; then
2961     AC_MSG_ERROR([you need a tar that is able to strip components.])
2963 AC_SUBST(STRIP_COMPONENTS)
2965 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2966 dnl desktop OSes from "mobile" ones.
2968 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2969 dnl In other words, that when building for an OS that is not a
2970 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2972 dnl Note the direction of the implication; there is no assumption that
2973 dnl cross-compiling would imply a non-desktop OS.
2975 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2976     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2977     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2978     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2981 # Whether to build "avmedia" functionality or not.
2983 if test -z "$enable_avmedia"; then
2984     enable_avmedia=yes
2987 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2988 if test "$enable_avmedia" = yes; then
2989     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2990 else
2991     USE_AVMEDIA_DUMMY='TRUE'
2993 AC_SUBST(USE_AVMEDIA_DUMMY)
2995 # Decide whether to build database connectivity stuff (including Base) or not.
2996 if test "$enable_database_connectivity" != no; then
2997     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2998     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2999 else
3000     if test "$_os" = iOS; then
3001         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3002     fi
3003     disable_database_connectivity_dependencies
3006 if test -z "$enable_extensions"; then
3007     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3008     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3009         enable_extensions=yes
3010     fi
3013 if test "$enable_extensions" = yes; then
3014     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3015     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3016 else
3017     enable_extension_integration=no
3018     enable_extension_update=no
3021 if test -z "$enable_scripting"; then
3022     enable_scripting=yes
3025 DISABLE_SCRIPTING=''
3026 if test "$enable_scripting" = yes; then
3027     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3028     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3029 else
3030     DISABLE_SCRIPTING='TRUE'
3031     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3034 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3035     # Disable dynamic_loading always for iOS and Android
3036     enable_dynamic_loading=no
3037 elif test -z "$enable_dynamic_loading"; then
3038     # Otherwise enable it unless specifically disabled
3039     enable_dynamic_loading=yes
3042 DISABLE_DYNLOADING=''
3043 if test "$enable_dynamic_loading" = yes; then
3044     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3045 else
3046     DISABLE_DYNLOADING='TRUE'
3048 AC_SUBST(DISABLE_DYNLOADING)
3050 # remember SYSBASE value
3051 AC_SUBST(SYSBASE)
3053 dnl ===================================================================
3054 dnl  Sort out various gallery compilation options
3055 dnl ===================================================================
3056 WITH_GALLERY_BUILD=TRUE
3057 AC_MSG_CHECKING([how to build and package galleries])
3058 if test -n "${with_galleries}"; then
3059     if test "$with_galleries" = "build"; then
3060         if test "$enable_database_connectivity" = no; then
3061             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3062         fi
3063         AC_MSG_RESULT([build from source images internally])
3064     elif test "$with_galleries" = "no"; then
3065         WITH_GALLERY_BUILD=
3066         AC_MSG_RESULT([disable non-internal gallery build])
3067     else
3068         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3069     fi
3070 else
3071     if test $_os != iOS -a $_os != Android; then
3072         AC_MSG_RESULT([internal src images for desktop])
3073     else
3074         WITH_GALLERY_BUILD=
3075         AC_MSG_RESULT([disable src image build])
3076     fi
3078 AC_SUBST(WITH_GALLERY_BUILD)
3080 dnl ===================================================================
3081 dnl  Checks if ccache is available
3082 dnl ===================================================================
3083 CCACHE_DEPEND_MODE=
3084 if test "$enable_ccache" = "no"; then
3085     CCACHE=""
3086 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3087     case "%$CC%$CXX%" in
3088     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3089     # assume that's good then
3090     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3091         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3092         CCACHE_DEPEND_MODE=1
3093         ;;
3094     *)
3095         # try to use our own ccache if it is available and CCACHE was not already defined
3096         if test -z "$CCACHE"; then
3097             if test "$_os" = "WINNT"; then
3098                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3099             fi
3100             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3101                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3102             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3103                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3104             fi
3105         fi
3106         AC_PATH_PROG([CCACHE],[ccache],[not found])
3107         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3108             CCACHE=`win_short_path_for_make "$CCACHE"`
3109             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3110             rm -f conftest.txt
3111             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3112             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3113             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3114                 AC_MSG_RESULT(yes)
3115             else
3116                 AC_MSG_RESULT(no)
3117                 CCACHE="not found"
3118             fi
3119             rm -f conftest.txt
3120         fi
3121         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3122             # on windows/VC perhaps sccache is around?
3123             case "%$CC%$CXX%" in
3124             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3125             # assume that's good then
3126             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3127                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3128                 CCACHE_DEPEND_MODE=1
3129                 SCCACHE=1
3130                 ;;
3131             *)
3132                 # for sharing code below, reuse CCACHE env var
3133                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3134                 if test "$CCACHE" != "not found"; then
3135                     CCACHE=`win_short_path_for_make "$CCACHE"`
3136                     SCCACHE=1
3137                     CCACHE_DEPEND_MODE=1
3138                 fi
3139                 ;;
3140             esac
3141         fi
3142         if test "$CCACHE" = "not found"; then
3143             CCACHE=""
3144         fi
3145         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3146             CCACHE_DEPEND_MODE=1
3147             # Need to check for ccache version: otherwise prevents
3148             # caching of the results (like "-x objective-c++" for Mac)
3149             if test $_os = Darwin -o $_os = iOS; then
3150                 # Check ccache version
3151                 AC_MSG_CHECKING([whether version of ccache is suitable])
3152                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3153                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3154                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3155                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3156                 else
3157                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3158                     CCACHE=""
3159                     CCACHE_DEPEND_MODE=
3160                 fi
3161             fi
3162         fi
3163         ;;
3164     esac
3165 else
3166     CCACHE=""
3168 if test "$enable_ccache" = "nodepend"; then
3169     CCACHE_DEPEND_MODE=""
3171 AC_SUBST(CCACHE_DEPEND_MODE)
3173 # sccache defaults are good enough
3174 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3175     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3176     # -p works with both 4.2 and 4.4
3177     ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3178     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3179     if test "$ccache_size" = ""; then
3180         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3181         if test "$ccache_size" = ""; then
3182             ccache_size=0
3183         fi
3184         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3185         if test $ccache_size -lt 1024; then
3186             CCACHE=""
3187             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3188             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3189         else
3190             # warn that ccache may be too small for debug build
3191             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3192             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3193         fi
3194     else
3195         if test $ccache_size -lt 5; then
3196             #warn that ccache may be too small for debug build
3197             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3198             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3199         fi
3200     fi
3203 ENABLE_Z7_DEBUG=
3204 if test "$enable_z7_debug" != no; then
3205     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3206         ENABLE_Z7_DEBUG=TRUE
3207     fi
3208 else
3209     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3210     add_warning "ccache will not work with --disable-z7-debug"
3212 AC_SUBST(ENABLE_Z7_DEBUG)
3214 dnl ===================================================================
3215 dnl  Checks for C compiler,
3216 dnl  The check for the C++ compiler is later on.
3217 dnl ===================================================================
3218 if test "$_os" != "WINNT"; then
3219     GCC_HOME_SET="true"
3220     AC_MSG_CHECKING([gcc home])
3221     if test -z "$with_gcc_home"; then
3222         if test "$enable_icecream" = "yes"; then
3223             if test -d "/usr/lib/icecc/bin"; then
3224                 GCC_HOME="/usr/lib/icecc/"
3225             elif test -d "/usr/libexec/icecc/bin"; then
3226                 GCC_HOME="/usr/libexec/icecc/"
3227             elif test -d "/opt/icecream/bin"; then
3228                 GCC_HOME="/opt/icecream/"
3229             else
3230                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3232             fi
3233         else
3234             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3235             GCC_HOME_SET="false"
3236         fi
3237     else
3238         GCC_HOME="$with_gcc_home"
3239     fi
3240     AC_MSG_RESULT($GCC_HOME)
3241     AC_SUBST(GCC_HOME)
3243     if test "$GCC_HOME_SET" = "true"; then
3244         if test -z "$CC"; then
3245             CC="$GCC_HOME/bin/gcc"
3246             CC_BASE="gcc"
3247         fi
3248         if test -z "$CXX"; then
3249             CXX="$GCC_HOME/bin/g++"
3250             CXX_BASE="g++"
3251         fi
3252     fi
3255 COMPATH=`dirname "$CC"`
3256 if test "$COMPATH" = "."; then
3257     AC_PATH_PROGS(COMPATH, $CC)
3258     dnl double square bracket to get single because of M4 quote...
3259     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3261 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3263 dnl ===================================================================
3264 dnl Java support
3265 dnl ===================================================================
3266 AC_MSG_CHECKING([whether to build with Java support])
3267 if test "$with_java" != "no"; then
3268     if test "$DISABLE_SCRIPTING" = TRUE; then
3269         AC_MSG_RESULT([no, overridden by --disable-scripting])
3270         ENABLE_JAVA=""
3271         with_java=no
3272     else
3273         AC_MSG_RESULT([yes])
3274         ENABLE_JAVA="TRUE"
3275         AC_DEFINE(HAVE_FEATURE_JAVA)
3276     fi
3277 else
3278     AC_MSG_RESULT([no])
3279     ENABLE_JAVA=""
3282 AC_SUBST(ENABLE_JAVA)
3284 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3286 dnl ENABLE_JAVA="" indicate no Java support at all
3288 dnl ===================================================================
3289 dnl Check macOS SDK and compiler
3290 dnl ===================================================================
3292 if test $_os = Darwin; then
3294     # The SDK in the currently selected Xcode should be found.
3296     AC_MSG_CHECKING([what macOS SDK to use])
3297     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3298     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3299     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3300     # also restricting the SDK version to "known good" versions doesn't seem necessary anyomre, the
3301     # problems that existed in the PPC days with target versions not being respected or random
3302     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3303     # SDK version is enough, no need to do both...
3304     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3305     if test ! -d "$MACOSX_SDK_PATH"; then
3306         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3307     fi
3308     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3309     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3310     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3311     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3312     # 10.10.2 is 101002
3313     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3314     # correct version in case such an old SDK is specified, it will be rejected later anyway
3315     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3316     if test $MACOSX_SDK_VERSION -lt 101400; then
3317         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.14])
3318     fi
3319     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3320         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3321     fi
3322     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3324     AC_MSG_CHECKING([what minimum version of macOS to require])
3325     if test "$with_macosx_version_min_required" = "" ; then
3326         if test "$host_cpu" = x86_64; then
3327             with_macosx_version_min_required="10.12";
3328         else
3329             with_macosx_version_min_required="11.0";
3330         fi
3331     fi
3332     # see same notes about MACOSX_SDK_VERSION above
3333     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3334     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101200; then
3335         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.12])
3336     fi
3337     AC_MSG_RESULT([$with_macosx_version_min_required])
3339     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3340     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3341         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3342     else
3343         AC_MSG_RESULT([yes])
3344     fi
3346     # export this so that "xcrun" invocations later return matching values
3347     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3348     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3349     export DEVELOPER_DIR
3350     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3351     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3353     AC_MSG_CHECKING([whether Xcode is new enough])
3354     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3355     my_xcode_ver2=${my_xcode_ver1#Xcode }
3356     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3357     if test "$my_xcode_ver3" -ge 1103; then
3358         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3359     else
3360         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3361     fi
3363     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3364     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3366     LIBTOOL=/usr/bin/libtool
3367     INSTALL_NAME_TOOL=install_name_tool
3368     if test -z "$save_CC"; then
3369         stdlib=-stdlib=libc++
3371         AC_MSG_CHECKING([what C compiler to use])
3372         CC="`xcrun -find clang`"
3373         CC_BASE=`first_arg_basename "$CC"`
3374         if test "$host_cpu" = x86_64; then
3375             CC+=" -target x86_64-apple-macos"
3376         else
3377             CC+=" -target arm64-apple-macos"
3378         fi
3379         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3380         AC_MSG_RESULT([$CC])
3382         AC_MSG_CHECKING([what C++ compiler to use])
3383         CXX="`xcrun -find clang++`"
3384         CXX_BASE=`first_arg_basename "$CXX"`
3385         if test "$host_cpu" = x86_64; then
3386             CXX+=" -target x86_64-apple-macos"
3387         else
3388             CXX+=" -target arm64-apple-macos"
3389         fi
3390         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3391         AC_MSG_RESULT([$CXX])
3393         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3394         AR=`xcrun -find ar`
3395         NM=`xcrun -find nm`
3396         STRIP=`xcrun -find strip`
3397         LIBTOOL=`xcrun -find libtool`
3398         RANLIB=`xcrun -find ranlib`
3399     fi
3401     AC_MSG_CHECKING([whether to do code signing])
3403     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3404         AC_MSG_RESULT([no])
3405     else
3406         if test "$enable_macosx_code_signing" = yes; then
3407             # By default use the first suitable certificate (?).
3409             # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3410             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3411             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3412             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3413             # "Developer ID Application" one.
3414             identity="Developer ID Application:"
3415         else
3416             identity=$enable_macosx_code_signing
3417         fi
3418         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3419         if test -n "$identity"; then
3420             MACOSX_CODESIGNING_IDENTITY=$identity
3421             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3422             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3423         else
3424             AC_MSG_ERROR([cannot determine identity to use])
3425         fi
3426     fi
3428     AC_MSG_CHECKING([whether to create a Mac App Store package])
3430     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3431         AC_MSG_RESULT([no])
3432     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3433         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3434     else
3435         if test "$enable_macosx_package_signing" = yes; then
3436             # By default use the first suitable certificate.
3437             # It should be a "3rd Party Mac Developer Installer" one
3438             identity="3rd Party Mac Developer Installer:"
3439         else
3440             identity=$enable_macosx_package_signing
3441         fi
3442         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3443         if test -n "$identity"; then
3444             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3445             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3446             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3447         else
3448             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3449         fi
3450     fi
3452     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3453         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3454     fi
3456     AC_MSG_CHECKING([whether to sandbox the application])
3458     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3459         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3460     elif test "$enable_macosx_sandbox" = yes; then
3461         ENABLE_MACOSX_SANDBOX=TRUE
3462         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3463         AC_MSG_RESULT([yes])
3464     else
3465         AC_MSG_RESULT([no])
3466     fi
3468     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3469     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3470     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3472     if test -n "$with_macosx_provisioning_profile" ; then
3473         if test ! -f "$with_macosx_provisioning_profile"; then
3474             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3475         else
3476             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3477             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3478                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3479                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3480                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3481         fi
3482     fi
3484 AC_SUBST(MACOSX_SDK_PATH)
3485 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3486 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3487 AC_SUBST(INSTALL_NAME_TOOL)
3488 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3489 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3490 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3491 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3492 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3493 AC_SUBST(MACOSX_PROVISIONING_INFO)
3494 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3495 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3496 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3498 dnl ===================================================================
3499 dnl Check iOS SDK and compiler
3500 dnl ===================================================================
3502 if test $_os = iOS; then
3503     AC_MSG_CHECKING([what iOS SDK to use])
3504     current_sdk_ver=16.2
3505     older_sdk_vers="16.1 16.0 15.6 15.5 15.4 15.2 15.0"
3506     if test "$enable_ios_simulator" = "yes"; then
3507         platform=iPhoneSimulator
3508         versionmin=-mios-simulator-version-min=14.5
3509     else
3510         platform=iPhoneOS
3511         versionmin=-miphoneos-version-min=14.5
3512     fi
3513     xcode_developer=`xcode-select -print-path`
3515     for sdkver in $current_sdk_ver $older_sdk_vers; do
3516         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3517         if test -d $t; then
3518             sysroot=$t
3519             break
3520         fi
3521     done
3523     if test -z "$sysroot"; then
3524         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3525     fi
3527     AC_MSG_RESULT($sysroot)
3529     stdlib="-stdlib=libc++"
3531     AC_MSG_CHECKING([what C compiler to use])
3532     CC="`xcrun -find clang`"
3533     CC_BASE=`first_arg_basename "$CC"`
3534     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3535     AC_MSG_RESULT([$CC])
3537     AC_MSG_CHECKING([what C++ compiler to use])
3538     CXX="`xcrun -find clang++`"
3539     CXX_BASE=`first_arg_basename "$CXX"`
3540     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3541     AC_MSG_RESULT([$CXX])
3543     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3544     AR=`xcrun -find ar`
3545     NM=`xcrun -find nm`
3546     STRIP=`xcrun -find strip`
3547     LIBTOOL=`xcrun -find libtool`
3548     RANLIB=`xcrun -find ranlib`
3551 AC_MSG_CHECKING([whether to treat the installation as read-only])
3553 if test $_os = Darwin; then
3554     enable_readonly_installset=yes
3555 elif test "$enable_extensions" != yes; then
3556     enable_readonly_installset=yes
3558 if test "$enable_readonly_installset" = yes; then
3559     AC_MSG_RESULT([yes])
3560     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3561 else
3562     AC_MSG_RESULT([no])
3565 dnl ===================================================================
3566 dnl Structure of install set
3567 dnl ===================================================================
3569 if test $_os = Darwin; then
3570     LIBO_BIN_FOLDER=MacOS
3571     LIBO_ETC_FOLDER=Resources
3572     LIBO_LIBEXEC_FOLDER=MacOS
3573     LIBO_LIB_FOLDER=Frameworks
3574     LIBO_LIB_PYUNO_FOLDER=Resources
3575     LIBO_SHARE_FOLDER=Resources
3576     LIBO_SHARE_HELP_FOLDER=Resources/help
3577     LIBO_SHARE_JAVA_FOLDER=Resources/java
3578     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3579     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3580     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3581     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3582     LIBO_URE_BIN_FOLDER=MacOS
3583     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3584     LIBO_URE_LIB_FOLDER=Frameworks
3585     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3586     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3587 elif test $_os = WINNT; then
3588     LIBO_BIN_FOLDER=program
3589     LIBO_ETC_FOLDER=program
3590     LIBO_LIBEXEC_FOLDER=program
3591     LIBO_LIB_FOLDER=program
3592     LIBO_LIB_PYUNO_FOLDER=program
3593     LIBO_SHARE_FOLDER=share
3594     LIBO_SHARE_HELP_FOLDER=help
3595     LIBO_SHARE_JAVA_FOLDER=program/classes
3596     LIBO_SHARE_PRESETS_FOLDER=presets
3597     LIBO_SHARE_READMES_FOLDER=readmes
3598     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3599     LIBO_SHARE_SHELL_FOLDER=program/shell
3600     LIBO_URE_BIN_FOLDER=program
3601     LIBO_URE_ETC_FOLDER=program
3602     LIBO_URE_LIB_FOLDER=program
3603     LIBO_URE_MISC_FOLDER=program
3604     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3605 else
3606     LIBO_BIN_FOLDER=program
3607     LIBO_ETC_FOLDER=program
3608     LIBO_LIBEXEC_FOLDER=program
3609     LIBO_LIB_FOLDER=program
3610     LIBO_LIB_PYUNO_FOLDER=program
3611     LIBO_SHARE_FOLDER=share
3612     LIBO_SHARE_HELP_FOLDER=help
3613     LIBO_SHARE_JAVA_FOLDER=program/classes
3614     LIBO_SHARE_PRESETS_FOLDER=presets
3615     LIBO_SHARE_READMES_FOLDER=readmes
3616     if test "$enable_fuzzers" != yes; then
3617         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3618     else
3619         LIBO_SHARE_RESOURCE_FOLDER=resource
3620     fi
3621     LIBO_SHARE_SHELL_FOLDER=program/shell
3622     LIBO_URE_BIN_FOLDER=program
3623     LIBO_URE_ETC_FOLDER=program
3624     LIBO_URE_LIB_FOLDER=program
3625     LIBO_URE_MISC_FOLDER=program
3626     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3628 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3629 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3630 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3631 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3632 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3633 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3634 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3635 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3636 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3637 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3638 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3639 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3640 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3641 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3642 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3643 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3645 # Not all of them needed in config_host.mk, add more if need arises
3646 AC_SUBST(LIBO_BIN_FOLDER)
3647 AC_SUBST(LIBO_ETC_FOLDER)
3648 AC_SUBST(LIBO_LIB_FOLDER)
3649 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3650 AC_SUBST(LIBO_SHARE_FOLDER)
3651 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3652 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3653 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3654 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3655 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3656 AC_SUBST(LIBO_URE_BIN_FOLDER)
3657 AC_SUBST(LIBO_URE_ETC_FOLDER)
3658 AC_SUBST(LIBO_URE_LIB_FOLDER)
3659 AC_SUBST(LIBO_URE_MISC_FOLDER)
3660 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3662 dnl ===================================================================
3663 dnl Windows specific tests and stuff
3664 dnl ===================================================================
3666 reg_get_value()
3668     # Return value: $regvalue
3669     unset regvalue
3671     if test "$build_os" = "wsl"; then
3672         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3673         return
3674     fi
3676     local _regentry="/proc/registry${1}/${2}"
3677     if test -f "$_regentry"; then
3678         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3679         # Registry keys read via /proc/registry* are always \0 terminated!
3680         local _regvalue=$(tr -d '\0' < "$_regentry")
3681         if test $? -eq 0; then
3682             regvalue=$_regvalue
3683         fi
3684     fi
3687 # Get a value from the 32-bit side of the Registry
3688 reg_get_value_32()
3690     reg_get_value "32" "$1"
3693 # Get a value from the 64-bit side of the Registry
3694 reg_get_value_64()
3696     reg_get_value "64" "$1"
3699 case "$host_os" in
3700 cygwin*|wsl*)
3701     COM=MSC
3702     OS=WNT
3703     RTL_OS=Windows
3704     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3705         P_SEP=";"
3706     else
3707         P_SEP=:
3708     fi
3709     case "$host_cpu" in
3710     x86_64)
3711         CPUNAME=X86_64
3712         RTL_ARCH=X86_64
3713         PLATFORMID=windows_x86_64
3714         WINDOWS_X64=1
3715         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3716         WIN_HOST_ARCH="x64"
3717         WIN_MULTI_ARCH="x86"
3718         WIN_HOST_BITS=64
3719         ;;
3720     i*86)
3721         CPUNAME=INTEL
3722         RTL_ARCH=x86
3723         PLATFORMID=windows_x86
3724         WIN_HOST_ARCH="x86"
3725         WIN_HOST_BITS=32
3726         WIN_OTHER_ARCH="x64"
3727         ;;
3728     aarch64)
3729         CPUNAME=AARCH64
3730         RTL_ARCH=AARCH64
3731         PLATFORMID=windows_aarch64
3732         WINDOWS_X64=1
3733         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3734         WIN_HOST_ARCH="arm64"
3735         WIN_HOST_BITS=64
3736         with_ucrt_dir=no
3737         ;;
3738     *)
3739         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3740         ;;
3741     esac
3743     case "$build_cpu" in
3744     x86_64) WIN_BUILD_ARCH="x64" ;;
3745     i*86) WIN_BUILD_ARCH="x86" ;;
3746     aarch64) WIN_BUILD_ARCH="arm64" ;;
3747     *)
3748         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3749         ;;
3750     esac
3752     SCPDEFS="$SCPDEFS -D_MSC_VER"
3753     ;;
3754 esac
3756 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3757 # other-arch won't, but wouldn't break the build (x64 on x86).
3758 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3759     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3763 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3764     # To allow building Windows multi-arch releases without cross-tooling
3765     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3766         cross_compiling="yes"
3767     fi
3770 ENABLE_WASM_STRIP=''
3771 if test "$cross_compiling" = "yes"; then
3772     export CROSS_COMPILING=TRUE
3773     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3774         ENABLE_WASM_STRIP=TRUE
3775     fi
3776 else
3777     CROSS_COMPILING=
3778     BUILD_TYPE="$BUILD_TYPE NATIVE"
3780 AC_SUBST(CROSS_COMPILING)
3781 AC_SUBST(ENABLE_WASM_STRIP)
3783 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3784 # NOTE: must _not_ be used for bundled external libraries!
3785 ISYSTEM=
3786 if test "$GCC" = "yes"; then
3787     AC_MSG_CHECKING( for -isystem )
3788     save_CFLAGS=$CFLAGS
3789     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3790     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3791     CFLAGS=$save_CFLAGS
3792     if test -n "$ISYSTEM"; then
3793         AC_MSG_RESULT(yes)
3794     else
3795         AC_MSG_RESULT(no)
3796     fi
3798 if test -z "$ISYSTEM"; then
3799     # fall back to using -I
3800     ISYSTEM=-I
3802 AC_SUBST(ISYSTEM)
3804 dnl ===================================================================
3805 dnl  Check which Visual Studio compiler is used
3806 dnl ===================================================================
3808 map_vs_year_to_version()
3810     # Return value: $vsversion
3812     unset vsversion
3814     case $1 in
3815     2019)
3816         vsversion=16;;
3817     2022)
3818         vsversion=17;;
3819     *)
3820         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3821     esac
3824 vs_versions_to_check()
3826     # Args: $1 (optional) : versions to check, in the order of preference
3827     # Return value: $vsversions
3829     unset vsversions
3831     if test -n "$1"; then
3832         map_vs_year_to_version "$1"
3833         vsversions=$vsversion
3834     else
3835         # Default version is 2019
3836         vsversions="16"
3837     fi
3840 win_get_env_from_vsvars32bat()
3842     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3843     # Also seems to be located in another directory under the same name: vsvars32.bat
3844     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3845     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3846     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3847     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3848     local result
3849     if test "$build_os" = "wsl"; then
3850         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3851     else
3852         chmod +x $WRAPPERBATCHFILEPATH
3853         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3854     fi
3855     rm -f $WRAPPERBATCHFILEPATH
3856     printf '%s' "$result"
3859 find_ucrt()
3861     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3862     if test -n "$regvalue"; then
3863         PathFormat "$regvalue"
3864         UCRTSDKDIR=$formatted_path_unix
3865         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3866         UCRTVERSION=$regvalue
3867         # Rest if not exist
3868         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3869           UCRTSDKDIR=
3870         fi
3871     fi
3872     if test -z "$UCRTSDKDIR"; then
3873         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3874         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3875         if test -f "$ide_env_file"; then
3876             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3877             UCRTSDKDIR=$formatted_path
3878             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3879             dnl Hack needed at least by tml:
3880             if test "$UCRTVERSION" = 10.0.15063.0 \
3881                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3882                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3883             then
3884                 UCRTVERSION=10.0.14393.0
3885             fi
3886         else
3887           AC_MSG_ERROR([No UCRT found])
3888         fi
3889     fi
3892 find_msvc()
3894     # Find Visual C++
3895     # Args: $1 (optional) : The VS version year
3896     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3898     unset vctest vctoolset vcnumwithdot vcbuildnumber
3900     vs_versions_to_check "$1"
3901     if test "$build_os" = wsl; then
3902         vswhere="$PROGRAMFILESX86"
3903     else
3904         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3905     fi
3906     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3907     PathFormat "$vswhere"
3908     vswhere=$formatted_path_unix
3909     for ver in $vsversions; do
3910         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3911         if test -z "$vswhereoutput"; then
3912             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3913         fi
3914         # Fall back to all MS products (this includes VC++ Build Tools)
3915         if ! test -n "$vswhereoutput"; then
3916             AC_MSG_CHECKING([VC++ Build Tools and similar])
3917             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3918         fi
3919         if test -n "$vswhereoutput"; then
3920             PathFormat "$vswhereoutput"
3921             vctest=$formatted_path_unix
3922             break
3923         fi
3924     done
3926     if test -n "$vctest"; then
3927         vcnumwithdot="$ver.0"
3928         case "$vcnumwithdot" in
3929         16.0)
3930             vcyear=2019
3931             vctoolset=v142
3932             ;;
3933         17.0)
3934             vcyear=2022
3935             vctoolset=v143
3936             ;;
3937         esac
3938         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3940     fi
3943 test_cl_exe()
3945     AC_MSG_CHECKING([$1 compiler])
3947     CL_EXE_PATH="$2/cl.exe"
3949     if test ! -f "$CL_EXE_PATH"; then
3950         if test "$1" = "multi-arch"; then
3951             AC_MSG_WARN([no compiler (cl.exe) in $2])
3952             return 1
3953         else
3954             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3955         fi
3956     fi
3958     dnl ===========================================================
3959     dnl  Check for the corresponding mspdb*.dll
3960     dnl ===========================================================
3962     # MSVC 15.0 has libraries from 14.0?
3963     mspdbnum="140"
3965     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3966         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3967     fi
3969     # The compiles has to find its shared libraries
3970     OLD_PATH="$PATH"
3971     TEMP_PATH=`cygpath -d "$2"`
3972     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3974     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3975         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3976     fi
3978     PATH="$OLD_PATH"
3980     AC_MSG_RESULT([$CL_EXE_PATH])
3983 SOLARINC=
3984 MSBUILD_PATH=
3985 DEVENV=
3986 if test "$_os" = "WINNT"; then
3987     AC_MSG_CHECKING([Visual C++])
3988     find_msvc "$with_visual_studio"
3989     if test -z "$vctest"; then
3990         if test -n "$with_visual_studio"; then
3991             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3992         else
3993             AC_MSG_ERROR([no Visual Studio installation found])
3994         fi
3995     fi
3996     AC_MSG_RESULT([])
3998     VC_PRODUCT_DIR="$vctest/VC"
3999     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4001     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4002     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4003         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4004         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4005         if test $? -ne 0; then
4006             WIN_MULTI_ARCH=""
4007             WIN_OTHER_ARCH=""
4008         fi
4009     fi
4011     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4012         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4013         test_cl_exe "build" "$MSVC_BUILD_PATH"
4014     fi
4016     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4017         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4018         test_cl_exe "host" "$MSVC_HOST_PATH"
4019     else
4020         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4021     fi
4023     AC_MSG_CHECKING([for short pathname of VC product directory])
4024     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4025     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4027     UCRTSDKDIR=
4028     UCRTVERSION=
4030     AC_MSG_CHECKING([for UCRT location])
4031     find_ucrt
4032     # find_ucrt errors out if it doesn't find it
4033     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4034     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4035     ucrtincpath_formatted=$formatted_path
4036     # SOLARINC is used for external modules and must be set too.
4037     # And no, it's not sufficient to set SOLARINC only, as configure
4038     # itself doesn't honour it.
4039     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4040     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4041     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4042     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4044     AC_SUBST(UCRTSDKDIR)
4045     AC_SUBST(UCRTVERSION)
4047     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4048     # Find the proper version of MSBuild.exe to use based on the VS version
4049     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4050     if test -z "$regvalue" ; then
4051         if test "$WIN_BUILD_ARCH" != "x64"; then
4052             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4053         else
4054             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4055         fi
4056     fi
4057     if test -d "$regvalue" ; then
4058         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4059         AC_MSG_RESULT([$regvalue])
4060     else
4061         AC_MSG_ERROR([MSBuild.exe location not found])
4062     fi
4064     # Find the version of devenv.exe
4065     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4066     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4067     DEVENV_unix=$(cygpath -u "$DEVENV")
4068     if test ! -e "$DEVENV_unix"; then
4069         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4070     fi
4072     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4073     dnl needed when building CLR code:
4074     if test -z "$MSVC_CXX"; then
4075         # This gives us a posix path with 8.3 filename restrictions
4076         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4077     fi
4079     if test -z "$CC"; then
4080         CC=$MSVC_CXX
4081         CC_BASE=`first_arg_basename "$CC"`
4082     fi
4083     if test -z "$CXX"; then
4084         CXX=$MSVC_CXX
4085         CXX_BASE=`first_arg_basename "$CXX"`
4086     fi
4088     if test -n "$CC"; then
4089         # Remove /cl.exe from CC case insensitive
4090         AC_MSG_NOTICE([found Visual C++ $vcyear])
4092         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4093         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4095         PathFormat "$COMPATH"
4096         COMPATH=`win_short_path_for_make "$formatted_path"`
4098         VCVER=$vcnumwithdot
4099         VCTOOLSET=$vctoolset
4101         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4102         # are always "better", we list them in reverse chronological order.
4104         case "$vcnumwithdot" in
4105         16.0 | 17.0)
4106             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4107             ;;
4108         esac
4110         # The expectation is that --with-windows-sdk should not need to be used
4111         if test -n "$with_windows_sdk"; then
4112             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4113             *" "$with_windows_sdk" "*)
4114                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4115                 ;;
4116             *)
4117                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4118                 ;;
4119             esac
4120         fi
4122         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4123         ac_objext=obj
4124         ac_exeext=exe
4126     else
4127         AC_MSG_ERROR([Visual C++ not found after all, huh])
4128     fi
4130     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4131     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4132         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4133         // between Visual Studio versions and _MSC_VER:
4134         #if _MSC_VER < 1925
4135         #error
4136         #endif
4137     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4139     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4140     # version of the Explorer extension (and maybe other small
4141     # bits, too) needed when installing a 32-bit LibreOffice on a
4142     # 64-bit OS. The 64-bit Explorer extension is a feature that
4143     # has been present since long in OOo. Don't confuse it with
4144     # building LibreOffice itself as 64-bit code.
4146     BUILD_X64=
4147     CXX_X64_BINARY=
4149     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4150         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4151         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4152              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4153         then
4154             BUILD_X64=TRUE
4155             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4156             AC_MSG_RESULT([found])
4157         else
4158             AC_MSG_RESULT([not found])
4159             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4160         fi
4161     elif test "$WIN_HOST_ARCH" = "x64"; then
4162         CXX_X64_BINARY=$CXX
4163     fi
4164     AC_SUBST(BUILD_X64)
4166     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4167     AC_SUBST(CXX_X64_BINARY)
4169     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4170     # needed to support TWAIN scan on both 32- and 64-bit systems
4172     case "$WIN_HOST_ARCH" in
4173     x64)
4174         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4175         if test -n "$CXX_X86_BINARY"; then
4176             BUILD_X86=TRUE
4177             AC_MSG_RESULT([preset])
4178         elif test -n "$WIN_MULTI_ARCH"; then
4179             BUILD_X86=TRUE
4180             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4181             CXX_X86_BINARY+=" /arch:SSE"
4182             AC_MSG_RESULT([found])
4183         else
4184             AC_MSG_RESULT([not found])
4185             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4186         fi
4187         ;;
4188     x86)
4189         BUILD_X86=TRUE
4190         CXX_X86_BINARY=$MSVC_CXX
4191         ;;
4192     esac
4193     AC_SUBST(BUILD_X86)
4194     AC_SUBST(CXX_X86_BINARY)
4196 AC_SUBST(VCVER)
4197 AC_SUBST(VCTOOLSET)
4198 AC_SUBST(DEVENV)
4199 AC_SUBST(MSVC_CXX)
4201 COM_IS_CLANG=
4202 AC_MSG_CHECKING([whether the compiler is actually Clang])
4203 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4204     #ifndef __clang__
4205     you lose
4206     #endif
4207     int foo=42;
4208     ]])],
4209     [AC_MSG_RESULT([yes])
4210      COM_IS_CLANG=TRUE],
4211     [AC_MSG_RESULT([no])])
4212 AC_SUBST(COM_IS_CLANG)
4214 CC_PLAIN=$CC
4215 CLANGVER=
4216 if test "$COM_IS_CLANG" = TRUE; then
4217     AC_MSG_CHECKING([whether Clang is new enough])
4218     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4219         #if !defined __apple_build_version__
4220         #error
4221         #endif
4222         ]])],
4223         [my_apple_clang=yes],[my_apple_clang=])
4224     if test "$my_apple_clang" = yes; then
4225         AC_MSG_RESULT([assumed yes (Apple Clang)])
4226     elif test "$_os" = Emscripten; then
4227         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4228     else
4229         if test "$_os" = WINNT; then
4230             dnl In which case, assume clang-cl:
4231             my_args="/EP /TC"
4232             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4233             dnl clang-cl:
4234             CC_PLAIN=
4235             for i in $CC; do
4236                 case $i in
4237                 -FIIntrin.h)
4238                     ;;
4239                 *)
4240                     CC_PLAIN="$CC_PLAIN $i"
4241                     ;;
4242                 esac
4243             done
4244         else
4245             my_args="-E -P"
4246         fi
4247         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4248         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4249         CLANGVER=`echo $clang_version \
4250             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4251         if test "$CLANGVER" -ge 50002; then
4252             AC_MSG_RESULT([yes ($clang_version)])
4253         else
4254             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4255         fi
4256         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4257         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4258     fi
4261 SHOWINCLUDES_PREFIX=
4262 if test "$_os" = WINNT; then
4263     dnl We need to guess the prefix of the -showIncludes output, it can be
4264     dnl localized
4265     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4266     echo "#include <stdlib.h>" > conftest.c
4267     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4268         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4269     rm -f conftest.c conftest.obj
4270     if test -z "$SHOWINCLUDES_PREFIX"; then
4271         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4272     else
4273         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4274     fi
4276 AC_SUBST(SHOWINCLUDES_PREFIX)
4279 # prefix C with ccache if needed
4281 if test "$CCACHE" != ""; then
4282     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4284     AC_LANG_PUSH([C])
4285     save_CFLAGS=$CFLAGS
4286     CFLAGS="$CFLAGS --ccache-skip -O2"
4287     # msvc does not fail on unknown options, check stdout
4288     if test "$COM" = MSC; then
4289         CFLAGS="$CFLAGS -nologo"
4290     fi
4291     save_ac_c_werror_flag=$ac_c_werror_flag
4292     ac_c_werror_flag=yes
4293     dnl an empty program will do, we're checking the compiler flags
4294     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4295                       [use_ccache=yes], [use_ccache=no])
4296     CFLAGS=$save_CFLAGS
4297     ac_c_werror_flag=$save_ac_c_werror_flag
4298     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4299         AC_MSG_RESULT([yes])
4300     else
4301         CC="$CCACHE $CC"
4302         CC_BASE="ccache $CC_BASE"
4303         AC_MSG_RESULT([no])
4304     fi
4305     AC_LANG_POP([C])
4308 # ===================================================================
4309 # check various GCC options that Clang does not support now but maybe
4310 # will somewhen in the future, check them even for GCC, so that the
4311 # flags are set
4312 # ===================================================================
4314 HAVE_GCC_GGDB2=
4315 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4316     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4317     save_CFLAGS=$CFLAGS
4318     CFLAGS="$CFLAGS -Werror -ggdb2"
4319     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4320     CFLAGS=$save_CFLAGS
4321     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4322         AC_MSG_RESULT([yes])
4323     else
4324         AC_MSG_RESULT([no])
4325     fi
4327     if test "$host_cpu" = "m68k"; then
4328         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4329         save_CFLAGS=$CFLAGS
4330         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4331         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4332         CFLAGS=$save_CFLAGS
4333         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4334             AC_MSG_RESULT([yes])
4335         else
4336             AC_MSG_ERROR([no])
4337         fi
4338     fi
4340 AC_SUBST(HAVE_GCC_GGDB2)
4342 dnl ===================================================================
4343 dnl  Test the gcc version
4344 dnl ===================================================================
4345 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4346     AC_MSG_CHECKING([the GCC version])
4347     _gcc_version=`$CC -dumpfullversion`
4348     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4349         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4350     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4352     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4354     if test "$gcc_full_version" -lt 70000; then
4355         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4356     fi
4357 else
4358     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4359     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4360     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4361     # (which reports itself as GCC 4.2.1).
4362     GCC_VERSION=
4364 AC_SUBST(GCC_VERSION)
4366 dnl Set the ENABLE_DBGUTIL variable
4367 dnl ===================================================================
4368 AC_MSG_CHECKING([whether to build with additional debug utilities])
4369 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4370     ENABLE_DBGUTIL="TRUE"
4371     # this is an extra var so it can have different default on different MSVC
4372     # versions (in case there are version specific problems with it)
4373     MSVC_USE_DEBUG_RUNTIME="TRUE"
4375     AC_MSG_RESULT([yes])
4376     # cppunit and graphite expose STL in public headers
4377     if test "$with_system_cppunit" = "yes"; then
4378         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4379     else
4380         with_system_cppunit=no
4381     fi
4382     if test "$with_system_graphite" = "yes"; then
4383         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4384     else
4385         with_system_graphite=no
4386         if test -z "$with_system_harfbuzz"; then
4387             with_system_harfbuzz=no
4388         fi
4389         if test -z "$with_system_cairo"; then
4390             with_system_cairo=no
4391         fi
4392         if test -z "$with_system_fontconfig"; then
4393             with_system_fontconfig=no
4394         fi
4395         if test -z "$with_system_freetype"; then
4396             with_system_freetype=no
4397         fi
4398     fi
4399     if test "$with_system_orcus" = "yes"; then
4400         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4401     else
4402         with_system_orcus=no
4403     fi
4404     if test "$with_system_libcmis" = "yes"; then
4405         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4406     else
4407         with_system_libcmis=no
4408     fi
4409     if test "$with_system_hunspell" = "yes"; then
4410         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4411     else
4412         with_system_hunspell=no
4413     fi
4414     if test "$with_system_gpgmepp" = "yes"; then
4415         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4416     else
4417         with_system_gpgmepp=no
4418     fi
4419     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4420     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4421     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4422     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4423     # of those two is using the system variant:
4424     if test "$with_system_libnumbertext" = "yes"; then
4425         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4426     else
4427         with_system_libnumbertext=no
4428     fi
4429     if test "$with_system_libwps" = "yes"; then
4430         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4431     else
4432         with_system_libwps=no
4433     fi
4434 else
4435     ENABLE_DBGUTIL=""
4436     MSVC_USE_DEBUG_RUNTIME=""
4437     AC_MSG_RESULT([no])
4439 AC_SUBST(ENABLE_DBGUTIL)
4440 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4442 dnl Set the ENABLE_DEBUG variable.
4443 dnl ===================================================================
4444 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4445     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4447 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4448     if test -z "$libo_fuzzed_enable_debug"; then
4449         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4450     else
4451         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4452         enable_debug=yes
4453     fi
4456 AC_MSG_CHECKING([whether to do a debug build])
4457 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4458     ENABLE_DEBUG="TRUE"
4459     if test -n "$ENABLE_DBGUTIL" ; then
4460         AC_MSG_RESULT([yes (dbgutil)])
4461     else
4462         AC_MSG_RESULT([yes])
4463     fi
4464 else
4465     ENABLE_DEBUG=""
4466     AC_MSG_RESULT([no])
4468 AC_SUBST(ENABLE_DEBUG)
4470 dnl ===================================================================
4471 dnl Select the linker to use (gold/lld/ld.bfd).
4472 dnl This is done only after compiler checks (need to know if Clang is
4473 dnl used, for different defaults) and after checking if a debug build
4474 dnl is wanted (non-debug builds get the default linker if not explicitly
4475 dnl specified otherwise).
4476 dnl All checks for linker features/options should come after this.
4477 dnl ===================================================================
4478 check_use_ld()
4480     use_ld=-fuse-ld=${1%%:*}
4481     use_ld_path=${1#*:}
4482     if test "$use_ld_path" != "$1"; then
4483         use_ld="$use_ld --ld-path=$use_ld_path"
4484     fi
4485     use_ld_fail_if_error=$2
4486     use_ld_ok=
4487     AC_MSG_CHECKING([for $use_ld linker support])
4488     use_ld_ldflags_save="$LDFLAGS"
4489     LDFLAGS="$LDFLAGS $use_ld"
4490     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4491 #include <stdio.h>
4492         ],[
4493 printf ("hello world\n");
4494         ])], USE_LD=$use_ld, [])
4495     if test -n "$USE_LD"; then
4496         AC_MSG_RESULT( yes )
4497         use_ld_ok=yes
4498     else
4499         if test -n "$use_ld_fail_if_error"; then
4500             AC_MSG_ERROR( no )
4501         else
4502             AC_MSG_RESULT( no )
4503         fi
4504     fi
4505     if test -n "$use_ld_ok"; then
4506         dnl keep the value of LDFLAGS
4507         return 0
4508     fi
4509     LDFLAGS="$use_ld_ldflags_save"
4510     return 1
4512 USE_LD=
4513 if test "$enable_ld" != "no"; then
4514     if test "$GCC" = "yes"; then
4515         if test -n "$enable_ld"; then
4516             check_use_ld "$enable_ld" fail_if_error
4517         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4518             dnl non-debug builds default to the default linker
4519             true
4520         elif test -n "$COM_IS_CLANG"; then
4521             check_use_ld lld
4522             if test $? -ne 0; then
4523                 check_use_ld gold
4524             fi
4525         else
4526             # For gcc first try gold, new versions also support lld.
4527             check_use_ld gold
4528             if test $? -ne 0; then
4529                 check_use_ld lld
4530             fi
4531         fi
4532         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4533         rm conftest.out
4534         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4535         if test -z "$ld_used"; then
4536             ld_used="unknown"
4537         fi
4538         AC_MSG_CHECKING([for linker that is used])
4539         AC_MSG_RESULT([$ld_used])
4540         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4541             if echo "$ld_used" | grep -q "^GNU ld"; then
4542                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4543                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4544             fi
4545         fi
4546     else
4547         if test "$enable_ld" = "yes"; then
4548             AC_MSG_ERROR([--enable-ld not supported])
4549         fi
4550     fi
4552 AC_SUBST(USE_LD)
4554 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4555 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4556     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4557     bsymbolic_functions_ldflags_save=$LDFLAGS
4558     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4559     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4560 #include <stdio.h>
4561         ],[
4562 printf ("hello world\n");
4563         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4564     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4565         AC_MSG_RESULT( found )
4566     else
4567         AC_MSG_RESULT( not found )
4568     fi
4569     LDFLAGS=$bsymbolic_functions_ldflags_save
4571 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4573 LD_GC_SECTIONS=
4574 if test "$GCC" = "yes"; then
4575     for flag in "--gc-sections" "-dead_strip"; do
4576         AC_MSG_CHECKING([for $flag linker support])
4577         ldflags_save=$LDFLAGS
4578         LDFLAGS="$LDFLAGS -Wl,$flag"
4579         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4580 #include <stdio.h>
4581             ],[
4582 printf ("hello world\n");
4583             ])],[
4584             LD_GC_SECTIONS="-Wl,$flag"
4585             AC_MSG_RESULT( found )
4586             ], [
4587             AC_MSG_RESULT( not found )
4588             ])
4589         LDFLAGS=$ldflags_save
4590         if test -n "$LD_GC_SECTIONS"; then
4591             break
4592         fi
4593     done
4595 AC_SUBST(LD_GC_SECTIONS)
4597 HAVE_GSPLIT_DWARF=
4598 if test "$enable_split_debug" != no; then
4599     use_split_debug=
4600     if test -n "$ENABLE_LTO"; then
4601         true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4602     elif test "$enable_split_debug" = yes; then
4603         use_split_debug=1
4604     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4605     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4606         use_split_debug=1
4607     fi
4608     if test -n "$use_split_debug"; then
4609         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4610         save_CFLAGS=$CFLAGS
4611         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4612         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4613         CFLAGS=$save_CFLAGS
4614         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4615             AC_MSG_RESULT([yes])
4616         else
4617             if test "$enable_split_debug" = yes; then
4618                 AC_MSG_ERROR([no])
4619             else
4620                 AC_MSG_RESULT([no])
4621             fi
4622         fi
4623     fi
4624     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4625         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4626         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4627     fi
4629 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4631 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4632 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4633 save_CFLAGS=$CFLAGS
4634 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4635 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4636 CFLAGS=$save_CFLAGS
4637 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4638     AC_MSG_RESULT([yes])
4639 else
4640     AC_MSG_RESULT([no])
4642 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4644 ENABLE_GDB_INDEX=
4645 if test "$enable_gdb_index" != "no"; then
4646     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4647     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4648         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4649         save_CFLAGS=$CFLAGS
4650         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4651         have_ggnu_pubnames=
4652         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4653         if test "$have_ggnu_pubnames" != "TRUE"; then
4654             if test "$enable_gdb_index" = "yes"; then
4655                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4656             else
4657                 AC_MSG_RESULT( no )
4658             fi
4659         else
4660             AC_MSG_RESULT( yes )
4661             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4662             ldflags_save=$LDFLAGS
4663             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4664             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4665 #include <stdio.h>
4666                 ],[
4667 printf ("hello world\n");
4668                 ])], ENABLE_GDB_INDEX=TRUE, [])
4669             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4670                 AC_MSG_RESULT( yes )
4671             else
4672                 if test "$enable_gdb_index" = "yes"; then
4673                     AC_MSG_ERROR( no )
4674                 else
4675                     AC_MSG_RESULT( no )
4676                 fi
4677             fi
4678             LDFLAGS=$ldflags_save
4679         fi
4680         CFLAGS=$save_CFLAGS
4681         fi
4682     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4683         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4684         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4685     fi
4687 AC_SUBST(ENABLE_GDB_INDEX)
4689 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4690     enable_sal_log=yes
4692 if test "$enable_sal_log" = yes; then
4693     ENABLE_SAL_LOG=TRUE
4695 AC_SUBST(ENABLE_SAL_LOG)
4697 dnl Check for enable symbols option
4698 dnl ===================================================================
4699 AC_MSG_CHECKING([whether to generate debug information])
4700 if test -z "$enable_symbols"; then
4701     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4702         enable_symbols=yes
4703     else
4704         enable_symbols=no
4705     fi
4707 if test "$enable_symbols" = yes; then
4708     ENABLE_SYMBOLS_FOR=all
4709     AC_MSG_RESULT([yes])
4710 elif test "$enable_symbols" = no; then
4711     ENABLE_SYMBOLS_FOR=
4712     AC_MSG_RESULT([no])
4713 else
4714     # Selective debuginfo.
4715     ENABLE_SYMBOLS_FOR="$enable_symbols"
4716     AC_MSG_RESULT([for "$enable_symbols"])
4718 AC_SUBST(ENABLE_SYMBOLS_FOR)
4719 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4720     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4721     AC_MSG_CHECKING([whether enough memory is available for linking])
4722     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4723     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4724     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4725         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4726     else
4727         AC_MSG_RESULT([yes])
4728     fi
4731 ENABLE_OPTIMIZED=
4732 ENABLE_OPTIMIZED_DEBUG=
4733 AC_MSG_CHECKING([whether to compile with optimization flags])
4734 if test -z "$enable_optimized"; then
4735     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4736         enable_optimized=no
4737     else
4738         enable_optimized=yes
4739     fi
4741 if test "$enable_optimized" = yes; then
4742     ENABLE_OPTIMIZED=TRUE
4743     AC_MSG_RESULT([yes])
4744 elif test "$enable_optimized" = debug; then
4745     ENABLE_OPTIMIZED_DEBUG=TRUE
4746     AC_MSG_RESULT([yes (debug)])
4747     HAVE_GCC_OG=
4748     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4749         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4750         save_CFLAGS=$CFLAGS
4751         CFLAGS="$CFLAGS -Werror -Og"
4752         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4753         CFLAGS=$save_CFLAGS
4754         if test "$HAVE_GCC_OG" = "TRUE"; then
4755             AC_MSG_RESULT([yes])
4756         else
4757             AC_MSG_RESULT([no])
4758         fi
4759     fi
4760     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4761         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4762     fi
4763 else
4764     AC_MSG_RESULT([no])
4766 AC_SUBST(ENABLE_OPTIMIZED)
4767 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4770 # determine CPUNAME, OS, ...
4772 case "$host_os" in
4774 aix*)
4775     COM=GCC
4776     CPUNAME=POWERPC
4777     OS=AIX
4778     RTL_OS=AIX
4779     RTL_ARCH=PowerPC
4780     PLATFORMID=aix_powerpc
4781     P_SEP=:
4782     ;;
4784 cygwin*|wsl*)
4785     # Already handled
4786     ;;
4788 darwin*|macos*)
4789     COM=GCC
4790     OS=MACOSX
4791     RTL_OS=MacOSX
4792     P_SEP=:
4794     case "$host_cpu" in
4795     aarch64|arm64)
4796         if test "$enable_ios_simulator" = "yes"; then
4797             OS=iOS
4798         else
4799             CPUNAME=AARCH64
4800             RTL_ARCH=AARCH64
4801             PLATFORMID=macosx_aarch64
4802         fi
4803         ;;
4804     x86_64)
4805         if test "$enable_ios_simulator" = "yes"; then
4806             OS=iOS
4807         fi
4808         CPUNAME=X86_64
4809         RTL_ARCH=X86_64
4810         PLATFORMID=macosx_x86_64
4811         ;;
4812     *)
4813         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4814         ;;
4815     esac
4816     ;;
4818 ios*)
4819     COM=GCC
4820     OS=iOS
4821     RTL_OS=iOS
4822     P_SEP=:
4824     case "$host_cpu" in
4825     aarch64|arm64)
4826         if test "$enable_ios_simulator" = "yes"; then
4827             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4828         fi
4829         ;;
4830     *)
4831         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4832         ;;
4833     esac
4834     CPUNAME=AARCH64
4835     RTL_ARCH=AARCH64
4836     PLATFORMID=ios_arm64
4837     ;;
4839 dragonfly*)
4840     COM=GCC
4841     OS=DRAGONFLY
4842     RTL_OS=DragonFly
4843     P_SEP=:
4845     case "$host_cpu" in
4846     i*86)
4847         CPUNAME=INTEL
4848         RTL_ARCH=x86
4849         PLATFORMID=dragonfly_x86
4850         ;;
4851     x86_64)
4852         CPUNAME=X86_64
4853         RTL_ARCH=X86_64
4854         PLATFORMID=dragonfly_x86_64
4855         ;;
4856     *)
4857         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4858         ;;
4859     esac
4860     ;;
4862 freebsd*)
4863     COM=GCC
4864     RTL_OS=FreeBSD
4865     OS=FREEBSD
4866     P_SEP=:
4868     case "$host_cpu" in
4869     aarch64)
4870         CPUNAME=AARCH64
4871         PLATFORMID=freebsd_aarch64
4872         RTL_ARCH=AARCH64
4873         ;;
4874     i*86)
4875         CPUNAME=INTEL
4876         RTL_ARCH=x86
4877         PLATFORMID=freebsd_x86
4878         ;;
4879     x86_64|amd64)
4880         CPUNAME=X86_64
4881         RTL_ARCH=X86_64
4882         PLATFORMID=freebsd_x86_64
4883         ;;
4884     powerpc64)
4885         CPUNAME=POWERPC64
4886         RTL_ARCH=PowerPC_64
4887         PLATFORMID=freebsd_powerpc64
4888         ;;
4889     powerpc|powerpcspe)
4890         CPUNAME=POWERPC
4891         RTL_ARCH=PowerPC
4892         PLATFORMID=freebsd_powerpc
4893         ;;
4894     *)
4895         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4896         ;;
4897     esac
4898     ;;
4900 haiku*)
4901     COM=GCC
4902     GUIBASE=haiku
4903     RTL_OS=Haiku
4904     OS=HAIKU
4905     P_SEP=:
4907     case "$host_cpu" in
4908     i*86)
4909         CPUNAME=INTEL
4910         RTL_ARCH=x86
4911         PLATFORMID=haiku_x86
4912         ;;
4913     x86_64|amd64)
4914         CPUNAME=X86_64
4915         RTL_ARCH=X86_64
4916         PLATFORMID=haiku_x86_64
4917         ;;
4918     *)
4919         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4920         ;;
4921     esac
4922     ;;
4924 kfreebsd*)
4925     COM=GCC
4926     OS=LINUX
4927     RTL_OS=kFreeBSD
4928     P_SEP=:
4930     case "$host_cpu" in
4932     i*86)
4933         CPUNAME=INTEL
4934         RTL_ARCH=x86
4935         PLATFORMID=kfreebsd_x86
4936         ;;
4937     x86_64)
4938         CPUNAME=X86_64
4939         RTL_ARCH=X86_64
4940         PLATFORMID=kfreebsd_x86_64
4941         ;;
4942     *)
4943         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4944         ;;
4945     esac
4946     ;;
4948 linux-gnu*|linux-musl*)
4949     COM=GCC
4950     OS=LINUX
4951     RTL_OS=Linux
4952     P_SEP=:
4954     case "$host_cpu" in
4956     aarch64)
4957         CPUNAME=AARCH64
4958         PLATFORMID=linux_aarch64
4959         RTL_ARCH=AARCH64
4960         EPM_FLAGS="-a arm64"
4961         ;;
4962     alpha)
4963         CPUNAME=AXP
4964         RTL_ARCH=ALPHA
4965         PLATFORMID=linux_alpha
4966         ;;
4967     arm*)
4968         CPUNAME=ARM
4969         EPM_FLAGS="-a arm"
4970         RTL_ARCH=ARM_EABI
4971         PLATFORMID=linux_arm_eabi
4972         case "$host_cpu" in
4973         arm*-linux)
4974             RTL_ARCH=ARM_OABI
4975             PLATFORMID=linux_arm_oabi
4976             ;;
4977         esac
4978         ;;
4979     hppa)
4980         CPUNAME=HPPA
4981         RTL_ARCH=HPPA
4982         EPM_FLAGS="-a hppa"
4983         PLATFORMID=linux_hppa
4984         ;;
4985     i*86)
4986         CPUNAME=INTEL
4987         RTL_ARCH=x86
4988         PLATFORMID=linux_x86
4989         ;;
4990     ia64)
4991         CPUNAME=IA64
4992         RTL_ARCH=IA64
4993         PLATFORMID=linux_ia64
4994         ;;
4995     mips)
4996         CPUNAME=GODSON
4997         RTL_ARCH=MIPS_EB
4998         EPM_FLAGS="-a mips"
4999         PLATFORMID=linux_mips_eb
5000         ;;
5001     mips64)
5002         CPUNAME=GODSON64
5003         RTL_ARCH=MIPS64_EB
5004         EPM_FLAGS="-a mips64"
5005         PLATFORMID=linux_mips64_eb
5006         ;;
5007     mips64el)
5008         CPUNAME=GODSON64
5009         RTL_ARCH=MIPS64_EL
5010         EPM_FLAGS="-a mips64el"
5011         PLATFORMID=linux_mips64_el
5012         ;;
5013     mipsel)
5014         CPUNAME=GODSON
5015         RTL_ARCH=MIPS_EL
5016         EPM_FLAGS="-a mipsel"
5017         PLATFORMID=linux_mips_el
5018         ;;
5019     m68k)
5020         CPUNAME=M68K
5021         RTL_ARCH=M68K
5022         PLATFORMID=linux_m68k
5023         ;;
5024     powerpc)
5025         CPUNAME=POWERPC
5026         RTL_ARCH=PowerPC
5027         PLATFORMID=linux_powerpc
5028         ;;
5029     powerpc64)
5030         CPUNAME=POWERPC64
5031         RTL_ARCH=PowerPC_64
5032         PLATFORMID=linux_powerpc64
5033         ;;
5034     powerpc64le)
5035         CPUNAME=POWERPC64
5036         RTL_ARCH=PowerPC_64_LE
5037         PLATFORMID=linux_powerpc64_le
5038         ;;
5039     sparc)
5040         CPUNAME=SPARC
5041         RTL_ARCH=SPARC
5042         PLATFORMID=linux_sparc
5043         ;;
5044     sparc64)
5045         CPUNAME=SPARC64
5046         RTL_ARCH=SPARC64
5047         PLATFORMID=linux_sparc64
5048         ;;
5049     s390)
5050         CPUNAME=S390
5051         RTL_ARCH=S390
5052         PLATFORMID=linux_s390
5053         ;;
5054     s390x)
5055         CPUNAME=S390X
5056         RTL_ARCH=S390x
5057         PLATFORMID=linux_s390x
5058         ;;
5059     x86_64)
5060         CPUNAME=X86_64
5061         RTL_ARCH=X86_64
5062         PLATFORMID=linux_x86_64
5063         ;;
5064     *)
5065         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5066         ;;
5067     esac
5068     ;;
5070 linux-android*)
5071     COM=GCC
5072     OS=ANDROID
5073     RTL_OS=Android
5074     P_SEP=:
5076     case "$host_cpu" in
5078     arm|armel)
5079         CPUNAME=ARM
5080         RTL_ARCH=ARM_EABI
5081         PLATFORMID=android_arm_eabi
5082         ;;
5083     aarch64)
5084         CPUNAME=AARCH64
5085         RTL_ARCH=AARCH64
5086         PLATFORMID=android_aarch64
5087         ;;
5088     i*86)
5089         CPUNAME=INTEL
5090         RTL_ARCH=x86
5091         PLATFORMID=android_x86
5092         ;;
5093     x86_64)
5094         CPUNAME=X86_64
5095         RTL_ARCH=X86_64
5096         PLATFORMID=android_x86_64
5097         ;;
5098     *)
5099         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5100         ;;
5101     esac
5102     ;;
5104 *netbsd*)
5105     COM=GCC
5106     OS=NETBSD
5107     RTL_OS=NetBSD
5108     P_SEP=:
5110     case "$host_cpu" in
5111     i*86)
5112         CPUNAME=INTEL
5113         RTL_ARCH=x86
5114         PLATFORMID=netbsd_x86
5115         ;;
5116     powerpc)
5117         CPUNAME=POWERPC
5118         RTL_ARCH=PowerPC
5119         PLATFORMID=netbsd_powerpc
5120         ;;
5121     sparc)
5122         CPUNAME=SPARC
5123         RTL_ARCH=SPARC
5124         PLATFORMID=netbsd_sparc
5125         ;;
5126     x86_64)
5127         CPUNAME=X86_64
5128         RTL_ARCH=X86_64
5129         PLATFORMID=netbsd_x86_64
5130         ;;
5131     *)
5132         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5133         ;;
5134     esac
5135     ;;
5137 openbsd*)
5138     COM=GCC
5139     OS=OPENBSD
5140     RTL_OS=OpenBSD
5141     P_SEP=:
5143     case "$host_cpu" in
5144     i*86)
5145         CPUNAME=INTEL
5146         RTL_ARCH=x86
5147         PLATFORMID=openbsd_x86
5148         ;;
5149     x86_64)
5150         CPUNAME=X86_64
5151         RTL_ARCH=X86_64
5152         PLATFORMID=openbsd_x86_64
5153         ;;
5154     *)
5155         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5156         ;;
5157     esac
5158     SOLARINC="$SOLARINC -I/usr/local/include"
5159     ;;
5161 solaris*)
5162     COM=GCC
5163     OS=SOLARIS
5164     RTL_OS=Solaris
5165     P_SEP=:
5167     case "$host_cpu" in
5168     i*86)
5169         CPUNAME=INTEL
5170         RTL_ARCH=x86
5171         PLATFORMID=solaris_x86
5172         ;;
5173     sparc)
5174         CPUNAME=SPARC
5175         RTL_ARCH=SPARC
5176         PLATFORMID=solaris_sparc
5177         ;;
5178     sparc64)
5179         CPUNAME=SPARC64
5180         RTL_ARCH=SPARC64
5181         PLATFORMID=solaris_sparc64
5182         ;;
5183     *)
5184         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5185         ;;
5186     esac
5187     SOLARINC="$SOLARINC -I/usr/local/include"
5188     ;;
5190 emscripten*)
5191     COM=GCC
5192     OS=EMSCRIPTEN
5193     RTL_OS=Emscripten
5194     P_SEP=:
5196     case "$host_cpu" in
5197     wasm32|wasm64)
5198         ;;
5199     *)
5200         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5201         ;;
5202     esac
5203     CPUNAME=INTEL
5204     RTL_ARCH=x86
5205     PLATFORMID=linux_x86
5206     ;;
5209     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5210     ;;
5211 esac
5213 if test "$with_x" = "no"; then
5214     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5217 DISABLE_GUI=""
5218 if test "$enable_gui" = "no"; then
5219     if test "$using_x11" != yes; then
5220         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5221     fi
5222     USING_X11=
5223     DISABLE_GUI=TRUE
5224 else
5225     AC_DEFINE(HAVE_FEATURE_UI)
5227 AC_SUBST(DISABLE_GUI)
5229 if test "$using_x11" = yes; then
5230     if test "$USING_X11" = TRUE; then
5231         AC_DEFINE(USING_X11)
5232     else
5233         disable_x11_tests
5234     fi
5235 else
5236     if test "$USING_X11" = TRUE; then
5237         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5238     fi
5241 WORKDIR="${BUILDDIR}/workdir"
5242 INSTDIR="${BUILDDIR}/instdir"
5243 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5244 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5245 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5246 AC_SUBST(COM)
5247 AC_SUBST(CPUNAME)
5248 AC_SUBST(RTL_OS)
5249 AC_SUBST(RTL_ARCH)
5250 AC_SUBST(EPM_FLAGS)
5251 AC_SUBST(USING_X11)
5252 AC_SUBST([INSTDIR])
5253 AC_SUBST([INSTROOT])
5254 AC_SUBST([INSTROOTBASE])
5255 AC_SUBST(OS)
5256 AC_SUBST(P_SEP)
5257 AC_SUBST(WORKDIR)
5258 AC_SUBST(PLATFORMID)
5259 AC_SUBST(WINDOWS_X64)
5260 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5262 if test "$OS" = WNT -a "$COM" = MSC; then
5263     case "$CPUNAME" in
5264     INTEL) CPPU_ENV=msci ;;
5265     X86_64) CPPU_ENV=mscx ;;
5266     AARCH64) CPPU_ENV=msca ;;
5267     *)
5268         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5269         ;;
5270     esac
5271 else
5272     CPPU_ENV=gcc3
5274 AC_SUBST(CPPU_ENV)
5276 dnl ===================================================================
5277 dnl Test which package format to use
5278 dnl ===================================================================
5279 AC_MSG_CHECKING([which package format to use])
5280 if test -n "$with_package_format" -a "$with_package_format" != no; then
5281     for i in $with_package_format; do
5282         case "$i" in
5283         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5284             ;;
5285         *)
5286             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5287 aix - AIX software distribution
5288 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5289 deb - Debian software distribution
5290 pkg - Solaris software distribution
5291 rpm - RedHat software distribution
5293 LibreOffice additionally supports:
5294 archive - .tar.gz or .zip
5295 dmg - macOS .dmg
5296 installed - installation tree
5297 msi - Windows .msi
5298         ])
5299             ;;
5300         esac
5301     done
5302     # fakeroot is needed to ensure correct file ownerships/permissions
5303     # inside deb packages and tar archives created on Linux and Solaris.
5304     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5305         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5306         if test "$FAKEROOT" = "no"; then
5307             AC_MSG_ERROR(
5308                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5309         fi
5310     fi
5311     PKGFORMAT="$with_package_format"
5312     AC_MSG_RESULT([$PKGFORMAT])
5313 else
5314     PKGFORMAT=
5315     AC_MSG_RESULT([none])
5317 AC_SUBST(PKGFORMAT)
5319 dnl ===================================================================
5320 dnl handle help related options
5322 dnl If you change help related options, please update README.help
5323 dnl ===================================================================
5325 ENABLE_HTMLHELP=
5326 HELP_OMINDEX_PAGE=
5327 HELP_ONLINE=
5328 WITH_HELPPACKS=
5330 AC_MSG_CHECKING([which help to build])
5331 if test -n "$with_help" -a "$with_help" != "no"; then
5332     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5333     BUILD_TYPE="$BUILD_TYPE HELP"
5334     case "$with_help" in
5335     "html")
5336         ENABLE_HTMLHELP=TRUE
5337         WITH_HELPPACKS=TRUE
5338         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5339         AC_MSG_RESULT([HTML (local)])
5340         ;;
5341     "online")
5342         ENABLE_HTMLHELP=TRUE
5343         HELP_ONLINE=TRUE
5344         AC_MSG_RESULT([HTML (online)])
5345         ;;
5346     yes)
5347         WITH_HELPPACKS=TRUE
5348         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5349         AC_MSG_RESULT([XML (local)])
5350         ;;
5351     *)
5352         AC_MSG_ERROR([Unknown --with-help=$with_help])
5353         ;;
5354     esac
5355 else
5356     AC_MSG_RESULT([no])
5359 AC_MSG_CHECKING([if we need to build the help index tooling])
5360 if test "$cross_compiling" != yes -a \( "$with_help" = yes -o "$enable_extension_integration" != no \); then
5361     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5362     test_clucene=yes
5363     AC_MSG_RESULT([yes])
5364 else
5365     AC_MSG_RESULT([no])
5368 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5369 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5370     if test "$HELP_ONLINE" != TRUE; then
5371         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5372     fi
5373     case "$with_omindex" in
5374     "server")
5375         HELP_OMINDEX_PAGE=TRUE
5376         AC_MSG_RESULT([SERVER])
5377         ;;
5378     "noxap")
5379         AC_MSG_RESULT([NOXAP])
5380         ;;
5381     *)
5382         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5383         ;;
5384     esac
5385 else
5386     AC_MSG_RESULT([no])
5389 AC_MSG_CHECKING([whether to include the XML-help support])
5390 if test "$enable_xmlhelp" = yes; then
5391     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5392     test_clucene=yes
5393     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5394     AC_MSG_RESULT([yes])
5395 else
5396     if test "$with_help" = yes; then
5397         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5398     fi
5399     AC_MSG_RESULT([no])
5402 dnl Test whether to integrate helppacks into the product's installer
5403 AC_MSG_CHECKING([for helppack integration])
5404 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5405     AC_MSG_RESULT([no integration])
5406 else
5407     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5408     AC_MSG_RESULT([integration])
5411 AC_SUBST([ENABLE_HTMLHELP])
5412 AC_SUBST([HELP_OMINDEX_PAGE])
5413 AC_SUBST([HELP_ONLINE])
5414 # WITH_HELPPACKS is used only in configure
5416 dnl ===================================================================
5417 dnl Set up a different compiler to produce tools to run on the build
5418 dnl machine when doing cross-compilation
5419 dnl ===================================================================
5421 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5422 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5423 if test "$cross_compiling" = "yes"; then
5424     AC_MSG_CHECKING([for BUILD platform configuration])
5425     echo
5426     rm -rf CONF-FOR-BUILD config_build.mk
5427     mkdir CONF-FOR-BUILD
5428     # Here must be listed all files needed when running the configure script. In particular, also
5429     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5430     # keep them in the same order as there.
5431     (cd $SRC_ROOT && tar cf - \
5432         config.guess \
5433         bin/get_config_variables \
5434         solenv/bin/getcompver.awk \
5435         solenv/inc/langlist.mk \
5436         download.lst \
5437         config_host.mk.in \
5438         config_host_lang.mk.in \
5439         Makefile.in \
5440         lo.xcent.in \
5441         bin/bffvalidator.sh.in \
5442         bin/odfvalidator.sh.in \
5443         bin/officeotron.sh.in \
5444         hardened_runtime.xcent.in \
5445         instsetoo_native/util/openoffice.lst.in \
5446         config_host/*.in \
5447         sysui/desktop/macosx/Info.plist.in \
5448         .vscode/vs-code-template.code-workspace.in \
5449         ) \
5450     | (cd CONF-FOR-BUILD && tar xf -)
5451     cp configure CONF-FOR-BUILD
5452     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5453     (
5454     unset COM USING_X11 OS CPUNAME
5455     unset CC CXX SYSBASE CFLAGS
5456     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5457     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5458     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5459     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5460     if test -n "$CC_FOR_BUILD"; then
5461         export CC="$CC_FOR_BUILD"
5462         CC_BASE=`first_arg_basename "$CC"`
5463     fi
5464     if test -n "$CXX_FOR_BUILD"; then
5465         export CXX="$CXX_FOR_BUILD"
5466         CXX_BASE=`first_arg_basename "$CXX"`
5467     fi
5468     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5469     cd CONF-FOR-BUILD
5471     # Handle host configuration, which affects the cross-toolset too
5472     sub_conf_opts=""
5473     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5474     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5475     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5476     if test -n "$ENABLE_JAVA"; then
5477         case "$_os" in
5478         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5479         Android)
5480             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5481             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5482             ;;
5483         *)
5484             if test -z "$with_jdk_home"; then
5485                 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.])
5486             fi
5487             ;;
5488         esac
5489     else
5490         sub_conf_opts="$sub_conf_opts --without-java"
5491     fi
5492     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5493     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5494     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5495     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5496     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5497     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5499     # Don't bother having configure look for stuff not needed for the build platform anyway
5500     sub_conf_defaults=" \
5501         --build="$build_alias" \
5502         --disable-cairo-canvas \
5503         --disable-cups \
5504         --disable-customtarget-components \
5505         --disable-firebird-sdbc \
5506         --disable-gpgmepp \
5507         --disable-gstreamer-1-0 \
5508         --disable-gtk3 \
5509         --disable-gtk4 \
5510         --disable-mariadb-sdbc \
5511         --disable-nss \
5512         --disable-online-update \
5513         --disable-opencl \
5514         --disable-pdfimport \
5515         --disable-postgresql-sdbc \
5516         --disable-skia \
5517         --disable-xmlhelp \
5518         --enable-icecream="$enable_icecream" \
5519         --without-doxygen \
5520         --without-webdav \
5521         --with-parallelism="$with_parallelism" \
5522         --with-theme="$with_theme" \
5523         --with-tls=openssl \
5525     echo "    Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5526     ./configure \
5527         $sub_conf_defaults \
5528         $sub_conf_opts \
5529         $with_build_platform_configure_options \
5530         --srcdir=$srcdir \
5531         2>&1 | sed -e 's/^/    /'
5532     if test [${PIPESTATUS[0]}] -ne 0; then
5533         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5534     fi
5536     # filter permitted build targets
5537     PERMITTED_BUILD_TARGETS="
5538         AVMEDIA
5539         BOOST
5540         CAIRO
5541         CLUCENE
5542         CURL
5543         DBCONNECTIVITY
5544         DESKTOP
5545         DYNLOADING
5546         EPOXY
5547         EXPAT
5548         GLM
5549         GRAPHITE
5550         HARFBUZZ
5551         HELPTOOLS
5552         ICU
5553         LCMS2
5554         LIBJPEG_TURBO
5555         LIBLANGTAG
5556         LibO
5557         LIBFFI
5558         LIBPN
5559         LIBTIFF
5560         LIBXML2
5561         LIBXSLT
5562         MDDS
5563         NATIVE
5564         OPENSSL
5565         ORCUS
5566         PYTHON
5567         SCRIPTING
5568         ZLIB
5570     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5571     # newlined lists, to use grep as a filter
5572     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5573     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5574     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5575     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5577     cp config_host.mk ../config_build.mk
5578     cp config_host_lang.mk ../config_build_lang.mk
5579     mv config.log ../config.Build.log
5580     mkdir -p ../config_build
5581     mv config_host/*.h ../config_build
5582     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5584     # all these will get a _FOR_BUILD postfix
5585     DIRECT_FOR_BUILD_SETTINGS="
5586         CC
5587         CPPU_ENV
5588         CXX
5589         ILIB
5590         JAVA_HOME
5591         JAVAIFLAGS
5592         JDK
5593         LIBO_BIN_FOLDER
5594         LIBO_LIB_FOLDER
5595         LIBO_URE_LIB_FOLDER
5596         LIBO_URE_MISC_FOLDER
5597         OS
5598         SDKDIRNAME
5599         SYSTEM_LIBXML
5600         SYSTEM_LIBXSLT
5602     # these overwrite host config with build config
5603     OVERWRITING_SETTINGS="
5604         ANT
5605         ANT_HOME
5606         ANT_LIB
5607         HSQLDB_USE_JDBC_4_1
5608         JAVA_CLASSPATH_NOT_SET
5609         JAVA_SOURCE_VER
5610         JAVA_TARGET_VER
5611         JAVACFLAGS
5612         JAVACOMPILER
5613         JAVADOC
5614         JAVADOCISGJDOC
5616     # these need some special handling
5617     EXTRA_HANDLED_SETTINGS="
5618         INSTDIR
5619         INSTROOT
5620         PATH
5621         WORKDIR
5623     OLD_PATH=$PATH
5624     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5625     BUILD_PATH=$PATH
5626     PATH=$OLD_PATH
5628     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5629     echo "$line" >>build-config
5631     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5632         VV='$'$V
5633         VV=`eval "echo $VV"`
5634         if test -n "$VV"; then
5635             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5636             echo "$line" >>build-config
5637         fi
5638     done
5640     for V in $OVERWRITING_SETTINGS; do
5641         VV='$'$V
5642         VV=`eval "echo $VV"`
5643         if test -n "$VV"; then
5644             line=${V}='${'${V}:-$VV'}'
5645             echo "$line" >>build-config
5646         fi
5647     done
5649     for V in INSTDIR INSTROOT WORKDIR; do
5650         VV='$'$V
5651         VV=`eval "echo $VV"`
5652         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5653         if test -n "$VV"; then
5654             line="${V}_FOR_BUILD='$VV'"
5655             echo "$line" >>build-config
5656         fi
5657     done
5659     )
5660     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5661     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])
5662     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5663              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5665     eval `cat CONF-FOR-BUILD/build-config`
5667     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5669     rm -rf CONF-FOR-BUILD
5670 else
5671     OS_FOR_BUILD="$OS"
5672     CC_FOR_BUILD="$CC"
5673     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5674     CXX_FOR_BUILD="$CXX"
5675     INSTDIR_FOR_BUILD="$INSTDIR"
5676     INSTROOT_FOR_BUILD="$INSTROOT"
5677     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5678     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5679     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5680     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5681     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5682     WORKDIR_FOR_BUILD="$WORKDIR"
5684 AC_SUBST(OS_FOR_BUILD)
5685 AC_SUBST(INSTDIR_FOR_BUILD)
5686 AC_SUBST(INSTROOT_FOR_BUILD)
5687 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5688 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5689 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5690 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5691 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5692 AC_SUBST(WORKDIR_FOR_BUILD)
5693 AC_SUBST(CC_FOR_BUILD)
5694 AC_SUBST(CXX_FOR_BUILD)
5695 AC_SUBST(CPPU_ENV_FOR_BUILD)
5697 dnl ===================================================================
5698 dnl Check for syslog header
5699 dnl ===================================================================
5700 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5702 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5703 dnl ===================================================================
5704 AC_MSG_CHECKING([whether to turn warnings to errors])
5705 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5706     ENABLE_WERROR="TRUE"
5707     PYTHONWARNINGS="error"
5708     AC_MSG_RESULT([yes])
5709 else
5710     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5711         ENABLE_WERROR="TRUE"
5712         PYTHONWARNINGS="error"
5713         AC_MSG_RESULT([yes])
5714     else
5715         AC_MSG_RESULT([no])
5716     fi
5718 AC_SUBST(ENABLE_WERROR)
5719 AC_SUBST(PYTHONWARNINGS)
5721 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5722 dnl ===================================================================
5723 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5724 if test -z "$enable_assert_always_abort"; then
5725    if test "$ENABLE_DEBUG" = TRUE; then
5726        enable_assert_always_abort=yes
5727    else
5728        enable_assert_always_abort=no
5729    fi
5731 if test "$enable_assert_always_abort" = "yes"; then
5732     ASSERT_ALWAYS_ABORT="TRUE"
5733     AC_MSG_RESULT([yes])
5734 else
5735     ASSERT_ALWAYS_ABORT="FALSE"
5736     AC_MSG_RESULT([no])
5738 AC_SUBST(ASSERT_ALWAYS_ABORT)
5740 # Determine whether to use ooenv for the instdir installation
5741 # ===================================================================
5742 if test $_os != "WINNT" -a $_os != "Darwin"; then
5743     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5744     if test -z "$enable_ooenv"; then
5745         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5746             enable_ooenv=yes
5747         else
5748             enable_ooenv=no
5749         fi
5750     fi
5751     if test "$enable_ooenv" = "no"; then
5752         AC_MSG_RESULT([no])
5753     else
5754         ENABLE_OOENV="TRUE"
5755         AC_MSG_RESULT([yes])
5756     fi
5758 AC_SUBST(ENABLE_OOENV)
5760 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5761     if test "$enable_qt5" = "no"; then
5762         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5763     else
5764         enable_qt5=yes
5765     fi
5768 dnl ===================================================================
5769 dnl check for cups support
5770 dnl ===================================================================
5772 AC_MSG_CHECKING([whether to enable CUPS support])
5773 if test "$test_cups" = yes -a "$enable_cups" != no; then
5774     ENABLE_CUPS=TRUE
5775     AC_MSG_RESULT([yes])
5777     AC_MSG_CHECKING([whether cups support is present])
5778     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5779     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5780     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5781         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5782     fi
5783 else
5784     AC_MSG_RESULT([no])
5787 AC_SUBST(ENABLE_CUPS)
5789 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,,TRUE)
5791 dnl whether to find & fetch external tarballs?
5792 dnl ===================================================================
5793 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5794    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5795        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5796    else
5797        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5798    fi
5800 if test -z "$TARFILE_LOCATION"; then
5801     if test -d "$SRC_ROOT/src" ; then
5802         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5803         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5804     fi
5805     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5806 else
5807     AbsolutePath "$TARFILE_LOCATION"
5808     PathFormat "${absolute_path}"
5809     TARFILE_LOCATION="${formatted_path}"
5811 AC_SUBST(TARFILE_LOCATION)
5813 AC_MSG_CHECKING([whether we want to fetch tarballs])
5814 if test "$enable_fetch_external" != "no"; then
5815     if test "$with_all_tarballs" = "yes"; then
5816         AC_MSG_RESULT([yes, all of them])
5817         DO_FETCH_TARBALLS="ALL"
5818     else
5819         AC_MSG_RESULT([yes, if we use them])
5820         DO_FETCH_TARBALLS="TRUE"
5821     fi
5822 else
5823     AC_MSG_RESULT([no])
5824     DO_FETCH_TARBALLS=
5826 AC_SUBST(DO_FETCH_TARBALLS)
5828 dnl Test whether to include MySpell dictionaries
5829 dnl ===================================================================
5830 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5831 if test "$with_myspell_dicts" = "yes"; then
5832     AC_MSG_RESULT([yes])
5833     WITH_MYSPELL_DICTS=TRUE
5834     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5835     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5836 else
5837     AC_MSG_RESULT([no])
5838     WITH_MYSPELL_DICTS=
5840 AC_SUBST(WITH_MYSPELL_DICTS)
5842 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5843 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5844     if test "$with_system_dicts" = yes; then
5845         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5846     fi
5847     with_system_dicts=no
5850 AC_MSG_CHECKING([whether to use dicts from external paths])
5851 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5852     AC_MSG_RESULT([yes])
5853     SYSTEM_DICTS=TRUE
5854     AC_MSG_CHECKING([for spelling dictionary directory])
5855     if test -n "$with_external_dict_dir"; then
5856         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5857     else
5858         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5859         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5860             DICT_SYSTEM_DIR=file:///usr/share/myspell
5861         fi
5862     fi
5863     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5864     AC_MSG_CHECKING([for hyphenation patterns directory])
5865     if test -n "$with_external_hyph_dir"; then
5866         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5867     else
5868         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5869     fi
5870     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5871     AC_MSG_CHECKING([for thesaurus directory])
5872     if test -n "$with_external_thes_dir"; then
5873         THES_SYSTEM_DIR=file://$with_external_thes_dir
5874     else
5875         THES_SYSTEM_DIR=file:///usr/share/mythes
5876     fi
5877     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5878 else
5879     AC_MSG_RESULT([no])
5880     SYSTEM_DICTS=
5882 AC_SUBST(SYSTEM_DICTS)
5883 AC_SUBST(DICT_SYSTEM_DIR)
5884 AC_SUBST(HYPH_SYSTEM_DIR)
5885 AC_SUBST(THES_SYSTEM_DIR)
5887 dnl ===================================================================
5888 dnl Precompiled headers.
5889 ENABLE_PCH=""
5890 AC_MSG_CHECKING([whether to enable pch feature])
5891 if test -z "$enable_pch"; then
5892     if test "$_os" = "WINNT"; then
5893         # Enabled by default on Windows.
5894         enable_pch=yes
5895         # never use sccache on auto-enabled PCH builds, except if requested explicitely
5896         if test -z "$enable_ccache" -a "$SCCACHE"; then
5897             CCACHE=""
5898         fi
5899     else
5900         enable_pch=no
5901     fi
5903 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5904     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5906 if test "$enable_pch" = "system"; then
5907     ENABLE_PCH="1"
5908     AC_MSG_RESULT([yes (system headers)])
5909 elif test "$enable_pch" = "base"; then
5910     ENABLE_PCH="2"
5911     AC_MSG_RESULT([yes (system and base headers)])
5912 elif test "$enable_pch" = "normal"; then
5913     ENABLE_PCH="3"
5914     AC_MSG_RESULT([yes (normal)])
5915 elif test "$enable_pch" = "full"; then
5916     ENABLE_PCH="4"
5917     AC_MSG_RESULT([yes (full)])
5918 elif test "$enable_pch" = "yes"; then
5919     # Pick a suitable default.
5920     if test "$GCC" = "yes"; then
5921         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5922         # while making the PCHs larger and rebuilds more likely.
5923         ENABLE_PCH="2"
5924         AC_MSG_RESULT([yes (system and base headers)])
5925     else
5926         # With MSVC the highest level makes a significant difference,
5927         # and it was the default when there used to be no PCH levels.
5928         ENABLE_PCH="4"
5929         AC_MSG_RESULT([yes (full)])
5930     fi
5931 elif test "$enable_pch" = "no"; then
5932     AC_MSG_RESULT([no])
5933 else
5934     AC_MSG_ERROR([Unknown value for --enable-pch])
5936 AC_SUBST(ENABLE_PCH)
5937 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5938 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5939     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5940     if test "$CCACHE_BIN" != "not found"; then
5941         AC_MSG_CHECKING([ccache version])
5942         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5943         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5944         AC_MSG_RESULT([$CCACHE_VERSION])
5945         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5946         if test "$CCACHE_NUMVER" -gt "030701"; then
5947             AC_MSG_RESULT([yes])
5948         else
5949             AC_MSG_RESULT([no (not newer than 3.7.1)])
5950             CCACHE_DEPEND_MODE=
5951         fi
5952     fi
5955 PCH_INSTANTIATE_TEMPLATES=
5956 if test -n "$ENABLE_PCH"; then
5957     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5958     save_CFLAGS=$CFLAGS
5959     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5960     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5961     CFLAGS=$save_CFLAGS
5962     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5963         AC_MSG_RESULT(yes)
5964     else
5965         AC_MSG_RESULT(no)
5966     fi
5968 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5970 BUILDING_PCH_WITH_OBJ=
5971 if test -n "$ENABLE_PCH"; then
5972     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5973     save_CFLAGS=$CFLAGS
5974     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5975     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5976     CFLAGS=$save_CFLAGS
5977     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5978         AC_MSG_RESULT(yes)
5979     else
5980         AC_MSG_RESULT(no)
5981     fi
5983 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5985 PCH_CODEGEN=
5986 PCH_NO_CODEGEN=
5987 fpch_prefix=
5988 if test "$COM" = MSC; then
5989     fpch_prefix="-Xclang "
5991 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5992     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
5993     save_CFLAGS=$CFLAGS
5994     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
5995     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5996         [
5997         PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
5998         PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
5999         ],[])
6000     CFLAGS=$save_CFLAGS
6001     if test -n "$PCH_CODEGEN"; then
6002         AC_MSG_RESULT(yes)
6003     else
6004         AC_MSG_RESULT(no)
6005     fi
6007 AC_SUBST(PCH_CODEGEN)
6008 AC_SUBST(PCH_NO_CODEGEN)
6009 PCH_DEBUGINFO=
6010 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6011     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6012     save_CFLAGS=$CFLAGS
6013     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6014     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6015     CFLAGS=$save_CFLAGS
6016     if test -n "$PCH_DEBUGINFO"; then
6017         AC_MSG_RESULT(yes)
6018     else
6019         AC_MSG_RESULT(no)
6020     fi
6022 AC_SUBST(PCH_DEBUGINFO)
6024 TAB=`printf '\t'`
6026 AC_MSG_CHECKING([the GNU Make version])
6027 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6028 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6029 if test "$_make_longver" -ge "038200"; then
6030     AC_MSG_RESULT([$GNUMAKE $_make_version])
6032 elif test "$_make_longver" -ge "038100"; then
6033     if test "$build_os" = "cygwin"; then
6034         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6035     fi
6036     AC_MSG_RESULT([$GNUMAKE $_make_version])
6038     dnl ===================================================================
6039     dnl Search all the common names for sha1sum
6040     dnl ===================================================================
6041     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6042     if test -z "$SHA1SUM"; then
6043         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6044     elif test "$SHA1SUM" = "openssl"; then
6045         SHA1SUM="openssl sha1"
6046     fi
6047     AC_MSG_CHECKING([for GNU Make bug 20033])
6048     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6049     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6050 A := \$(wildcard *.a)
6052 .PHONY: all
6053 all: \$(A:.a=.b)
6054 <TAB>@echo survived bug20033.
6056 .PHONY: setup
6057 setup:
6058 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6060 define d1
6061 @echo lala \$(1)
6062 @sleep 1
6063 endef
6065 define d2
6066 @echo tyty \$(1)
6067 @sleep 1
6068 endef
6070 %.b : %.a
6071 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6072 <TAB>\$(call d1,\$(CHECKSUM)),\
6073 <TAB>\$(call d2,\$(CHECKSUM)))
6075     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6076         no_parallelism_make="YES"
6077         AC_MSG_RESULT([yes, disable parallelism])
6078     else
6079         AC_MSG_RESULT([no, keep parallelism enabled])
6080     fi
6081     rm -rf $TESTGMAKEBUG20033
6082 else
6083     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6086 # find if gnumake support file function
6087 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6088 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6089 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6090     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6092 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6093 \$(file >test.txt,Success )
6095 .PHONY: all
6096 all:
6097 <TAB>@cat test.txt
6100 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6101 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6102     HAVE_GNUMAKE_FILE_FUNC=TRUE
6103     AC_MSG_RESULT([yes])
6104 else
6105     AC_MSG_RESULT([no])
6107 rm -rf $TESTGMAKEFILEFUNC
6108 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6110 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6111 STALE_MAKE=
6112 if test "$_make_ver_check" = ""; then
6113    STALE_MAKE=TRUE
6116 HAVE_LD_HASH_STYLE=FALSE
6117 WITH_LINKER_HASH_STYLE=
6118 AC_MSG_CHECKING([for --hash-style gcc linker support])
6119 if test "$GCC" = "yes"; then
6120     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6121         hash_styles="gnu sysv"
6122     elif test "$with_linker_hash_style" = "no"; then
6123         hash_styles=
6124     else
6125         hash_styles="$with_linker_hash_style"
6126     fi
6128     for hash_style in $hash_styles; do
6129         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6130         hash_style_ldflags_save=$LDFLAGS
6131         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6133         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6134             [
6135 #include <stdio.h>
6136             ],[
6137 printf ("");
6138             ])],
6139             [
6140                   HAVE_LD_HASH_STYLE=TRUE
6141                   WITH_LINKER_HASH_STYLE=$hash_style
6142             ],
6143             [HAVE_LD_HASH_STYLE=FALSE],
6144             [HAVE_LD_HASH_STYLE=FALSE])
6145         LDFLAGS=$hash_style_ldflags_save
6146     done
6148     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6149         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6150     else
6151         AC_MSG_RESULT( no )
6152     fi
6153     LDFLAGS=$hash_style_ldflags_save
6154 else
6155     AC_MSG_RESULT( no )
6157 AC_SUBST(HAVE_LD_HASH_STYLE)
6158 AC_SUBST(WITH_LINKER_HASH_STYLE)
6160 dnl ===================================================================
6161 dnl Check whether there's a Perl version available.
6162 dnl ===================================================================
6163 if test -z "$with_perl_home"; then
6164     AC_PATH_PROG(PERL, perl)
6165 else
6166     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6167     _perl_path="$with_perl_home/bin/perl"
6168     if test -x "$_perl_path"; then
6169         PERL=$_perl_path
6170     else
6171         AC_MSG_ERROR([$_perl_path not found])
6172     fi
6175 dnl ===================================================================
6176 dnl Testing for Perl version 5 or greater.
6177 dnl $] is the Perl version variable, it is returned as an integer
6178 dnl ===================================================================
6179 if test "$PERL"; then
6180     AC_MSG_CHECKING([the Perl version])
6181     ${PERL} -e "exit($]);"
6182     _perl_version=$?
6183     if test "$_perl_version" -lt 5; then
6184         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6185     fi
6186     AC_MSG_RESULT([Perl $_perl_version])
6187 else
6188     AC_MSG_ERROR([Perl not found, install Perl 5])
6191 dnl ===================================================================
6192 dnl Testing for required Perl modules
6193 dnl ===================================================================
6195 AC_MSG_CHECKING([for required Perl modules])
6196 perl_use_string="use Cwd ; use Digest::MD5"
6197 if test "$_os" = "WINNT"; then
6198     if test -n "$PKGFORMAT"; then
6199         for i in $PKGFORMAT; do
6200             case "$i" in
6201             msi)
6202                 # for getting fonts versions to use in MSI
6203                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6204                 ;;
6205             esac
6206         done
6207     fi
6209 if test "$with_system_hsqldb" = "yes"; then
6210     perl_use_string="$perl_use_string ; use Archive::Zip"
6212 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6213     # OpenSSL needs that to build
6214     perl_use_string="$perl_use_string ; use FindBin"
6216 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6217     AC_MSG_RESULT([all modules found])
6218 else
6219     AC_MSG_RESULT([failed to find some modules])
6220     # Find out which modules are missing.
6221     for i in $perl_use_string; do
6222         if test "$i" != "use" -a "$i" != ";"; then
6223             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6224                 missing_perl_modules="$missing_perl_modules $i"
6225             fi
6226         fi
6227     done
6228     AC_MSG_ERROR([
6229     The missing Perl modules are: $missing_perl_modules
6230     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6233 dnl ===================================================================
6234 dnl Check for pkg-config
6235 dnl ===================================================================
6236 if test "$_os" != "WINNT"; then
6237     PKG_PROG_PKG_CONFIG
6240 if test "$_os" != "WINNT"; then
6242     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6243     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6244     # explicitly. Or put /path/to/compiler in PATH yourself.
6246     # Use wrappers for LTO
6247     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6248         AC_CHECK_TOOL(AR,gcc-ar)
6249         AC_CHECK_TOOL(NM,gcc-nm)
6250         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6251     else
6252         AC_CHECK_TOOL(AR,ar)
6253         AC_CHECK_TOOL(NM,nm)
6254         AC_CHECK_TOOL(RANLIB,ranlib)
6255     fi
6256     AC_CHECK_TOOL(OBJDUMP,objdump)
6257     AC_CHECK_TOOL(READELF,readelf)
6258     AC_CHECK_TOOL(STRIP,strip)
6260 AC_SUBST(AR)
6261 AC_SUBST(LD)
6262 AC_SUBST(NM)
6263 AC_SUBST(OBJDUMP)
6264 AC_SUBST(PKG_CONFIG)
6265 AC_SUBST(PKG_CONFIG_PATH)
6266 AC_SUBST(PKG_CONFIG_LIBDIR)
6267 AC_SUBST(RANLIB)
6268 AC_SUBST(READELF)
6269 AC_SUBST(STRIP)
6271 dnl ===================================================================
6272 dnl pkg-config checks on macOS
6273 dnl ===================================================================
6275 if test $_os = Darwin; then
6276     AC_MSG_CHECKING([for bogus pkg-config])
6277     if test -n "$PKG_CONFIG"; then
6278         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6279             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6280         else
6281             if test "$enable_bogus_pkg_config" = "yes"; then
6282                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6283             else
6284                 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.])
6285             fi
6286         fi
6287     else
6288         AC_MSG_RESULT([no, good])
6289     fi
6292 find_csc()
6294     # Return value: $csctest
6296     unset csctest
6298     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6299     if test -n "$regvalue"; then
6300         csctest=$regvalue
6301         return
6302     fi
6305 find_al()
6307     # Return value: $altest
6309     unset altest
6311     # We need this check to detect 4.6.1 or above.
6312     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6313         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6314         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6315             altest=$regvalue
6316             return
6317         fi
6318     done
6320     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6321         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6322         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6323             altest=$regvalue
6324             return
6325         fi
6326     done
6329 find_dotnetsdk46()
6331     unset frametest
6333     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6334         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6335         if test -n "$regvalue"; then
6336             frametest=$regvalue
6337             return
6338         fi
6339     done
6342 find_winsdk_version()
6344     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6345     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6347     unset winsdktest winsdkbinsubdir winsdklibsubdir
6349     case "$1" in
6350     8.0|8.0A)
6351         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6352         if test -n "$regvalue"; then
6353             winsdktest=$regvalue
6354             winsdklibsubdir=win8
6355             return
6356         fi
6357         ;;
6358     8.1|8.1A)
6359         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6360         if test -n "$regvalue"; then
6361             winsdktest=$regvalue
6362             winsdklibsubdir=winv6.3
6363             return
6364         fi
6365         ;;
6366     10.0)
6367         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6368         if test -n "$regvalue"; then
6369             winsdktest=$regvalue
6370             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6371             if test -n "$regvalue"; then
6372                 winsdkbinsubdir="$regvalue".0
6373                 winsdklibsubdir=$winsdkbinsubdir
6374                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6375                 local tmppath_unix=$(cygpath -u "$tmppath")
6376                 # test exist the SDK path
6377                 if test -d "$tmppath_unix"; then
6378                    # when path is convertible to a short path then path is okay
6379                    cygpath -d "$tmppath" >/dev/null 2>&1
6380                    if test $? -ne 0; then
6381                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6382                    fi
6383                 else
6384                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6385                 fi
6386             fi
6387             return
6388         fi
6389         ;;
6390     esac
6393 find_winsdk()
6395     # Return value: From find_winsdk_version
6397     unset winsdktest
6399     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6400         find_winsdk_version $ver
6401         if test -n "$winsdktest"; then
6402             return
6403         fi
6404     done
6407 find_msms()
6409     # Return value: $msmdir
6411     AC_MSG_CHECKING([for MSVC merge modules directory])
6412     local my_msm_files
6413     local my_msm_dir
6415     dnl Order my_msm_files in increasing order. Then check the directories returned
6416     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6417     dnl the result will be the highest MSM version found in the highest directory.
6419     case "$VCVER" in
6420         16.0 | 17.0)
6421         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6422         ;;
6423     esac
6424     for f in $my_msm_files; do
6425         echo "$as_me:$LINENO: searching for $f" >&5
6426     done
6428     msmdir=
6429     case "$VCVER" in
6430     16.0 | 17.0)
6431         for f in ${my_msm_files}; do
6432             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6433                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6434                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6435                 if test -e "$my_msm_dir${f}"; then
6436                     msmdir=$my_msm_dir
6437                 fi
6438             done
6439         done
6440         ;;
6441     esac
6443     if test -n "$msmdir"; then
6444         msmdir=`cygpath -m "$msmdir"`
6445         AC_MSG_RESULT([$msmdir])
6446     else
6447         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6448             AC_MSG_FAILURE([not found])
6449         else
6450             AC_MSG_WARN([not found (check config.log)])
6451             add_warning "MSM none of ${my_msm_files} found"
6452         fi
6453     fi
6456 find_msvc_x64_dlls()
6458     # Return value: $msvcdllpath, $msvcdlls
6460     AC_MSG_CHECKING([for MSVC x64 DLL path])
6462     dnl Order crtver in increasing order. Then check the directories returned by
6463     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6464     dnl the result will be the highest CRT version found in the highest directory.
6466     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6467     case "$VCVER" in
6468     16.0 | 17.0)
6469         for crtver in 141 142 143; do
6470             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6471                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6472                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6473                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6474                 fi
6475             done
6476         done
6477         ;;
6478     esac
6479     AC_MSG_RESULT([$msvcdllpath])
6480     AC_MSG_CHECKING([for MSVC x64 DLLs])
6481     msvcdlls="msvcp140.dll vcruntime140.dll"
6482     for dll in $msvcdlls; do
6483         if ! test -f "$msvcdllpath/$dll"; then
6484             AC_MSG_FAILURE([missing $dll])
6485         fi
6486     done
6487     AC_MSG_RESULT([found all ($msvcdlls)])
6490 dnl =========================================
6491 dnl Check for the Windows  SDK.
6492 dnl =========================================
6493 if test "$_os" = "WINNT"; then
6494     AC_MSG_CHECKING([for Windows SDK])
6495     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6496         find_winsdk
6497         WINDOWS_SDK_HOME=$winsdktest
6499         # normalize if found
6500         if test -n "$WINDOWS_SDK_HOME"; then
6501             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6502             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6503         fi
6505         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6506     fi
6508     if test -n "$WINDOWS_SDK_HOME"; then
6509         # Remove a possible trailing backslash
6510         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6512         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6513              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6514              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6515             have_windows_sdk_headers=yes
6516         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6517              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6518              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6519             have_windows_sdk_headers=yes
6520         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6521              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6522              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6523             have_windows_sdk_headers=yes
6524         else
6525             have_windows_sdk_headers=no
6526         fi
6528         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6529             have_windows_sdk_libs=yes
6530         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6531             have_windows_sdk_libs=yes
6532         else
6533             have_windows_sdk_libs=no
6534         fi
6536         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6537             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6538 the  Windows SDK are installed.])
6539         fi
6540     fi
6542     if test -z "$WINDOWS_SDK_HOME"; then
6543         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6544     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6545         WINDOWS_SDK_VERSION=80
6546         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6547     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6548         WINDOWS_SDK_VERSION=81
6549         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6550     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6551         WINDOWS_SDK_VERSION=10
6552         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6553     else
6554         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6555     fi
6556     PathFormat "$WINDOWS_SDK_HOME"
6557     WINDOWS_SDK_HOME="$formatted_path"
6558     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6559     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6560         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6561         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6562             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6563         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6564             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6565         fi
6566     fi
6568     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6569     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6570     dnl but not in v8.0), so allow this to be overridden with a
6571     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6572     dnl and configuration error if no WiLangId.vbs is found would arguably be
6573     dnl better, but I do not know under which conditions exactly it is needed by
6574     dnl msiglobal.pm:
6575     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6576         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6577         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6578         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6579             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6580             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6581         fi
6582         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6583             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6584             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6585         fi
6586         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6587             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6588             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6589         fi
6590     fi
6591     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6592         if test -n "$with_package_format" -a "$with_package_format" != no; then
6593             for i in "$with_package_format"; do
6594                 if test "$i" = "msi"; then
6595                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6596                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6597                     fi
6598                 fi
6599             done
6600         fi
6601     fi
6603 AC_SUBST(WINDOWS_SDK_HOME)
6604 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6605 AC_SUBST(WINDOWS_SDK_VERSION)
6606 AC_SUBST(WINDOWS_SDK_WILANGID)
6608 if test "$build_os" = "cygwin"; then
6609     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6610     dnl dir, it also determines that dir's path w/o an arch segment if any,
6611     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6612     AC_MSG_CHECKING([for midl.exe])
6614     find_winsdk
6615     if test -n "$winsdkbinsubdir" \
6616         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6617     then
6618         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6619         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6620     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6621         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6622         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6623     elif test -f "$winsdktest/Bin/midl.exe"; then
6624         MIDL_PATH=$winsdktest/Bin
6625         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6626     fi
6627     if test ! -f "$MIDL_PATH/midl.exe"; then
6628         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6629     else
6630         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6631     fi
6633     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6634     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6636     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6637          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6638          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6639          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6640     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6641          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6642          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6643          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6644     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6645          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6646          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6647          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6648     else
6649         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6650     fi
6652     dnl Check csc.exe
6653     AC_MSG_CHECKING([for csc.exe])
6654     find_csc
6655     if test -f "$csctest/csc.exe"; then
6656         CSC_PATH="$csctest"
6657     fi
6658     if test ! -f "$CSC_PATH/csc.exe"; then
6659         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6660     else
6661         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6662     fi
6664     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6666     dnl Check al.exe
6667     AC_MSG_CHECKING([for al.exe])
6668     find_winsdk
6669     if test -n "$winsdkbinsubdir" \
6670         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6671     then
6672         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6673     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6674         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6675     elif test -f "$winsdktest/Bin/al.exe"; then
6676         AL_PATH="$winsdktest/Bin"
6677     fi
6679     if test -z "$AL_PATH"; then
6680         find_al
6681         if test -f "$altest/bin/al.exe"; then
6682             AL_PATH="$altest/bin"
6683         elif test -f "$altest/al.exe"; then
6684             AL_PATH="$altest"
6685         fi
6686     fi
6687     if test ! -f "$AL_PATH/al.exe"; then
6688         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6689     else
6690         AC_MSG_RESULT([$AL_PATH/al.exe])
6691     fi
6693     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6695     dnl Check mscoree.lib / .NET Framework dir
6696     AC_MSG_CHECKING(.NET Framework)
6697     find_dotnetsdk46
6698     PathFormat "$frametest"
6699     frametest="$formatted_path"
6700     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6701         DOTNET_FRAMEWORK_HOME="$frametest"
6702     else
6703         find_winsdk
6704         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6705             DOTNET_FRAMEWORK_HOME="$winsdktest"
6706         fi
6707     fi
6708     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
6709         AC_MSG_ERROR([mscoree.lib not found])
6710     fi
6711     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6713     PathFormat "$MIDL_PATH"
6714     MIDL_PATH="$formatted_path"
6716     PathFormat "$AL_PATH"
6717     AL_PATH="$formatted_path"
6719     PathFormat "$DOTNET_FRAMEWORK_HOME"
6720     DOTNET_FRAMEWORK_HOME="$formatted_path"
6722     PathFormat "$CSC_PATH"
6723     CSC_PATH="$formatted_path"
6726 dnl ===================================================================
6727 dnl Testing for C++ compiler and version...
6728 dnl ===================================================================
6730 if test "$_os" != "WINNT"; then
6731     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6732     save_CXXFLAGS=$CXXFLAGS
6733     AC_PROG_CXX
6734     CXXFLAGS=$save_CXXFLAGS
6735     if test -z "$CXX_BASE"; then
6736         CXX_BASE=`first_arg_basename "$CXX"`
6737     fi
6740 dnl check for GNU C++ compiler version
6741 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6742     AC_MSG_CHECKING([the GNU C++ compiler version])
6744     _gpp_version=`$CXX -dumpversion`
6745     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6747     if test "$_gpp_majmin" -lt "700"; then
6748         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6749     else
6750         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6751     fi
6753     dnl see https://code.google.com/p/android/issues/detail?id=41770
6754         glibcxx_threads=no
6755         AC_LANG_PUSH([C++])
6756         AC_REQUIRE_CPP
6757         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6758         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6759             #include <bits/c++config.h>]],[[
6760             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6761             && !defined(_GLIBCXX__PTHREADS) \
6762             && !defined(_GLIBCXX_HAS_GTHREADS)
6763             choke me
6764             #endif
6765         ]])],[AC_MSG_RESULT([yes])
6766         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6767         AC_LANG_POP([C++])
6768         if test $glibcxx_threads = yes; then
6769             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6770         fi
6772 AC_SUBST(BOOST_CXXFLAGS)
6775 # prefx CXX with ccache if needed
6777 if test "$CCACHE" != ""; then
6778     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6779     AC_LANG_PUSH([C++])
6780     save_CXXFLAGS=$CXXFLAGS
6781     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6782     # msvc does not fail on unknown options, check stdout
6783     if test "$COM" = MSC; then
6784         CXXFLAGS="$CXXFLAGS -nologo"
6785     fi
6786     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6787     ac_cxx_werror_flag=yes
6788     dnl an empty program will do, we're checking the compiler flags
6789     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6790                       [use_ccache=yes], [use_ccache=no])
6791     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6792         AC_MSG_RESULT([yes])
6793     else
6794         CXX="$CCACHE $CXX"
6795         CXX_BASE="ccache $CXX_BASE"
6796         AC_MSG_RESULT([no])
6797     fi
6798     CXXFLAGS=$save_CXXFLAGS
6799     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6800     AC_LANG_POP([C++])
6803 dnl ===================================================================
6804 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6805 dnl ===================================================================
6807 if test "$_os" != "WINNT"; then
6808     AC_PROG_CXXCPP
6810     dnl Check whether there's a C pre-processor.
6811     AC_PROG_CPP
6815 dnl ===================================================================
6816 dnl Find integral type sizes and alignments
6817 dnl ===================================================================
6819 if test "$_os" != "WINNT"; then
6821     AC_CHECK_SIZEOF(long)
6822     AC_CHECK_SIZEOF(short)
6823     AC_CHECK_SIZEOF(int)
6824     AC_CHECK_SIZEOF(long long)
6825     AC_CHECK_SIZEOF(double)
6826     AC_CHECK_SIZEOF(void*)
6827     AC_CHECK_SIZEOF(size_t)
6829     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6830     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6831     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6832     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6833     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6834     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6836     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6837     m4_pattern_allow([AC_CHECK_ALIGNOF])
6838     m4_ifdef([AC_CHECK_ALIGNOF],
6839         [
6840             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6841             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6842             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6843             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6844         ],
6845         [
6846             case "$_os-$host_cpu" in
6847             Linux-i686)
6848                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6849                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6850                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6851                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6852                 ;;
6853             Linux-x86_64)
6854                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6855                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6856                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6857                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6858                 ;;
6859             *)
6860                 if test -z "$ac_cv_alignof_short" -o \
6861                         -z "$ac_cv_alignof_int" -o \
6862                         -z "$ac_cv_alignof_long" -o \
6863                         -z "$ac_cv_alignof_double"; then
6864                    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.])
6865                 fi
6866                 ;;
6867             esac
6868         ])
6870     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6871     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6872     if test $ac_cv_sizeof_long -eq 8; then
6873         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6874     elif test $ac_cv_sizeof_double -eq 8; then
6875         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6876     else
6877         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6878     fi
6880     dnl Check for large file support
6881     AC_SYS_LARGEFILE
6882     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6883         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6884     fi
6885     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6886         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6887     fi
6888 else
6889     # Hardcode for MSVC
6890     SAL_TYPES_SIZEOFSHORT=2
6891     SAL_TYPES_SIZEOFINT=4
6892     SAL_TYPES_SIZEOFLONG=4
6893     SAL_TYPES_SIZEOFLONGLONG=8
6894     if test $WIN_HOST_BITS -eq 32; then
6895         SAL_TYPES_SIZEOFPOINTER=4
6896         SIZEOF_SIZE_T=4
6897     else
6898         SAL_TYPES_SIZEOFPOINTER=8
6899         SIZEOF_SIZE_T=8
6900     fi
6901     SAL_TYPES_ALIGNMENT2=2
6902     SAL_TYPES_ALIGNMENT4=4
6903     SAL_TYPES_ALIGNMENT8=8
6904     LFS_CFLAGS=''
6906 AC_SUBST(LFS_CFLAGS)
6907 AC_SUBST(SIZEOF_SIZE_T)
6909 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6910 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6911 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6912 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6913 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6914 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6915 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6916 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6918 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
6919 AC_MSG_CHECKING([whether jumbo sheets are supported])
6920 if test "$_os" != "WINNT"; then
6921     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
6922         AC_MSG_RESULT([yes])
6923         ENABLE_JUMBO_SHEETS=TRUE
6924         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
6925     else
6926         AC_MSG_RESULT([no])
6927     fi
6928 else
6929     if test $WIN_HOST_BITS -gt 32; then
6930         # 64bit windows is special-cased for tools::Long because long is 32bit
6931         AC_MSG_RESULT([yes])
6932         ENABLE_JUMBO_SHEETS=TRUE
6933         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
6934     else
6935         AC_MSG_RESULT([no])
6936     fi
6938 AC_SUBST(ENABLE_JUMBO_SHEETS)
6940 dnl ===================================================================
6941 dnl Check whether to enable runtime optimizations
6942 dnl ===================================================================
6943 ENABLE_RUNTIME_OPTIMIZATIONS=
6944 AC_MSG_CHECKING([whether to enable runtime optimizations])
6945 if test -z "$enable_runtime_optimizations"; then
6946     for i in $CC; do
6947         case $i in
6948         -fsanitize=*)
6949             enable_runtime_optimizations=no
6950             break
6951             ;;
6952         esac
6953     done
6955 if test "$enable_runtime_optimizations" != no; then
6956     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6957     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6958     AC_MSG_RESULT([yes])
6959 else
6960     AC_MSG_RESULT([no])
6962 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6964 dnl ===================================================================
6965 dnl Check if valgrind headers are available
6966 dnl ===================================================================
6967 ENABLE_VALGRIND=
6968 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6969     prev_cppflags=$CPPFLAGS
6970     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6971     # or where does it come from?
6972     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6973     AC_CHECK_HEADER([valgrind/valgrind.h],
6974         [ENABLE_VALGRIND=TRUE])
6975     CPPFLAGS=$prev_cppflags
6977 AC_SUBST([ENABLE_VALGRIND])
6978 if test -z "$ENABLE_VALGRIND"; then
6979     if test "$with_valgrind" = yes; then
6980         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6981     fi
6982     VALGRIND_CFLAGS=
6984 AC_SUBST([VALGRIND_CFLAGS])
6987 dnl ===================================================================
6988 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6989 dnl ===================================================================
6991 # We need at least the sys/sdt.h include header.
6992 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6993 if test "$SDT_H_FOUND" = "TRUE"; then
6994     # Found sys/sdt.h header, now make sure the c++ compiler works.
6995     # Old g++ versions had problems with probes in constructors/destructors.
6996     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6997     AC_LANG_PUSH([C++])
6998     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6999     #include <sys/sdt.h>
7000     class ProbeClass
7001     {
7002     private:
7003       int& ref;
7004       const char *name;
7006     public:
7007       ProbeClass(int& v, const char *n) : ref(v), name(n)
7008       {
7009         DTRACE_PROBE2(_test_, cons, name, ref);
7010       }
7012       void method(int min)
7013       {
7014         DTRACE_PROBE3(_test_, meth, name, ref, min);
7015         ref -= min;
7016       }
7018       ~ProbeClass()
7019       {
7020         DTRACE_PROBE2(_test_, dest, name, ref);
7021       }
7022     };
7023     ]],[[
7024     int i = 64;
7025     DTRACE_PROBE1(_test_, call, i);
7026     ProbeClass inst = ProbeClass(i, "call");
7027     inst.method(24);
7028     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7029           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7030     AC_LANG_POP([C++])
7032 AC_CONFIG_HEADERS([config_host/config_probes.h])
7034 dnl ===================================================================
7035 dnl GCC features
7036 dnl ===================================================================
7037 HAVE_GCC_STACK_CLASH_PROTECTION=
7038 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7039     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7040     save_CFLAGS=$CFLAGS
7041     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7042     AC_LINK_IFELSE(
7043         [AC_LANG_PROGRAM(, [[return 0;]])],
7044         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7045         [AC_MSG_RESULT([no])])
7046     CFLAGS=$save_CFLAGS
7048     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7049     save_CFLAGS=$CFLAGS
7050     CFLAGS="$CFLAGS -Werror -mno-avx"
7051     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7052     CFLAGS=$save_CFLAGS
7053     if test "$HAVE_GCC_AVX" = "TRUE"; then
7054         AC_MSG_RESULT([yes])
7055     else
7056         AC_MSG_RESULT([no])
7057     fi
7059     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7060     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7061     int v = 0;
7062     if (__sync_add_and_fetch(&v, 1) != 1 ||
7063         __sync_sub_and_fetch(&v, 1) != 0)
7064         return 1;
7065     __sync_synchronize();
7066     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7067         v != 1)
7068         return 1;
7069     return 0;
7070 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7071     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7072         AC_MSG_RESULT([yes])
7073         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7074     else
7075         AC_MSG_RESULT([no])
7076     fi
7078     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7079     AC_LANG_PUSH([C++])
7080     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7081             #include <cstddef>
7082             #include <cxxabi.h>
7083             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7084         ])], [
7085             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7086             AC_MSG_RESULT([yes])
7087         ], [AC_MSG_RESULT([no])])
7088     AC_LANG_POP([C++])
7090     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7091     AC_LANG_PUSH([C++])
7092     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7093             #include <cstddef>
7094             #include <cxxabi.h>
7095             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7096         ])], [
7097             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7098             AC_MSG_RESULT([yes])
7099         ], [AC_MSG_RESULT([no])])
7100     AC_LANG_POP([C++])
7102     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7103     AC_LANG_PUSH([C++])
7104     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7105             #include <cxxabi.h>
7106             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7107         ])], [
7108             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7109             AC_MSG_RESULT([yes])
7110         ], [AC_MSG_RESULT([no])])
7111     AC_LANG_POP([C++])
7113     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7114     AC_LANG_PUSH([C++])
7115     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7116             #include <cstddef>
7117             #include <cxxabi.h>
7118             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7119         ])], [
7120             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7121             AC_MSG_RESULT([yes])
7122         ], [AC_MSG_RESULT([no])])
7123     AC_LANG_POP([C++])
7125     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7126     AC_LANG_PUSH([C++])
7127     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7128             #include <cstddef>
7129             #include <cxxabi.h>
7130             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7131         ])], [
7132             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7133             AC_MSG_RESULT([yes])
7134         ], [AC_MSG_RESULT([no])])
7135     AC_LANG_POP([C++])
7137     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7138     AC_LANG_PUSH([C++])
7139     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7140             #include <cxxabi.h>
7141             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7142         ])], [
7143             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7144             AC_MSG_RESULT([yes])
7145         ], [AC_MSG_RESULT([no])])
7146     AC_LANG_POP([C++])
7148     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7149     AC_LANG_PUSH([C++])
7150     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7151             #include <cxxabi.h>
7152             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7153         ])], [
7154             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7155             AC_MSG_RESULT([yes])
7156         ], [AC_MSG_RESULT([no])])
7157     AC_LANG_POP([C++])
7159     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7160     AC_LANG_PUSH([C++])
7161     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7162             #include <cxxabi.h>
7163             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7164         ])], [
7165             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7166             AC_MSG_RESULT([yes])
7167         ], [AC_MSG_RESULT([no])])
7168     AC_LANG_POP([C++])
7170     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info 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::__si_class_type_info); }
7176         ])], [
7177             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7178             AC_MSG_RESULT([yes])
7179         ], [AC_MSG_RESULT([no])])
7180     AC_LANG_POP([C++])
7182     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7183     AC_LANG_PUSH([C++])
7184     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7185             #include <cstddef>
7186             #include <cxxabi.h>
7187             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7188         ])], [
7189             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7190             AC_MSG_RESULT([yes])
7191         ], [AC_MSG_RESULT([no])])
7192     AC_LANG_POP([C++])
7195 AC_SUBST(HAVE_GCC_AVX)
7196 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7197 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7199 dnl ===================================================================
7200 dnl Identify the C++ library
7201 dnl ===================================================================
7203 AC_MSG_CHECKING([what the C++ library is])
7204 HAVE_LIBSTDCPP=
7205 AC_LANG_PUSH([C++])
7206 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7207 #include <utility>
7208 #ifndef __GLIBCXX__
7209 foo bar
7210 #endif
7211 ]])],
7212     [CPP_LIBRARY=GLIBCXX
7213      cpp_library_name="GNU libstdc++"
7214      HAVE_LIBSTDCPP=TRUE
7215     ],
7216     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7217 #include <utility>
7218 #ifndef _LIBCPP_VERSION
7219 foo bar
7220 #endif
7221 ]])],
7222     [CPP_LIBRARY=LIBCPP
7223      cpp_library_name="LLVM libc++"
7224      AC_DEFINE([HAVE_LIBCXX])
7225     ],
7226     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7227 #include <utility>
7228 #ifndef _MSC_VER
7229 foo bar
7230 #endif
7231 ]])],
7232     [CPP_LIBRARY=MSVCRT
7233      cpp_library_name="Microsoft"
7234     ],
7235     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7236 AC_MSG_RESULT([$cpp_library_name])
7237 AC_LANG_POP([C++])
7238 AC_SUBST([HAVE_LIBSTDCPP])
7240 dnl ===================================================================
7241 dnl Check for gperf
7242 dnl ===================================================================
7243 AC_PATH_PROG(GPERF, gperf)
7244 if test -z "$GPERF"; then
7245     AC_MSG_ERROR([gperf not found but needed. Install it.])
7247 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7248     GPERF=`cygpath -m $GPERF`
7250 AC_MSG_CHECKING([whether gperf is new enough])
7251 my_gperf_ver1=$($GPERF --version | head -n 1)
7252 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7253 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7254 if test "$my_gperf_ver3" -ge 301; then
7255     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7256 else
7257     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7259 AC_SUBST(GPERF)
7261 dnl ===================================================================
7262 dnl Check for system libcmis
7263 dnl ===================================================================
7264 # libcmis requires curl and we can't build curl for iOS
7265 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7266     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7267     ENABLE_LIBCMIS=TRUE
7268 else
7269     ENABLE_LIBCMIS=
7271 AC_SUBST(ENABLE_LIBCMIS)
7273 dnl ===================================================================
7274 dnl C++11
7275 dnl ===================================================================
7277 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7278 CXXFLAGS_CXX11=
7279 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7280     if test "$with_latest_c__" = yes; then
7281         CXXFLAGS_CXX11=-std:c++latest
7282     else
7283         CXXFLAGS_CXX11=-std:c++17
7284     fi
7285     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7286 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7287     my_flags='-std=c++17 -std=c++1z'
7288     if test "$with_latest_c__" = yes; then
7289         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7290     fi
7291     for flag in $my_flags; do
7292         if test "$COM" = MSC; then
7293             flag="-Xclang $flag"
7294         fi
7295         save_CXXFLAGS=$CXXFLAGS
7296         CXXFLAGS="$CXXFLAGS $flag -Werror"
7297         if test "$SYSTEM_LIBCMIS" = TRUE; then
7298             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7299         fi
7300         AC_LANG_PUSH([C++])
7301         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7302             #include <algorithm>
7303             #include <functional>
7304             #include <vector>
7306             #if defined SYSTEM_LIBCMIS
7307             // See ucb/source/ucp/cmis/auth_provider.hxx:
7308             #if !defined __clang__
7309             #pragma GCC diagnostic push
7310             #pragma GCC diagnostic ignored "-Wdeprecated"
7311             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7312             #endif
7313             #include <libcmis/libcmis.hxx>
7314             #if !defined __clang__
7315             #pragma GCC diagnostic pop
7316             #endif
7317             #endif
7319             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7320                 std::sort(v.begin(), v.end(), fn);
7321             }
7322             ]])],[CXXFLAGS_CXX11=$flag])
7323         AC_LANG_POP([C++])
7324         CXXFLAGS=$save_CXXFLAGS
7325         if test -n "$CXXFLAGS_CXX11"; then
7326             break
7327         fi
7328     done
7330 if test -n "$CXXFLAGS_CXX11"; then
7331     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7332 else
7333     AC_MSG_ERROR(no)
7335 AC_SUBST(CXXFLAGS_CXX11)
7337 if test "$GCC" = "yes"; then
7338     save_CXXFLAGS=$CXXFLAGS
7339     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7340     CHECK_L_ATOMIC
7341     CXXFLAGS=$save_CXXFLAGS
7342     AC_SUBST(ATOMIC_LIB)
7345 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7346 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7347 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7348 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7349 dnl again towards 4.7.2:
7350 if test $CPP_LIBRARY = GLIBCXX; then
7351     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7352     AC_LANG_PUSH([C++])
7353     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7354 #include <list>
7355 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7356     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7357     //   GCC 4.7.0: 20120322
7358     //   GCC 4.7.1: 20120614
7359     // and using a range check is not possible as the mapping between
7360     // __GLIBCXX__ values and GCC versions is not monotonic
7361 /* ok */
7362 #else
7363 abi broken
7364 #endif
7365         ]])], [AC_MSG_RESULT(no, ok)],
7366         [AC_MSG_ERROR(yes)])
7367     AC_LANG_POP([C++])
7370 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7371 save_CXXFLAGS=$CXXFLAGS
7372 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7373 AC_LANG_PUSH([C++])
7375 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7376 #include <stddef.h>
7378 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7380 namespace
7382         struct b
7383         {
7384                 int i;
7385                 int j;
7386         };
7388 ]], [[
7389 struct a
7391         int i;
7392         int j;
7394 a thinga[]={{0,0}, {1,1}};
7395 b thingb[]={{0,0}, {1,1}};
7396 size_t i = sizeof(sal_n_array_size(thinga));
7397 size_t j = sizeof(sal_n_array_size(thingb));
7398 return !(i != 0 && j != 0);
7400     ], [ AC_MSG_RESULT(yes) ],
7401     [ AC_MSG_ERROR(no)])
7402 AC_LANG_POP([C++])
7403 CXXFLAGS=$save_CXXFLAGS
7405 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7406 if test "$GCC" = yes; then
7407     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7408     AC_LANG_PUSH([C++])
7409     save_CXXFLAGS=$CXXFLAGS
7410     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7411     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7412     CXXFLAGS=$save_CXXFLAGS
7413     AC_LANG_POP([C++])
7414     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7415         AC_MSG_RESULT([yes])
7416     else
7417         AC_MSG_RESULT([no])
7418     fi
7420 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7422 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7423 AC_LANG_PUSH([C++])
7424 save_CXXFLAGS=$CXXFLAGS
7425 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7426 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7427         #include <algorithm>
7428         #include <initializer_list>
7429         #include <vector>
7430         template<typename T> class S {
7431         private:
7432             std::vector<T> v_;
7433         public:
7434             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7435         };
7436         constinit S<int> s{3, 2, 1};
7437     ])], [
7438         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7439         AC_MSG_RESULT([yes])
7440     ], [AC_MSG_RESULT([no])])
7441 CXXFLAGS=$save_CXXFLAGS
7442 AC_LANG_POP([C++])
7444 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7445 AC_LANG_PUSH([C++])
7446 save_CXXFLAGS=$CXXFLAGS
7447 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7448 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7449         #include <span>
7450         #include <type_traits>
7451         // Don't check size_type directly, as it was called index_type before P1872R0:
7452         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7453     ])], [
7454         AC_DEFINE([HAVE_CPP_SPAN],[1])
7455         AC_MSG_RESULT([yes])
7456     ], [AC_MSG_RESULT([no])])
7457 CXXFLAGS=$save_CXXFLAGS
7458 AC_LANG_POP([C++])
7460 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7461 AC_LANG_PUSH([C++])
7462 save_CXXFLAGS=$CXXFLAGS
7463 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7464 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7465         struct S1 { S1(S1 &&); };
7466         struct S2: S1 {};
7467         S1 f(S2 s) { return s; }
7468     ])], [
7469         AC_DEFINE([HAVE_P1155R3],[1])
7470         AC_MSG_RESULT([yes])
7471     ], [AC_MSG_RESULT([no])])
7472 CXXFLAGS=$save_CXXFLAGS
7473 AC_LANG_POP([C++])
7475 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7476 HAVE_CXX20_ATOMIC_REF=
7477 AC_LANG_PUSH([C++])
7478 save_CXXFLAGS=$CXXFLAGS
7479 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7480 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7481         #include <atomic>
7482         int x;
7483         std::atomic_ref<int> y(x);
7484     ])], [
7485         HAVE_CXX20_ATOMIC_REF=TRUE
7486         AC_MSG_RESULT([yes])
7487     ], [AC_MSG_RESULT([no])])
7488 CXXFLAGS=$save_CXXFLAGS
7489 AC_LANG_POP([C++])
7490 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7492 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7493 dnl which is included in -Wextra anyway):
7494 HAVE_WDEPRECATED_COPY_DTOR=
7495 if test "$GCC" = yes; then
7496     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7497     AC_LANG_PUSH([C++])
7498     save_CXXFLAGS=$CXXFLAGS
7499     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7500     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7501             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7502             AC_MSG_RESULT([yes])
7503         ], [AC_MSG_RESULT([no])])
7504     CXXFLAGS=$save_CXXFLAGS
7505     AC_LANG_POP([C++])
7507 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7509 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7510 dnl uninitialized warning for code like
7512 dnl   OString f();
7513 dnl   boost::optional<OString> * g(bool b) {
7514 dnl       boost::optional<OString> o;
7515 dnl       if (b) o = f();
7516 dnl       return new boost::optional<OString>(o);
7517 dnl   }
7519 dnl (as is e.g. present, in a slightly more elaborate form, in
7520 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7521 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7522 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7523 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7524     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7525     AC_LANG_PUSH([C++])
7526     save_CXXFLAGS=$CXXFLAGS
7527     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7528     if test "$ENABLE_OPTIMIZED" = TRUE; then
7529         CXXFLAGS="$CXXFLAGS -O2"
7530     else
7531         CXXFLAGS="$CXXFLAGS -O0"
7532     fi
7533     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7534             #include <new>
7535             void f1(int);
7536             struct S1 {
7537                 ~S1() { f1(n); }
7538                 int n = 0;
7539             };
7540             struct S2 {
7541                 S2() {}
7542                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7543                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7544                 void set(S1 s) {
7545                     new (stg) S1(s);
7546                     init = true;
7547                 }
7548                 bool init = false;
7549                 char stg[sizeof (S1)];
7550             } ;
7551             S1 f2();
7552             S2 * f3(bool b) {
7553                 S2 o;
7554                 if (b) o.set(f2());
7555                 return new S2(o);
7556             }
7557         ]])], [AC_MSG_RESULT([no])], [
7558             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7559             AC_MSG_RESULT([yes])
7560         ])
7561     CXXFLAGS=$save_CXXFLAGS
7562     AC_LANG_POP([C++])
7564 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7566 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7567 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7568 dnl hits us e.g. with GCC 10 and --enable-optimized at
7570 dnl   In file included from include/rtl/string.hxx:49,
7571 dnl                    from include/rtl/ustring.hxx:43,
7572 dnl                    from include/osl/file.hxx:35,
7573 dnl                    from include/codemaker/global.hxx:28,
7574 dnl                    from include/codemaker/options.hxx:23,
7575 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7576 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7577 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,
7578 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,
7579 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,
7580 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7581 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7582 dnl      78 |         memcpy( buffer, data, length );
7583 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7584 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7585 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7586     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7587     AC_LANG_PUSH([C++])
7588     save_CXXFLAGS=$CXXFLAGS
7589     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7590     if test "$ENABLE_OPTIMIZED" = TRUE; then
7591         CXXFLAGS="$CXXFLAGS -O2"
7592     else
7593         CXXFLAGS="$CXXFLAGS -O0"
7594     fi
7595     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7596     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7597             void fill(char const * begin, char const * end, char c);
7598             struct q {
7599                 char ids[4];
7600                 char username[6];
7601             };
7602             void test(q & c) {
7603                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7604                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7605             }
7606         ]])], [AC_MSG_RESULT([no])], [
7607             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7608             AC_MSG_RESULT([yes])
7609         ])
7610     CXXFLAGS=$save_CXXFLAGS
7611     AC_LANG_POP([C++])
7613 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7615 HAVE_DLLEXPORTINLINES=
7616 dnl At least for Clang 14 trunk, -Zc:dllexportInlines- would cause lots of unresolved symbols when
7617 dnl linking e.g. Library_cppuhelper, for whatever reason:
7618 if test "$_os" = "WINNT" && test "$COM_IS_CLANG" != TRUE; then
7619     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7620     AC_LANG_PUSH([C++])
7621     save_CXXFLAGS=$CXXFLAGS
7622     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7623     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7624             HAVE_DLLEXPORTINLINES=TRUE
7625             AC_MSG_RESULT([yes])
7626         ], [AC_MSG_RESULT([no])])
7627     CXXFLAGS=$save_CXXFLAGS
7628     AC_LANG_POP([C++])
7630 AC_SUBST([HAVE_DLLEXPORTINLINES])
7632 dnl ===================================================================
7633 dnl CPU Intrinsics support - SSE, AVX
7634 dnl ===================================================================
7636 CXXFLAGS_INTRINSICS_SSE2=
7637 CXXFLAGS_INTRINSICS_SSSE3=
7638 CXXFLAGS_INTRINSICS_SSE41=
7639 CXXFLAGS_INTRINSICS_SSE42=
7640 CXXFLAGS_INTRINSICS_AVX=
7641 CXXFLAGS_INTRINSICS_AVX2=
7642 CXXFLAGS_INTRINSICS_AVX512=
7643 CXXFLAGS_INTRINSICS_AVX512F=
7644 CXXFLAGS_INTRINSICS_F16C=
7645 CXXFLAGS_INTRINSICS_FMA=
7647 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7648     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7649     flag_sse2=-msse2
7650     flag_ssse3=-mssse3
7651     flag_sse41=-msse4.1
7652     flag_sse42=-msse4.2
7653     flag_avx=-mavx
7654     flag_avx2=-mavx2
7655     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7656     flag_avx512f=-mavx512f
7657     flag_f16c=-mf16c
7658     flag_fma=-mfma
7659 else
7660     # With MSVC using -arch is in fact not necessary for being able
7661     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7662     # even if compiled with -arch:AVX, the -arch option really only affects
7663     # instructions generated for C/C++ code.
7664     # So use the matching same (or lower) -arch options, but only in order
7665     # to generate the best matching instructions for the C++ code surrounding
7666     # the intrinsics.
7667     # SSE2 is the default for x86/x64, so no need to specify the option.
7668     flag_sse2=
7669     # No specific options for these, use the next lower.
7670     flag_ssse3="$flag_sse2"
7671     flag_sse41="$flag_sse2"
7672     flag_sse42="$flag_sse2"
7673     flag_avx=-arch:AVX
7674     flag_avx2=-arch:AVX2
7675     flag_avx512=-arch:AVX512
7676     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7677     flag_avx512f=-arch:AVX2
7678     # No MSVC options for these.
7679     flag_f16c="$flag_sse2"
7680     flag_fma="$flag_sse2"
7683 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7684 AC_LANG_PUSH([C++])
7685 save_CXXFLAGS=$CXXFLAGS
7686 CXXFLAGS="$CXXFLAGS $flag_sse2"
7687 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7688     #include <emmintrin.h>
7689     int main () {
7690         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7691         c = _mm_xor_si128 (a, b);
7692         return 0;
7693     }
7694     ])],
7695     [can_compile_sse2=yes],
7696     [can_compile_sse2=no])
7697 AC_LANG_POP([C++])
7698 CXXFLAGS=$save_CXXFLAGS
7699 AC_MSG_RESULT([${can_compile_sse2}])
7700 if test "${can_compile_sse2}" = "yes" ; then
7701     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7704 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7705 AC_LANG_PUSH([C++])
7706 save_CXXFLAGS=$CXXFLAGS
7707 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7708 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7709     #include <tmmintrin.h>
7710     int main () {
7711         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7712         c = _mm_maddubs_epi16 (a, b);
7713         return 0;
7714     }
7715     ])],
7716     [can_compile_ssse3=yes],
7717     [can_compile_ssse3=no])
7718 AC_LANG_POP([C++])
7719 CXXFLAGS=$save_CXXFLAGS
7720 AC_MSG_RESULT([${can_compile_ssse3}])
7721 if test "${can_compile_ssse3}" = "yes" ; then
7722     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7725 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7726 AC_LANG_PUSH([C++])
7727 save_CXXFLAGS=$CXXFLAGS
7728 CXXFLAGS="$CXXFLAGS $flag_sse41"
7729 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7730     #include <smmintrin.h>
7731     int main () {
7732         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7733         c = _mm_cmpeq_epi64 (a, b);
7734         return 0;
7735     }
7736     ])],
7737     [can_compile_sse41=yes],
7738     [can_compile_sse41=no])
7739 AC_LANG_POP([C++])
7740 CXXFLAGS=$save_CXXFLAGS
7741 AC_MSG_RESULT([${can_compile_sse41}])
7742 if test "${can_compile_sse41}" = "yes" ; then
7743     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7746 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7747 AC_LANG_PUSH([C++])
7748 save_CXXFLAGS=$CXXFLAGS
7749 CXXFLAGS="$CXXFLAGS $flag_sse42"
7750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7751     #include <nmmintrin.h>
7752     int main () {
7753         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7754         c = _mm_cmpgt_epi64 (a, b);
7755         return 0;
7756     }
7757     ])],
7758     [can_compile_sse42=yes],
7759     [can_compile_sse42=no])
7760 AC_LANG_POP([C++])
7761 CXXFLAGS=$save_CXXFLAGS
7762 AC_MSG_RESULT([${can_compile_sse42}])
7763 if test "${can_compile_sse42}" = "yes" ; then
7764     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7767 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7768 AC_LANG_PUSH([C++])
7769 save_CXXFLAGS=$CXXFLAGS
7770 CXXFLAGS="$CXXFLAGS $flag_avx"
7771 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7772     #include <immintrin.h>
7773     int main () {
7774         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7775         c = _mm256_xor_ps(a, b);
7776         return 0;
7777     }
7778     ])],
7779     [can_compile_avx=yes],
7780     [can_compile_avx=no])
7781 AC_LANG_POP([C++])
7782 CXXFLAGS=$save_CXXFLAGS
7783 AC_MSG_RESULT([${can_compile_avx}])
7784 if test "${can_compile_avx}" = "yes" ; then
7785     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7788 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7789 AC_LANG_PUSH([C++])
7790 save_CXXFLAGS=$CXXFLAGS
7791 CXXFLAGS="$CXXFLAGS $flag_avx2"
7792 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7793     #include <immintrin.h>
7794     int main () {
7795         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7796         c = _mm256_maddubs_epi16(a, b);
7797         return 0;
7798     }
7799     ])],
7800     [can_compile_avx2=yes],
7801     [can_compile_avx2=no])
7802 AC_LANG_POP([C++])
7803 CXXFLAGS=$save_CXXFLAGS
7804 AC_MSG_RESULT([${can_compile_avx2}])
7805 if test "${can_compile_avx2}" = "yes" ; then
7806     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7809 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7810 AC_LANG_PUSH([C++])
7811 save_CXXFLAGS=$CXXFLAGS
7812 CXXFLAGS="$CXXFLAGS $flag_avx512"
7813 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7814     #include <immintrin.h>
7815     int main () {
7816         __m512i a = _mm512_loadu_si512(0);
7817         __m512d v1 = _mm512_load_pd(0);
7818         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7819         __m512d v2 = _mm512_abs_pd(v1);
7820         return 0;
7821     }
7822     ])],
7823     [can_compile_avx512=yes],
7824     [can_compile_avx512=no])
7825 AC_LANG_POP([C++])
7826 CXXFLAGS=$save_CXXFLAGS
7827 AC_MSG_RESULT([${can_compile_avx512}])
7828 if test "${can_compile_avx512}" = "yes" ; then
7829     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7830     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7833 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7834 AC_LANG_PUSH([C++])
7835 save_CXXFLAGS=$CXXFLAGS
7836 CXXFLAGS="$CXXFLAGS $flag_f16c"
7837 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7838     #include <immintrin.h>
7839     int main () {
7840         __m128i a = _mm_set1_epi32 (0);
7841         __m128 c;
7842         c = _mm_cvtph_ps(a);
7843         return 0;
7844     }
7845     ])],
7846     [can_compile_f16c=yes],
7847     [can_compile_f16c=no])
7848 AC_LANG_POP([C++])
7849 CXXFLAGS=$save_CXXFLAGS
7850 AC_MSG_RESULT([${can_compile_f16c}])
7851 if test "${can_compile_f16c}" = "yes" ; then
7852     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7855 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7856 AC_LANG_PUSH([C++])
7857 save_CXXFLAGS=$CXXFLAGS
7858 CXXFLAGS="$CXXFLAGS $flag_fma"
7859 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7860     #include <immintrin.h>
7861     int main () {
7862         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7863         d = _mm256_fmadd_ps(a, b, c);
7864         return 0;
7865     }
7866     ])],
7867     [can_compile_fma=yes],
7868     [can_compile_fma=no])
7869 AC_LANG_POP([C++])
7870 CXXFLAGS=$save_CXXFLAGS
7871 AC_MSG_RESULT([${can_compile_fma}])
7872 if test "${can_compile_fma}" = "yes" ; then
7873     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7876 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7877 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7878 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7879 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7880 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7881 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7882 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7883 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7884 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7885 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7887 dnl ===================================================================
7888 dnl system stl sanity tests
7889 dnl ===================================================================
7890 if test "$_os" != "WINNT"; then
7892     AC_LANG_PUSH([C++])
7894     save_CPPFLAGS="$CPPFLAGS"
7895     if test -n "$MACOSX_SDK_PATH"; then
7896         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7897     fi
7899     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7900     # only.
7901     if test "$CPP_LIBRARY" = GLIBCXX; then
7902         dnl gcc#19664, gcc#22482, rhbz#162935
7903         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7904         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7905         AC_MSG_RESULT([$stlvisok])
7906         if test "$stlvisok" = "no"; then
7907             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7908         fi
7909     fi
7911     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7912     # when we don't make any dynamic libraries?
7913     if test "$DISABLE_DYNLOADING" = ""; then
7914         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7915         cat > conftestlib1.cc <<_ACEOF
7916 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7917 struct S2: S1<int> { virtual ~S2(); };
7918 S2::~S2() {}
7919 _ACEOF
7920         cat > conftestlib2.cc <<_ACEOF
7921 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7922 struct S2: S1<int> { virtual ~S2(); };
7923 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7924 _ACEOF
7925         gccvisinlineshiddenok=yes
7926         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7927             gccvisinlineshiddenok=no
7928         else
7929             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7930             dnl known to not work with -z defs (unsetting which makes the test
7931             dnl moot, though):
7932             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7933             if test "$COM_IS_CLANG" = TRUE; then
7934                 for i in $CXX $CXXFLAGS; do
7935                     case $i in
7936                     -fsanitize=*)
7937                         my_linkflagsnoundefs=
7938                         break
7939                         ;;
7940                     esac
7941                 done
7942             fi
7943             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7944                 gccvisinlineshiddenok=no
7945             fi
7946         fi
7948         rm -fr libconftest*
7949         AC_MSG_RESULT([$gccvisinlineshiddenok])
7950         if test "$gccvisinlineshiddenok" = "no"; then
7951             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7952         fi
7953     fi
7955    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7956     cat >visibility.cxx <<_ACEOF
7957 #pragma GCC visibility push(hidden)
7958 struct __attribute__ ((visibility ("default"))) TestStruct {
7959   static void Init();
7961 __attribute__ ((visibility ("default"))) void TestFunc() {
7962   TestStruct::Init();
7964 _ACEOF
7965     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7966         gccvisbroken=yes
7967     else
7968         case "$host_cpu" in
7969         i?86|x86_64)
7970             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7971                 gccvisbroken=no
7972             else
7973                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7974                     gccvisbroken=no
7975                 else
7976                     gccvisbroken=yes
7977                 fi
7978             fi
7979             ;;
7980         *)
7981             gccvisbroken=no
7982             ;;
7983         esac
7984     fi
7985     rm -f visibility.s visibility.cxx
7987     AC_MSG_RESULT([$gccvisbroken])
7988     if test "$gccvisbroken" = "yes"; then
7989         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7990     fi
7992     CPPFLAGS="$save_CPPFLAGS"
7994     AC_MSG_CHECKING([if CET endbranch is recognized])
7995 cat > endbr.s <<_ACEOF
7996 endbr32
7997 _ACEOF
7998     HAVE_ASM_END_BRANCH_INS_SUPPORT=
7999     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8000         AC_MSG_RESULT([yes])
8001         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8002     else
8003         AC_MSG_RESULT([no])
8004     fi
8005     rm -f endbr.s endbr.o
8006     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8008     AC_LANG_POP([C++])
8011 dnl ===================================================================
8012 dnl  Clang++ tests
8013 dnl ===================================================================
8015 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8016 if test "$GCC" = "yes"; then
8017     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8018     AC_LANG_PUSH([C++])
8019     save_CXXFLAGS=$CXXFLAGS
8020     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8021     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8022     CXXFLAGS=$save_CXXFLAGS
8023     AC_LANG_POP([C++])
8024     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8025         AC_MSG_RESULT([yes])
8026     else
8027         AC_MSG_RESULT([no])
8028     fi
8030 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8032 dnl ===================================================================
8033 dnl Compiler plugins
8034 dnl ===================================================================
8036 COMPILER_PLUGINS=
8037 # currently only Clang
8039 if test "$COM_IS_CLANG" != "TRUE"; then
8040     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8041         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8042         enable_compiler_plugins=no
8043     fi
8046 COMPILER_PLUGINS_COM_IS_CLANG=
8047 if test "$COM_IS_CLANG" = "TRUE"; then
8048     if test -n "$enable_compiler_plugins"; then
8049         compiler_plugins="$enable_compiler_plugins"
8050     elif test -n "$ENABLE_DBGUTIL"; then
8051         compiler_plugins=test
8052     else
8053         compiler_plugins=no
8054     fi
8055     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8056         if test "$CLANGVER" -lt 50002; then
8057             if test "$compiler_plugins" = yes; then
8058                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8059             else
8060                 compiler_plugins=no
8061             fi
8062         fi
8063     fi
8064     if test "$compiler_plugins" != "no"; then
8065         dnl The prefix where Clang resides, override to where Clang resides if
8066         dnl using a source build:
8067         if test -z "$CLANGDIR"; then
8068             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8069         fi
8070         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8071         if test -z "$COMPILER_PLUGINS_CXX"; then
8072             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8073         fi
8074         clangbindir=$CLANGDIR/bin
8075         if test "$build_os" = "cygwin"; then
8076             clangbindir=$(cygpath -u "$clangbindir")
8077         fi
8078         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8079         if test -n "$LLVM_CONFIG"; then
8080             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8081             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8082             if test -z "$CLANGLIBDIR"; then
8083                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8084             fi
8085             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8086             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8087             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8088             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8089                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8090             fi
8091             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8092             clangobjdir=$($LLVM_CONFIG --obj-root)
8093             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8094                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8095             fi
8096         fi
8097         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8098         AC_LANG_PUSH([C++])
8099         save_CXX=$CXX
8100         save_CXXCPP=$CXXCPP
8101         save_CPPFLAGS=$CPPFLAGS
8102         save_CXXFLAGS=$CXXFLAGS
8103         save_LDFLAGS=$LDFLAGS
8104         save_LIBS=$LIBS
8105         CXX=$COMPILER_PLUGINS_CXX
8106         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8107         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8108         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8109         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8110             [COMPILER_PLUGINS=TRUE],
8111             [
8112             if test "$compiler_plugins" = "yes"; then
8113                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8114             else
8115                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8116                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8117             fi
8118             ])
8119         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8120         dnl comment in compilerplugins/Makefile-clang.mk:
8121         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8122             LDFLAGS=""
8123             AC_MSG_CHECKING([for clang libraries to use])
8124             if test -z "$CLANGTOOLLIBS"; then
8125                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8126  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8127                 AC_LINK_IFELSE([
8128                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8129                         [[ clang::FullSourceLoc().dump(); ]])
8130                 ],[CLANGTOOLLIBS="$LIBS"],[])
8131             fi
8132             if test -z "$CLANGTOOLLIBS"; then
8133                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8134                 AC_LINK_IFELSE([
8135                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8136                         [[ clang::FullSourceLoc().dump(); ]])
8137                 ],[CLANGTOOLLIBS="$LIBS"],[])
8138             fi
8139             AC_MSG_RESULT([$CLANGTOOLLIBS])
8140             if test -z "$CLANGTOOLLIBS"; then
8141                 if test "$compiler_plugins" = "yes"; then
8142                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8143                 else
8144                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8145                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8146                 fi
8147                 COMPILER_PLUGINS=
8148             fi
8149             if test -n "$COMPILER_PLUGINS"; then
8150                 if test -z "$CLANGSYSINCLUDE"; then
8151                     if test -n "$LLVM_CONFIG"; then
8152                         # Path to the clang system headers (no idea if there's a better way to get it).
8153                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8154                     fi
8155                 fi
8156             fi
8157         fi
8158         CXX=$save_CXX
8159         CXXCPP=$save_CXXCPP
8160         CPPFLAGS=$save_CPPFLAGS
8161         CXXFLAGS=$save_CXXFLAGS
8162         LDFLAGS=$save_LDFLAGS
8163         LIBS="$save_LIBS"
8164         AC_LANG_POP([C++])
8166         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8167         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8168             #ifndef __clang__
8169             you lose
8170             #endif
8171             int foo=42;
8172             ]])],
8173             [AC_MSG_RESULT([yes])
8174              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8175             [AC_MSG_RESULT([no])])
8176         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8177     fi
8178 else
8179     if test "$enable_compiler_plugins" = "yes"; then
8180         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8181     fi
8183 COMPILER_PLUGINS_ANALYZER_PCH=
8184 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8185     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8187 AC_SUBST(COMPILER_PLUGINS)
8188 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8189 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8190 AC_SUBST(COMPILER_PLUGINS_CXX)
8191 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8192 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8193 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8194 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8195 AC_SUBST(CLANGDIR)
8196 AC_SUBST(CLANGLIBDIR)
8197 AC_SUBST(CLANGTOOLLIBS)
8198 AC_SUBST(CLANGSYSINCLUDE)
8200 # Plugin to help linker.
8201 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8202 # This makes --enable-lto build with clang work.
8203 AC_SUBST(LD_PLUGIN)
8205 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8206 AC_SUBST(HAVE_POSIX_FALLOCATE)
8208 JITC_PROCESSOR_TYPE=""
8209 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8210     # IBMs JDK needs this...
8211     JITC_PROCESSOR_TYPE=6
8212     export JITC_PROCESSOR_TYPE
8214 AC_SUBST([JITC_PROCESSOR_TYPE])
8216 # Misc Windows Stuff
8217 AC_ARG_WITH(ucrt-dir,
8218     AS_HELP_STRING([--with-ucrt-dir],
8219         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8220         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8221         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8222             Windows6.1-KB2999226-x64.msu
8223             Windows6.1-KB2999226-x86.msu
8224             Windows8.1-KB2999226-x64.msu
8225             Windows8.1-KB2999226-x86.msu
8226             Windows8-RT-KB2999226-x64.msu
8227             Windows8-RT-KB2999226-x86.msu
8228         A zip archive including those files is available from Microsoft site:
8229         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8232 UCRT_REDISTDIR="$with_ucrt_dir"
8233 if test $_os = "WINNT"; then
8234     find_msvc_x64_dlls
8235     for i in $PKGFORMAT; do
8236         if test "$i" = msi; then
8237             find_msms
8238             break
8239         fi
8240     done
8241     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8242     MSVC_DLLS="$msvcdlls"
8243     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8244     # MSVC 15.3 changed it to VC141
8245     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8246         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8247     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8248         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8249     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8250         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8251     else
8252         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8253     fi
8255     if test "$UCRT_REDISTDIR" = "no"; then
8256         dnl explicitly disabled
8257         UCRT_REDISTDIR=""
8258     else
8259         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8260                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8261                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8262                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8263                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8264                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8265             UCRT_REDISTDIR=""
8266             if test -n "$PKGFORMAT"; then
8267                for i in $PKGFORMAT; do
8268                    case "$i" in
8269                    msi)
8270                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8271                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8272                        ;;
8273                    esac
8274                done
8275             fi
8276         fi
8277     fi
8280 AC_SUBST(UCRT_REDISTDIR)
8281 AC_SUBST(MSVC_DLL_PATH)
8282 AC_SUBST(MSVC_DLLS)
8283 AC_SUBST(MSM_PATH)
8286 dnl ===================================================================
8287 dnl Checks for Java
8288 dnl ===================================================================
8289 if test "$ENABLE_JAVA" != ""; then
8291     # Windows-specific tests
8292     if test "$build_os" = "cygwin"; then
8293         if test -z "$with_jdk_home"; then
8294             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8295             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8296             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8297             if test -n "$regvalue"; then
8298                 ver=$regvalue
8299                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8300                 with_jdk_home=$regvalue
8301             fi
8302             howfound="found automatically"
8303         else
8304             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8305             howfound="you passed"
8306         fi
8308         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8309             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])
8310         fi
8311     fi
8313     # 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.
8314     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8315     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8316         with_jdk_home=`/usr/libexec/java_home`
8317     fi
8319     JAVA_HOME=; export JAVA_HOME
8320     if test -z "$with_jdk_home"; then
8321         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8322     else
8323         _java_path="$with_jdk_home/bin/$with_java"
8324         dnl Check if there is a Java interpreter at all.
8325         if test -x "$_java_path"; then
8326             JAVAINTERPRETER=$_java_path
8327         else
8328             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8329         fi
8330     fi
8332     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8333     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8334     dnl loaded by java to run JunitTests:
8335     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8336         shortjdkhome=`cygpath -d "$with_jdk_home"`
8337         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
8338             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8339             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8340         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
8341             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8342             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8343         fi
8345         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8346             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8347         fi
8348         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8349     elif test "$cross_compiling" != "yes"; then
8350         case $CPUNAME in
8351             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8352                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8353                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8354                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8355                 fi
8356                 ;;
8357             *) # assumption: everything else 32-bit
8358                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8359                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8360                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8361                 fi
8362                 ;;
8363         esac
8364     fi
8367 dnl ===================================================================
8368 dnl Checks for JDK.
8369 dnl ===================================================================
8371 # Whether all the complexity here actually is needed any more or not, no idea.
8373 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8374     _gij_longver=0
8375     AC_MSG_CHECKING([the installed JDK])
8376     if test -n "$JAVAINTERPRETER"; then
8377         dnl java -version sends output to stderr!
8378         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8379             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8380         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8381             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8382         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8383             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8384         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8385             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8386         else
8387             JDK=sun
8389             dnl Sun JDK specific tests
8390             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8391             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8393             if test "$_jdk_ver" -lt 10900; then
8394                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8395             fi
8396             if test "$_jdk_ver" -gt 10900; then
8397                 JAVA_CLASSPATH_NOT_SET=TRUE
8398             fi
8400             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8401             if test "$_os" = "WINNT"; then
8402                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8403             fi
8404             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8406             # set to limit VM usage for JunitTests
8407             JAVAIFLAGS=-Xmx64M
8408             # set to limit VM usage for javac
8409             JAVACFLAGS=-J-Xmx128M
8410         fi
8411     else
8412         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8413     fi
8414 else
8415     if test -z "$ENABLE_JAVA"; then
8416         dnl Java disabled
8417         JAVA_HOME=
8418         export JAVA_HOME
8419     elif test "$cross_compiling" = "yes"; then
8420         # Just assume compatibility of build and host JDK
8421         JDK=$JDK_FOR_BUILD
8422         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8423     fi
8426 dnl ===================================================================
8427 dnl Checks for javac
8428 dnl ===================================================================
8429 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8430     javacompiler="javac"
8431     : ${JAVA_SOURCE_VER=8}
8432     : ${JAVA_TARGET_VER=8}
8433     if test -z "$with_jdk_home"; then
8434         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8435     else
8436         _javac_path="$with_jdk_home/bin/$javacompiler"
8437         dnl Check if there is a Java compiler at all.
8438         if test -x "$_javac_path"; then
8439             JAVACOMPILER=$_javac_path
8440         fi
8441     fi
8442     if test -z "$JAVACOMPILER"; then
8443         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8444     fi
8445     if test "$build_os" = "cygwin"; then
8446         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8447             JAVACOMPILER="${JAVACOMPILER}.exe"
8448         fi
8449         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8450     fi
8453 dnl ===================================================================
8454 dnl Checks for javadoc
8455 dnl ===================================================================
8456 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8457     if test -z "$with_jdk_home"; then
8458         AC_PATH_PROG(JAVADOC, javadoc)
8459     else
8460         _javadoc_path="$with_jdk_home/bin/javadoc"
8461         dnl Check if there is a javadoc at all.
8462         if test -x "$_javadoc_path"; then
8463             JAVADOC=$_javadoc_path
8464         else
8465             AC_PATH_PROG(JAVADOC, javadoc)
8466         fi
8467     fi
8468     if test -z "$JAVADOC"; then
8469         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8470     fi
8471     if test "$build_os" = "cygwin"; then
8472         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8473             JAVADOC="${JAVADOC}.exe"
8474         fi
8475         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8476     fi
8478     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8479     JAVADOCISGJDOC="yes"
8480     fi
8482 AC_SUBST(JAVADOC)
8483 AC_SUBST(JAVADOCISGJDOC)
8485 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8486     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8487     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8488         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8489            # try to recover first by looking whether we have an alternative
8490            # system as in Debian or newer SuSEs where following /usr/bin/javac
8491            # over /etc/alternatives/javac leads to the right bindir where we
8492            # just need to strip a bit away to get a valid JAVA_HOME
8493            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8494         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8495             # maybe only one level of symlink (e.g. on Mac)
8496             JAVA_HOME=$(readlink $JAVACOMPILER)
8497             if test "$(dirname $JAVA_HOME)" = "."; then
8498                 # we've got no path to trim back
8499                 JAVA_HOME=""
8500             fi
8501         else
8502             # else warn
8503             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8504             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8505             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8506             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8507         fi
8508         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8509         if test "$JAVA_HOME" != "/usr"; then
8510             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8511                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8512                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8513                 dnl Tiger already returns a JDK path...
8514                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8515             else
8516                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8517                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8518                 dnl that checks which version to run
8519                 if test -f "$JAVA_HOME"; then
8520                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8521                 fi
8522             fi
8523         fi
8524     fi
8525     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8527     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8528     if test -z "$JAVA_HOME"; then
8529         if test "x$with_jdk_home" = "x"; then
8530             cat > findhome.java <<_ACEOF
8531 [import java.io.File;
8533 class findhome
8535     public static void main(String args[])
8536     {
8537         String jrelocation = System.getProperty("java.home");
8538         File jre = new File(jrelocation);
8539         System.out.println(jre.getParent());
8540     }
8542 _ACEOF
8543             AC_MSG_CHECKING([if javac works])
8544             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8545             AC_TRY_EVAL(javac_cmd)
8546             if test $? = 0 -a -f ./findhome.class; then
8547                 AC_MSG_RESULT([javac works])
8548             else
8549                 echo "configure: javac test failed" >&5
8550                 cat findhome.java >&5
8551                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8552             fi
8553             AC_MSG_CHECKING([if gij knows its java.home])
8554             JAVA_HOME=`$JAVAINTERPRETER findhome`
8555             if test $? = 0 -a "$JAVA_HOME" != ""; then
8556                 AC_MSG_RESULT([$JAVA_HOME])
8557             else
8558                 echo "configure: java test failed" >&5
8559                 cat findhome.java >&5
8560                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8561             fi
8562             # clean-up after ourselves
8563             rm -f ./findhome.java ./findhome.class
8564         else
8565             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8566         fi
8567     fi
8569     # now check if $JAVA_HOME is really valid
8570     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8571         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8572             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8573             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8574             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8575             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8576             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8577             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8578         fi
8579     fi
8580     PathFormat "$JAVA_HOME"
8581     JAVA_HOME="$formatted_path"
8584 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8585     "$_os" != Darwin
8586 then
8587     AC_MSG_CHECKING([for JAWT lib])
8588     if test "$_os" = WINNT; then
8589         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8590         JAWTLIB=jawt.lib
8591     else
8592         case "$host_cpu" in
8593         arm*)
8594             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8595             JAVA_ARCH=$my_java_arch
8596             ;;
8597         i*86)
8598             my_java_arch=i386
8599             ;;
8600         m68k)
8601             my_java_arch=m68k
8602             ;;
8603         powerpc)
8604             my_java_arch=ppc
8605             ;;
8606         powerpc64)
8607             my_java_arch=ppc64
8608             ;;
8609         powerpc64le)
8610             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8611             JAVA_ARCH=$my_java_arch
8612             ;;
8613         sparc64)
8614             my_java_arch=sparcv9
8615             ;;
8616         x86_64)
8617             my_java_arch=amd64
8618             ;;
8619         *)
8620             my_java_arch=$host_cpu
8621             ;;
8622         esac
8623         # This is where JDK9 puts the library
8624         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8625             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8626         else
8627             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8628         fi
8629         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8630     fi
8631     AC_MSG_RESULT([$JAWTLIB])
8633 AC_SUBST(JAWTLIB)
8635 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8636     case "$host_os" in
8638     aix*)
8639         JAVAINC="-I$JAVA_HOME/include"
8640         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8641         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8642         ;;
8644     cygwin*|wsl*)
8645         JAVAINC="-I$JAVA_HOME/include/win32"
8646         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8647         ;;
8649     darwin*|macos*)
8650         if test -d "$JAVA_HOME/include/darwin"; then
8651             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8652         else
8653             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8654         fi
8655         ;;
8657     dragonfly*)
8658         JAVAINC="-I$JAVA_HOME/include"
8659         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8660         ;;
8662     freebsd*)
8663         JAVAINC="-I$JAVA_HOME/include"
8664         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8665         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8666         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8667         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8668         ;;
8670     k*bsd*-gnu*)
8671         JAVAINC="-I$JAVA_HOME/include"
8672         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8673         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8674         ;;
8676     linux-gnu*)
8677         JAVAINC="-I$JAVA_HOME/include"
8678         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8679         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8680         ;;
8682     *netbsd*)
8683         JAVAINC="-I$JAVA_HOME/include"
8684         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8685         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8686        ;;
8688     openbsd*)
8689         JAVAINC="-I$JAVA_HOME/include"
8690         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8691         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8692         ;;
8694     solaris*)
8695         JAVAINC="-I$JAVA_HOME/include"
8696         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8697         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8698         ;;
8699     esac
8701 SOLARINC="$SOLARINC $JAVAINC"
8703 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8704     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8705     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8706     JDK_FOR_BUILD=$JDK
8709 AC_SUBST(JAVACFLAGS)
8710 AC_SUBST(JAVACOMPILER)
8711 AC_SUBST(JAVAINTERPRETER)
8712 AC_SUBST(JAVAIFLAGS)
8713 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8714 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8715 AC_SUBST(JAVA_HOME)
8716 AC_SUBST(JAVA_HOME_FOR_BUILD)
8717 AC_SUBST(JDK)
8718 AC_SUBST(JDK_FOR_BUILD)
8719 AC_SUBST(JAVA_SOURCE_VER)
8720 AC_SUBST(JAVA_TARGET_VER)
8723 dnl ===================================================================
8724 dnl Export file validation
8725 dnl ===================================================================
8726 AC_MSG_CHECKING([whether to enable export file validation])
8727 if test "$with_export_validation" != "no"; then
8728     if test -z "$ENABLE_JAVA"; then
8729         if test "$with_export_validation" = "yes"; then
8730             AC_MSG_ERROR([requested, but Java is disabled])
8731         else
8732             AC_MSG_RESULT([no, as Java is disabled])
8733         fi
8734     elif ! test -d "${SRC_ROOT}/schema"; then
8735         if test "$with_export_validation" = "yes"; then
8736             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8737         else
8738             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8739         fi
8740     else
8741         AC_MSG_RESULT([yes])
8742         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8744         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8745         if test -z "$ODFVALIDATOR"; then
8746             # remember to download the ODF toolkit with validator later
8747             AC_MSG_NOTICE([no odfvalidator found, will download it])
8748             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8749             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8751             # and fetch name of odfvalidator jar name from download.lst
8752             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8753             AC_SUBST(ODFVALIDATOR_JAR)
8755             if test -z "$ODFVALIDATOR_JAR"; then
8756                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8757             fi
8758         fi
8759         if test "$build_os" = "cygwin"; then
8760             # In case of Cygwin it will be executed from Windows,
8761             # so we need to run bash and absolute path to validator
8762             # so instead of "odfvalidator" it will be
8763             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8764             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8765         else
8766             ODFVALIDATOR="sh $ODFVALIDATOR"
8767         fi
8768         AC_SUBST(ODFVALIDATOR)
8771         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8772         if test -z "$OFFICEOTRON"; then
8773             # remember to download the officeotron with validator later
8774             AC_MSG_NOTICE([no officeotron found, will download it])
8775             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8776             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8778             # and fetch name of officeotron jar name from download.lst
8779             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8780             AC_SUBST(OFFICEOTRON_JAR)
8782             if test -z "$OFFICEOTRON_JAR"; then
8783                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8784             fi
8785         else
8786             # check version of existing officeotron
8787             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8788             if test 0"$OFFICEOTRON_VER" -lt 704; then
8789                 AC_MSG_ERROR([officeotron too old])
8790             fi
8791         fi
8792         if test "$build_os" = "cygwin"; then
8793             # In case of Cygwin it will be executed from Windows,
8794             # so we need to run bash and absolute path to validator
8795             # so instead of "odfvalidator" it will be
8796             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8797             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8798         else
8799             OFFICEOTRON="sh $OFFICEOTRON"
8800         fi
8801     fi
8802     AC_SUBST(OFFICEOTRON)
8803 else
8804     AC_MSG_RESULT([no])
8807 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8808 if test "$with_bffvalidator" != "no"; then
8809     AC_DEFINE(HAVE_BFFVALIDATOR)
8811     if test "$with_export_validation" = "no"; then
8812         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8813     fi
8815     if test "$with_bffvalidator" = "yes"; then
8816         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8817     else
8818         BFFVALIDATOR="$with_bffvalidator"
8819     fi
8821     if test "$build_os" = "cygwin"; then
8822         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8823             AC_MSG_RESULT($BFFVALIDATOR)
8824         else
8825             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8826         fi
8827     elif test -n "$BFFVALIDATOR"; then
8828         # We are not in Cygwin but need to run Windows binary with wine
8829         AC_PATH_PROGS(WINE, wine)
8831         # so swap in a shell wrapper that converts paths transparently
8832         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8833         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8834         AC_SUBST(BFFVALIDATOR_EXE)
8835         AC_MSG_RESULT($BFFVALIDATOR)
8836     else
8837         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8838     fi
8839     AC_SUBST(BFFVALIDATOR)
8840 else
8841     AC_MSG_RESULT([no])
8844 dnl ===================================================================
8845 dnl Check for C preprocessor to use
8846 dnl ===================================================================
8847 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8848 SYSTEM_UCPP_IS_GCC=
8849 if test -n "$with_idlc_cpp"; then
8850     AC_MSG_RESULT([$with_idlc_cpp])
8851     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8852     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8853     # ucpp will accept -v (to output version), warn about the others as unknown
8854     # and return 1 (due to -v)
8855     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8856     # and return 0 (due to --version ) if all options are supported
8857     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8858     if test $? -eq 0;  then
8859         SYSTEM_UCPP_IS_GCC=TRUE
8860         AC_MSG_RESULT([yes])
8861     else
8862         AC_MSG_RESULT([no])
8863     fi
8864 else
8865     AC_MSG_RESULT([ucpp])
8866     AC_MSG_CHECKING([which ucpp to use])
8867     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8868         AC_MSG_RESULT([external])
8869         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8870     else
8871         AC_MSG_RESULT([internal])
8872         BUILD_TYPE="$BUILD_TYPE UCPP"
8873     fi
8875 AC_SUBST(SYSTEM_UCPP)
8876 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8878 dnl ===================================================================
8879 dnl Check for epm (not needed for Windows)
8880 dnl ===================================================================
8881 AC_MSG_CHECKING([whether to enable EPM for packing])
8882 if test "$enable_epm" = "yes"; then
8883     AC_MSG_RESULT([yes])
8884     if test "$_os" != "WINNT"; then
8885         if test $_os = Darwin; then
8886             EPM=internal
8887         elif test -n "$with_epm"; then
8888             EPM=$with_epm
8889         else
8890             AC_PATH_PROG(EPM, epm, no)
8891         fi
8892         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8893             AC_MSG_NOTICE([EPM will be built.])
8894             BUILD_TYPE="$BUILD_TYPE EPM"
8895             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8896         else
8897             # Gentoo has some epm which is something different...
8898             AC_MSG_CHECKING([whether the found epm is the right epm])
8899             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8900                 AC_MSG_RESULT([yes])
8901             else
8902                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8903             fi
8904             AC_MSG_CHECKING([epm version])
8905             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8906             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8907                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8908                 AC_MSG_RESULT([OK, >= 3.7])
8909             else
8910                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8911                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8912             fi
8913         fi
8914     fi
8916     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8917         AC_MSG_CHECKING([for rpm])
8918         for a in "$RPM" rpmbuild rpm; do
8919             $a --usage >/dev/null 2> /dev/null
8920             if test $? -eq 0; then
8921                 RPM=$a
8922                 break
8923             else
8924                 $a --version >/dev/null 2> /dev/null
8925                 if test $? -eq 0; then
8926                     RPM=$a
8927                     break
8928                 fi
8929             fi
8930         done
8931         if test -z "$RPM"; then
8932             AC_MSG_ERROR([not found])
8933         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8934             RPM_PATH=`which $RPM`
8935             AC_MSG_RESULT([$RPM_PATH])
8936             SCPDEFS="$SCPDEFS -DWITH_RPM"
8937         else
8938             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8939         fi
8940     fi
8941     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8942         AC_PATH_PROG(DPKG, dpkg, no)
8943         if test "$DPKG" = "no"; then
8944             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8945         fi
8946     fi
8947     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8948        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8949         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8950             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8951                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8952                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8953                     AC_MSG_RESULT([yes])
8954                 else
8955                     AC_MSG_RESULT([no])
8956                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8957                         _pt="rpm"
8958                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8959                         add_warning "the rpms will need to be installed with --nodeps"
8960                     else
8961                         _pt="pkg"
8962                     fi
8963                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8964                     add_warning "the ${_pt}s will not be relocatable"
8965                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8966                                  relocation will work, you need to patch your epm with the
8967                                  patch in epm/epm-3.7.patch or build with
8968                                  --with-epm=internal which will build a suitable epm])
8969                 fi
8970             fi
8971         fi
8972     fi
8973     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8974         AC_PATH_PROG(PKGMK, pkgmk, no)
8975         if test "$PKGMK" = "no"; then
8976             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8977         fi
8978     fi
8979     AC_SUBST(RPM)
8980     AC_SUBST(DPKG)
8981     AC_SUBST(PKGMK)
8982 else
8983     for i in $PKGFORMAT; do
8984         case "$i" in
8985         aix | bsd | deb | pkg | rpm | native | portable)
8986             AC_MSG_ERROR(
8987                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8988             ;;
8989         esac
8990     done
8991     AC_MSG_RESULT([no])
8992     EPM=NO
8994 AC_SUBST(EPM)
8996 ENABLE_LWP=
8997 if test "$enable_lotuswordpro" = "yes"; then
8998     ENABLE_LWP="TRUE"
9000 AC_SUBST(ENABLE_LWP)
9002 dnl ===================================================================
9003 dnl Check for building ODK
9004 dnl ===================================================================
9005 if test "$enable_odk" != yes; then
9006     unset DOXYGEN
9007 else
9008     if test "$with_doxygen" = no; then
9009         AC_MSG_CHECKING([for doxygen])
9010         unset DOXYGEN
9011         AC_MSG_RESULT([no])
9012     else
9013         if test "$with_doxygen" = yes; then
9014             AC_PATH_PROG([DOXYGEN], [doxygen])
9015             if test -z "$DOXYGEN"; then
9016                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9017             fi
9018             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9019                 if ! dot -V 2>/dev/null; then
9020                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9021                 fi
9022             fi
9023         else
9024             AC_MSG_CHECKING([for doxygen])
9025             DOXYGEN=$with_doxygen
9026             AC_MSG_RESULT([$DOXYGEN])
9027         fi
9028         if test -n "$DOXYGEN"; then
9029             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9030             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9031             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9032                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9033             fi
9034         fi
9035     fi
9037 AC_SUBST([DOXYGEN])
9039 AC_MSG_CHECKING([whether to build the ODK])
9040 if test "$enable_odk" = yes; then
9041     AC_MSG_RESULT([yes])
9042     BUILD_TYPE="$BUILD_TYPE ODK"
9043 else
9044     AC_MSG_RESULT([no])
9047 dnl ===================================================================
9048 dnl Check for system zlib
9049 dnl ===================================================================
9050 if test "$with_system_zlib" = "auto"; then
9051     case "$_os" in
9052     WINNT)
9053         with_system_zlib="$with_system_libs"
9054         ;;
9055     *)
9056         if test "$enable_fuzzers" != "yes"; then
9057             with_system_zlib=yes
9058         else
9059             with_system_zlib=no
9060         fi
9061         ;;
9062     esac
9065 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9066 dnl and has no pkg-config for it at least on some tinderboxes,
9067 dnl so leaving that out for now
9068 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9069 AC_MSG_CHECKING([which zlib to use])
9070 if test "$with_system_zlib" = "yes"; then
9071     AC_MSG_RESULT([external])
9072     SYSTEM_ZLIB=TRUE
9073     AC_CHECK_HEADER(zlib.h, [],
9074         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9075     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9076         [AC_MSG_ERROR(zlib not found or functional)], [])
9077 else
9078     AC_MSG_RESULT([internal])
9079     SYSTEM_ZLIB=
9080     BUILD_TYPE="$BUILD_TYPE ZLIB"
9081     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9082     if test "$COM" = "MSC"; then
9083         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9084     else
9085         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9086     fi
9088 AC_SUBST(ZLIB_CFLAGS)
9089 AC_SUBST(ZLIB_LIBS)
9090 AC_SUBST(SYSTEM_ZLIB)
9092 dnl ===================================================================
9093 dnl Check for system jpeg
9094 dnl ===================================================================
9095 AC_MSG_CHECKING([which libjpeg to use])
9096 if test "$with_system_jpeg" = "yes"; then
9097     AC_MSG_RESULT([external])
9098     SYSTEM_LIBJPEG=TRUE
9099     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9100         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9101     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9102         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9103 else
9104     SYSTEM_LIBJPEG=
9105     AC_MSG_RESULT([internal, libjpeg-turbo])
9106     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9108     case "$host_cpu" in
9109     x86_64 | amd64 | i*86 | x86 | ia32)
9110         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9111         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9112             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9113                 NASM="$LODE_HOME/opt/bin/nasm"
9114             elif test -x "/opt/lo/bin/nasm"; then
9115                 NASM="/opt/lo/bin/nasm"
9116             fi
9117         fi
9119         if test -n "$NASM"; then
9120             AC_MSG_CHECKING([for object file format of host system])
9121             case "$host_os" in
9122               cygwin* | mingw* | pw32* | wsl*)
9123                 case "$host_cpu" in
9124                   x86_64)
9125                     objfmt='Win64-COFF'
9126                     ;;
9127                   *)
9128                     objfmt='Win32-COFF'
9129                     ;;
9130                 esac
9131               ;;
9132               msdosdjgpp* | go32*)
9133                 objfmt='COFF'
9134               ;;
9135               os2-emx*) # not tested
9136                 objfmt='MSOMF' # obj
9137               ;;
9138               linux*coff* | linux*oldld*)
9139                 objfmt='COFF' # ???
9140               ;;
9141               linux*aout*)
9142                 objfmt='a.out'
9143               ;;
9144               linux*)
9145                 case "$host_cpu" in
9146                   x86_64)
9147                     objfmt='ELF64'
9148                     ;;
9149                   *)
9150                     objfmt='ELF'
9151                     ;;
9152                 esac
9153               ;;
9154               kfreebsd* | freebsd* | netbsd* | openbsd*)
9155                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9156                   objfmt='BSD-a.out'
9157                 else
9158                   case "$host_cpu" in
9159                     x86_64 | amd64)
9160                       objfmt='ELF64'
9161                       ;;
9162                     *)
9163                       objfmt='ELF'
9164                       ;;
9165                   esac
9166                 fi
9167               ;;
9168               solaris* | sunos* | sysv* | sco*)
9169                 case "$host_cpu" in
9170                   x86_64)
9171                     objfmt='ELF64'
9172                     ;;
9173                   *)
9174                     objfmt='ELF'
9175                     ;;
9176                 esac
9177               ;;
9178               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9179                 case "$host_cpu" in
9180                   x86_64)
9181                     objfmt='Mach-O64'
9182                     ;;
9183                   *)
9184                     objfmt='Mach-O'
9185                     ;;
9186                 esac
9187               ;;
9188               *)
9189                 objfmt='ELF ?'
9190               ;;
9191             esac
9193             AC_MSG_RESULT([$objfmt])
9194             if test "$objfmt" = 'ELF ?'; then
9195               objfmt='ELF'
9196               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9197             fi
9199             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9200             case "$objfmt" in
9201               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9202               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9203               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9204               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9205               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9206               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9207               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9208               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9209               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9210               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9211               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9212             esac
9213             AC_MSG_RESULT([$NAFLAGS])
9215             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9216             cat > conftest.asm << EOF
9217             [%line __oline__ "configure"
9218                     section .text
9219                     global  _main,main
9220             _main:
9221             main:   xor     eax,eax
9222                     ret
9223             ]
9225             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9226             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9227               AC_MSG_RESULT(yes)
9228             else
9229               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9230               cat conftest.asm >&AS_MESSAGE_LOG_FD
9231               rm -rf conftest*
9232               AC_MSG_RESULT(no)
9233               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9234               NASM=""
9235             fi
9237         fi
9239         if test -z "$NASM"; then
9240 cat << _EOS
9241 ****************************************************************************
9242 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9243 To get one please:
9245 _EOS
9246             if test "$build_os" = "cygwin"; then
9247 cat << _EOS
9248 install a pre-compiled binary for Win32
9250 mkdir -p /opt/lo/bin
9251 cd /opt/lo/bin
9252 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9253 chmod +x nasm
9255 or get and install one from http://www.nasm.us/
9257 Then re-run autogen.sh
9259 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9260 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9262 _EOS
9263             else
9264 cat << _EOS
9265 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9267 _EOS
9268             fi
9269             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9270             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9271         fi
9272       ;;
9273     esac
9276 AC_SUBST(NASM)
9277 AC_SUBST(NAFLAGS)
9278 AC_SUBST(LIBJPEG_CFLAGS)
9279 AC_SUBST(LIBJPEG_LIBS)
9280 AC_SUBST(SYSTEM_LIBJPEG)
9282 dnl ===================================================================
9283 dnl Check for system clucene
9284 dnl ===================================================================
9285 dnl we should rather be using
9286 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9287 dnl but the contribs-lib check seems tricky
9288 AC_MSG_CHECKING([which clucene to use])
9289 if test "$test_clucene" = yes; then
9290 if test "$with_system_clucene" = "yes"; then
9291     AC_MSG_RESULT([external])
9292     SYSTEM_CLUCENE=TRUE
9293     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9294     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9295     FilterLibs "${CLUCENE_LIBS}"
9296     CLUCENE_LIBS="${filteredlibs}"
9297     AC_LANG_PUSH([C++])
9298     save_CXXFLAGS=$CXXFLAGS
9299     save_CPPFLAGS=$CPPFLAGS
9300     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9301     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9302     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9303     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9304     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9305                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9306     CXXFLAGS=$save_CXXFLAGS
9307     CPPFLAGS=$save_CPPFLAGS
9308     AC_LANG_POP([C++])
9310     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9311 else
9312     AC_MSG_RESULT([internal])
9313     SYSTEM_CLUCENE=
9314     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9316 else
9317     AC_MSG_RESULT([not needed])
9319 AC_SUBST(SYSTEM_CLUCENE)
9320 AC_SUBST(CLUCENE_CFLAGS)
9321 AC_SUBST(CLUCENE_LIBS)
9323 dnl ===================================================================
9324 dnl Check for system expat
9325 dnl ===================================================================
9326 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9328 dnl ===================================================================
9329 dnl Check for system xmlsec
9330 dnl ===================================================================
9331 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9333 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9334 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9335     ENABLE_EOT="TRUE"
9336     AC_DEFINE([ENABLE_EOT])
9337     AC_MSG_RESULT([yes])
9339     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9340 else
9341     ENABLE_EOT=
9342     AC_MSG_RESULT([no])
9344 AC_SUBST([ENABLE_EOT])
9346 dnl ===================================================================
9347 dnl Check for DLP libs
9348 dnl ===================================================================
9349 AS_IF([test "$COM" = "MSC"],
9350       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9351       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9353 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9355 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9357 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9359 AS_IF([test "$COM" = "MSC"],
9360       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9361       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9363 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9365 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9367 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9368 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9370 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9372 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9374 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9376 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9377 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9379 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9380 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9382 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9384 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9385 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9387 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9389 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9391 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9393 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9395 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9396 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9398 dnl ===================================================================
9399 dnl Check for system lcms2
9400 dnl ===================================================================
9401 if test "$with_system_lcms2" != "yes"; then
9402     SYSTEM_LCMS2=
9404 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9405 if test "$GCC" = "yes"; then
9406     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9408 if test "$COM" = "MSC"; then # override the above
9409     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9412 dnl ===================================================================
9413 dnl Check for system cppunit
9414 dnl ===================================================================
9415 if test "$_os" != "Android" ; then
9416     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9419 dnl ===================================================================
9420 dnl Check whether freetype is available
9422 dnl FreeType has 3 different kinds of versions
9423 dnl * release, like 2.4.10
9424 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9425 dnl * soname
9426 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9428 dnl 9.9.3 is 2.2.0
9429 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9430 dnl ===================================================================
9431 if test "$test_freetype" != no; then
9432     if test "x$ac_config_site_64bit_host" = xYES; then
9433         FREETYPE_LIBS_INTERNAL="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9434     else
9435         FREETYPE_LIBS_INTERNAL="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9436     fi
9438 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],
9439     ["${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"],["$FREETYPE_LIBS_INTERNAL"],TRUE)
9441 # ===================================================================
9442 # Check for system libxslt
9443 # to prevent incompatibilities between internal libxml2 and external libxslt,
9444 # or vice versa, use with_system_libxml here
9445 # ===================================================================
9446 if test "$with_system_libxml" = "auto"; then
9447     case "$_os" in
9448     WINNT|iOS|Android)
9449         with_system_libxml="$with_system_libs"
9450         ;;
9451     Emscripten)
9452         with_system_libxml=no
9453         ;;
9454     *)
9455         if test "$enable_fuzzers" != "yes"; then
9456             with_system_libxml=yes
9457         else
9458             with_system_libxml=no
9459         fi
9460         ;;
9461     esac
9464 AC_MSG_CHECKING([which libxslt to use])
9465 if test "$with_system_libxml" = "yes"; then
9466     AC_MSG_RESULT([external])
9467     SYSTEM_LIBXSLT=TRUE
9468     if test "$_os" = "Darwin"; then
9469         dnl make sure to use SDK path
9470         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9471         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9472         dnl omit -L/usr/lib
9473         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9474         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9475     else
9476         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9477         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9478         FilterLibs "${LIBXSLT_LIBS}"
9479         LIBXSLT_LIBS="${filteredlibs}"
9480         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9481         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9482         FilterLibs "${LIBEXSLT_LIBS}"
9483         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9484     fi
9486     dnl Check for xsltproc
9487     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9488     if test "$XSLTPROC" = "no"; then
9489         AC_MSG_ERROR([xsltproc is required])
9490     fi
9491 else
9492     AC_MSG_RESULT([internal])
9493     SYSTEM_LIBXSLT=
9494     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9496 AC_SUBST(SYSTEM_LIBXSLT)
9497 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9498     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9500 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9502 AC_SUBST(LIBEXSLT_CFLAGS)
9503 AC_SUBST(LIBEXSLT_LIBS)
9504 AC_SUBST(LIBXSLT_CFLAGS)
9505 AC_SUBST(LIBXSLT_LIBS)
9506 AC_SUBST(XSLTPROC)
9508 # ===================================================================
9509 # Check for system libxml
9510 # ===================================================================
9511 AC_MSG_CHECKING([which libxml to use])
9512 if test "$with_system_libxml" = "yes"; then
9513     AC_MSG_RESULT([external])
9514     SYSTEM_LIBXML=TRUE
9515     if test "$_os" = "Darwin"; then
9516         dnl make sure to use SDK path
9517         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9518         dnl omit -L/usr/lib
9519         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9520     elif test $_os = iOS; then
9521         dnl make sure to use SDK path
9522         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9523         LIBXML_CFLAGS="-I$usr/include/libxml2"
9524         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9525     else
9526         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9527         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9528         FilterLibs "${LIBXML_LIBS}"
9529         LIBXML_LIBS="${filteredlibs}"
9530     fi
9532     dnl Check for xmllint
9533     AC_PATH_PROG(XMLLINT, xmllint, no)
9534     if test "$XMLLINT" = "no"; then
9535         AC_MSG_ERROR([xmllint is required])
9536     fi
9537 else
9538     AC_MSG_RESULT([internal])
9539     SYSTEM_LIBXML=
9540     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9541     if test "$COM" = "MSC"; then
9542         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9543     fi
9544     if test "$COM" = "MSC"; then
9545         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9546     else
9547         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9548         if test "$DISABLE_DYNLOADING" = TRUE; then
9549             LIBXML_LIBS="$LIBXML_LIBS -lm"
9550         fi
9551     fi
9552     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9554 AC_SUBST(SYSTEM_LIBXML)
9555 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9556     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9558 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9559 AC_SUBST(LIBXML_CFLAGS)
9560 AC_SUBST(LIBXML_LIBS)
9561 AC_SUBST(XMLLINT)
9563 # =====================================================================
9564 # Checking for a Python interpreter with version >= 3.3.
9565 # Optionally user can pass an option to configure, i. e.
9566 # ./configure PYTHON=/usr/bin/python
9567 # =====================================================================
9568 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9569     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9570     # unless PYTHON is defined as above which allows 'system'
9571     enable_python=internal
9573 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9574     if test -n "$PYTHON"; then
9575         PYTHON_FOR_BUILD=$PYTHON
9576     else
9577         # This allows a lack of system python with no error, we use internal one in that case.
9578         AM_PATH_PYTHON([3.3],, [:])
9579         # Clean PYTHON_VERSION checked below if cross-compiling
9580         PYTHON_VERSION=""
9581         if test "$PYTHON" != ":"; then
9582             PYTHON_FOR_BUILD=$PYTHON
9583         fi
9584     fi
9586 AC_SUBST(PYTHON_FOR_BUILD)
9588 # Checks for Python to use for Pyuno
9589 AC_MSG_CHECKING([which Python to use for Pyuno])
9590 case "$enable_python" in
9591 no|disable)
9592     if test -z $PYTHON_FOR_BUILD; then
9593         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9594         # requirement from the choice whether to include Python stuff in the installer, but why
9595         # bother?
9596         if test "$cross_compiling" = yes; then
9597             enable_python=system
9598         else
9599             AC_MSG_ERROR([Python is required at build time.])
9600         fi
9601     fi
9602     enable_python=no
9603     AC_MSG_RESULT([none])
9604     ;;
9605 ""|yes|auto)
9606     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9607         AC_MSG_RESULT([no, overridden by --disable-scripting])
9608         enable_python=no
9609     elif test $build_os = cygwin; then
9610         dnl When building on Windows we don't attempt to use any installed
9611         dnl "system"  Python.
9612         AC_MSG_RESULT([fully internal])
9613         enable_python=internal
9614     elif test "$cross_compiling" = yes; then
9615         AC_MSG_RESULT([system])
9616         enable_python=system
9617     else
9618         # Unset variables set by the above AM_PATH_PYTHON so that
9619         # we actually do check anew.
9620         AC_MSG_RESULT([])
9621         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
9622         AM_PATH_PYTHON([3.3],, [:])
9623         AC_MSG_CHECKING([which Python to use for Pyuno])
9624         if test "$PYTHON" = ":"; then
9625             if test -z "$PYTHON_FOR_BUILD"; then
9626                 AC_MSG_RESULT([fully internal])
9627             else
9628                 AC_MSG_RESULT([internal])
9629             fi
9630             enable_python=internal
9631         else
9632             AC_MSG_RESULT([system])
9633             enable_python=system
9634         fi
9635     fi
9636     ;;
9637 internal)
9638     AC_MSG_RESULT([internal])
9639     ;;
9640 fully-internal)
9641     AC_MSG_RESULT([fully internal])
9642     enable_python=internal
9643     ;;
9644 system)
9645     AC_MSG_RESULT([system])
9646     if test "$_os" = Darwin -a -z "$PYTHON"; then
9647         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9648     fi
9649     ;;
9651     AC_MSG_ERROR([Incorrect --enable-python option])
9652     ;;
9653 esac
9655 if test $enable_python != no; then
9656     BUILD_TYPE="$BUILD_TYPE PYUNO"
9659 if test $enable_python = system; then
9660     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9661         # Fallback: Accept these in the environment, or as set above
9662         # for MacOSX.
9663         :
9664     elif test "$cross_compiling" != yes; then
9665         # Unset variables set by the above AM_PATH_PYTHON so that
9666         # we actually do check anew.
9667         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
9668         # This causes an error if no python command is found
9669         AM_PATH_PYTHON([3.3])
9670         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9671         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9672         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9673         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9674         if test -z "$PKG_CONFIG"; then
9675             PYTHON_CFLAGS="-I$python_include"
9676             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9677         elif $PKG_CONFIG --exists python-$python_version-embed; then
9678             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9679             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9680         elif $PKG_CONFIG --exists python-$python_version; then
9681             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9682             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9683         else
9684             PYTHON_CFLAGS="-I$python_include"
9685             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9686         fi
9687         FilterLibs "${PYTHON_LIBS}"
9688         PYTHON_LIBS="${filteredlibs}"
9689     else
9690         dnl How to find out the cross-compilation Python installation path?
9691         AC_MSG_CHECKING([for python version])
9692         AS_IF([test -n "$PYTHON_VERSION"],
9693               [AC_MSG_RESULT([$PYTHON_VERSION])],
9694               [AC_MSG_RESULT([not found])
9695                AC_MSG_ERROR([no usable python found])])
9696         test -n "$PYTHON_CFLAGS" && break
9697     fi
9699     dnl Check if the headers really work
9700     save_CPPFLAGS="$CPPFLAGS"
9701     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9702     AC_CHECK_HEADER(Python.h)
9703     CPPFLAGS="$save_CPPFLAGS"
9705     # let the PYTHON_FOR_BUILD match the same python installation that
9706     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9707     # better for PythonTests.
9708     PYTHON_FOR_BUILD=$PYTHON
9711 if test "$with_lxml" != no; then
9712     if test -z "$PYTHON_FOR_BUILD"; then
9713         case $build_os in
9714             cygwin)
9715                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9716                 ;;
9717             *)
9718                 if test "$cross_compiling" != yes ; then
9719                     BUILD_TYPE="$BUILD_TYPE LXML"
9720                 fi
9721                 ;;
9722         esac
9723     else
9724         AC_MSG_CHECKING([for python lxml])
9725         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9726             AC_MSG_RESULT([yes])
9727         else
9728             case $build_os in
9729                 cygwin)
9730                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9731                     ;;
9732                 *)
9733                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9734                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9735                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9736                         else
9737                             BUILD_TYPE="$BUILD_TYPE LXML"
9738                             AC_MSG_RESULT([no, using internal lxml])
9739                         fi
9740                     else
9741                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9742                     fi
9743                     ;;
9744             esac
9745         fi
9746     fi
9749 dnl By now enable_python should be "system", "internal" or "no"
9750 case $enable_python in
9751 system)
9752     SYSTEM_PYTHON=TRUE
9754     if test "x$ac_cv_header_Python_h" != "xyes"; then
9755        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9756     fi
9758     AC_LANG_PUSH(C)
9759     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9760     AC_MSG_CHECKING([for correct python library version])
9761        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9762 #include <Python.h>
9764 int main(int argc, char **argv) {
9765    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9766    else return 1;
9768        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9769     AC_LANG_POP(C)
9771     dnl FIXME Check if the Python library can be linked with, too?
9772     ;;
9774 internal)
9775     SYSTEM_PYTHON=
9776     PYTHON_VERSION_MAJOR=3
9777     PYTHON_VERSION_MINOR=8
9778     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.16
9779     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9780         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9781     fi
9782     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9783     BUILD_TYPE="$BUILD_TYPE PYTHON"
9784     if test "$OS" = LINUX -o "$OS" = WNT ; then
9785         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9786     fi
9787     # Embedded Python dies without Home set
9788     if test "$HOME" = ""; then
9789         export HOME=""
9790     fi
9791     ;;
9793     DISABLE_PYTHON=TRUE
9794     SYSTEM_PYTHON=
9795     ;;
9797     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9798     ;;
9799 esac
9801 AC_SUBST(DISABLE_PYTHON)
9802 AC_SUBST(SYSTEM_PYTHON)
9803 AC_SUBST(PYTHON_CFLAGS)
9804 AC_SUBST(PYTHON_LIBS)
9805 AC_SUBST(PYTHON_VERSION)
9806 AC_SUBST(PYTHON_VERSION_MAJOR)
9807 AC_SUBST(PYTHON_VERSION_MINOR)
9809 AC_MSG_CHECKING([whether to build LibreLogo])
9810 case "$enable_python" in
9811 no|disable)
9812     AC_MSG_RESULT([no; Python disabled])
9813     ;;
9815     if test "${enable_librelogo}" = "no"; then
9816         AC_MSG_RESULT([no])
9817     else
9818         AC_MSG_RESULT([yes])
9819         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9820         AC_DEFINE([ENABLE_LIBRELOGO],1)
9821     fi
9822     ;;
9823 esac
9824 AC_SUBST(ENABLE_LIBRELOGO)
9826 ENABLE_MARIADBC=
9827 MARIADBC_MAJOR=1
9828 MARIADBC_MINOR=0
9829 MARIADBC_MICRO=2
9830 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9831 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9832     ENABLE_MARIADBC=TRUE
9833     AC_MSG_RESULT([yes])
9834     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9835 else
9836     AC_MSG_RESULT([no])
9838 AC_SUBST(ENABLE_MARIADBC)
9839 AC_SUBST(MARIADBC_MAJOR)
9840 AC_SUBST(MARIADBC_MINOR)
9841 AC_SUBST(MARIADBC_MICRO)
9843 if test "$ENABLE_MARIADBC" = "TRUE"; then
9844     dnl ===================================================================
9845     dnl Check for system MariaDB
9846     dnl ===================================================================
9847     AC_MSG_CHECKING([which MariaDB to use])
9848     if test "$with_system_mariadb" = "yes"; then
9849         AC_MSG_RESULT([external])
9850         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9851         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9852         if test -z "$MARIADBCONFIG"; then
9853             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9854             if test -z "$MARIADBCONFIG"; then
9855                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9856                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9857             fi
9858         fi
9859         AC_MSG_CHECKING([MariaDB version])
9860         MARIADB_VERSION=`$MARIADBCONFIG --version`
9861         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9862         if test "$MARIADB_MAJOR" -ge "5"; then
9863             AC_MSG_RESULT([OK])
9864         else
9865             AC_MSG_ERROR([too old, use 5.0.x or later])
9866         fi
9867         AC_MSG_CHECKING([for MariaDB Client library])
9868         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9869         if test "$COM_IS_CLANG" = TRUE; then
9870             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9871         fi
9872         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9873         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9874         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9875         dnl linux32:
9876         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9877             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9878             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9879                 | sed -e 's|/lib64/|/lib/|')
9880         fi
9881         FilterLibs "${MARIADB_LIBS}"
9882         MARIADB_LIBS="${filteredlibs}"
9883         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9884         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9885         if test "$enable_bundle_mariadb" = "yes"; then
9886             AC_MSG_RESULT([yes])
9887             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9888             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9890 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9892 /g' | grep -E '(mysqlclient|mariadb)')
9893             if test "$_os" = "Darwin"; then
9894                 LIBMARIADB=${LIBMARIADB}.dylib
9895             elif test "$_os" = "WINNT"; then
9896                 LIBMARIADB=${LIBMARIADB}.dll
9897             else
9898                 LIBMARIADB=${LIBMARIADB}.so
9899             fi
9900             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9901             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9902             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9903                 AC_MSG_RESULT([found.])
9904                 PathFormat "$LIBMARIADB_PATH"
9905                 LIBMARIADB_PATH="$formatted_path"
9906             else
9907                 AC_MSG_ERROR([not found.])
9908             fi
9909         else
9910             AC_MSG_RESULT([no])
9911             BUNDLE_MARIADB_CONNECTOR_C=
9912         fi
9913     else
9914         AC_MSG_RESULT([internal])
9915         SYSTEM_MARIADB_CONNECTOR_C=
9916         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9917         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9918         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9919     fi
9921     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9922     AC_SUBST(MARIADB_CFLAGS)
9923     AC_SUBST(MARIADB_LIBS)
9924     AC_SUBST(LIBMARIADB)
9925     AC_SUBST(LIBMARIADB_PATH)
9926     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9929 dnl ===================================================================
9930 dnl Check for system hsqldb
9931 dnl ===================================================================
9932 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9933     HSQLDB_USE_JDBC_4_1=
9934     AC_MSG_CHECKING([which hsqldb to use])
9935     if test "$with_system_hsqldb" = "yes"; then
9936         AC_MSG_RESULT([external])
9937         SYSTEM_HSQLDB=TRUE
9938         if test -z $HSQLDB_JAR; then
9939             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9940         fi
9941         if ! test -f $HSQLDB_JAR; then
9942                AC_MSG_ERROR(hsqldb.jar not found.)
9943         fi
9944         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9945         export HSQLDB_JAR
9946         if $PERL -e \
9947            'use Archive::Zip;
9948             my $file = "$ENV{'HSQLDB_JAR'}";
9949             my $zip = Archive::Zip->new( $file );
9950             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9951             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9952             {
9953                 push @l, split(/\n/, $mf);
9954                 foreach my $line (@l)
9955                 {
9956                     if ($line =~ m/Specification-Version:/)
9957                     {
9958                         ($t, $version) = split (/:/,$line);
9959                         $version =~ s/^\s//;
9960                         ($a, $b, $c, $d) = split (/\./,$version);
9961                         if ($c == "0" && $d > "8")
9962                         {
9963                             exit 0;
9964                         }
9965                         else
9966                         {
9967                             exit 1;
9968                         }
9969                     }
9970                 }
9971             }
9972             else
9973             {
9974                 exit 1;
9975             }'; then
9976             AC_MSG_RESULT([yes])
9977         else
9978             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9979         fi
9980     else
9981         AC_MSG_RESULT([internal])
9982         SYSTEM_HSQLDB=
9983         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9984         NEED_ANT=TRUE
9985         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9986         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9987         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9988             AC_MSG_RESULT([yes])
9989             HSQLDB_USE_JDBC_4_1=TRUE
9990         else
9991             AC_MSG_RESULT([no])
9992         fi
9993     fi
9994 else
9995     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9996         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9997     fi
9999 AC_SUBST(SYSTEM_HSQLDB)
10000 AC_SUBST(HSQLDB_JAR)
10001 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10003 dnl ===================================================================
10004 dnl Check for PostgreSQL stuff
10005 dnl ===================================================================
10006 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10007 if test "x$enable_postgresql_sdbc" != "xno"; then
10008     AC_MSG_RESULT([yes])
10009     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10011     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10012         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10013     fi
10014     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10015         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10016     fi
10018     postgres_interface=""
10019     if test "$with_system_postgresql" = "yes"; then
10020         postgres_interface="external PostgreSQL"
10021         SYSTEM_POSTGRESQL=TRUE
10022         if test "$_os" = Darwin; then
10023             supp_path=''
10024             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10025                 pg_supp_path="$P_SEP$d$pg_supp_path"
10026             done
10027         fi
10028         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10029         if test -n "$PGCONFIG"; then
10030             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10031             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10032         else
10033             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10034               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10035               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10036             ],[
10037               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10038             ])
10039         fi
10040         FilterLibs "${POSTGRESQL_LIB}"
10041         POSTGRESQL_LIB="${filteredlibs}"
10042     else
10043         # if/when anything else than PostgreSQL uses Kerberos,
10044         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10045         WITH_KRB5=
10046         WITH_GSSAPI=
10047         case "$_os" in
10048         Darwin)
10049             # macOS has system MIT Kerberos 5 since 10.4
10050             if test "$with_krb5" != "no"; then
10051                 WITH_KRB5=TRUE
10052                 save_LIBS=$LIBS
10053                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10054                 # that the libraries where these functions are located on macOS will change, is it?
10055                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10056                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10057                 KRB5_LIBS=$LIBS
10058                 LIBS=$save_LIBS
10059                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10060                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10061                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10062                 LIBS=$save_LIBS
10063             fi
10064             if test "$with_gssapi" != "no"; then
10065                 WITH_GSSAPI=TRUE
10066                 save_LIBS=$LIBS
10067                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10068                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10069                 GSSAPI_LIBS=$LIBS
10070                 LIBS=$save_LIBS
10071             fi
10072             ;;
10073         WINNT)
10074             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10075                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10076             fi
10077             ;;
10078         Linux|GNU|*BSD|DragonFly)
10079             if test "$with_krb5" != "no"; then
10080                 WITH_KRB5=TRUE
10081                 save_LIBS=$LIBS
10082                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10083                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10084                 KRB5_LIBS=$LIBS
10085                 LIBS=$save_LIBS
10086                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10087                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10088                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10089                 LIBS=$save_LIBS
10090             fi
10091             if test "$with_gssapi" != "no"; then
10092                 WITH_GSSAPI=TRUE
10093                 save_LIBS=$LIBS
10094                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10095                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10096                 GSSAPI_LIBS=$LIBS
10097                 LIBS=$save_LIBS
10098             fi
10099             ;;
10100         *)
10101             if test "$with_krb5" = "yes"; then
10102                 WITH_KRB5=TRUE
10103                 save_LIBS=$LIBS
10104                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10105                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10106                 KRB5_LIBS=$LIBS
10107                 LIBS=$save_LIBS
10108                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10109                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10110                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10111                 LIBS=$save_LIBS
10112             fi
10113             if test "$with_gssapi" = "yes"; then
10114                 WITH_GSSAPI=TRUE
10115                 save_LIBS=$LIBS
10116                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10117                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10118                 LIBS=$save_LIBS
10119                 GSSAPI_LIBS=$LIBS
10120             fi
10121         esac
10123         if test -n "$with_libpq_path"; then
10124             SYSTEM_POSTGRESQL=TRUE
10125             postgres_interface="external libpq"
10126             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10127             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10128         else
10129             SYSTEM_POSTGRESQL=
10130             postgres_interface="internal"
10131             POSTGRESQL_LIB=""
10132             POSTGRESQL_INC="%OVERRIDE_ME%"
10133             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10134         fi
10135     fi
10137     AC_MSG_CHECKING([PostgreSQL C interface])
10138     AC_MSG_RESULT([$postgres_interface])
10140     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10141         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10142         save_CFLAGS=$CFLAGS
10143         save_CPPFLAGS=$CPPFLAGS
10144         save_LIBS=$LIBS
10145         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10146         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10147         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10148         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10149             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10150         CFLAGS=$save_CFLAGS
10151         CPPFLAGS=$save_CPPFLAGS
10152         LIBS=$save_LIBS
10153     fi
10154     BUILD_POSTGRESQL_SDBC=TRUE
10155 else
10156     AC_MSG_RESULT([no])
10158 AC_SUBST(WITH_KRB5)
10159 AC_SUBST(WITH_GSSAPI)
10160 AC_SUBST(GSSAPI_LIBS)
10161 AC_SUBST(KRB5_LIBS)
10162 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10163 AC_SUBST(SYSTEM_POSTGRESQL)
10164 AC_SUBST(POSTGRESQL_INC)
10165 AC_SUBST(POSTGRESQL_LIB)
10167 dnl ===================================================================
10168 dnl Check for Firebird stuff
10169 dnl ===================================================================
10170 ENABLE_FIREBIRD_SDBC=
10171 if test "$enable_firebird_sdbc" = "yes" ; then
10172     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10174     dnl ===================================================================
10175     dnl Check for system Firebird
10176     dnl ===================================================================
10177     AC_MSG_CHECKING([which Firebird to use])
10178     if test "$with_system_firebird" = "yes"; then
10179         AC_MSG_RESULT([external])
10180         SYSTEM_FIREBIRD=TRUE
10181         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10182         if test -z "$FIREBIRDCONFIG"; then
10183             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10184             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10185                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10186             ])
10187             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10188         else
10189             AC_MSG_NOTICE([fb_config found])
10190             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10191             AC_MSG_CHECKING([for Firebird Client library])
10192             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10193             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10194             FilterLibs "${FIREBIRD_LIBS}"
10195             FIREBIRD_LIBS="${filteredlibs}"
10196         fi
10197         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10198         AC_MSG_CHECKING([Firebird version])
10199         if test -n "${FIREBIRD_VERSION}"; then
10200             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10201             if test "$FIREBIRD_MAJOR" -ge "3"; then
10202                 AC_MSG_RESULT([OK])
10203             else
10204                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10205             fi
10206         else
10207             save_CFLAGS="${CFLAGS}"
10208             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10209             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10210 #if defined(FB_API_VER) && FB_API_VER == 30
10211 int fb_api_is_30(void) { return 0; }
10212 #else
10213 #error "Wrong Firebird API version"
10214 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10215             CFLAGS="$save_CFLAGS"
10216         fi
10217         ENABLE_FIREBIRD_SDBC=TRUE
10218         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10219     elif test "$enable_database_connectivity" = no; then
10220         AC_MSG_RESULT([none])
10221     elif test "$cross_compiling" = "yes"; then
10222         AC_MSG_RESULT([none])
10223     else
10224         dnl Embedded Firebird has version 3.0
10225         dnl We need libatomic_ops for any non X86/X64 system
10226         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10227             dnl ===================================================================
10228             dnl Check for system libatomic_ops
10229             dnl ===================================================================
10230             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10231             if test "$with_system_libatomic_ops" = "yes"; then
10232                 SYSTEM_LIBATOMIC_OPS=TRUE
10233                 AC_CHECK_HEADERS(atomic_ops.h, [],
10234                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10235             else
10236                 SYSTEM_LIBATOMIC_OPS=
10237                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10238                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10239                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10240             fi
10241         fi
10243         AC_MSG_RESULT([internal])
10244         SYSTEM_FIREBIRD=
10245         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10246         FIREBIRD_LIBS="-lfbclient"
10248         if test "$with_system_libtommath" = "yes"; then
10249             SYSTEM_LIBTOMMATH=TRUE
10250             dnl check for tommath presence
10251             save_LIBS=$LIBS
10252             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10253             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10254             LIBS=$save_LIBS
10255         else
10256             SYSTEM_LIBTOMMATH=
10257             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10258             LIBTOMMATH_LIBS="-ltommath"
10259             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10260         fi
10262         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10263         ENABLE_FIREBIRD_SDBC=TRUE
10264         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10265     fi
10267 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10268 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10269 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10270 AC_SUBST(LIBATOMIC_OPS_LIBS)
10271 AC_SUBST(SYSTEM_FIREBIRD)
10272 AC_SUBST(FIREBIRD_CFLAGS)
10273 AC_SUBST(FIREBIRD_LIBS)
10274 AC_SUBST(SYSTEM_LIBTOMMATH)
10275 AC_SUBST(LIBTOMMATH_CFLAGS)
10276 AC_SUBST(LIBTOMMATH_LIBS)
10278 dnl ===================================================================
10279 dnl Check for system curl
10280 dnl ===================================================================
10281 AC_MSG_CHECKING([which libcurl to use])
10282 if test "$with_system_curl" = "auto"; then
10283     with_system_curl="$with_system_libs"
10286 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10287     AC_MSG_RESULT([external])
10288     SYSTEM_CURL=TRUE
10290     PKG_CHECK_MODULES(CURL, libcurl >= 7.68.0)
10292     ENABLE_CURL=TRUE
10293 elif test "$enable_curl" = "no"; then
10294     AC_MSG_RESULT([none])
10295 else
10296     AC_MSG_RESULT([internal])
10297     SYSTEM_CURL=
10298     BUILD_TYPE="$BUILD_TYPE CURL"
10299     ENABLE_CURL=TRUE
10301 AC_SUBST(SYSTEM_CURL)
10302 AC_SUBST(CURL_CFLAGS)
10303 AC_SUBST(CURL_LIBS)
10304 AC_SUBST(ENABLE_CURL)
10306 dnl ===================================================================
10307 dnl Check for system boost
10308 dnl ===================================================================
10309 AC_MSG_CHECKING([which boost to use])
10310 if test "$with_system_boost" = "yes"; then
10311     AC_MSG_RESULT([external])
10312     SYSTEM_BOOST=TRUE
10313     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10314     AX_BOOST_DATE_TIME
10315     AX_BOOST_FILESYSTEM
10316     AX_BOOST_IOSTREAMS
10317     AX_BOOST_LOCALE
10318     AC_LANG_PUSH([C++])
10319     save_CXXFLAGS=$CXXFLAGS
10320     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10321     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10322        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10323     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10324        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10325     CXXFLAGS=$save_CXXFLAGS
10326     AC_LANG_POP([C++])
10327     # this is in m4/ax_boost_base.m4
10328     FilterLibs "${BOOST_LDFLAGS}"
10329     BOOST_LDFLAGS="${filteredlibs}"
10330 else
10331     AC_MSG_RESULT([internal])
10332     BUILD_TYPE="$BUILD_TYPE BOOST"
10333     SYSTEM_BOOST=
10334     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10335         # use warning-suppressing wrapper headers
10336         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10337     else
10338         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10339     fi
10341 AC_SUBST(SYSTEM_BOOST)
10343 dnl ===================================================================
10344 dnl Check for system mdds
10345 dnl ===================================================================
10346 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10348 dnl ===================================================================
10349 dnl Check for system glm
10350 dnl ===================================================================
10351 AC_MSG_CHECKING([which glm to use])
10352 if test "$with_system_glm" = "yes"; then
10353     AC_MSG_RESULT([external])
10354     SYSTEM_GLM=TRUE
10355     AC_LANG_PUSH([C++])
10356     AC_CHECK_HEADER([glm/glm.hpp], [],
10357        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10358     AC_LANG_POP([C++])
10359 else
10360     AC_MSG_RESULT([internal])
10361     BUILD_TYPE="$BUILD_TYPE GLM"
10362     SYSTEM_GLM=
10363     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10365 AC_SUBST([GLM_CFLAGS])
10366 AC_SUBST([SYSTEM_GLM])
10368 dnl ===================================================================
10369 dnl Check for system odbc
10370 dnl ===================================================================
10371 AC_MSG_CHECKING([which odbc headers to use])
10372 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
10373     AC_MSG_RESULT([external])
10374     SYSTEM_ODBC_HEADERS=TRUE
10376     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10377         save_CPPFLAGS=$CPPFLAGS
10378         find_winsdk
10379         PathFormat "$winsdktest"
10380         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"
10381         AC_CHECK_HEADER(sqlext.h, [],
10382             [AC_MSG_ERROR(odbc not found. install odbc)],
10383             [#include <windows.h>])
10384         CPPFLAGS=$save_CPPFLAGS
10385     else
10386         AC_CHECK_HEADER(sqlext.h, [],
10387             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10388     fi
10389 elif test "$enable_database_connectivity" = no; then
10390     AC_MSG_RESULT([none])
10391 else
10392     AC_MSG_RESULT([internal])
10393     SYSTEM_ODBC_HEADERS=
10394     BUILD_TYPE="$BUILD_TYPE IODBC"
10396 AC_SUBST(SYSTEM_ODBC_HEADERS)
10398 dnl ===================================================================
10399 dnl Check for system NSS
10400 dnl ===================================================================
10401 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10402     case "$_os" in
10403         Linux)
10404             libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,,TRUE)
10405         ;;
10406         *)
10407             libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10408         ;;
10409     esac
10410     AC_DEFINE(HAVE_FEATURE_NSS)
10411     ENABLE_NSS=TRUE
10412 elif test $_os != iOS ; then
10413     with_tls=openssl
10415 AC_SUBST(ENABLE_NSS)
10417 dnl ===================================================================
10418 dnl Enable LDAP support
10419 dnl ===================================================================
10421 if test "$test_openldap" = yes; then
10422     AC_MSG_CHECKING([whether to enable LDAP support])
10423     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10424         AC_MSG_RESULT([yes])
10425         ENABLE_LDAP=TRUE
10426     else
10427         if test "$enable_ldap" != "yes"; then
10428             AC_MSG_RESULT([no])
10429         else
10430             AC_MSG_RESULT([no (needs NSS or system openldap)])
10431         fi
10432     fi
10434 dnl ===================================================================
10435 dnl Check for system openldap
10436 dnl ===================================================================
10438     if test "$ENABLE_LDAP" = TRUE; then
10439         AC_MSG_CHECKING([which openldap library to use])
10440         if test "$with_system_openldap" = yes; then
10441             AC_MSG_RESULT([external])
10442             SYSTEM_OPENLDAP=TRUE
10443             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10444             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10445             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10446         else
10447             AC_MSG_RESULT([internal])
10448             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10449         fi
10450     fi
10453 AC_SUBST(ENABLE_LDAP)
10454 AC_SUBST(SYSTEM_OPENLDAP)
10456 dnl ===================================================================
10457 dnl Check for TLS/SSL and cryptographic implementation to use
10458 dnl ===================================================================
10459 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10460 if test -n "$with_tls"; then
10461     case $with_tls in
10462     openssl)
10463         AC_DEFINE(USE_TLS_OPENSSL)
10464         TLS=OPENSSL
10465         AC_MSG_RESULT([$TLS])
10467         if test "$enable_openssl" != "yes"; then
10468             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10469         fi
10471         # warn that OpenSSL has been selected but not all TLS code has this option
10472         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10473         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10474         ;;
10475     nss)
10476         AC_DEFINE(USE_TLS_NSS)
10477         TLS=NSS
10478         AC_MSG_RESULT([$TLS])
10479         ;;
10480     no)
10481         AC_MSG_RESULT([none])
10482         AC_MSG_WARN([Skipping TLS/SSL])
10483         ;;
10484     *)
10485         AC_MSG_RESULT([])
10486         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10487 openssl - OpenSSL
10488 nss - Mozilla's Network Security Services (NSS)
10489     ])
10490         ;;
10491     esac
10492 else
10493     # default to using NSS, it results in smaller oox lib
10494     AC_DEFINE(USE_TLS_NSS)
10495     TLS=NSS
10496     AC_MSG_RESULT([$TLS])
10498 AC_SUBST(TLS)
10500 dnl ===================================================================
10501 dnl Check for system sane
10502 dnl ===================================================================
10503 AC_MSG_CHECKING([which sane header to use])
10504 if test "$with_system_sane" = "yes"; then
10505     AC_MSG_RESULT([external])
10506     AC_CHECK_HEADER(sane/sane.h, [],
10507       [AC_MSG_ERROR(sane not found. install sane)], [])
10508 else
10509     AC_MSG_RESULT([internal])
10510     BUILD_TYPE="$BUILD_TYPE SANE"
10513 dnl ===================================================================
10514 dnl Check for system icu
10515 dnl ===================================================================
10516 SYSTEM_GENBRK=
10517 SYSTEM_GENCCODE=
10518 SYSTEM_GENCMN=
10520 ICU_MAJOR=70
10521 ICU_MINOR=1
10522 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10523 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10524 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10525 AC_MSG_CHECKING([which icu to use])
10526 if test "$with_system_icu" = "yes"; then
10527     AC_MSG_RESULT([external])
10528     SYSTEM_ICU=TRUE
10529     AC_LANG_PUSH([C++])
10530     AC_MSG_CHECKING([for unicode/rbbi.h])
10531     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10532     AC_LANG_POP([C++])
10534     if test "$cross_compiling" != "yes"; then
10535         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10536         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10537         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10538         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10539     fi
10541     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10542         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10543         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10544         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10545         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10546         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10547             AC_MSG_RESULT([yes])
10548         else
10549             AC_MSG_RESULT([no])
10550             if test "$with_system_icu_for_build" != "force"; then
10551                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10552 You can use --with-system-icu-for-build=force to use it anyway.])
10553             fi
10554         fi
10555     fi
10557     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10558         # using the system icu tools can lead to version confusion, use the
10559         # ones from the build environment when cross-compiling
10560         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10561         if test -z "$SYSTEM_GENBRK"; then
10562             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10563         fi
10564         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10565         if test -z "$SYSTEM_GENCCODE"; then
10566             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10567         fi
10568         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10569         if test -z "$SYSTEM_GENCMN"; then
10570             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10571         fi
10572         if test "$ICU_MAJOR" -ge "49"; then
10573             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10574             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10575             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10576         else
10577             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10578             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10579             ICU_RECLASSIFIED_HEBREW_LETTER=
10580         fi
10581     fi
10583     if test "$cross_compiling" = "yes"; then
10584         if test "$ICU_MAJOR" -ge "50"; then
10585             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10586             ICU_MINOR=""
10587         fi
10588     fi
10589 else
10590     AC_MSG_RESULT([internal])
10591     SYSTEM_ICU=
10592     BUILD_TYPE="$BUILD_TYPE ICU"
10593     # surprisingly set these only for "internal" (to be used by various other
10594     # external libs): the system icu-config is quite unhelpful and spits out
10595     # dozens of weird flags and also default path -I/usr/include
10596     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10597     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10599 if test "$ICU_MAJOR" -ge "59"; then
10600     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10601     # with -std=c++11 but not all external libraries can be built with that,
10602     # for those use a bit-compatible typedef uint16_t UChar; see
10603     # icu/source/common/unicode/umachine.h
10604     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10605 else
10606     ICU_UCHAR_TYPE=""
10608 AC_SUBST(SYSTEM_ICU)
10609 AC_SUBST(SYSTEM_GENBRK)
10610 AC_SUBST(SYSTEM_GENCCODE)
10611 AC_SUBST(SYSTEM_GENCMN)
10612 AC_SUBST(ICU_MAJOR)
10613 AC_SUBST(ICU_MINOR)
10614 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10615 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10616 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10617 AC_SUBST(ICU_CFLAGS)
10618 AC_SUBST(ICU_LIBS)
10619 AC_SUBST(ICU_UCHAR_TYPE)
10621 dnl ==================================================================
10622 dnl Breakpad
10623 dnl ==================================================================
10624 DEFAULT_CRASHDUMP_VALUE="true"
10625 AC_MSG_CHECKING([whether to enable breakpad])
10626 if test "$enable_breakpad" != yes; then
10627     AC_MSG_RESULT([no])
10628 else
10629     AC_MSG_RESULT([yes])
10630     ENABLE_BREAKPAD="TRUE"
10631     AC_DEFINE(ENABLE_BREAKPAD)
10632     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10633     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10635     AC_MSG_CHECKING([for disable crash dump])
10636     if test "$enable_crashdump" = no; then
10637         DEFAULT_CRASHDUMP_VALUE="false"
10638         AC_MSG_RESULT([yes])
10639     else
10640        AC_MSG_RESULT([no])
10641     fi
10643     AC_MSG_CHECKING([for crashreport config])
10644     if test "$with_symbol_config" = "no"; then
10645         BREAKPAD_SYMBOL_CONFIG="invalid"
10646         AC_MSG_RESULT([no])
10647     else
10648         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10649         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10650         AC_MSG_RESULT([yes])
10651     fi
10652     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10654 AC_SUBST(ENABLE_BREAKPAD)
10655 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10657 dnl ==================================================================
10658 dnl libfuzzer
10659 dnl ==================================================================
10660 AC_MSG_CHECKING([whether to enable fuzzers])
10661 if test "$enable_fuzzers" != yes; then
10662     AC_MSG_RESULT([no])
10663 else
10664     if test -z $LIB_FUZZING_ENGINE; then
10665       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10666     fi
10667     AC_MSG_RESULT([yes])
10668     ENABLE_FUZZERS="TRUE"
10669     AC_DEFINE([ENABLE_FUZZERS],1)
10670     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10672 AC_SUBST(LIB_FUZZING_ENGINE)
10673 AC_SUBST(ENABLE_FUZZERS)
10675 dnl ===================================================================
10676 dnl Orcus
10677 dnl ===================================================================
10678 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10679 if test "$with_system_orcus" != "yes"; then
10680     if test "$SYSTEM_BOOST" = "TRUE"; then
10681         dnl Link with Boost.System
10682         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10683         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10684         dnl in documentation has no effect.
10685         AX_BOOST_SYSTEM
10686     fi
10688 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10689 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10690 AC_SUBST([BOOST_SYSTEM_LIB])
10691 AC_SUBST(SYSTEM_LIBORCUS)
10693 dnl ===================================================================
10694 dnl HarfBuzz
10695 dnl ===================================================================
10696 case "$_os" in
10697     Linux)
10698         libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10699                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10700                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"],
10701                          TRUE)
10702         libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10703                                  ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10704                                  ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"],
10705                                  TRUE)
10706         ;;
10707     *)
10708         libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10709                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10710                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10711         libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10712                                  ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10713                                  ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10714         ;;
10715 esac
10718 if test "$COM" = "MSC"; then # override the above
10719     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10720     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10723 if test "$with_system_harfbuzz" = "yes"; then
10724     if test "$with_system_graphite" = "no"; then
10725         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10726     fi
10727     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10728     save_LIBS="$LIBS"
10729     save_CFLAGS="$CFLAGS"
10730     LIBS="$LIBS $HARFBUZZ_LIBS"
10731     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10732     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10733     LIBS="$save_LIBS"
10734     CFLAGS="$save_CFLAGS"
10735 else
10736     if test "$with_system_graphite" = "yes"; then
10737         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10738     fi
10741 if test "$USING_X11" = TRUE; then
10742     AC_PATH_X
10743     AC_PATH_XTRA
10744     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10746     if test -z "$x_includes"; then
10747         x_includes="default_x_includes"
10748     fi
10749     if test -z "$x_libraries"; then
10750         x_libraries="default_x_libraries"
10751     fi
10752     CFLAGS="$CFLAGS $X_CFLAGS"
10753     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10754     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10755 else
10756     x_includes="no_x_includes"
10757     x_libraries="no_x_libraries"
10760 if test "$USING_X11" = TRUE; then
10761     dnl ===================================================================
10762     dnl Check for extension headers
10763     dnl ===================================================================
10764     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10765      [#include <X11/extensions/shape.h>])
10767     # vcl needs ICE and SM
10768     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10769     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10770         [AC_MSG_ERROR(ICE library not found)])
10771     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10772     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10773         [AC_MSG_ERROR(SM library not found)])
10776 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10777     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10778     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10781 dnl ===================================================================
10782 dnl Check for system Xrender
10783 dnl ===================================================================
10784 AC_MSG_CHECKING([whether to use Xrender])
10785 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10786     AC_MSG_RESULT([yes])
10787     PKG_CHECK_MODULES(XRENDER, xrender)
10788     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10789     FilterLibs "${XRENDER_LIBS}"
10790     XRENDER_LIBS="${filteredlibs}"
10791     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10792       [AC_MSG_ERROR(libXrender not found or functional)], [])
10793     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10794       [AC_MSG_ERROR(Xrender not found. install X)], [])
10795 else
10796     AC_MSG_RESULT([no])
10798 AC_SUBST(XRENDER_CFLAGS)
10799 AC_SUBST(XRENDER_LIBS)
10801 dnl ===================================================================
10802 dnl Check for XRandr
10803 dnl ===================================================================
10804 AC_MSG_CHECKING([whether to enable RandR support])
10805 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10806     AC_MSG_RESULT([yes])
10807     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10808     if test "$ENABLE_RANDR" != "TRUE"; then
10809         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10810                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10811         XRANDR_CFLAGS=" "
10812         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10813           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10814         XRANDR_LIBS="-lXrandr "
10815         ENABLE_RANDR="TRUE"
10816     fi
10817     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10818     FilterLibs "${XRANDR_LIBS}"
10819     XRANDR_LIBS="${filteredlibs}"
10820 else
10821     ENABLE_RANDR=""
10822     AC_MSG_RESULT([no])
10824 AC_SUBST(XRANDR_CFLAGS)
10825 AC_SUBST(XRANDR_LIBS)
10826 AC_SUBST(ENABLE_RANDR)
10828 if test "$test_webdav" = yes; then
10829     if test -z "$with_webdav"; then
10830         WITH_WEBDAV=curl
10831     else
10832         WITH_WEBDAV="$with_webdav"
10833     fi
10836 AC_MSG_CHECKING([for webdav library])
10837 case "$WITH_WEBDAV" in
10838 curl)
10839     AC_MSG_RESULT([curl])
10840     # curl is already mandatory (almost) and checked elsewhere
10841     if test "$enable_curl" = "no"; then
10842         AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10843     fi
10844     ;;
10845 serf)
10846     AC_MSG_RESULT([serf])
10847     # Check for system apr-util
10848     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10849                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10850                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10851     if test "$COM" = "MSC"; then
10852         APR_LIB_DIR="LibR"
10853         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10854         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10855     fi
10857     # Check for system serf
10858     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10859     ;;
10860 neon)
10861     AC_MSG_RESULT([neon])
10862     # Check for system neon
10863     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10864     if test "$with_system_neon" = "yes"; then
10865         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10866     else
10867         NEON_VERSION=0312
10868     fi
10869     AC_SUBST(NEON_VERSION)
10870     ;;
10872     AC_MSG_RESULT([none, disabled])
10873     WITH_WEBDAV=""
10874     ;;
10875 esac
10876 AC_SUBST(WITH_WEBDAV)
10878 dnl ===================================================================
10879 dnl Check for disabling cve_tests
10880 dnl ===================================================================
10881 AC_MSG_CHECKING([whether to execute CVE tests])
10882 # If not explicitly enabled or disabled, default
10883 if test -z "$enable_cve_tests"; then
10884     case "$OS" in
10885     WNT)
10886         # Default cves off for Windows with its wild and wonderful
10887         # variety of AV software kicking in and panicking
10888         enable_cve_tests=no
10889         ;;
10890     *)
10891         # otherwise yes
10892         enable_cve_tests=yes
10893         ;;
10894     esac
10896 if test "$enable_cve_tests" = "no"; then
10897     AC_MSG_RESULT([no])
10898     DISABLE_CVE_TESTS=TRUE
10899     AC_SUBST(DISABLE_CVE_TESTS)
10900 else
10901     AC_MSG_RESULT([yes])
10904 dnl ===================================================================
10905 dnl Check for enabling chart XShape tests
10906 dnl ===================================================================
10907 AC_MSG_CHECKING([whether to execute chart XShape tests])
10908 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10909     AC_MSG_RESULT([yes])
10910     ENABLE_CHART_TESTS=TRUE
10911     AC_SUBST(ENABLE_CHART_TESTS)
10912 else
10913     AC_MSG_RESULT([no])
10916 dnl ===================================================================
10917 dnl Check for system openssl
10918 dnl ===================================================================
10919 ENABLE_OPENSSL=
10920 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10921 if test "$enable_openssl" = "yes"; then
10922     AC_MSG_RESULT([no])
10923     ENABLE_OPENSSL=TRUE
10924     if test "$_os" = Darwin ; then
10925         # OpenSSL is deprecated when building for 10.7 or later.
10926         #
10927         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10928         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10930         with_system_openssl=no
10931         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10932     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10933             && test "$with_system_openssl" != "no"; then
10934         with_system_openssl=yes
10935         SYSTEM_OPENSSL=TRUE
10936         OPENSSL_CFLAGS=
10937         OPENSSL_LIBS="-lssl -lcrypto"
10938     else
10939         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10940     fi
10941     if test "$with_system_openssl" = "yes"; then
10942         AC_MSG_CHECKING([whether openssl supports SHA512])
10943         AC_LANG_PUSH([C])
10944         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10945             SHA512_CTX context;
10946 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10947         AC_LANG_POP(C)
10948     fi
10949 else
10950     AC_MSG_RESULT([yes])
10952     # warn that although OpenSSL is disabled, system libraries may depend on it
10953     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10954     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10957 AC_SUBST([ENABLE_OPENSSL])
10959 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10960     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10961         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10962         enable_cipher_openssl_backend=no
10963     else
10964         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10965     fi
10967 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10968 ENABLE_CIPHER_OPENSSL_BACKEND=
10969 if test "$enable_cipher_openssl_backend" = yes; then
10970     AC_MSG_RESULT([yes])
10971     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10972 else
10973     AC_MSG_RESULT([no])
10975 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10977 dnl ===================================================================
10978 dnl Select the crypto backends used by LO
10979 dnl ===================================================================
10981 if test "$build_crypto" = yes; then
10982     if test "$OS" = WNT; then
10983         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10984         AC_DEFINE([USE_CRYPTO_MSCAPI])
10985     elif test "$ENABLE_NSS" = TRUE; then
10986         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10987         AC_DEFINE([USE_CRYPTO_NSS])
10988     fi
10991 dnl ===================================================================
10992 dnl Check for building gnutls
10993 dnl ===================================================================
10994 AC_MSG_CHECKING([whether to use gnutls])
10995 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10996     AC_MSG_RESULT([yes])
10997     AM_PATH_LIBGCRYPT()
10998     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10999         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
11000                       available in the system to use as replacement.]]))
11001     FilterLibs "${LIBGCRYPT_LIBS}"
11002     LIBGCRYPT_LIBS="${filteredlibs}"
11003 else
11004     AC_MSG_RESULT([no])
11007 AC_SUBST([LIBGCRYPT_CFLAGS])
11008 AC_SUBST([LIBGCRYPT_LIBS])
11010 dnl ===================================================================
11011 dnl Check for system redland
11012 dnl ===================================================================
11013 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11014 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11015 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11016 if test "$with_system_redland" = "yes"; then
11017     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11018             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11019 else
11020     RAPTOR_MAJOR="0"
11021     RASQAL_MAJOR="3"
11022     REDLAND_MAJOR="0"
11024 AC_SUBST(RAPTOR_MAJOR)
11025 AC_SUBST(RASQAL_MAJOR)
11026 AC_SUBST(REDLAND_MAJOR)
11028 dnl ===================================================================
11029 dnl Check for system hunspell
11030 dnl ===================================================================
11031 AC_MSG_CHECKING([which libhunspell to use])
11032 if test "$with_system_hunspell" = "yes"; then
11033     AC_MSG_RESULT([external])
11034     SYSTEM_HUNSPELL=TRUE
11035     AC_LANG_PUSH([C++])
11036     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11037     if test "$HUNSPELL_PC" != "TRUE"; then
11038         AC_CHECK_HEADER(hunspell.hxx, [],
11039             [
11040             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11041             [AC_MSG_ERROR(hunspell headers not found.)], [])
11042             ], [])
11043         AC_CHECK_LIB([hunspell], [main], [:],
11044            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11045         HUNSPELL_LIBS=-lhunspell
11046     fi
11047     AC_LANG_POP([C++])
11048     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11049     FilterLibs "${HUNSPELL_LIBS}"
11050     HUNSPELL_LIBS="${filteredlibs}"
11051 else
11052     AC_MSG_RESULT([internal])
11053     SYSTEM_HUNSPELL=
11054     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11055     if test "$COM" = "MSC"; then
11056         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11057     else
11058         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11059     fi
11060     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11062 AC_SUBST(SYSTEM_HUNSPELL)
11063 AC_SUBST(HUNSPELL_CFLAGS)
11064 AC_SUBST(HUNSPELL_LIBS)
11066 dnl ===================================================================
11067 dnl Check for system zxing
11068 dnl ===================================================================
11069 AC_MSG_CHECKING([whether to use zxing])
11070 if test "$enable_zxing" = "no"; then
11071     AC_MSG_RESULT([no])
11072     ENABLE_ZXING=
11073     SYSTEM_ZXING=
11074 else
11075     AC_MSG_RESULT([yes])
11076     ENABLE_ZXING=TRUE
11077     AC_MSG_CHECKING([which libzxing to use])
11078     if test "$with_system_zxing" = "yes"; then
11079         AC_MSG_RESULT([external])
11080         SYSTEM_ZXING=TRUE
11081         ZXING_CFLAGS=
11082         AC_LANG_PUSH([C++])
11083         save_CXXFLAGS=$CXXFLAGS
11084         save_IFS=$IFS
11085         IFS=$P_SEP
11086         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11087             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11088             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11089             dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11090             dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11091             dnl unsetting IFS."):
11092             IFS=$save_IFS
11093             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11094             dnl ignore them here:
11095             if test -z "$i"; then
11096                 continue
11097             fi
11098             dnl TODO: White space in $i would cause problems:
11099             CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11100             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11101                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11102         done
11103         CXXFLAGS=$save_CXXFLAGS
11104         if test -z "$ZXING_CFLAGS"; then
11105             AC_MSG_ERROR(zxing headers not found.)
11106         fi
11107         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11108             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11109             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11110         AC_LANG_POP([C++])
11111         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11112         FilterLibs "${ZXING_LIBS}"
11113         ZXING_LIBS="${filteredlibs}"
11114     else
11115         AC_MSG_RESULT([internal])
11116         SYSTEM_ZXING=
11117         BUILD_TYPE="$BUILD_TYPE ZXING"
11118     fi
11119     if test "$ENABLE_ZXING" = TRUE; then
11120         AC_DEFINE(ENABLE_ZXING)
11121     fi
11123 AC_SUBST(SYSTEM_ZXING)
11124 AC_SUBST(ENABLE_ZXING)
11125 AC_SUBST(ZXING_CFLAGS)
11126 AC_SUBST(ZXING_LIBS)
11128 dnl ===================================================================
11129 dnl Check for system box2d
11130 dnl ===================================================================
11131 AC_MSG_CHECKING([which box2d to use])
11132 if test "$with_system_box2d" = "yes"; then
11133     AC_MSG_RESULT([external])
11134     SYSTEM_BOX2D=TRUE
11135     AC_LANG_PUSH([C++])
11136     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11137         [BOX2D_H_FOUND='FALSE'])
11138     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11139         _BOX2D_LIB=box2d
11140         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11141     else
11142         # fail this. there's no other alternative to check when we are here.
11143         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11144             [AC_MSG_ERROR(box2d headers not found.)])
11145         _BOX2D_LIB=Box2D
11146         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11147     fi
11148     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11149         [ AC_MSG_ERROR(box2d library not found.) ], [])
11150     BOX2D_LIBS=-l$_BOX2D_LIB
11151     AC_LANG_POP([C++])
11152     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11153     FilterLibs "${BOX2D_LIBS}"
11154     BOX2D_LIBS="${filteredlibs}"
11155 else
11156     AC_MSG_RESULT([internal])
11157     SYSTEM_BOX2D=
11158     BUILD_TYPE="$BUILD_TYPE BOX2D"
11160 AC_SUBST(SYSTEM_BOX2D)
11161 AC_SUBST(BOX2D_CFLAGS)
11162 AC_SUBST(BOX2D_LIBS)
11164 dnl ===================================================================
11165 dnl Checking for altlinuxhyph
11166 dnl ===================================================================
11167 AC_MSG_CHECKING([which altlinuxhyph to use])
11168 if test "$with_system_altlinuxhyph" = "yes"; then
11169     AC_MSG_RESULT([external])
11170     SYSTEM_HYPH=TRUE
11171     AC_CHECK_HEADER(hyphen.h, [],
11172        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11173     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11174        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11175        [#include <hyphen.h>])
11176     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11177         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11178     if test -z "$HYPHEN_LIB"; then
11179         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11180            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11181     fi
11182     if test -z "$HYPHEN_LIB"; then
11183         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11184            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11185     fi
11186 else
11187     AC_MSG_RESULT([internal])
11188     SYSTEM_HYPH=
11189     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11190     if test "$COM" = "MSC"; then
11191         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11192     else
11193         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11194     fi
11196 AC_SUBST(SYSTEM_HYPH)
11197 AC_SUBST(HYPHEN_LIB)
11199 dnl ===================================================================
11200 dnl Checking for mythes
11201 dnl ===================================================================
11202 AC_MSG_CHECKING([which mythes to use])
11203 if test "$with_system_mythes" = "yes"; then
11204     AC_MSG_RESULT([external])
11205     SYSTEM_MYTHES=TRUE
11206     AC_LANG_PUSH([C++])
11207     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11208     if test "$MYTHES_PKGCONFIG" = "no"; then
11209         AC_CHECK_HEADER(mythes.hxx, [],
11210             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11211         AC_CHECK_LIB([mythes-1.2], [main], [:],
11212             [ MYTHES_FOUND=no], [])
11213     if test "$MYTHES_FOUND" = "no"; then
11214         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11215                 [ MYTHES_FOUND=no], [])
11216     fi
11217     if test "$MYTHES_FOUND" = "no"; then
11218         AC_MSG_ERROR([mythes library not found!.])
11219     fi
11220     fi
11221     AC_LANG_POP([C++])
11222     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11223     FilterLibs "${MYTHES_LIBS}"
11224     MYTHES_LIBS="${filteredlibs}"
11225 else
11226     AC_MSG_RESULT([internal])
11227     SYSTEM_MYTHES=
11228     BUILD_TYPE="$BUILD_TYPE MYTHES"
11229     if test "$COM" = "MSC"; then
11230         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11231     else
11232         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11233     fi
11235 AC_SUBST(SYSTEM_MYTHES)
11236 AC_SUBST(MYTHES_CFLAGS)
11237 AC_SUBST(MYTHES_LIBS)
11239 dnl ===================================================================
11240 dnl How should we build the linear programming solver ?
11241 dnl ===================================================================
11243 ENABLE_COINMP=
11244 AC_MSG_CHECKING([whether to build with CoinMP])
11245 if test "$enable_coinmp" != "no"; then
11246     ENABLE_COINMP=TRUE
11247     AC_MSG_RESULT([yes])
11248     if test "$with_system_coinmp" = "yes"; then
11249         SYSTEM_COINMP=TRUE
11250         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11251         FilterLibs "${COINMP_LIBS}"
11252         COINMP_LIBS="${filteredlibs}"
11253     else
11254         BUILD_TYPE="$BUILD_TYPE COINMP"
11255     fi
11256 else
11257     AC_MSG_RESULT([no])
11259 AC_SUBST(ENABLE_COINMP)
11260 AC_SUBST(SYSTEM_COINMP)
11261 AC_SUBST(COINMP_CFLAGS)
11262 AC_SUBST(COINMP_LIBS)
11264 ENABLE_LPSOLVE=
11265 AC_MSG_CHECKING([whether to build with lpsolve])
11266 if test "$enable_lpsolve" != "no"; then
11267     ENABLE_LPSOLVE=TRUE
11268     AC_MSG_RESULT([yes])
11269 else
11270     AC_MSG_RESULT([no])
11272 AC_SUBST(ENABLE_LPSOLVE)
11274 if test "$ENABLE_LPSOLVE" = TRUE; then
11275     AC_MSG_CHECKING([which lpsolve to use])
11276     if test "$with_system_lpsolve" = "yes"; then
11277         AC_MSG_RESULT([external])
11278         SYSTEM_LPSOLVE=TRUE
11279         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11280            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11281         save_LIBS=$LIBS
11282         # some systems need this. Like Ubuntu...
11283         AC_CHECK_LIB(m, floor)
11284         AC_CHECK_LIB(dl, dlopen)
11285         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11286             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11287         LIBS=$save_LIBS
11288     else
11289         AC_MSG_RESULT([internal])
11290         SYSTEM_LPSOLVE=
11291         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11292     fi
11294 AC_SUBST(SYSTEM_LPSOLVE)
11296 dnl ===================================================================
11297 dnl Checking for libexttextcat
11298 dnl ===================================================================
11299 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11300 if test "$with_system_libexttextcat" = "yes"; then
11301     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11303 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11305 dnl ===================================================================
11306 dnl Checking for libnumbertext
11307 dnl ===================================================================
11308 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11309 if test "$with_system_libnumbertext" = "yes"; then
11310     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11311     SYSTEM_LIBNUMBERTEXT=YES
11312 else
11313     SYSTEM_LIBNUMBERTEXT=
11314     AC_LANG_PUSH([C++])
11315     save_CPPFLAGS=$CPPFLAGS
11316     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11317     AC_CHECK_HEADERS([codecvt regex])
11318     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11319             [ LIBNUMBERTEXT_CFLAGS=''
11320               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11321                            Enable libnumbertext fallback (missing number to number name conversion).])
11322             ])
11323     CPPFLAGS=$save_CPPFLAGS
11324     AC_LANG_POP([C++])
11326 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11327 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11328 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11330 dnl ***************************************
11331 dnl testing libc version for Linux...
11332 dnl ***************************************
11333 if test "$_os" = "Linux"; then
11334     AC_MSG_CHECKING([whether the libc is recent enough])
11335     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11336     #include <features.h>
11337     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11338     #error glibc >= 2.1 is required
11339     #endif
11340     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11343 dnl =========================================
11344 dnl Check for uuidgen
11345 dnl =========================================
11346 if test "$_os" = "WINNT"; then
11347     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11348     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11349     UUIDGEN=uuidgen.exe
11350     AC_SUBST(UUIDGEN)
11351 else
11352     AC_PATH_PROG([UUIDGEN], [uuidgen])
11353     if test -z "$UUIDGEN"; then
11354         AC_MSG_WARN([uuid is needed for building installation sets])
11355     fi
11358 dnl ***************************************
11359 dnl Checking for bison and flex
11360 dnl ***************************************
11361 AC_PATH_PROG(BISON, bison)
11362 if test -z "$BISON"; then
11363     AC_MSG_ERROR([no bison found in \$PATH, install it])
11364 else
11365     AC_MSG_CHECKING([the bison version])
11366     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11367     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11368     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11369     dnl cause
11370     dnl
11371     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]
11372     dnl   typedef union YYSTYPE
11373     dnl           ~~~~~~^~~~~~~
11374     dnl
11375     dnl while at least 3.4.1 is know to be good:
11376     if test "$COMPILER_PLUGINS" = TRUE; then
11377         if test "$_bison_longver" -lt 2004; then
11378             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11379         fi
11380     else
11381         if test "$_bison_longver" -lt 2000; then
11382             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11383         fi
11384     fi
11386 AC_SUBST([BISON])
11388 AC_PATH_PROG(FLEX, flex)
11389 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11390     FLEX=`cygpath -m $FLEX`
11392 if test -z "$FLEX"; then
11393     AC_MSG_ERROR([no flex found in \$PATH, install it])
11394 else
11395     AC_MSG_CHECKING([the flex version])
11396     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11397     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11398         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11399     fi
11401 AC_SUBST([FLEX])
11402 dnl ***************************************
11403 dnl Checking for patch
11404 dnl ***************************************
11405 AC_PATH_PROG(PATCH, patch)
11406 if test -z "$PATCH"; then
11407     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11410 dnl On Solaris or macOS, check if --with-gnu-patch was used
11411 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11412     if test -z "$with_gnu_patch"; then
11413         GNUPATCH=$PATCH
11414     else
11415         if test -x "$with_gnu_patch"; then
11416             GNUPATCH=$with_gnu_patch
11417         else
11418             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11419         fi
11420     fi
11422     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11423     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11424         AC_MSG_RESULT([yes])
11425     else
11426         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11427     fi
11428 else
11429     GNUPATCH=$PATCH
11432 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11433     GNUPATCH=`cygpath -m $GNUPATCH`
11436 dnl We also need to check for --with-gnu-cp
11438 if test -z "$with_gnu_cp"; then
11439     # check the place where the good stuff is hidden on Solaris...
11440     if test -x /usr/gnu/bin/cp; then
11441         GNUCP=/usr/gnu/bin/cp
11442     else
11443         AC_PATH_PROGS(GNUCP, gnucp cp)
11444     fi
11445     if test -z $GNUCP; then
11446         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11447     fi
11448 else
11449     if test -x "$with_gnu_cp"; then
11450         GNUCP=$with_gnu_cp
11451     else
11452         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11453     fi
11456 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11457     GNUCP=`cygpath -m $GNUCP`
11460 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11461 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11462     AC_MSG_RESULT([yes])
11463 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11464     AC_MSG_RESULT([yes])
11465 else
11466     case "$build_os" in
11467     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11468         x_GNUCP=[\#]
11469         GNUCP=''
11470         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11471         ;;
11472     *)
11473         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11474         ;;
11475     esac
11478 AC_SUBST(GNUPATCH)
11479 AC_SUBST(GNUCP)
11480 AC_SUBST(x_GNUCP)
11482 dnl ***************************************
11483 dnl testing assembler path
11484 dnl ***************************************
11485 ML_EXE=""
11486 if test "$_os" = "WINNT"; then
11487     case "$WIN_HOST_ARCH" in
11488     x86) assembler=ml.exe ;;
11489     x64) assembler=ml64.exe ;;
11490     arm64) assembler=armasm64.exe ;;
11491     esac
11493     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11494     if test -f "$MSVC_HOST_PATH/$assembler"; then
11495         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11496         AC_MSG_RESULT([$ML_EXE])
11497     else
11498         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11499     fi
11502 AC_SUBST(ML_EXE)
11504 dnl ===================================================================
11505 dnl We need zip and unzip
11506 dnl ===================================================================
11507 AC_PATH_PROG(ZIP, zip)
11508 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11509 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11510     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],,)
11513 AC_PATH_PROG(UNZIP, unzip)
11514 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11516 dnl ===================================================================
11517 dnl Zip must be a specific type for different build types.
11518 dnl ===================================================================
11519 if test $build_os = cygwin; then
11520     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11521         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11522     fi
11525 dnl ===================================================================
11526 dnl We need touch with -h option support.
11527 dnl ===================================================================
11528 AC_PATH_PROG(TOUCH, touch)
11529 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11530 touch "$WARNINGS_FILE"
11531 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11532     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],,)
11535 dnl ===================================================================
11536 dnl Check for system epoxy
11537 dnl ===================================================================
11538 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11540 dnl ===================================================================
11541 dnl Set vcl option: coordinate device in double or sal_Int32
11542 dnl ===================================================================
11544 dnl disabled for now, we don't want subtle differences between OSs
11545 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11546 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11547 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11548 dnl     AC_MSG_RESULT([double])
11549 dnl else
11550 dnl     AC_MSG_RESULT([sal_Int32])
11551 dnl fi
11553 dnl ===================================================================
11554 dnl Show which vclplugs will be built.
11555 dnl ===================================================================
11556 R=""
11557 if test "$USING_X11" != TRUE; then
11558     enable_gtk3=no
11561 ENABLE_GTK3=""
11562 if test "x$enable_gtk3" = "xyes"; then
11563     ENABLE_GTK3="TRUE"
11564     AC_DEFINE(ENABLE_GTK3)
11565     R="$R gtk3"
11567 AC_SUBST(ENABLE_GTK3)
11569 ENABLE_GTK3_KDE5=""
11570 if test "x$enable_gtk3_kde5" = "xyes"; then
11571     ENABLE_GTK3_KDE5="TRUE"
11572     AC_DEFINE(ENABLE_GTK3_KDE5)
11573     R="$R gtk3_kde5"
11575 AC_SUBST(ENABLE_GTK3_KDE5)
11577 ENABLE_GTK4=""
11578 if test "x$enable_gtk4" = "xyes"; then
11579     ENABLE_GTK4="TRUE"
11580     AC_DEFINE(ENABLE_GTK4)
11581     R="$R gtk4"
11583 AC_SUBST(ENABLE_GTK4)
11585 ENABLE_QT5=""
11586 if test "x$enable_qt5" = "xyes"; then
11587     ENABLE_QT5="TRUE"
11588     AC_DEFINE(ENABLE_QT5)
11589     R="$R qt5"
11591 AC_SUBST(ENABLE_QT5)
11593 ENABLE_QT6=""
11594 if test "x$enable_qt6" = "xyes"; then
11595     ENABLE_QT6="TRUE"
11596     AC_DEFINE(ENABLE_QT6)
11597     R="$R qt6"
11599 AC_SUBST(ENABLE_QT6)
11602 ENABLE_KF5=""
11603 if test "x$enable_kf5" = "xyes"; then
11604     ENABLE_KF5="TRUE"
11605     AC_DEFINE(ENABLE_KF5)
11606     R="$R kf5"
11608 AC_SUBST(ENABLE_KF5)
11610 if test "x$USING_X11" = "xyes"; then
11611     R="$R gen"
11614 if test "$_os" = "WINNT"; then
11615     R="$R win"
11616 elif test "$_os" = "Darwin"; then
11617     R="$R osx"
11618 elif test "$_os" = "iOS"; then
11619     R="ios"
11620 elif test "$_os" = Android; then
11621     R="android"
11624 build_vcl_plugins="$R"
11625 if test -z "$build_vcl_plugins"; then
11626     build_vcl_plugins=" none"
11628 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11629 VCL_PLUGIN_INFO=$R
11630 AC_SUBST([VCL_PLUGIN_INFO])
11632 dnl ===================================================================
11633 dnl Check for GTK libraries
11634 dnl ===================================================================
11636 GTK3_CFLAGS=""
11637 GTK3_LIBS=""
11638 ENABLE_GTKTILEDVIEWER=""
11639 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11640     if test "$with_system_cairo" = no; then
11641         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11642     fi
11643     : ${with_system_cairo:=yes}
11644     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)
11645     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11646     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11647     FilterLibs "${GTK3_LIBS}"
11648     GTK3_LIBS="${filteredlibs}"
11650     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11651     if test "$with_system_epoxy" != "yes"; then
11652         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11653         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11654                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11655     fi
11656 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11657     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11658     if test "$build_os" = "cygwin"; then
11659         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11660         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11661     fi
11663     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11664     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11665     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11666     FilterLibs "${GTK3_LIBS}"
11667     GTK3_LIBS="${filteredlibs}"
11668     ENABLE_GTKTILEDVIEWER="yes"
11670 AC_SUBST(GTK3_LIBS)
11671 AC_SUBST(GTK3_CFLAGS)
11672 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11674 GTK4_CFLAGS=""
11675 GTK4_LIBS=""
11676 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11677     if test "$with_system_cairo" = no; then
11678         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11679     fi
11680     : ${with_system_cairo:=yes}
11681     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11682     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11683     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11684     FilterLibs "${GTK4_LIBS}"
11685     GTK4_LIBS="${filteredlibs}"
11687     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11688     if test "$with_system_epoxy" != "yes"; then
11689         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11690         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11691                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11692     fi
11694 AC_SUBST(GTK4_LIBS)
11695 AC_SUBST(GTK4_CFLAGS)
11697 if test "$enable_introspection" = yes; then
11698     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11699         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11700     else
11701         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11702     fi
11705 dnl ===================================================================
11706 dnl check for dbus support
11707 dnl ===================================================================
11708 ENABLE_DBUS=""
11709 DBUS_CFLAGS=""
11710 DBUS_LIBS=""
11711 DBUS_GLIB_CFLAGS=""
11712 DBUS_GLIB_LIBS=""
11713 DBUS_HAVE_GLIB=""
11715 if test "$enable_dbus" = "no"; then
11716     test_dbus=no
11719 AC_MSG_CHECKING([whether to enable DBUS support])
11720 if test "$test_dbus" = "yes"; then
11721     ENABLE_DBUS="TRUE"
11722     AC_MSG_RESULT([yes])
11723     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11724     AC_DEFINE(ENABLE_DBUS)
11725     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11726     FilterLibs "${DBUS_LIBS}"
11727     DBUS_LIBS="${filteredlibs}"
11729     # Glib is needed for BluetoothServer
11730     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11731     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11732         [
11733             DBUS_HAVE_GLIB="TRUE"
11734             AC_DEFINE(DBUS_HAVE_GLIB,1)
11735         ],
11736         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11737     )
11738 else
11739     AC_MSG_RESULT([no])
11742 AC_SUBST(ENABLE_DBUS)
11743 AC_SUBST(DBUS_CFLAGS)
11744 AC_SUBST(DBUS_LIBS)
11745 AC_SUBST(DBUS_GLIB_CFLAGS)
11746 AC_SUBST(DBUS_GLIB_LIBS)
11747 AC_SUBST(DBUS_HAVE_GLIB)
11749 AC_MSG_CHECKING([whether to enable Impress remote control])
11750 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11751     AC_MSG_RESULT([yes])
11752     ENABLE_SDREMOTE=TRUE
11753     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11754         <true/>"
11755     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11757     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11758         # The Bluetooth code doesn't compile with macOS SDK 10.15
11759         if test "$enable_sdremote_bluetooth" = yes; then
11760             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11761         fi
11762         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11763         enable_sdremote_bluetooth=no
11764     fi
11765     # If not explicitly enabled or disabled, default
11766     if test -z "$enable_sdremote_bluetooth"; then
11767         case "$OS" in
11768         LINUX|MACOSX|WNT)
11769             # Default to yes for these
11770             enable_sdremote_bluetooth=yes
11771             ;;
11772         *)
11773             # otherwise no
11774             enable_sdremote_bluetooth=no
11775             ;;
11776         esac
11777     fi
11778     # $enable_sdremote_bluetooth is guaranteed non-empty now
11780     if test "$enable_sdremote_bluetooth" != "no"; then
11781         if test "$OS" = "LINUX"; then
11782             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11783                 AC_MSG_RESULT([yes])
11784                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11785                 dnl ===================================================================
11786                 dnl Check for system bluez
11787                 dnl ===================================================================
11788                 AC_MSG_CHECKING([which Bluetooth header to use])
11789                 if test "$with_system_bluez" = "yes"; then
11790                     AC_MSG_RESULT([external])
11791                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11792                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11793                     SYSTEM_BLUEZ=TRUE
11794                 else
11795                     AC_MSG_RESULT([internal])
11796                     SYSTEM_BLUEZ=
11797                 fi
11798             else
11799                 AC_MSG_RESULT([no, dbus disabled])
11800                 ENABLE_SDREMOTE_BLUETOOTH=
11801                 SYSTEM_BLUEZ=
11802             fi
11803         else
11804             AC_MSG_RESULT([yes])
11805             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11806             SYSTEM_BLUEZ=
11807             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11808         <key>com.apple.security.device.bluetooth</key>
11809         <true/>"
11810         fi
11811     else
11812         AC_MSG_RESULT([no])
11813         ENABLE_SDREMOTE_BLUETOOTH=
11814         SYSTEM_BLUEZ=
11815     fi
11816 else
11817     ENABLE_SDREMOTE=
11818     SYSTEM_BLUEZ=
11819     AC_MSG_RESULT([no])
11821 AC_SUBST(ENABLE_SDREMOTE)
11822 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11823 AC_SUBST(SDREMOTE_ENTITLEMENT)
11824 AC_SUBST(SYSTEM_BLUEZ)
11826 dnl ===================================================================
11827 dnl Check whether to enable GIO support
11828 dnl ===================================================================
11829 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11830     AC_MSG_CHECKING([whether to enable GIO support])
11831     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11832         dnl Need at least 2.26 for the dbus support.
11833         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11834                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11835         if test "$ENABLE_GIO" = "TRUE"; then
11836             AC_DEFINE(ENABLE_GIO)
11837             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11838             FilterLibs "${GIO_LIBS}"
11839             GIO_LIBS="${filteredlibs}"
11840         fi
11841     else
11842         AC_MSG_RESULT([no])
11843     fi
11845 AC_SUBST(ENABLE_GIO)
11846 AC_SUBST(GIO_CFLAGS)
11847 AC_SUBST(GIO_LIBS)
11850 dnl ===================================================================
11852 SPLIT_APP_MODULES=""
11853 if test "$enable_split_app_modules" = "yes"; then
11854     SPLIT_APP_MODULES="TRUE"
11856 AC_SUBST(SPLIT_APP_MODULES)
11858 SPLIT_OPT_FEATURES=""
11859 if test "$enable_split_opt_features" = "yes"; then
11860     SPLIT_OPT_FEATURES="TRUE"
11862 AC_SUBST(SPLIT_OPT_FEATURES)
11864 dnl ===================================================================
11865 dnl Check whether the GStreamer libraries are available.
11866 dnl ===================================================================
11868 ENABLE_GSTREAMER_1_0=""
11870 if test "$test_gstreamer_1_0" = yes; then
11872     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11873     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11874         ENABLE_GSTREAMER_1_0="TRUE"
11875         AC_MSG_RESULT([yes])
11876         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11877         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11878         FilterLibs "${GSTREAMER_1_0_LIBS}"
11879         GSTREAMER_1_0_LIBS="${filteredlibs}"
11880         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11881     else
11882         AC_MSG_RESULT([no])
11883     fi
11885 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11886 AC_SUBST(GSTREAMER_1_0_LIBS)
11887 AC_SUBST(ENABLE_GSTREAMER_1_0)
11889 ENABLE_OPENGL_TRANSITIONS=
11890 ENABLE_OPENGL_CANVAS=
11891 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11892    : # disable
11893 elif test "$_os" = "Darwin"; then
11894     # We use frameworks on macOS, no need for detail checks
11895     ENABLE_OPENGL_TRANSITIONS=TRUE
11896     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11897     ENABLE_OPENGL_CANVAS=TRUE
11898 elif test $_os = WINNT; then
11899     ENABLE_OPENGL_TRANSITIONS=TRUE
11900     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11901     ENABLE_OPENGL_CANVAS=TRUE
11902 else
11903     if test "$USING_X11" = TRUE; then
11904         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11905         ENABLE_OPENGL_TRANSITIONS=TRUE
11906         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11907         ENABLE_OPENGL_CANVAS=TRUE
11908     fi
11911 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11912 AC_SUBST(ENABLE_OPENGL_CANVAS)
11914 dnl =================================================
11915 dnl Check whether to build with OpenCL support.
11916 dnl =================================================
11918 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11919     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11920     # platform (optional at run-time, used through clew).
11921     BUILD_TYPE="$BUILD_TYPE OPENCL"
11922     AC_DEFINE(HAVE_FEATURE_OPENCL)
11925 dnl =================================================
11926 dnl Check whether to build with dconf support.
11927 dnl =================================================
11929 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11930     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11931         if test "$enable_dconf" = yes; then
11932             AC_MSG_ERROR([dconf not found])
11933         else
11934             enable_dconf=no
11935         fi])
11937 AC_MSG_CHECKING([whether to enable dconf])
11938 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11939     DCONF_CFLAGS=
11940     DCONF_LIBS=
11941     ENABLE_DCONF=
11942     AC_MSG_RESULT([no])
11943 else
11944     ENABLE_DCONF=TRUE
11945     AC_DEFINE(ENABLE_DCONF)
11946     AC_MSG_RESULT([yes])
11948 AC_SUBST([DCONF_CFLAGS])
11949 AC_SUBST([DCONF_LIBS])
11950 AC_SUBST([ENABLE_DCONF])
11952 # pdf import?
11953 AC_MSG_CHECKING([whether to build the PDF import feature])
11954 ENABLE_PDFIMPORT=
11955 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11956     AC_MSG_RESULT([yes])
11957     ENABLE_PDFIMPORT=TRUE
11958     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11959 else
11960     AC_MSG_RESULT([no])
11963 # Pdfium?
11964 AC_MSG_CHECKING([whether to build PDFium])
11965 ENABLE_PDFIUM=
11966 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11967     AC_MSG_RESULT([yes])
11968     ENABLE_PDFIUM=TRUE
11969     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11970 else
11971     AC_MSG_RESULT([no])
11973 AC_SUBST(ENABLE_PDFIUM)
11975 if test "$ENABLE_PDFIUM" = "TRUE"; then
11976         AC_MSG_CHECKING([which OpenJPEG library to use])
11977         if test "$with_system_openjpeg" = "yes"; then
11978                 SYSTEM_OPENJPEG2=TRUE
11979                 AC_MSG_RESULT([external])
11980                 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11981                 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11982                 FilterLibs "${OPENJPEG2_LIBS}"
11983                 OPENJPEG2_LIBS="${filteredlibs}"
11984         else
11985                 SYSTEM_OPENJPEG2=FALSE
11986                 AC_MSG_RESULT([internal])
11987         fi
11988         AC_MSG_CHECKING([which Abseil library to use])
11989         if test "$with_system_abseil" = "yes"; then
11990                 AC_MSG_RESULT([external])
11991                 SYSTEM_ABSEIL=TRUE
11992                 AC_LANG_PUSH([C++])
11993                 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
11994                         [AC_MSG_ERROR(abseil headers not found.)], [])
11995                 #ABSEIL_CFLAGS=-I/usr/include
11996                 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
11997                         [ AC_MSG_ERROR([libabsl_bad_optional_access library not found.]) ])
11998                 AC_LANG_POP([C++])
11999                 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12000                 FilterLibs "${ABSEIL_LIBS}"
12001                 ABSEIL_LIBS="${filteredlibs}"
12002         else
12003                 AC_MSG_RESULT([internal])
12004         fi
12006 AC_SUBST(SYSTEM_OPENJPEG2)
12007 AC_SUBST(SYSTEM_ABSEIL)
12008 AC_SUBST(ABSEIL_CFLAGS)
12009 AC_SUBST(ABSEIL_LIBS)
12011 dnl ===================================================================
12012 dnl Check for poppler
12013 dnl ===================================================================
12014 ENABLE_POPPLER=
12015 AC_MSG_CHECKING([whether to build Poppler])
12016 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12017     AC_MSG_RESULT([yes])
12018     ENABLE_POPPLER=TRUE
12019     AC_DEFINE(HAVE_FEATURE_POPPLER)
12020 else
12021     AC_MSG_RESULT([no])
12023 AC_SUBST(ENABLE_POPPLER)
12025 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12026     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12029 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12030     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12033 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12034     dnl ===================================================================
12035     dnl Check for system poppler
12036     dnl ===================================================================
12037     AC_MSG_CHECKING([which PDF import poppler to use])
12038     if test "$with_system_poppler" = "yes"; then
12039         AC_MSG_RESULT([external])
12040         SYSTEM_POPPLER=TRUE
12041         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12042         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12043         FilterLibs "${POPPLER_LIBS}"
12044         POPPLER_LIBS="${filteredlibs}"
12045     else
12046         AC_MSG_RESULT([internal])
12047         SYSTEM_POPPLER=
12048         BUILD_TYPE="$BUILD_TYPE POPPLER"
12049     fi
12050     AC_DEFINE([ENABLE_PDFIMPORT],1)
12052 AC_SUBST(ENABLE_PDFIMPORT)
12053 AC_SUBST(SYSTEM_POPPLER)
12054 AC_SUBST(POPPLER_CFLAGS)
12055 AC_SUBST(POPPLER_LIBS)
12057 # Skia?
12058 ENABLE_SKIA=
12059 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12060     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12061     if test "$SYSTEM_FREETYPE" = TRUE; then
12062         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12063             [skia_freetype_ok=yes],
12064             [skia_freetype_ok=no])
12065     else # internal is ok
12066         skia_freetype_ok=yes
12067     fi
12068     AC_MSG_CHECKING([whether to build Skia])
12069     if test "$skia_freetype_ok" = "yes"; then
12070         if test "$enable_skia" = "debug"; then
12071             AC_MSG_RESULT([yes (debug)])
12072             ENABLE_SKIA_DEBUG=TRUE
12073         else
12074             AC_MSG_RESULT([yes])
12075             ENABLE_SKIA_DEBUG=
12076         fi
12077         ENABLE_SKIA=TRUE
12078         AC_DEFINE(HAVE_FEATURE_SKIA)
12079         BUILD_TYPE="$BUILD_TYPE SKIA"
12081         if test "$OS" = "MACOSX"; then
12082             AC_DEFINE(SK_SUPPORT_GPU,1)
12083             AC_DEFINE(SK_METAL,1)
12084             SKIA_GPU=METAL
12085             AC_SUBST(SKIA_GPU)
12086         else
12087             AC_DEFINE(SK_SUPPORT_GPU,1)
12088             AC_DEFINE(SK_VULKAN,1)
12089             SKIA_GPU=VULKAN
12090             AC_SUBST(SKIA_GPU)
12091         fi
12093         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12094             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12095             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12096         fi
12097     else
12098         AC_MSG_RESULT([no (freetype too old)])
12099         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12100     fi
12102 else
12103     AC_MSG_CHECKING([whether to build Skia])
12104     AC_MSG_RESULT([no])
12106 AC_SUBST(ENABLE_SKIA)
12107 AC_SUBST(ENABLE_SKIA_DEBUG)
12109 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12110 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12111 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12112 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12113 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12114 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12115 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12116 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12117 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12118 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12119 HAVE_LO_CLANG_DLLEXPORTINLINES=
12121 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12122     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12123         AC_MSG_CHECKING([for Clang])
12124         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12125     else
12126         if test "$_os" = "WINNT"; then
12127             AC_MSG_CHECKING([for clang-cl])
12128             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12129                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12130                 dnl explicitly set -m32/-m64
12131                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12132                 LO_CLANG_CXX="$LO_CLANG_CC"
12133                 AC_MSG_RESULT([$LO_CLANG_CC])
12134             else
12135                 AC_MSG_RESULT([no])
12136             fi
12137         else
12138             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12139             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12140         fi
12141     fi
12142     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12143         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12144         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12145         if test "$clang2_ver" -lt 50002; then
12146             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12147             LO_CLANG_CC=
12148             LO_CLANG_CXX=
12149         fi
12150     fi
12151     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12152         save_CXX="$CXX"
12153         CXX="$LO_CLANG_CXX"
12154         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12155         AC_LANG_PUSH([C++])
12156         save_CXXFLAGS=$CXXFLAGS
12157         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12158         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12159                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12160                 AC_MSG_RESULT([yes])
12161             ], [AC_MSG_RESULT([no])])
12162         CXXFLAGS=$save_CXXFLAGS
12163         AC_LANG_POP([C++])
12164         CXX="$save_CXX"
12165         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12166             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.])
12167         fi
12168     fi
12169     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12170         # Skia is the default on Windows and Mac, so hard-require Clang.
12171         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12172         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12173             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12174         else
12175             AC_MSG_WARN([Clang compiler not found.])
12176         fi
12177     else
12179         save_CXX="$CXX"
12180         CXX="$LO_CLANG_CXX"
12181         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12182         flag_sse2=-msse2
12183         flag_ssse3=-mssse3
12184         flag_sse41=-msse4.1
12185         flag_sse42=-msse4.2
12186         flag_avx=-mavx
12187         flag_avx2=-mavx2
12188         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12189         flag_avx512f=-mavx512f
12190         flag_f16c=-mf16c
12191         flag_fma=-mfma
12193         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12194         AC_LANG_PUSH([C++])
12195         save_CXXFLAGS=$CXXFLAGS
12196         CXXFLAGS="$CXXFLAGS $flag_sse2"
12197         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12198             #include <emmintrin.h>
12199             int main () {
12200                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12201                 c = _mm_xor_si128 (a, b);
12202                 return 0;
12203             }
12204             ])],
12205             [can_compile_sse2=yes],
12206             [can_compile_sse2=no])
12207         AC_LANG_POP([C++])
12208         CXXFLAGS=$save_CXXFLAGS
12209         AC_MSG_RESULT([${can_compile_sse2}])
12210         if test "${can_compile_sse2}" = "yes" ; then
12211             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12212         fi
12214         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12215         AC_LANG_PUSH([C++])
12216         save_CXXFLAGS=$CXXFLAGS
12217         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12218         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12219             #include <tmmintrin.h>
12220             int main () {
12221                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12222                 c = _mm_maddubs_epi16 (a, b);
12223                 return 0;
12224             }
12225             ])],
12226             [can_compile_ssse3=yes],
12227             [can_compile_ssse3=no])
12228         AC_LANG_POP([C++])
12229         CXXFLAGS=$save_CXXFLAGS
12230         AC_MSG_RESULT([${can_compile_ssse3}])
12231         if test "${can_compile_ssse3}" = "yes" ; then
12232             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12233         fi
12235         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12236         AC_LANG_PUSH([C++])
12237         save_CXXFLAGS=$CXXFLAGS
12238         CXXFLAGS="$CXXFLAGS $flag_sse41"
12239         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12240             #include <smmintrin.h>
12241             int main () {
12242                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12243                 c = _mm_cmpeq_epi64 (a, b);
12244                 return 0;
12245             }
12246             ])],
12247             [can_compile_sse41=yes],
12248             [can_compile_sse41=no])
12249         AC_LANG_POP([C++])
12250         CXXFLAGS=$save_CXXFLAGS
12251         AC_MSG_RESULT([${can_compile_sse41}])
12252         if test "${can_compile_sse41}" = "yes" ; then
12253             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12254         fi
12256         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12257         AC_LANG_PUSH([C++])
12258         save_CXXFLAGS=$CXXFLAGS
12259         CXXFLAGS="$CXXFLAGS $flag_sse42"
12260         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12261             #include <nmmintrin.h>
12262             int main () {
12263                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12264                 c = _mm_cmpgt_epi64 (a, b);
12265                 return 0;
12266             }
12267             ])],
12268             [can_compile_sse42=yes],
12269             [can_compile_sse42=no])
12270         AC_LANG_POP([C++])
12271         CXXFLAGS=$save_CXXFLAGS
12272         AC_MSG_RESULT([${can_compile_sse42}])
12273         if test "${can_compile_sse42}" = "yes" ; then
12274             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12275         fi
12277         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12278         AC_LANG_PUSH([C++])
12279         save_CXXFLAGS=$CXXFLAGS
12280         CXXFLAGS="$CXXFLAGS $flag_avx"
12281         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12282             #include <immintrin.h>
12283             int main () {
12284                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12285                 c = _mm256_xor_ps(a, b);
12286                 return 0;
12287             }
12288             ])],
12289             [can_compile_avx=yes],
12290             [can_compile_avx=no])
12291         AC_LANG_POP([C++])
12292         CXXFLAGS=$save_CXXFLAGS
12293         AC_MSG_RESULT([${can_compile_avx}])
12294         if test "${can_compile_avx}" = "yes" ; then
12295             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12296         fi
12298         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12299         AC_LANG_PUSH([C++])
12300         save_CXXFLAGS=$CXXFLAGS
12301         CXXFLAGS="$CXXFLAGS $flag_avx2"
12302         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12303             #include <immintrin.h>
12304             int main () {
12305                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12306                 c = _mm256_maddubs_epi16(a, b);
12307                 return 0;
12308             }
12309             ])],
12310             [can_compile_avx2=yes],
12311             [can_compile_avx2=no])
12312         AC_LANG_POP([C++])
12313         CXXFLAGS=$save_CXXFLAGS
12314         AC_MSG_RESULT([${can_compile_avx2}])
12315         if test "${can_compile_avx2}" = "yes" ; then
12316             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12317         fi
12319         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12320         AC_LANG_PUSH([C++])
12321         save_CXXFLAGS=$CXXFLAGS
12322         CXXFLAGS="$CXXFLAGS $flag_avx512"
12323         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12324             #include <immintrin.h>
12325             int main () {
12326                 __m512i a = _mm512_loadu_si512(0);
12327                 __m512d v1 = _mm512_load_pd(0);
12328                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12329                 __m512d v2 = _mm512_abs_pd(v1);
12330                 return 0;
12331             }
12332             ])],
12333             [can_compile_avx512=yes],
12334             [can_compile_avx512=no])
12335         AC_LANG_POP([C++])
12336         CXXFLAGS=$save_CXXFLAGS
12337         AC_MSG_RESULT([${can_compile_avx512}])
12338         if test "${can_compile_avx512}" = "yes" ; then
12339             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12340             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12341         fi
12343         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12344         AC_LANG_PUSH([C++])
12345         save_CXXFLAGS=$CXXFLAGS
12346         CXXFLAGS="$CXXFLAGS $flag_f16c"
12347         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12348             #include <immintrin.h>
12349             int main () {
12350                 __m128i a = _mm_set1_epi32 (0);
12351                 __m128 c;
12352                 c = _mm_cvtph_ps(a);
12353                 return 0;
12354             }
12355             ])],
12356             [can_compile_f16c=yes],
12357             [can_compile_f16c=no])
12358         AC_LANG_POP([C++])
12359         CXXFLAGS=$save_CXXFLAGS
12360         AC_MSG_RESULT([${can_compile_f16c}])
12361         if test "${can_compile_f16c}" = "yes" ; then
12362             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12363         fi
12365         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12366         AC_LANG_PUSH([C++])
12367         save_CXXFLAGS=$CXXFLAGS
12368         CXXFLAGS="$CXXFLAGS $flag_fma"
12369         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12370             #include <immintrin.h>
12371             int main () {
12372                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12373                 d = _mm256_fmadd_ps(a, b, c);
12374                 return 0;
12375             }
12376             ])],
12377             [can_compile_fma=yes],
12378             [can_compile_fma=no])
12379         AC_LANG_POP([C++])
12380         CXXFLAGS=$save_CXXFLAGS
12381         AC_MSG_RESULT([${can_compile_fma}])
12382         if test "${can_compile_fma}" = "yes" ; then
12383             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12384         fi
12386         CXX="$save_CXX"
12387     fi
12390 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12392 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12393     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12394     AC_LANG_PUSH([C])
12395     save_CC="$CC"
12396     CC="$LO_CLANG_CC"
12397     save_CFLAGS=$CFLAGS
12398     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12399     dnl an empty program will do, we're checking the compiler flags
12400     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12401                       [use_ccache=yes], [use_ccache=no])
12402     CFLAGS=$save_CFLAGS
12403     CC=$save_CC
12404     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12405         AC_MSG_RESULT([yes])
12406     else
12407         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12408         AC_MSG_RESULT([no])
12409     fi
12410     AC_LANG_POP([C])
12412     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12413     AC_LANG_PUSH([C++])
12414     save_CXX="$CXX"
12415     CXX="$LO_CLANG_CXX"
12416     save_CXXFLAGS=$CXXFLAGS
12417     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12418     dnl an empty program will do, we're checking the compiler flags
12419     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12420                       [use_ccache=yes], [use_ccache=no])
12421     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12422         AC_MSG_RESULT([yes])
12423     else
12424         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12425         AC_MSG_RESULT([no])
12426     fi
12427     CXXFLAGS=$save_CXXFLAGS
12428     CXX=$save_CXX
12429     AC_LANG_POP([C++])
12432 AC_SUBST(LO_CLANG_CC)
12433 AC_SUBST(LO_CLANG_CXX)
12434 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12435 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12436 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12437 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12438 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12439 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12440 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12441 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12442 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12443 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12444 AC_SUBST(CLANG_USE_LD)
12445 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12447 SYSTEM_GPGMEPP=
12449 if test "$enable_gpgmepp" = no; then
12450     AC_MSG_CHECKING([whether to enable gpgmepp])
12451     AC_MSG_RESULT([no])
12452 elif test "$enable_mpl_subset" = "yes"; then
12453     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12454     AC_MSG_RESULT([yes])
12455 elif test "$enable_fuzzers" = "yes"; then
12456     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12457     AC_MSG_RESULT([yes])
12458 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12459     dnl ===================================================================
12460     dnl Check for system gpgme
12461     dnl ===================================================================
12462     AC_MSG_CHECKING([which gpgmepp to use])
12463     if test "$with_system_gpgmepp" = "yes"; then
12464         AC_MSG_RESULT([external])
12465         SYSTEM_GPGMEPP=TRUE
12467         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12468         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12469             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12470         # progress_callback is the only func with plain C linkage
12471         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12472         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12473             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12474         AC_CHECK_HEADER(gpgme.h, [],
12475             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12476     else
12477         AC_MSG_RESULT([internal])
12478         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12480         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12481         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12482         if test "$_os" != "WINNT"; then
12483             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12484             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12485         fi
12486     fi
12487     ENABLE_GPGMEPP=TRUE
12488     AC_DEFINE([HAVE_FEATURE_GPGME])
12489     AC_PATH_PROG(GPG, gpg)
12490     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12491     # so let's exclude that manually for the moment
12492     if test -n "$GPG" -a "$_os" != "WINNT"; then
12493         # make sure we not only have a working gpgme, but a full working
12494         # gpg installation to run OpenPGP signature verification
12495         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12496     fi
12497     if test "$_os" = "Linux"; then
12498       uid=`id -u`
12499       AC_MSG_CHECKING([for /run/user/$uid])
12500       if test -d /run/user/$uid; then
12501         AC_MSG_RESULT([yes])
12502         AC_PATH_PROG(GPGCONF, gpgconf)
12504         # Older versions of gpgconf are not working as expected, since
12505         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12506         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12507         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12508         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12509         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12510         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12511         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12512           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12513           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12514           if $GPGCONF --dump-options > /dev/null ; then
12515             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12516               AC_MSG_RESULT([yes])
12517               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12518               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12519             else
12520               AC_MSG_RESULT([no])
12521             fi
12522           else
12523             AC_MSG_RESULT([no. missing or broken gpgconf?])
12524           fi
12525         else
12526           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12527         fi
12528       else
12529         AC_MSG_RESULT([no])
12530      fi
12531    fi
12533 AC_SUBST(ENABLE_GPGMEPP)
12534 AC_SUBST(SYSTEM_GPGMEPP)
12535 AC_SUBST(GPG_ERROR_CFLAGS)
12536 AC_SUBST(GPG_ERROR_LIBS)
12537 AC_SUBST(LIBASSUAN_CFLAGS)
12538 AC_SUBST(LIBASSUAN_LIBS)
12539 AC_SUBST(GPGMEPP_CFLAGS)
12540 AC_SUBST(GPGMEPP_LIBS)
12542 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12543 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12544     AC_MSG_RESULT([yes])
12545     ENABLE_MEDIAWIKI=TRUE
12546     BUILD_TYPE="$BUILD_TYPE XSLTML"
12547     if test  "x$with_java" = "xno"; then
12548         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12549     fi
12550 else
12551     AC_MSG_RESULT([no])
12552     ENABLE_MEDIAWIKI=
12553     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12555 AC_SUBST(ENABLE_MEDIAWIKI)
12557 AC_MSG_CHECKING([whether to build the Report Builder])
12558 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12559     AC_MSG_RESULT([yes])
12560     ENABLE_REPORTBUILDER=TRUE
12561     AC_MSG_CHECKING([which jfreereport libs to use])
12562     if test "$with_system_jfreereport" = "yes"; then
12563         SYSTEM_JFREEREPORT=TRUE
12564         AC_MSG_RESULT([external])
12565         if test -z $SAC_JAR; then
12566             SAC_JAR=/usr/share/java/sac.jar
12567         fi
12568         if ! test -f $SAC_JAR; then
12569              AC_MSG_ERROR(sac.jar not found.)
12570         fi
12572         if test -z $LIBXML_JAR; then
12573             if test -f /usr/share/java/libxml-1.0.0.jar; then
12574                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12575             elif test -f /usr/share/java/libxml.jar; then
12576                 LIBXML_JAR=/usr/share/java/libxml.jar
12577             else
12578                 AC_MSG_ERROR(libxml.jar replacement not found.)
12579             fi
12580         elif ! test -f $LIBXML_JAR; then
12581             AC_MSG_ERROR(libxml.jar not found.)
12582         fi
12584         if test -z $FLUTE_JAR; then
12585             if test -f /usr/share/java/flute-1.3.0.jar; then
12586                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12587             elif test -f /usr/share/java/flute.jar; then
12588                 FLUTE_JAR=/usr/share/java/flute.jar
12589             else
12590                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12591             fi
12592         elif ! test -f $FLUTE_JAR; then
12593             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12594         fi
12596         if test -z $JFREEREPORT_JAR; then
12597             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12598                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12599             elif test -f /usr/share/java/flow-engine.jar; then
12600                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12601             else
12602                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12603             fi
12604         elif ! test -f  $JFREEREPORT_JAR; then
12605                 AC_MSG_ERROR(jfreereport.jar not found.)
12606         fi
12608         if test -z $LIBLAYOUT_JAR; then
12609             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12610                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12611             elif test -f /usr/share/java/liblayout.jar; then
12612                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12613             else
12614                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12615             fi
12616         elif ! test -f $LIBLAYOUT_JAR; then
12617                 AC_MSG_ERROR(liblayout.jar not found.)
12618         fi
12620         if test -z $LIBLOADER_JAR; then
12621             if test -f /usr/share/java/libloader-1.0.0.jar; then
12622                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12623             elif test -f /usr/share/java/libloader.jar; then
12624                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12625             else
12626                 AC_MSG_ERROR(libloader.jar replacement not found.)
12627             fi
12628         elif ! test -f  $LIBLOADER_JAR; then
12629             AC_MSG_ERROR(libloader.jar not found.)
12630         fi
12632         if test -z $LIBFORMULA_JAR; then
12633             if test -f /usr/share/java/libformula-0.2.0.jar; then
12634                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12635             elif test -f /usr/share/java/libformula.jar; then
12636                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12637             else
12638                 AC_MSG_ERROR(libformula.jar replacement not found.)
12639             fi
12640         elif ! test -f $LIBFORMULA_JAR; then
12641                 AC_MSG_ERROR(libformula.jar not found.)
12642         fi
12644         if test -z $LIBREPOSITORY_JAR; then
12645             if test -f /usr/share/java/librepository-1.0.0.jar; then
12646                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12647             elif test -f /usr/share/java/librepository.jar; then
12648                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12649             else
12650                 AC_MSG_ERROR(librepository.jar replacement not found.)
12651             fi
12652         elif ! test -f $LIBREPOSITORY_JAR; then
12653             AC_MSG_ERROR(librepository.jar not found.)
12654         fi
12656         if test -z $LIBFONTS_JAR; then
12657             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12658                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12659             elif test -f /usr/share/java/libfonts.jar; then
12660                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12661             else
12662                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12663             fi
12664         elif ! test -f $LIBFONTS_JAR; then
12665                 AC_MSG_ERROR(libfonts.jar not found.)
12666         fi
12668         if test -z $LIBSERIALIZER_JAR; then
12669             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12670                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12671             elif test -f /usr/share/java/libserializer.jar; then
12672                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12673             else
12674                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12675             fi
12676         elif ! test -f $LIBSERIALIZER_JAR; then
12677                 AC_MSG_ERROR(libserializer.jar not found.)
12678         fi
12680         if test -z $LIBBASE_JAR; then
12681             if test -f /usr/share/java/libbase-1.0.0.jar; then
12682                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12683             elif test -f /usr/share/java/libbase.jar; then
12684                 LIBBASE_JAR=/usr/share/java/libbase.jar
12685             else
12686                 AC_MSG_ERROR(libbase.jar replacement not found.)
12687             fi
12688         elif ! test -f $LIBBASE_JAR; then
12689             AC_MSG_ERROR(libbase.jar not found.)
12690         fi
12692     else
12693         AC_MSG_RESULT([internal])
12694         SYSTEM_JFREEREPORT=
12695         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12696         NEED_ANT=TRUE
12697     fi
12698 else
12699     AC_MSG_RESULT([no])
12700     ENABLE_REPORTBUILDER=
12701     SYSTEM_JFREEREPORT=
12703 AC_SUBST(ENABLE_REPORTBUILDER)
12704 AC_SUBST(SYSTEM_JFREEREPORT)
12705 AC_SUBST(SAC_JAR)
12706 AC_SUBST(LIBXML_JAR)
12707 AC_SUBST(FLUTE_JAR)
12708 AC_SUBST(JFREEREPORT_JAR)
12709 AC_SUBST(LIBBASE_JAR)
12710 AC_SUBST(LIBLAYOUT_JAR)
12711 AC_SUBST(LIBLOADER_JAR)
12712 AC_SUBST(LIBFORMULA_JAR)
12713 AC_SUBST(LIBREPOSITORY_JAR)
12714 AC_SUBST(LIBFONTS_JAR)
12715 AC_SUBST(LIBSERIALIZER_JAR)
12717 # scripting provider for BeanShell?
12718 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12719 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12720     AC_MSG_RESULT([yes])
12721     ENABLE_SCRIPTING_BEANSHELL=TRUE
12723     dnl ===================================================================
12724     dnl Check for system beanshell
12725     dnl ===================================================================
12726     AC_MSG_CHECKING([which beanshell to use])
12727     if test "$with_system_beanshell" = "yes"; then
12728         AC_MSG_RESULT([external])
12729         SYSTEM_BSH=TRUE
12730         if test -z $BSH_JAR; then
12731             BSH_JAR=/usr/share/java/bsh.jar
12732         fi
12733         if ! test -f $BSH_JAR; then
12734             AC_MSG_ERROR(bsh.jar not found.)
12735         fi
12736     else
12737         AC_MSG_RESULT([internal])
12738         SYSTEM_BSH=
12739         BUILD_TYPE="$BUILD_TYPE BSH"
12740     fi
12741 else
12742     AC_MSG_RESULT([no])
12743     ENABLE_SCRIPTING_BEANSHELL=
12744     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12746 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12747 AC_SUBST(SYSTEM_BSH)
12748 AC_SUBST(BSH_JAR)
12750 # scripting provider for JavaScript?
12751 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12752 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12753     AC_MSG_RESULT([yes])
12754     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12756     dnl ===================================================================
12757     dnl Check for system rhino
12758     dnl ===================================================================
12759     AC_MSG_CHECKING([which rhino to use])
12760     if test "$with_system_rhino" = "yes"; then
12761         AC_MSG_RESULT([external])
12762         SYSTEM_RHINO=TRUE
12763         if test -z $RHINO_JAR; then
12764             RHINO_JAR=/usr/share/java/js.jar
12765         fi
12766         if ! test -f $RHINO_JAR; then
12767             AC_MSG_ERROR(js.jar not found.)
12768         fi
12769     else
12770         AC_MSG_RESULT([internal])
12771         SYSTEM_RHINO=
12772         BUILD_TYPE="$BUILD_TYPE RHINO"
12773         NEED_ANT=TRUE
12774     fi
12775 else
12776     AC_MSG_RESULT([no])
12777     ENABLE_SCRIPTING_JAVASCRIPT=
12778     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12780 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12781 AC_SUBST(SYSTEM_RHINO)
12782 AC_SUBST(RHINO_JAR)
12784 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12785 # paths should be added to library search path. So lets put all 64-bit
12786 # platforms there.
12787 supports_multilib=
12788 case "$host_cpu" in
12789 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12790     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12791         supports_multilib="yes"
12792     fi
12793     ;;
12795     ;;
12796 esac
12798 dnl ===================================================================
12799 dnl QT5 Integration
12800 dnl ===================================================================
12802 QT5_CFLAGS=""
12803 QT5_LIBS=""
12804 QMAKE5="qmake"
12805 MOC5="moc"
12806 QT5_GOBJECT_CFLAGS=""
12807 QT5_GOBJECT_LIBS=""
12808 QT5_HAVE_GOBJECT=""
12809 QT5_PLATFORMS_SRCDIR=""
12810 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12811         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12812         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12813 then
12814     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12815     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12817     if test -n "$supports_multilib"; then
12818         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12819     fi
12821     qt5_test_include="QtWidgets/qapplication.h"
12822     if test "$_os" = "Emscripten"; then
12823         qt5_test_library="libQt5Widgets.a"
12824     else
12825         qt5_test_library="libQt5Widgets.so"
12826     fi
12828     dnl Check for qmake5
12829     if test -n "$QT5DIR"; then
12830         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12831     else
12832         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12833     fi
12834     if test "$QMAKE5" = "no"; then
12835         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12836     else
12837         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12838         if test -z "$qmake5_test_ver"; then
12839             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12840         fi
12841         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12842         qt5_minimal_minor="6"
12843         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12844             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12845         else
12846             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12847         fi
12848     fi
12850     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12851     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12852     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12853     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12855     AC_MSG_CHECKING([for Qt5 headers])
12856     qt5_incdir="no"
12857     for inc_dir in $qt5_incdirs; do
12858         if test -r "$inc_dir/$qt5_test_include"; then
12859             qt5_incdir="$inc_dir"
12860             break
12861         fi
12862     done
12863     AC_MSG_RESULT([$qt5_incdir])
12864     if test "x$qt5_incdir" = "xno"; then
12865         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12866     fi
12867     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12868     AC_LANG_PUSH([C++])
12869     save_CPPFLAGS=$CPPFLAGS
12870     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12871     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12872         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12873     CPPFLAGS=$save_CPPFLAGS
12874     AC_LANG_POP([C++])
12876     AC_MSG_CHECKING([for Qt5 libraries])
12877     qt5_libdir="no"
12878     for lib_dir in $qt5_libdirs; do
12879         if test -r "$lib_dir/$qt5_test_library"; then
12880             qt5_libdir="$lib_dir"
12881             break
12882         fi
12883     done
12884     AC_MSG_RESULT([$qt5_libdir])
12885     if test "x$qt5_libdir" = "xno"; then
12886         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12887     fi
12889     if test "$_os" = "Emscripten"; then
12890         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12891             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12892         fi
12893         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12894             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12895         fi
12896     fi
12898     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12899     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12900     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12901     if test "$_os" = "Emscripten"; then
12902         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12903     fi
12905     if test "$USING_X11" = TRUE; then
12906         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12907         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12908             QT5_HAVE_XCB_ICCCM=1
12909             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12910         ],[
12911             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)])
12912             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12913         ])
12914         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12915         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12916         QT5_USING_X11=1
12917         AC_DEFINE(QT5_USING_X11)
12918     fi
12920     dnl Check for Meta Object Compiler
12922     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12923     if test "$MOC5" = "no"; then
12924         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12925 the root of your Qt installation by exporting QT5DIR before running "configure".])
12926     fi
12928     if test "$test_gstreamer_1_0" = yes; then
12929         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12930                 QT5_HAVE_GOBJECT=1
12931                 AC_DEFINE(QT5_HAVE_GOBJECT)
12932             ],
12933             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12934         )
12935     fi
12937 AC_SUBST(QT5_CFLAGS)
12938 AC_SUBST(QT5_LIBS)
12939 AC_SUBST(MOC5)
12940 AC_SUBST(QT5_GOBJECT_CFLAGS)
12941 AC_SUBST(QT5_GOBJECT_LIBS)
12942 AC_SUBST(QT5_HAVE_GOBJECT)
12943 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12945 dnl ===================================================================
12946 dnl QT6 Integration
12947 dnl ===================================================================
12949 QT6_CFLAGS=""
12950 QT6_LIBS=""
12951 QMAKE6="qmake"
12952 MOC6="moc"
12953 QT6_PLATFORMS_SRCDIR=""
12954 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12955 then
12956     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12957     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12959     if test -n "$supports_multilib"; then
12960         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12961     fi
12963     qt6_test_include="QtWidgets/qapplication.h"
12964     if test "$_os" = "Emscripten"; then
12965         qt6_test_library="libQt6Widgets.a"
12966     else
12967         qt6_test_library="libQt6Widgets.so"
12968     fi
12970     dnl Check for qmake6
12971     if test -n "$QT6DIR"; then
12972         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12973     else
12974         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12975     fi
12976     if test "$QMAKE6" = "no"; then
12977         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12978     else
12979         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12980         if test -z "$qmake6_test_ver"; then
12981             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12982         fi
12983         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12984     fi
12986     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12987     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12988     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12989     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12991     AC_MSG_CHECKING([for Qt6 headers])
12992     qt6_incdir="no"
12993     for inc_dir in $qt6_incdirs; do
12994         if test -r "$inc_dir/$qt6_test_include"; then
12995             qt6_incdir="$inc_dir"
12996             break
12997         fi
12998     done
12999     AC_MSG_RESULT([$qt6_incdir])
13000     if test "x$qt6_incdir" = "xno"; then
13001         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13002     fi
13003     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13004     AC_LANG_PUSH([C++])
13005     save_CPPFLAGS=$CPPFLAGS
13006     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13007     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13008         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13009     CPPFLAGS=$save_CPPFLAGS
13010     AC_LANG_POP([C++])
13012     AC_MSG_CHECKING([for Qt6 libraries])
13013     qt6_libdir="no"
13014     for lib_dir in $qt6_libdirs; do
13015         if test -r "$lib_dir/$qt6_test_library"; then
13016             qt6_libdir="$lib_dir"
13017             break
13018         fi
13019     done
13020     AC_MSG_RESULT([$qt6_libdir])
13021     if test "x$qt6_libdir" = "xno"; then
13022         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13023     fi
13025     if test "$_os" = "Emscripten"; then
13026         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13027             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13028         fi
13029         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13030             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13031         fi
13032     fi
13034     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13035     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13036     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13037     if test "$_os" = "Emscripten"; then
13038         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13039     fi
13041     if test "$USING_X11" = TRUE; then
13042         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13043         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13044         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13045         QT6_USING_X11=1
13046         AC_DEFINE(QT6_USING_X11)
13047     fi
13049     dnl Check for Meta Object Compiler
13051     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13052     if test "$MOC6" = "no"; then
13053         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13054 the root of your Qt installation by exporting QT6DIR before running "configure".])
13055     fi
13057 AC_SUBST(QT6_CFLAGS)
13058 AC_SUBST(QT6_LIBS)
13059 AC_SUBST(MOC6)
13060 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13062 dnl ===================================================================
13063 dnl KF5 Integration
13064 dnl ===================================================================
13066 KF5_CFLAGS=""
13067 KF5_LIBS=""
13068 KF5_CONFIG="kf5-config"
13069 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13070         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13071 then
13072     if test "$OS" = "HAIKU"; then
13073         haiku_arch="`echo $RTL_ARCH | tr X x`"
13074         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13075         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13076     fi
13078     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13079     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13080     if test -n "$supports_multilib"; then
13081         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13082     fi
13084     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13085     kf5_test_library="libKF5KIOFileWidgets.so"
13086     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13088     dnl kf5 KDE4 support compatibility installed
13089     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13090     if test "$KF5_CONFIG" != "no"; then
13091         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13092         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13093     fi
13095     dnl Check for KF5 headers
13096     AC_MSG_CHECKING([for KF5 headers])
13097     kf5_incdir="no"
13098     for kf5_check in $kf5_incdirs; do
13099         if test -r "$kf5_check/$kf5_test_include"; then
13100             kf5_incdir="$kf5_check/KF5"
13101             break
13102         fi
13103     done
13104     AC_MSG_RESULT([$kf5_incdir])
13105     if test "x$kf5_incdir" = "xno"; then
13106         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13107     fi
13109     dnl Check for KF5 libraries
13110     AC_MSG_CHECKING([for KF5 libraries])
13111     kf5_libdir="no"
13112     for kf5_check in $kf5_libdirs; do
13113         if test -r "$kf5_check/$kf5_test_library"; then
13114             kf5_libdir="$kf5_check"
13115             break
13116         fi
13117     done
13119     AC_MSG_RESULT([$kf5_libdir])
13120     if test "x$kf5_libdir" = "xno"; then
13121         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13122     fi
13124     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"
13125     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13126     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13128     if test "$USING_X11" = TRUE; then
13129         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13130     fi
13132     AC_LANG_PUSH([C++])
13133     save_CXXFLAGS=$CXXFLAGS
13134     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13135     AC_MSG_CHECKING([whether KDE is >= 5.0])
13136        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13137 #include <kcoreaddons_version.h>
13139 int main(int argc, char **argv) {
13140        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13141        else return 1;
13143        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13144     CXXFLAGS=$save_CXXFLAGS
13145     AC_LANG_POP([C++])
13147 AC_SUBST(KF5_CFLAGS)
13148 AC_SUBST(KF5_LIBS)
13150 dnl ===================================================================
13151 dnl Test whether to include Evolution 2 support
13152 dnl ===================================================================
13153 AC_MSG_CHECKING([whether to enable evolution 2 support])
13154 if test "$enable_evolution2" = yes; then
13155     AC_MSG_RESULT([yes])
13156     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13157     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13158     FilterLibs "${GOBJECT_LIBS}"
13159     GOBJECT_LIBS="${filteredlibs}"
13160     ENABLE_EVOAB2="TRUE"
13161 else
13162     AC_MSG_RESULT([no])
13164 AC_SUBST(ENABLE_EVOAB2)
13165 AC_SUBST(GOBJECT_CFLAGS)
13166 AC_SUBST(GOBJECT_LIBS)
13168 dnl ===================================================================
13169 dnl Test which themes to include
13170 dnl ===================================================================
13171 AC_MSG_CHECKING([which themes to include])
13172 # if none given use default subset of available themes
13173 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13174     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"
13177 WITH_THEMES=""
13178 if test "x$with_theme" != "xno"; then
13179     for theme in $with_theme; do
13180         case $theme in
13181         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" ;;
13182         default) real_theme=colibre ;;
13183         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13184         esac
13185         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13186     done
13188 AC_MSG_RESULT([$WITH_THEMES])
13189 AC_SUBST([WITH_THEMES])
13190 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13191 for theme in $with_theme; do
13192     case $theme in
13193     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13194     *) ;;
13195     esac
13196 done
13198 ###############################################################################
13199 # Extensions checking
13200 ###############################################################################
13201 AC_MSG_CHECKING([for extensions integration])
13202 if test "x$enable_extension_integration" != "xno"; then
13203     WITH_EXTENSION_INTEGRATION=TRUE
13204     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13205     AC_MSG_RESULT([yes, use integration])
13206 else
13207     WITH_EXTENSION_INTEGRATION=
13208     AC_MSG_RESULT([no, do not integrate])
13210 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13212 dnl Should any extra extensions be included?
13213 dnl There are standalone tests for each of these below.
13214 WITH_EXTRA_EXTENSIONS=
13215 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13217 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13218 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13219 if test "x$with_java" != "xno"; then
13220     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13221     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13224 AC_MSG_CHECKING([whether to build opens___.ttf])
13225 if test "$enable_build_opensymbol" = "yes"; then
13226     AC_MSG_RESULT([yes])
13227     AC_PATH_PROG(FONTFORGE, fontforge)
13228     if test -z "$FONTFORGE"; then
13229         AC_MSG_ERROR([fontforge not installed])
13230     fi
13231 else
13232     AC_MSG_RESULT([no])
13233     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13235 AC_SUBST(FONTFORGE)
13237 dnl ===================================================================
13238 dnl Test whether to include fonts
13239 dnl ===================================================================
13240 AC_MSG_CHECKING([whether to include third-party fonts])
13241 if test "$with_fonts" != "no"; then
13242     AC_MSG_RESULT([yes])
13243     WITH_FONTS=TRUE
13244     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13245     AC_DEFINE(HAVE_MORE_FONTS)
13246 else
13247     AC_MSG_RESULT([no])
13248     WITH_FONTS=
13249     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13251 AC_SUBST(WITH_FONTS)
13253 dnl Test whether to include more Google Noto fonts
13254 dnl ===================================================================
13255 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13256 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13257     AC_MSG_RESULT([no])
13258     WITH_NOTO_FONT=
13259 else
13260     AC_MSG_RESULT([yes])
13261     WITH_NOTO_FONT=TRUE
13262     BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13263     SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13265 AC_SUBST(WITH_NOTO_FONT)
13267 dnl ===================================================================
13268 dnl Test whether to enable online update service
13269 dnl ===================================================================
13270 AC_MSG_CHECKING([whether to enable online update])
13271 ENABLE_ONLINE_UPDATE=
13272 ENABLE_ONLINE_UPDATE_MAR=
13273 UPDATE_CONFIG=
13274 if test "$enable_online_update" = ""; then
13275     AC_MSG_RESULT([no])
13276 else
13277     if test "$enable_online_update" = "mar"; then
13278         AC_MSG_RESULT([yes - MAR-based online update])
13279         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13280         if test "$with_update_config" = ""; then
13281             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13282         fi
13283         UPDATE_CONFIG="$with_update_config"
13284         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13285     elif test "$enable_online_update" = "yes"; then
13286         AC_MSG_RESULT([yes])
13287         ENABLE_ONLINE_UPDATE="TRUE"
13288     else
13289         AC_MSG_RESULT([no])
13290     fi
13292 AC_SUBST(ENABLE_ONLINE_UPDATE)
13293 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13294 AC_SUBST(UPDATE_CONFIG)
13297 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13298 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13299     if test "x$with_privacy_policy_url" = "xundefined"; then
13300         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13301     fi
13303 AC_SUBST(PRIVACY_POLICY_URL)
13304 dnl ===================================================================
13305 dnl Test whether we need bzip2
13306 dnl ===================================================================
13307 SYSTEM_BZIP2=
13308 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13309     AC_MSG_CHECKING([whether to use system bzip2])
13310     if test "$with_system_bzip2" = yes; then
13311         SYSTEM_BZIP2=TRUE
13312         AC_MSG_RESULT([yes])
13313         PKG_CHECK_MODULES(BZIP2, bzip2)
13314         FilterLibs "${BZIP2_LIBS}"
13315         BZIP2_LIBS="${filteredlibs}"
13316     else
13317         AC_MSG_RESULT([no])
13318         BUILD_TYPE="$BUILD_TYPE BZIP2"
13319     fi
13321 AC_SUBST(SYSTEM_BZIP2)
13322 AC_SUBST(BZIP2_CFLAGS)
13323 AC_SUBST(BZIP2_LIBS)
13325 dnl ===================================================================
13326 dnl Test whether to enable extension update
13327 dnl ===================================================================
13328 AC_MSG_CHECKING([whether to enable extension update])
13329 ENABLE_EXTENSION_UPDATE=
13330 if test "x$enable_extension_update" = "xno"; then
13331     AC_MSG_RESULT([no])
13332 else
13333     AC_MSG_RESULT([yes])
13334     ENABLE_EXTENSION_UPDATE="TRUE"
13335     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13336     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13338 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13341 dnl ===================================================================
13342 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13343 dnl ===================================================================
13344 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13345 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13346     AC_MSG_RESULT([no])
13347     ENABLE_SILENT_MSI=
13348 else
13349     AC_MSG_RESULT([yes])
13350     ENABLE_SILENT_MSI=TRUE
13351     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13353 AC_SUBST(ENABLE_SILENT_MSI)
13355 AC_MSG_CHECKING([whether and how to use Xinerama])
13356 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13357     if test "$x_libraries" = "default_x_libraries"; then
13358         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13359         if test "x$XINERAMALIB" = x; then
13360            XINERAMALIB="/usr/lib"
13361         fi
13362     else
13363         XINERAMALIB="$x_libraries"
13364     fi
13365     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13366         # we have both versions, let the user decide but use the dynamic one
13367         # per default
13368         USE_XINERAMA=TRUE
13369         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13370             XINERAMA_LINK=dynamic
13371         else
13372             XINERAMA_LINK=static
13373         fi
13374     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13375         # we have only the dynamic version
13376         USE_XINERAMA=TRUE
13377         XINERAMA_LINK=dynamic
13378     elif test -e "$XINERAMALIB/libXinerama.a"; then
13379         # static version
13380         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13381             USE_XINERAMA=TRUE
13382             XINERAMA_LINK=static
13383         else
13384             USE_XINERAMA=
13385             XINERAMA_LINK=none
13386         fi
13387     else
13388         # no Xinerama
13389         USE_XINERAMA=
13390         XINERAMA_LINK=none
13391     fi
13392     if test "$USE_XINERAMA" = "TRUE"; then
13393         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13394         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13395             [AC_MSG_ERROR(Xinerama header not found.)], [])
13396         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13397         if test "x$XEXTLIB" = x; then
13398            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13399         fi
13400         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13401         if test "$_os" = "FreeBSD"; then
13402             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13403         fi
13404         if test "$_os" = "Linux"; then
13405             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13406         fi
13407         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13408             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13409     else
13410         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13411     fi
13412 else
13413     USE_XINERAMA=
13414     XINERAMA_LINK=none
13415     AC_MSG_RESULT([no])
13417 AC_SUBST(USE_XINERAMA)
13418 AC_SUBST(XINERAMA_LINK)
13420 dnl ===================================================================
13421 dnl Test whether to build cairo or rely on the system version
13422 dnl ===================================================================
13424 if test "$test_cairo" = "yes"; then
13425     AC_MSG_CHECKING([whether to use the system cairo])
13427     : ${with_system_cairo:=$with_system_libs}
13428     if test "$with_system_cairo" = "yes"; then
13429         SYSTEM_CAIRO=TRUE
13430         AC_MSG_RESULT([yes])
13432         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13433         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13434         FilterLibs "${CAIRO_LIBS}"
13435         CAIRO_LIBS="${filteredlibs}"
13437         if test "$test_xrender" = "yes"; then
13438             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13439             AC_LANG_PUSH([C])
13440             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13441 #ifdef PictStandardA8
13442 #else
13443       return fail;
13444 #endif
13445 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13447             AC_LANG_POP([C])
13448         fi
13449     else
13450         AC_MSG_RESULT([no])
13451         BUILD_TYPE="$BUILD_TYPE CAIRO"
13452     fi
13454     if test "$enable_cairo_canvas" != no; then
13455         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13456         ENABLE_CAIRO_CANVAS=TRUE
13457     fi
13460 AC_SUBST(CAIRO_CFLAGS)
13461 AC_SUBST(CAIRO_LIBS)
13462 AC_SUBST(ENABLE_CAIRO_CANVAS)
13463 AC_SUBST(SYSTEM_CAIRO)
13465 dnl ===================================================================
13466 dnl Test whether to use avahi
13467 dnl ===================================================================
13468 if test "$_os" = "WINNT"; then
13469     # Windows uses bundled mDNSResponder
13470     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13471 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13472     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13473                       [ENABLE_AVAHI="TRUE"])
13474     AC_DEFINE(HAVE_FEATURE_AVAHI)
13475     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13476     FilterLibs "${AVAHI_LIBS}"
13477     AVAHI_LIBS="${filteredlibs}"
13480 AC_SUBST(ENABLE_AVAHI)
13481 AC_SUBST(AVAHI_CFLAGS)
13482 AC_SUBST(AVAHI_LIBS)
13484 dnl ===================================================================
13485 dnl Test whether to use liblangtag
13486 dnl ===================================================================
13487 SYSTEM_LIBLANGTAG=
13488 AC_MSG_CHECKING([whether to use system liblangtag])
13489 if test "$with_system_liblangtag" = yes; then
13490     SYSTEM_LIBLANGTAG=TRUE
13491     AC_MSG_RESULT([yes])
13492     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13493     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13494     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13495     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13496     FilterLibs "${LIBLANGTAG_LIBS}"
13497     LIBLANGTAG_LIBS="${filteredlibs}"
13498 else
13499     SYSTEM_LIBLANGTAG=
13500     AC_MSG_RESULT([no])
13501     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13502     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13503     if test "$COM" = "MSC"; then
13504         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13505     else
13506         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13507     fi
13509 AC_SUBST(SYSTEM_LIBLANGTAG)
13510 AC_SUBST(LIBLANGTAG_CFLAGS)
13511 AC_SUBST(LIBLANGTAG_LIBS)
13513 dnl ===================================================================
13514 dnl Test whether to build libpng or rely on the system version
13515 dnl ===================================================================
13517 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13519 dnl ===================================================================
13520 dnl Test whether to build libtiff or rely on the system version
13521 dnl ===================================================================
13523 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13525 dnl ===================================================================
13526 dnl Test whether to build libwebp or rely on the system version
13527 dnl ===================================================================
13529 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13531 dnl ===================================================================
13532 dnl Check for runtime JVM search path
13533 dnl ===================================================================
13534 if test "$ENABLE_JAVA" != ""; then
13535     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13536     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13537         AC_MSG_RESULT([yes])
13538         if ! test -d "$with_jvm_path"; then
13539             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13540         fi
13541         if ! test -d "$with_jvm_path"jvm; then
13542             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13543         fi
13544         JVM_ONE_PATH_CHECK="$with_jvm_path"
13545         AC_SUBST(JVM_ONE_PATH_CHECK)
13546     else
13547         AC_MSG_RESULT([no])
13548     fi
13551 dnl ===================================================================
13552 dnl Test for the presence of Ant and that it works
13553 dnl ===================================================================
13555 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13556     ANT_HOME=; export ANT_HOME
13557     WITH_ANT_HOME=; export WITH_ANT_HOME
13558     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13559         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13560             if test "$_os" = "WINNT"; then
13561                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13562             else
13563                 with_ant_home="$LODE_HOME/opt/ant"
13564             fi
13565         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13566             with_ant_home="$LODE_HOME/opt/ant"
13567         fi
13568     fi
13569     if test -z "$with_ant_home"; then
13570         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13571     else
13572         if test "$_os" = "WINNT"; then
13573             # AC_PATH_PROGS needs unix path
13574             with_ant_home=`cygpath -u "$with_ant_home"`
13575         fi
13576         AbsolutePath "$with_ant_home"
13577         with_ant_home=$absolute_path
13578         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13579         WITH_ANT_HOME=$with_ant_home
13580         ANT_HOME=$with_ant_home
13581     fi
13583     if test -z "$ANT"; then
13584         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13585     else
13586         # resolve relative or absolute symlink
13587         while test -h "$ANT"; do
13588             a_cwd=`pwd`
13589             a_basename=`basename "$ANT"`
13590             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13591             cd "`dirname "$ANT"`"
13592             cd "`dirname "$a_script"`"
13593             ANT="`pwd`"/"`basename "$a_script"`"
13594             cd "$a_cwd"
13595         done
13597         AC_MSG_CHECKING([if $ANT works])
13598         mkdir -p conftest.dir
13599         a_cwd=$(pwd)
13600         cd conftest.dir
13601         cat > conftest.java << EOF
13602         public class conftest {
13603             int testmethod(int a, int b) {
13604                     return a + b;
13605             }
13606         }
13609         cat > conftest.xml << EOF
13610         <project name="conftest" default="conftest">
13611         <target name="conftest">
13612             <javac srcdir="." includes="conftest.java">
13613             </javac>
13614         </target>
13615         </project>
13618         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13619         if test $? = 0 -a -f ./conftest.class; then
13620             AC_MSG_RESULT([Ant works])
13621             if test -z "$WITH_ANT_HOME"; then
13622                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13623                 if test -z "$ANT_HOME"; then
13624                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13625                 fi
13626             else
13627                 ANT_HOME="$WITH_ANT_HOME"
13628             fi
13629         else
13630             echo "configure: Ant test failed" >&5
13631             cat conftest.java >&5
13632             cat conftest.xml >&5
13633             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13634         fi
13635         cd "$a_cwd"
13636         rm -fr conftest.dir
13637     fi
13638     if test -z "$ANT_HOME"; then
13639         ANT_HOME="NO_ANT_HOME"
13640     else
13641         PathFormat "$ANT_HOME"
13642         ANT_HOME="$formatted_path"
13643         PathFormat "$ANT"
13644         ANT="$formatted_path"
13645     fi
13647     dnl Checking for ant.jar
13648     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13649         AC_MSG_CHECKING([Ant lib directory])
13650         if test -f $ANT_HOME/lib/ant.jar; then
13651             ANT_LIB="$ANT_HOME/lib"
13652         else
13653             if test -f $ANT_HOME/ant.jar; then
13654                 ANT_LIB="$ANT_HOME"
13655             else
13656                 if test -f /usr/share/java/ant.jar; then
13657                     ANT_LIB=/usr/share/java
13658                 else
13659                     if test -f /usr/share/ant-core/lib/ant.jar; then
13660                         ANT_LIB=/usr/share/ant-core/lib
13661                     else
13662                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13663                             ANT_LIB="$ANT_HOME/lib/ant"
13664                         else
13665                             if test -f /usr/share/lib/ant/ant.jar; then
13666                                 ANT_LIB=/usr/share/lib/ant
13667                             else
13668                                 AC_MSG_ERROR([Ant libraries not found!])
13669                             fi
13670                         fi
13671                     fi
13672                 fi
13673             fi
13674         fi
13675         PathFormat "$ANT_LIB"
13676         ANT_LIB="$formatted_path"
13677         AC_MSG_RESULT([Ant lib directory found.])
13678     fi
13680     ant_minver=1.6.0
13681     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13683     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13684     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13685     ant_version_major=`echo $ant_version | cut -d. -f1`
13686     ant_version_minor=`echo $ant_version | cut -d. -f2`
13687     echo "configure: ant_version $ant_version " >&5
13688     echo "configure: ant_version_major $ant_version_major " >&5
13689     echo "configure: ant_version_minor $ant_version_minor " >&5
13690     if test "$ant_version_major" -ge "2"; then
13691         AC_MSG_RESULT([yes, $ant_version])
13692     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13693         AC_MSG_RESULT([yes, $ant_version])
13694     else
13695         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13696     fi
13698     rm -f conftest* core core.* *.core
13700 AC_SUBST(ANT)
13701 AC_SUBST(ANT_HOME)
13702 AC_SUBST(ANT_LIB)
13704 OOO_JUNIT_JAR=
13705 HAMCREST_JAR=
13706 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13707     AC_MSG_CHECKING([for JUnit 4])
13708     if test "$with_junit" = "yes"; then
13709         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13710             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13711         elif test -e /usr/share/java/junit4.jar; then
13712             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13713         else
13714            if test -e /usr/share/lib/java/junit.jar; then
13715               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13716            else
13717               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13718            fi
13719         fi
13720     else
13721         OOO_JUNIT_JAR=$with_junit
13722     fi
13723     if test "$_os" = "WINNT"; then
13724         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13725     fi
13726     printf 'import org.junit.Before;' > conftest.java
13727     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13728         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13729     else
13730         AC_MSG_ERROR(
13731 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13732  specify its pathname via --with-junit=..., or disable it via --without-junit])
13733     fi
13734     rm -f conftest.class conftest.java
13735     if test $OOO_JUNIT_JAR != ""; then
13736         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13737     fi
13739     AC_MSG_CHECKING([for included Hamcrest])
13740     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13741     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13742         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13743     else
13744         AC_MSG_RESULT([Not included])
13745         AC_MSG_CHECKING([for standalone hamcrest jar.])
13746         if test "$with_hamcrest" = "yes"; then
13747             if test -e /usr/share/lib/java/hamcrest.jar; then
13748                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13749             elif test -e /usr/share/java/hamcrest/core.jar; then
13750                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13751             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13752                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13753             else
13754                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13755             fi
13756         else
13757             HAMCREST_JAR=$with_hamcrest
13758         fi
13759         if test "$_os" = "WINNT"; then
13760             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13761         fi
13762         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13763             AC_MSG_RESULT([$HAMCREST_JAR])
13764         else
13765             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),
13766                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13767         fi
13768     fi
13769     rm -f conftest.class conftest.java
13771 AC_SUBST(OOO_JUNIT_JAR)
13772 AC_SUBST(HAMCREST_JAR)
13775 AC_SUBST(SCPDEFS)
13778 # check for wget and curl
13780 WGET=
13781 CURL=
13783 if test "$enable_fetch_external" != "no"; then
13785 CURL=`which curl 2>/dev/null`
13787 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13788     # wget new enough?
13789     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13790     if test $? -eq 0; then
13791         WGET=$i
13792         break
13793     fi
13794 done
13796 if test -z "$WGET" -a -z "$CURL"; then
13797     AC_MSG_ERROR([neither wget nor curl found!])
13802 AC_SUBST(WGET)
13803 AC_SUBST(CURL)
13806 # check for sha256sum
13808 SHA256SUM=
13810 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13811     eval "$i -a 256 --version" > /dev/null 2>&1
13812     ret=$?
13813     if test $ret -eq 0; then
13814         SHA256SUM="$i -a 256"
13815         break
13816     fi
13817 done
13819 if test -z "$SHA256SUM"; then
13820     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13821         eval "$i --version" > /dev/null 2>&1
13822         ret=$?
13823         if test $ret -eq 0; then
13824             SHA256SUM=$i
13825             break
13826         fi
13827     done
13830 if test -z "$SHA256SUM"; then
13831     AC_MSG_ERROR([no sha256sum found!])
13834 AC_SUBST(SHA256SUM)
13836 dnl ===================================================================
13837 dnl Dealing with l10n options
13838 dnl ===================================================================
13839 AC_MSG_CHECKING([which languages to be built])
13840 # get list of all languages
13841 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13842 # the sed command does the following:
13843 #   + if a line ends with a backslash, append the next line to it
13844 #   + adds " on the beginning of the value (after =)
13845 #   + adds " at the end of the value
13846 #   + removes en-US; we want to put it on the beginning
13847 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13848 [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)]
13849 ALL_LANGS="en-US $completelangiso"
13850 # check the configured localizations
13851 WITH_LANG="$with_lang"
13853 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13854 # (Norwegian is "nb" and "nn".)
13855 if test "$WITH_LANG" = "no"; then
13856     WITH_LANG=
13859 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13860     AC_MSG_RESULT([en-US])
13861 else
13862     AC_MSG_RESULT([$WITH_LANG])
13863     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13864     if test -z "$MSGFMT"; then
13865         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13866             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13867         elif test -x "/opt/lo/bin/msgfmt"; then
13868             MSGFMT="/opt/lo/bin/msgfmt"
13869         else
13870             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13871             if test -z "$MSGFMT"; then
13872                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13873             fi
13874         fi
13875     fi
13876     if test -z "$MSGUNIQ"; then
13877         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13878             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13879         elif test -x "/opt/lo/bin/msguniq"; then
13880             MSGUNIQ="/opt/lo/bin/msguniq"
13881         else
13882             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13883             if test -z "$MSGUNIQ"; then
13884                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13885             fi
13886         fi
13887     fi
13889 AC_SUBST(MSGFMT)
13890 AC_SUBST(MSGUNIQ)
13891 # check that the list is valid
13892 for lang in $WITH_LANG; do
13893     test "$lang" = "ALL" && continue
13894     # need to check for the exact string, so add space before and after the list of all languages
13895     for vl in $ALL_LANGS; do
13896         if test "$vl" = "$lang"; then
13897            break
13898         fi
13899     done
13900     if test "$vl" != "$lang"; then
13901         # if you're reading this - you prolly quoted your languages remove the quotes ...
13902         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13903     fi
13904 done
13905 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13906     echo $WITH_LANG | grep -q en-US
13907     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13909 # list with substituted ALL
13910 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13911 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13912 test "$WITH_LANG" = "en-US" && WITH_LANG=
13913 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13914     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13915     ALL_LANGS=`echo $ALL_LANGS qtz`
13917 AC_SUBST(ALL_LANGS)
13918 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13919 AC_SUBST(WITH_LANG)
13920 AC_SUBST(WITH_LANG_LIST)
13921 AC_SUBST(GIT_NEEDED_SUBMODULES)
13923 WITH_POOR_HELP_LOCALIZATIONS=
13924 if test -d "$SRC_ROOT/translations/source"; then
13925     for l in `ls -1 $SRC_ROOT/translations/source`; do
13926         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13927             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13928         fi
13929     done
13931 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13933 if test -n "$with_locales"; then
13934     WITH_LOCALES="$with_locales"
13936     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13937     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13938     # config_host/config_locales.h.in
13939     for locale in $WITH_LOCALES; do
13940         lang=${locale%_*}
13942         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13944         case $lang in
13945         hi|mr*ne)
13946             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13947             ;;
13948         bg|ru)
13949             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13950             ;;
13951         esac
13952     done
13953 else
13954     AC_DEFINE(WITH_LOCALE_ALL)
13956 AC_SUBST(WITH_LOCALES)
13958 dnl git submodule update --reference
13959 dnl ===================================================================
13960 if test -n "${GIT_REFERENCE_SRC}"; then
13961     for repo in ${GIT_NEEDED_SUBMODULES}; do
13962         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13963             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13964         fi
13965     done
13967 AC_SUBST(GIT_REFERENCE_SRC)
13969 dnl git submodules linked dirs
13970 dnl ===================================================================
13971 if test -n "${GIT_LINK_SRC}"; then
13972     for repo in ${GIT_NEEDED_SUBMODULES}; do
13973         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13974             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13975         fi
13976     done
13978 AC_SUBST(GIT_LINK_SRC)
13980 dnl branding
13981 dnl ===================================================================
13982 AC_MSG_CHECKING([for alternative branding images directory])
13983 # initialize mapped arrays
13984 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13985 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13987 if test -z "$with_branding" -o "$with_branding" = "no"; then
13988     AC_MSG_RESULT([none])
13989     DEFAULT_BRAND_IMAGES="$brand_files"
13990 else
13991     if ! test -d $with_branding ; then
13992         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13993     else
13994         AC_MSG_RESULT([$with_branding])
13995         CUSTOM_BRAND_DIR="$with_branding"
13996         for lfile in $brand_files
13997         do
13998             if ! test -f $with_branding/$lfile ; then
13999                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14000                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14001             else
14002                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14003             fi
14004         done
14005         check_for_progress="yes"
14006     fi
14008 AC_SUBST([BRAND_INTRO_IMAGES])
14009 AC_SUBST([CUSTOM_BRAND_DIR])
14010 AC_SUBST([CUSTOM_BRAND_IMAGES])
14011 AC_SUBST([DEFAULT_BRAND_IMAGES])
14014 AC_MSG_CHECKING([for 'intro' progress settings])
14015 PROGRESSBARCOLOR=
14016 PROGRESSSIZE=
14017 PROGRESSPOSITION=
14018 PROGRESSFRAMECOLOR=
14019 PROGRESSTEXTCOLOR=
14020 PROGRESSTEXTBASELINE=
14022 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14023     source "$with_branding/progress.conf"
14024     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14025 else
14026     AC_MSG_RESULT([none])
14029 AC_SUBST(PROGRESSBARCOLOR)
14030 AC_SUBST(PROGRESSSIZE)
14031 AC_SUBST(PROGRESSPOSITION)
14032 AC_SUBST(PROGRESSFRAMECOLOR)
14033 AC_SUBST(PROGRESSTEXTCOLOR)
14034 AC_SUBST(PROGRESSTEXTBASELINE)
14037 dnl ===================================================================
14038 dnl Custom build version
14039 dnl ===================================================================
14040 AC_MSG_CHECKING([for extra build ID])
14041 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14042     EXTRA_BUILDID="$with_extra_buildid"
14044 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14045 if test -n "$EXTRA_BUILDID" ; then
14046     AC_MSG_RESULT([$EXTRA_BUILDID])
14047 else
14048     AC_MSG_RESULT([not set])
14050 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14052 OOO_VENDOR=
14053 AC_MSG_CHECKING([for vendor])
14054 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14055     OOO_VENDOR="$USERNAME"
14057     if test -z "$OOO_VENDOR"; then
14058         OOO_VENDOR="$USER"
14059     fi
14061     if test -z "$OOO_VENDOR"; then
14062         OOO_VENDOR="`id -u -n`"
14063     fi
14065     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14066 else
14067     OOO_VENDOR="$with_vendor"
14068     AC_MSG_RESULT([$OOO_VENDOR])
14070 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14071 AC_SUBST(OOO_VENDOR)
14073 if test "$_os" = "Android" ; then
14074     ANDROID_PACKAGE_NAME=
14075     AC_MSG_CHECKING([for Android package name])
14076     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14077         if test -n "$ENABLE_DEBUG"; then
14078             # Default to the package name that makes ndk-gdb happy.
14079             ANDROID_PACKAGE_NAME="org.libreoffice"
14080         else
14081             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14082         fi
14084         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14085     else
14086         ANDROID_PACKAGE_NAME="$with_android_package_name"
14087         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14088     fi
14089     AC_SUBST(ANDROID_PACKAGE_NAME)
14092 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14093 if test "$with_compat_oowrappers" = "yes"; then
14094     WITH_COMPAT_OOWRAPPERS=TRUE
14095     AC_MSG_RESULT(yes)
14096 else
14097     WITH_COMPAT_OOWRAPPERS=
14098     AC_MSG_RESULT(no)
14100 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14102 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14103 AC_MSG_CHECKING([for install dirname])
14104 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14105     INSTALLDIRNAME="$with_install_dirname"
14107 AC_MSG_RESULT([$INSTALLDIRNAME])
14108 AC_SUBST(INSTALLDIRNAME)
14110 AC_MSG_CHECKING([for prefix])
14111 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14112 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14113 PREFIXDIR="$prefix"
14114 AC_MSG_RESULT([$PREFIXDIR])
14115 AC_SUBST(PREFIXDIR)
14117 LIBDIR=[$(eval echo $(eval echo $libdir))]
14118 AC_SUBST(LIBDIR)
14120 DATADIR=[$(eval echo $(eval echo $datadir))]
14121 AC_SUBST(DATADIR)
14123 MANDIR=[$(eval echo $(eval echo $mandir))]
14124 AC_SUBST(MANDIR)
14126 DOCDIR=[$(eval echo $(eval echo $docdir))]
14127 AC_SUBST(DOCDIR)
14129 BINDIR=[$(eval echo $(eval echo $bindir))]
14130 AC_SUBST(BINDIR)
14132 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14133 AC_SUBST(INSTALLDIR)
14135 TESTINSTALLDIR="${BUILDDIR}/test-install"
14136 AC_SUBST(TESTINSTALLDIR)
14139 # ===================================================================
14140 # OAuth2 id and secrets
14141 # ===================================================================
14143 AC_MSG_CHECKING([for Google Drive client id and secret])
14144 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14145     AC_MSG_RESULT([not set])
14146     GDRIVE_CLIENT_ID="\"\""
14147     GDRIVE_CLIENT_SECRET="\"\""
14148 else
14149     AC_MSG_RESULT([set])
14150     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14151     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14153 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14154 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14156 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14157 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14158     AC_MSG_RESULT([not set])
14159     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14160     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14161 else
14162     AC_MSG_RESULT([set])
14163     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14164     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14166 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14167 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14169 AC_MSG_CHECKING([for OneDrive client id and secret])
14170 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14171     AC_MSG_RESULT([not set])
14172     ONEDRIVE_CLIENT_ID="\"\""
14173     ONEDRIVE_CLIENT_SECRET="\"\""
14174 else
14175     AC_MSG_RESULT([set])
14176     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14177     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14179 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14180 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14183 dnl ===================================================================
14184 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14185 dnl --enable-dependency-tracking configure option
14186 dnl ===================================================================
14187 AC_MSG_CHECKING([whether to enable dependency tracking])
14188 if test "$enable_dependency_tracking" = "no"; then
14189     nodep=TRUE
14190     AC_MSG_RESULT([no])
14191 else
14192     AC_MSG_RESULT([yes])
14194 AC_SUBST(nodep)
14196 dnl ===================================================================
14197 dnl Number of CPUs to use during the build
14198 dnl ===================================================================
14199 AC_MSG_CHECKING([for number of processors to use])
14200 # plain --with-parallelism is just the default
14201 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14202     if test "$with_parallelism" = "no"; then
14203         PARALLELISM=0
14204     else
14205         PARALLELISM=$with_parallelism
14206     fi
14207 else
14208     if test "$enable_icecream" = "yes"; then
14209         PARALLELISM="40"
14210     else
14211         case `uname -s` in
14213         Darwin|FreeBSD|NetBSD|OpenBSD)
14214             PARALLELISM=`sysctl -n hw.ncpu`
14215             ;;
14217         Linux)
14218             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14219         ;;
14220         # what else than above does profit here *and* has /proc?
14221         *)
14222             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14223             ;;
14224         esac
14226         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14227         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14228     fi
14231 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14232     if test -z "$with_parallelism"; then
14233             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14234             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14235             PARALLELISM="1"
14236     else
14237         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."
14238     fi
14241 if test $PARALLELISM -eq 0; then
14242     AC_MSG_RESULT([explicit make -j option needed])
14243 else
14244     AC_MSG_RESULT([$PARALLELISM])
14246 AC_SUBST(PARALLELISM)
14248 IWYU_PATH="$with_iwyu"
14249 AC_SUBST(IWYU_PATH)
14250 if test ! -z "$IWYU_PATH"; then
14251     if test ! -f "$IWYU_PATH"; then
14252         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14253     fi
14257 # Set up ILIB for MSVC build
14259 ILIB1=
14260 if test "$build_os" = "cygwin"; then
14261     ILIB="."
14262     if test -n "$JAVA_HOME"; then
14263         ILIB="$ILIB;$JAVA_HOME/lib"
14264     fi
14265     ILIB1=-link
14266     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14267     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14268     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14269     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14270     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14271         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14272         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14273     fi
14274     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14275     ucrtlibpath_formatted=$formatted_path
14276     ILIB="$ILIB;$ucrtlibpath_formatted"
14277     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14278     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14279         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14280     else
14281         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14282     fi
14284     if test "$cross_compiling" != "yes"; then
14285         ILIB_FOR_BUILD="$ILIB"
14286     fi
14288 AC_SUBST(ILIB)
14289 AC_SUBST(ILIB_FOR_BUILD)
14291 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14292 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14293 dnl from consteval constructor initializing const variable",
14294 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14295 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14296 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14297 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14298 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14299 dnl constructor in ternary expression (/std:c++latest)":
14300 AC_LANG_PUSH([C++])
14301 save_CXX=$CXX
14302 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14303     CXX="env LIB=$ILIB $CXX"
14305 save_CXXFLAGS=$CXXFLAGS
14306 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14307 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14308         struct S {
14309             consteval S() { i = 1; }
14310             int i = 0;
14311         };
14312         S const s;
14314         struct S1 { consteval S1(int) {} };
14315         struct S2 {
14316             S1 x;
14317             S2(): x(0) {}
14318         };
14320         struct S3 {
14321             consteval S3() {}
14322             union {
14323                 int a;
14324                 unsigned b = 0;
14325             };
14326         };
14327         void f() { S3(); }
14329         struct S4 { consteval S4() = default; };
14330         void f4(bool b) { b ? S4() : S4(); }
14331     ], [
14332         return (s.i == 1) ? 0 : 1;
14333     ])], [
14334         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14335         AC_MSG_RESULT([yes])
14336     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14337 CXX=$save_CXX
14338 CXXFLAGS=$save_CXXFLAGS
14339 AC_LANG_POP([C++])
14341 # ===================================================================
14342 # Creating bigger shared library to link against
14343 # ===================================================================
14344 AC_MSG_CHECKING([whether to create huge library])
14345 MERGELIBS=
14347 if test $_os = iOS -o $_os = Android; then
14348     # Never any point in mergelibs for these as we build just static
14349     # libraries anyway...
14350     enable_mergelibs=no
14353 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14354     if test $_os != Linux -a $_os != WINNT; then
14355         add_warning "--enable-mergelibs is not tested for this platform"
14356     fi
14357     MERGELIBS="TRUE"
14358     AC_MSG_RESULT([yes])
14359     AC_DEFINE(ENABLE_MERGELIBS)
14360 else
14361     AC_MSG_RESULT([no])
14363 AC_SUBST([MERGELIBS])
14365 dnl ===================================================================
14366 dnl icerun is a wrapper that stops us spawning tens of processes
14367 dnl locally - for tools that can't be executed on the compile cluster
14368 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14369 dnl ===================================================================
14370 AC_MSG_CHECKING([whether to use icerun wrapper])
14371 ICECREAM_RUN=
14372 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14373     ICECREAM_RUN=icerun
14374     AC_MSG_RESULT([yes])
14375 else
14376     AC_MSG_RESULT([no])
14378 AC_SUBST(ICECREAM_RUN)
14380 dnl ===================================================================
14381 dnl Setup the ICECC_VERSION for the build the same way it was set for
14382 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14383 dnl ===================================================================
14384 x_ICECC_VERSION=[\#]
14385 if test -n "$ICECC_VERSION" ; then
14386     x_ICECC_VERSION=
14388 AC_SUBST(x_ICECC_VERSION)
14389 AC_SUBST(ICECC_VERSION)
14391 dnl ===================================================================
14393 AC_MSG_CHECKING([MPL subset])
14394 MPL_SUBSET=
14396 if test "$enable_mpl_subset" = "yes"; then
14397     warn_report=false
14398     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14399         warn_report=true
14400     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14401         warn_report=true
14402     fi
14403     if test "$warn_report" = "true"; then
14404         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14405     fi
14406     if test "x$enable_postgresql_sdbc" != "xno"; then
14407         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14408     fi
14409     if test "$enable_lotuswordpro" = "yes"; then
14410         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14411     fi
14412     if test "$WITH_WEBDAV" = "neon"; then
14413         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14414     fi
14415     if test -n "$ENABLE_POPPLER"; then
14416         if test "x$SYSTEM_POPPLER" = "x"; then
14417             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14418         fi
14419     fi
14420     # cf. m4/libo_check_extension.m4
14421     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14422         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14423     fi
14424     for theme in $WITH_THEMES; do
14425         case $theme in
14426         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14427             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14428         *) : ;;
14429         esac
14430     done
14432     ENABLE_OPENGL_TRANSITIONS=
14434     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14435         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14436     fi
14438     MPL_SUBSET="TRUE"
14439     AC_DEFINE(MPL_HAVE_SUBSET)
14440     AC_MSG_RESULT([only])
14441 else
14442     AC_MSG_RESULT([no restrictions])
14444 AC_SUBST(MPL_SUBSET)
14446 dnl ===================================================================
14448 AC_MSG_CHECKING([formula logger])
14449 ENABLE_FORMULA_LOGGER=
14451 if test "x$enable_formula_logger" = "xyes"; then
14452     AC_MSG_RESULT([yes])
14453     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14454     ENABLE_FORMULA_LOGGER=TRUE
14455 elif test -n "$ENABLE_DBGUTIL" ; then
14456     AC_MSG_RESULT([yes])
14457     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14458     ENABLE_FORMULA_LOGGER=TRUE
14459 else
14460     AC_MSG_RESULT([no])
14463 AC_SUBST(ENABLE_FORMULA_LOGGER)
14465 dnl ===================================================================
14466 dnl Checking for active Antivirus software.
14467 dnl ===================================================================
14469 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14470     AC_MSG_CHECKING([for active Antivirus software])
14471     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14472     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14473         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14474             AC_MSG_RESULT([found])
14475             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14476             echo $EICAR_STRING > $SRC_ROOT/eicar
14477             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14478             rm $SRC_ROOT/eicar
14479             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14480                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14481             fi
14482             echo $EICAR_STRING > $BUILDDIR/eicar
14483             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14484             rm $BUILDDIR/eicar
14485             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14486                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14487             fi
14488             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"
14489         else
14490             AC_MSG_RESULT([not found])
14491         fi
14492     else
14493         AC_MSG_RESULT([n/a])
14494     fi
14497 dnl ===================================================================
14498 dnl Setting up the environment.
14499 dnl ===================================================================
14500 AC_MSG_NOTICE([setting up the build environment variables...])
14502 AC_SUBST(COMPATH)
14504 if test "$build_os" = "cygwin"; then
14505     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14506         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14507         ATL_INCLUDE="$COMPATH/atlmfc/include"
14508     elif test -d "$COMPATH/atlmfc/lib"; then
14509         ATL_LIB="$COMPATH/atlmfc/lib"
14510         ATL_INCLUDE="$COMPATH/atlmfc/include"
14511     else
14512         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14513         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14514     fi
14515     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14516     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14517     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14519     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14520     PathFormat "/usr/bin/find.exe"
14521     FIND="$formatted_path"
14522     PathFormat "/usr/bin/sort.exe"
14523     SORT="$formatted_path"
14524     PathFormat "/usr/bin/grep.exe"
14525     WIN_GREP="$formatted_path"
14526     PathFormat "/usr/bin/ls.exe"
14527     WIN_LS="$formatted_path"
14528     PathFormat "/usr/bin/touch.exe"
14529     WIN_TOUCH="$formatted_path"
14530 else
14531     FIND=find
14532     SORT=sort
14535 AC_SUBST(ATL_INCLUDE)
14536 AC_SUBST(ATL_LIB)
14537 AC_SUBST(FIND)
14538 AC_SUBST(SORT)
14539 AC_SUBST(WIN_GREP)
14540 AC_SUBST(WIN_LS)
14541 AC_SUBST(WIN_TOUCH)
14543 AC_SUBST(BUILD_TYPE)
14545 AC_SUBST(SOLARINC)
14547 PathFormat "$PERL"
14548 PERL="$formatted_path"
14549 AC_SUBST(PERL)
14551 if test -n "$TMPDIR"; then
14552     TEMP_DIRECTORY="$TMPDIR"
14553 else
14554     TEMP_DIRECTORY="/tmp"
14556 if test "$build_os" = "cygwin"; then
14557     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14559 AC_SUBST(TEMP_DIRECTORY)
14561 # setup the PATH for the environment
14562 if test -n "$LO_PATH_FOR_BUILD"; then
14563     LO_PATH="$LO_PATH_FOR_BUILD"
14564     case "$host_os" in
14565     cygwin*|wsl*)
14566         pathmunge "$MSVC_HOST_PATH" "before"
14567         ;;
14568     esac
14569 else
14570     LO_PATH="$PATH"
14572     case "$host_os" in
14574     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14575         if test "$ENABLE_JAVA" != ""; then
14576             pathmunge "$JAVA_HOME/bin" "after"
14577         fi
14578         ;;
14580     cygwin*|wsl*)
14581         # Win32 make needs native paths
14582         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14583             LO_PATH=`cygpath -p -m "$PATH"`
14584         fi
14585         if test "$WIN_BUILD_ARCH" = "x64"; then
14586             # needed for msi packaging
14587             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14588         fi
14589         # .NET 4.6 and higher don't have bin directory
14590         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14591             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14592         fi
14593         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14594         pathmunge "$CSC_PATH" "before"
14595         pathmunge "$MIDL_PATH" "before"
14596         pathmunge "$AL_PATH" "before"
14597         pathmunge "$MSVC_MULTI_PATH" "before"
14598         pathmunge "$MSVC_BUILD_PATH" "before"
14599         if test -n "$MSBUILD_PATH" ; then
14600             pathmunge "$MSBUILD_PATH" "before"
14601         fi
14602         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14603         if test "$ENABLE_JAVA" != ""; then
14604             if test -d "$JAVA_HOME/jre/bin/client"; then
14605                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14606             fi
14607             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14608                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14609             fi
14610             pathmunge "$JAVA_HOME/bin" "before"
14611         fi
14612         pathmunge "$MSVC_HOST_PATH" "before"
14613         ;;
14615     solaris*)
14616         pathmunge "/usr/css/bin" "before"
14617         if test "$ENABLE_JAVA" != ""; then
14618             pathmunge "$JAVA_HOME/bin" "after"
14619         fi
14620         ;;
14621     esac
14624 AC_SUBST(LO_PATH)
14626 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14627 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14628     x_LO_ELFCHECK_ALLOWLIST=
14629 else
14630     x_LO_ELFCHECK_ALLOWLIST=[\#]
14632 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14633 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14635 libo_FUZZ_SUMMARY
14637 # Generate a configuration sha256 we can use for deps
14638 if test -f config_host.mk; then
14639     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14641 if test -f config_host_lang.mk; then
14642     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14645 CFLAGS=$my_original_CFLAGS
14646 CXXFLAGS=$my_original_CXXFLAGS
14647 CPPFLAGS=$my_original_CPPFLAGS
14649 AC_CONFIG_LINKS([include:include])
14651 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14652 # BUILD platform configuration] - otherwise breaks cross building
14653 AC_CONFIG_FILES([config_host.mk
14654                  config_host_lang.mk
14655                  Makefile
14656                  lo.xcent
14657                  bin/bffvalidator.sh
14658                  bin/odfvalidator.sh
14659                  bin/officeotron.sh
14660                  hardened_runtime.xcent
14661                  instsetoo_native/util/openoffice.lst
14662                  sysui/desktop/macosx/Info.plist
14663                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14664 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14665 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14666 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14667 AC_CONFIG_HEADERS([config_host/config_clang.h])
14668 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14669 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14670 AC_CONFIG_HEADERS([config_host/config_eot.h])
14671 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14672 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14673 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14674 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14675 AC_CONFIG_HEADERS([config_host/config_features.h])
14676 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14677 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14678 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14679 AC_CONFIG_HEADERS([config_host/config_folders.h])
14680 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14681 AC_CONFIG_HEADERS([config_host/config_gio.h])
14682 AC_CONFIG_HEADERS([config_host/config_global.h])
14683 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14684 AC_CONFIG_HEADERS([config_host/config_java.h])
14685 AC_CONFIG_HEADERS([config_host/config_langs.h])
14686 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14687 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14688 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14689 AC_CONFIG_HEADERS([config_host/config_locales.h])
14690 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14691 AC_CONFIG_HEADERS([config_host/config_oox.h])
14692 AC_CONFIG_HEADERS([config_host/config_options.h])
14693 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14694 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14695 AC_CONFIG_HEADERS([config_host/config_skia.h])
14696 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14697 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14698 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14699 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14700 AC_CONFIG_HEADERS([config_host/config_version.h])
14701 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14702 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14703 AC_CONFIG_HEADERS([config_host/config_python.h])
14704 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14705 AC_OUTPUT
14707 if test "$CROSS_COMPILING" = TRUE; then
14708     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14711 # touch the config timestamp file
14712 if test ! -f config_host.mk.stamp; then
14713     echo > config_host.mk.stamp
14714 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14715     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14716 else
14717     echo > config_host.mk.stamp
14720 # touch the config lang timestamp file
14721 if test ! -f config_host_lang.mk.stamp; then
14722     echo > config_host_lang.mk.stamp
14723 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14724     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14725 else
14726     echo > config_host_lang.mk.stamp
14730 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14731         -a "$build_os" = "cygwin"; then
14733 cat << _EOS
14734 ****************************************************************************
14735 WARNING:
14736 Your make version is known to be horribly slow, and hard to debug
14737 problems with. To get a reasonably functional make please do:
14739 to install a pre-compiled binary make for Win32
14741  mkdir -p /opt/lo/bin
14742  cd /opt/lo/bin
14743  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14744  cp make-4.2.1-msvc.exe make
14745  chmod +x make
14747 to install from source:
14748 place yourself in a working directory of you choice.
14750  git clone git://git.savannah.gnu.org/make.git
14752  [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"]
14753  set PATH=%PATH%;C:\Cygwin\bin
14754  [or Cygwin64, if that is what you have]
14755  cd path-to-make-repo-you-cloned-above
14756  build_w32.bat --without-guile
14758 should result in a WinRel/gnumake.exe.
14759 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14761 Then re-run autogen.sh
14763 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14764 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14766 _EOS
14767 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14768     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14773 cat << _EOF
14774 ****************************************************************************
14776 To build, run:
14777 $GNUMAKE
14779 To view some help, run:
14780 $GNUMAKE help
14782 _EOF
14784 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14785     cat << _EOF
14786 After the build has finished successfully, you can immediately run what you built using the command:
14787 _EOF
14789     if test $_os = Darwin; then
14790         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14791     else
14792         echo instdir/program/soffice
14793     fi
14794     cat << _EOF
14796 If you want to run the smoketest, run:
14797 $GNUMAKE check
14799 _EOF
14802 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14803     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14804     cat "$WARNINGS_FILE_FOR_BUILD"
14805     echo
14808 if test -s "$WARNINGS_FILE"; then
14809     echo "HOST config ($WARNINGS_FILE)"
14810     cat "$WARNINGS_FILE"
14813 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: