Prepare for removal of non-const operator[] from Sequence in cppuhelper
[LibreOffice.git] / configure.ac
blobf0cca1285c76405b4e6b9bfc1dae7b06e0a26c73
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.3.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
208 have_WARNINGS="no"
209 add_warning()
211     if test "$have_WARNINGS" = "no"; then
212         echo "*************************************" > "$WARNINGS_FILE"
213         have_WARNINGS="yes"
214         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
217         else
218             COLORWARN="* WARNING :"
219         fi
220     fi
221     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
228 dnl from themselves
230 mac_sanitize_path()
232     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235     mac_git_path=`which git 2>/dev/null`
236     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237         mac_path="$mac_path:`dirname $mac_git_path`"
238     fi
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241     mac_gpg_path=`which gpg 2>/dev/null`
242     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243         mac_path="$mac_path:`dirname $mac_gpg_path`"
244     fi
245     PATH="$mac_path"
246     unset mac_path
247     unset mac_git_path
248     unset mac_gpg_path
251 echo "********************************************************************"
252 echo "*"
253 echo "*   Running ${PACKAGE_NAME} build configuration."
254 echo "*"
255 echo "********************************************************************"
256 echo ""
258 dnl ===================================================================
259 dnl checks build and host OSes
260 dnl do this before argument processing to allow for platform dependent defaults
261 dnl ===================================================================
263 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
264 # Linux on WSL) trust that.
265 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
266     ac_cv_host="x86_64-pc-wsl"
267     ac_cv_host_cpu="x86_64"
268     ac_cv_host_os="wsl"
269     ac_cv_build="$ac_cv_host"
270     ac_cv_build_cpu="$ac_cv_host_cpu"
271     ac_cv_build_os="$ac_cv_host_os"
273     # Emulation of Cygwin's cygpath command for WSL.
274     cygpath()
275     {
276         if test -n "$UNITTEST_WSL_CYGPATH"; then
277             echo -n cygpath "$@" "==> "
278         fi
280         # Cygwin's real cygpath has a plethora of options but we use only a few here.
281         local args="$@"
282         local opt
283         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
284         OPTIND=1
286         while getopts dmuwlsp opt; do
287             case "$opt" in
288                 \?)
289                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
290                     ;;
291                 ?)
292                     eval opt_$opt=yes
293                     ;;
294             esac
295         done
297         shift $((OPTIND-1))
299         if test $# -ne 1; then
300             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
301         fi
303         local input="$1"
305         local result
307         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
308             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
310             if test -n "$opt_u"; then
311                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
312             fi
314             case "$input" in
315                 /mnt/*)
316                     # A Windows file in WSL format
317                     input=$(wslpath -w "$input")
318                     ;;
319                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
320                     # Already in Windows format
321                     ;;
322                 /*)
323                     input=$(wslpath -w "$input")
324                     ;;
325                 *)
326                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
327                     ;;
328             esac
329             if test -n "$opt_d" -o -n "$opt_s"; then
330                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
331             fi
332             if test -n "$opt_m"; then
333                 input="${input//\\//}"
334             fi
335             echo "$input"
336         else
337             # Print Unix path
339             case "$input" in
340                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
341                     wslpath -u "$input"
342                     ;;
343                 /)
344                     echo "$input"
345                     ;;
346                 *)
347                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
348                     ;;
349             esac
350         fi
351     }
353     if test -n "$UNITTEST_WSL_CYGPATH"; then
354         BUILDDIR=.
356         # Nothing special with these file names, just arbitrary ones picked to test with
357         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
359         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
360         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
361         # At least on my machine for instance this file does have an 8.3 name
362         cygpath -d /mnt/c/windows/WindowsUpdate.log
363         # But for instance this one doesn't
364         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ws /mnt/c/windows/WindowsUpdate.log
366         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
367         cygpath -ms /mnt/c/windows/WindowsUpdate.log
369         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
370         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
372         exit 0
373     fi
376 AC_CANONICAL_HOST
377 AC_CANONICAL_BUILD
379 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
380     BUILDDIR=.
381     GREP=grep
383     # Use of PathFormat must be after AC_CANONICAL_BUILD above
384     PathFormat /
385     printf "$formatted_path , $formatted_path_unix\n"
387     PathFormat $PWD
388     printf "$formatted_path , $formatted_path_unix\n"
390     PathFormat "$PROGRAMFILESX86"
391     printf "$formatted_path , $formatted_path_unix\n"
393     exit 0
396 AC_MSG_CHECKING([for product name])
397 PRODUCTNAME="AC_PACKAGE_NAME"
398 if test -n "$with_product_name" -a "$with_product_name" != no; then
399     PRODUCTNAME="$with_product_name"
401 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
402     PRODUCTNAME="${PRODUCTNAME}Dev"
404 AC_MSG_RESULT([$PRODUCTNAME])
405 AC_SUBST(PRODUCTNAME)
406 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
407 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
409 dnl ===================================================================
410 dnl Our version is defined by the AC_INIT() at the top of this script.
411 dnl ===================================================================
413 AC_MSG_CHECKING([for package version])
414 if test -n "$with_package_version" -a "$with_package_version" != no; then
415     PACKAGE_VERSION="$with_package_version"
417 AC_MSG_RESULT([$PACKAGE_VERSION])
419 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
421 LIBO_VERSION_MAJOR=$1
422 LIBO_VERSION_MINOR=$2
423 LIBO_VERSION_MICRO=$3
424 LIBO_VERSION_PATCH=$4
426 LIBO_VERSION_SUFFIX=$5
428 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
429 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
430 # they get undoubled before actually passed to sed.
431 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
432 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
433 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
434 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
436 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
437 # three non-negative integers. Please find more information about CFBundleVersion at
438 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
440 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
441 # of at most three non-negative integers. Please find more information about
442 # CFBundleShortVersionString at
443 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
445 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
447 if test "$enable_macosx_sandbox" = yes; then
448     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
449     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
450 else
451     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
452     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
455 AC_SUBST(LIBO_VERSION_MAJOR)
456 AC_SUBST(LIBO_VERSION_MINOR)
457 AC_SUBST(LIBO_VERSION_MICRO)
458 AC_SUBST(LIBO_VERSION_PATCH)
459 AC_SUBST(LIBO_VERSION_SUFFIX)
460 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
461 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
462 AC_SUBST(MACOSX_BUNDLE_VERSION)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
466 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
467 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
469 LIBO_THIS_YEAR=`date +%Y`
470 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
472 dnl ===================================================================
473 dnl Product version
474 dnl ===================================================================
475 AC_MSG_CHECKING([for product version])
476 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
477 AC_MSG_RESULT([$PRODUCTVERSION])
478 AC_SUBST(PRODUCTVERSION)
480 AC_PROG_EGREP
481 # AC_PROG_EGREP doesn't set GREP on all systems as well
482 AC_PATH_PROG(GREP, grep)
484 BUILDDIR=`pwd`
485 cd $srcdir
486 SRC_ROOT=`pwd`
487 cd $BUILDDIR
488 x_Cygwin=[\#]
490 dnl ======================================
491 dnl Required GObject introspection version
492 dnl ======================================
493 INTROSPECTION_REQUIRED_VERSION=1.32.0
495 dnl ===================================================================
496 dnl Search all the common names for GNU Make
497 dnl ===================================================================
498 AC_MSG_CHECKING([for GNU Make])
500 # try to use our own make if it is available and GNUMAKE was not already defined
501 if test -z "$GNUMAKE"; then
502     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
503         GNUMAKE="$LODE_HOME/opt/bin/make"
504     elif test -x "/opt/lo/bin/make"; then
505         GNUMAKE="/opt/lo/bin/make"
506     fi
509 GNUMAKE_WIN_NATIVE=
510 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
511     if test -n "$a"; then
512         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
513         if test $? -eq 0;  then
514             if test "$build_os" = "cygwin"; then
515                 if test -n "$($a -v | grep 'Built for Windows')" ; then
516                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
517                     GNUMAKE_WIN_NATIVE="TRUE"
518                 else
519                     GNUMAKE=`which $a`
520                 fi
521             else
522                 GNUMAKE=`which $a`
523             fi
524             break
525         fi
526     fi
527 done
528 AC_MSG_RESULT($GNUMAKE)
529 if test -z "$GNUMAKE"; then
530     AC_MSG_ERROR([not found. install GNU Make.])
531 else
532     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
533         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
534     fi
537 win_short_path_for_make()
539     local short_path="$1"
540     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541         cygpath -sm "$short_path"
542     else
543         cygpath -u "$(cygpath -d "$short_path")"
544     fi
548 if test "$build_os" = "cygwin"; then
549     PathFormat "$SRC_ROOT"
550     SRC_ROOT="$formatted_path"
551     PathFormat "$BUILDDIR"
552     BUILDDIR="$formatted_path"
553     x_Cygwin=
554     AC_MSG_CHECKING(for explicit COMSPEC)
555     if test -z "$COMSPEC"; then
556         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
557     else
558         AC_MSG_RESULT([found: $COMSPEC])
559     fi
562 AC_SUBST(SRC_ROOT)
563 AC_SUBST(BUILDDIR)
564 AC_SUBST(x_Cygwin)
565 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
566 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
567 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
569 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
570     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
573 # need sed in os checks...
574 AC_PATH_PROGS(SED, sed)
575 if test -z "$SED"; then
576     AC_MSG_ERROR([install sed to run this script])
579 # Set the ENABLE_LTO variable
580 # ===================================================================
581 AC_MSG_CHECKING([whether to use link-time optimization])
582 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
583     ENABLE_LTO="TRUE"
584     AC_MSG_RESULT([yes])
585 else
586     ENABLE_LTO=""
587     AC_MSG_RESULT([no])
589 AC_SUBST(ENABLE_LTO)
591 AC_ARG_ENABLE(fuzz-options,
592     AS_HELP_STRING([--enable-fuzz-options],
593         [Randomly enable or disable each of those configurable options
594          that are supposed to be freely selectable without interdependencies,
595          or where bad interaction from interdependencies is automatically avoided.])
598 dnl ===================================================================
599 dnl When building for Android, --with-android-ndk,
600 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
601 dnl mandatory
602 dnl ===================================================================
604 AC_ARG_WITH(android-ndk,
605     AS_HELP_STRING([--with-android-ndk],
606         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
609 AC_ARG_WITH(android-ndk-toolchain-version,
610     AS_HELP_STRING([--with-android-ndk-toolchain-version],
611         [Specify which toolchain version to use, of those present in the
612         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
613         with_android_ndk_toolchain_version=clang5.0)
615 AC_ARG_WITH(android-sdk,
616     AS_HELP_STRING([--with-android-sdk],
617         [Specify location of the Android SDK. Mandatory when building for Android.]),
620 AC_ARG_WITH(android-api-level,
621     AS_HELP_STRING([--with-android-api-level],
622         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
625 ANDROID_NDK_HOME=
626 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
627     with_android_ndk="$SRC_ROOT/external/android-ndk"
629 if test -n "$with_android_ndk"; then
630     eval ANDROID_NDK_HOME=$with_android_ndk
632     # Set up a lot of pre-canned defaults
634     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
635         if test ! -f $ANDROID_NDK_HOME/source.properties; then
636             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
637         fi
638         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
639     else
640         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
641     fi
642     if test -z "$ANDROID_NDK_VERSION";  then
643         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
644     fi
645     case $ANDROID_NDK_VERSION in
646     r9*|r10*)
647         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
648         ;;
649     11.1.*|12.1.*|13.1.*|14.1.*)
650         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
651         ;;
652     16.*|17.*|18.*|19.*|20.*)
653         ;;
654     *)
655         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
656         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
657         ;;
658     esac
660     ANDROID_API_LEVEL=16
661     if test -n "$with_android_api_level" ; then
662         ANDROID_API_LEVEL="$with_android_api_level"
663     fi
665     android_cpu=$host_cpu
666     if test $host_cpu = arm; then
667         android_platform_prefix=arm-linux-androideabi
668         android_gnu_prefix=$android_platform_prefix
669         LLVM_TRIPLE=armv7a-linux-androideabi
670         ANDROID_APP_ABI=armeabi-v7a
671         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
672     elif test $host_cpu = aarch64; then
673         android_platform_prefix=aarch64-linux-android
674         android_gnu_prefix=$android_platform_prefix
675         LLVM_TRIPLE=$android_platform_prefix
676         # minimum android version that supports aarch64
677         if test "$ANDROID_API_LEVEL" -lt "21" ; then
678             ANDROID_API_LEVEL=21
679         fi
680         ANDROID_APP_ABI=arm64-v8a
681     elif test $host_cpu = x86_64; then
682         android_platform_prefix=x86_64-linux-android
683         android_gnu_prefix=$android_platform_prefix
684         LLVM_TRIPLE=$android_platform_prefix
685         # minimum android version that supports x86_64
686         ANDROID_API_LEVEL=21
687         ANDROID_APP_ABI=x86_64
688     else
689         # host_cpu is something like "i386" or "i686" I guess, NDK uses
690         # "x86" in some contexts
691         android_cpu=x86
692         android_platform_prefix=$android_cpu
693         android_gnu_prefix=i686-linux-android
694         LLVM_TRIPLE=$android_gnu_prefix
695         ANDROID_APP_ABI=x86
696     fi
698     case "$with_android_ndk_toolchain_version" in
699     clang5.0)
700         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
701         ;;
702     *)
703         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
704     esac
706     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
708     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
709     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
710     # manage to link the (app-specific) single huge .so that is built for the app in
711     # android/source/ if there is debug information in a significant part of the object files.
712     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
713     # all objects have been built with debug information.)
714     case $build_os in
715     linux-gnu*)
716         android_HOST_TAG=linux-x86_64
717         ;;
718     darwin*)
719         android_HOST_TAG=darwin-x86_64
720         ;;
721     *)
722         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
723         # ndk would also support windows and windows-x86_64
724         ;;
725     esac
726     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
727     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
728     dnl TODO: NSS build uses it...
729     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
730     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
732     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
733     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
734     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
735     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
736     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
738     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
739     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
740     if test "$ENABLE_LTO" = TRUE; then
741         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
742         # $CC and $CXX when building external libraries
743         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
744     fi
746     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
748     if test -z "$CC"; then
749         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
750         CC_BASE="clang"
751     fi
752     if test -z "$CXX"; then
753         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
754         CXX_BASE="clang++"
755     fi
757 AC_SUBST(ANDROID_NDK_HOME)
758 AC_SUBST(ANDROID_APP_ABI)
759 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
761 dnl ===================================================================
762 dnl --with-android-sdk
763 dnl ===================================================================
764 ANDROID_SDK_HOME=
765 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
766     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
768 if test -n "$with_android_sdk"; then
769     eval ANDROID_SDK_HOME=$with_android_sdk
770     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
772 AC_SUBST(ANDROID_SDK_HOME)
774 AC_ARG_ENABLE([android-lok],
775     AS_HELP_STRING([--enable-android-lok],
776         [The Android app from the android/ subdir needs several tweaks all
777          over the place that break the LOK when used in the Online-based
778          Android app.  This switch indicates that the intent of this build is
779          actually the Online-based, non-modified LOK.])
781 ENABLE_ANDROID_LOK=
782 if test -n "$ANDROID_NDK_HOME" ; then
783     if test "$enable_android_lok" = yes; then
784         ENABLE_ANDROID_LOK=TRUE
785         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
786         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
787     else
788         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
789     fi
791 AC_SUBST([ENABLE_ANDROID_LOK])
793 libo_FUZZ_ARG_ENABLE([android-editing],
794     AS_HELP_STRING([--enable-android-editing],
795         [Enable the experimental editing feature on Android.])
797 ENABLE_ANDROID_EDITING=
798 if test "$enable_android_editing" = yes; then
799     ENABLE_ANDROID_EDITING=TRUE
801 AC_SUBST([ENABLE_ANDROID_EDITING])
803 disable_database_connectivity_dependencies()
805     enable_evolution2=no
806     enable_firebird_sdbc=no
807     enable_mariadb_sdbc=no
808     enable_postgresql_sdbc=no
809     enable_report_builder=no
812 # ===================================================================
814 # Start initial platform setup
816 # The using_* variables reflect platform support and should not be
817 # changed after the "End initial platform setup" block.
818 # This is also true for most test_* variables.
819 # ===================================================================
820 build_crypto=yes
821 test_cmis=yes
822 test_gdb_index=no
823 test_openldap=yes
824 test_split_debug=no
825 test_webdav=yes
827 # There is currently just iOS not using salplug, so this explicitly enables it.
828 # must: using_freetype_fontconfig
829 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
830 using_vclplug=yes
831 # must: using_x11
833 # Default values, as such probably valid just for Linux, set
834 # differently below just for Mac OSX, but at least better than
835 # hardcoding these as we used to do. Much of this is duplicated also
836 # in solenv for old build system and for gbuild, ideally we should
837 # perhaps define stuff like this only here in configure.ac?
839 LINKFLAGSSHL="-shared"
840 PICSWITCH="-fpic"
841 DLLPOST=".so"
843 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
845 INSTROOTBASESUFFIX=
846 INSTROOTCONTENTSUFFIX=
847 SDKDIRNAME=sdk
849 HOST_PLATFORM="$host"
851 host_cpu_for_clang="$host_cpu"
853 case "$host_os" in
855 solaris*)
856     using_freetype_fontconfig=yes
857     using_x11=yes
858     build_skia=yes
859     _os=SunOS
861     dnl ===========================================================
862     dnl Check whether we're using Solaris 10 - SPARC or Intel.
863     dnl ===========================================================
864     AC_MSG_CHECKING([the Solaris operating system release])
865     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
866     if test "$_os_release" -lt "10"; then
867         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
868     else
869         AC_MSG_RESULT([ok ($_os_release)])
870     fi
872     dnl Check whether we're using a SPARC or i386 processor
873     AC_MSG_CHECKING([the processor type])
874     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
875         AC_MSG_RESULT([ok ($host_cpu)])
876     else
877         AC_MSG_ERROR([only SPARC and i386 processors are supported])
878     fi
879     ;;
881 linux-gnu*|k*bsd*-gnu*|linux-musl*)
882     using_freetype_fontconfig=yes
883     using_x11=yes
884     build_skia=yes
885     test_gdb_index=yes
886     test_split_debug=yes
887     if test "$enable_fuzzers" = yes; then
888         test_system_freetype=no
889     fi
890     _os=Linux
891     ;;
893 gnu)
894     using_freetype_fontconfig=yes
895     using_x11=no
896     _os=GNU
897      ;;
899 cygwin*|wsl*)
900     # When building on Windows normally with MSVC under Cygwin,
901     # configure thinks that the host platform (the platform the
902     # built code will run on) is Cygwin, even if it obviously is
903     # Windows, which in Autoconf terminology is called
904     # "mingw32". (Which is misleading as MinGW is the name of the
905     # tool-chain, not an operating system.)
907     # Somewhat confusing, yes. But this configure script doesn't
908     # look at $host etc that much, it mostly uses its own $_os
909     # variable, set here in this case statement.
911     using_freetype_fontconfig=no
912     using_x11=no
913     test_openldap=no
914     build_skia=yes
915     _os=WINNT
917     DLLPOST=".dll"
918     LINKFLAGSNOUNDEFS=
920     if test "$host_cpu" = "aarch64"; then
921         build_skia=no
922         enable_gpgmepp=no
923         enable_coinmp=no
924         enable_firebird_sdbc=no
925     fi
926     ;;
928 darwin*|macos*) # macOS
929     using_freetype_fontconfig=no
930     using_x11=no
931     build_skia=yes
932     if test -n "$LODE_HOME" ; then
933         mac_sanitize_path
934         AC_MSG_NOTICE([sanitized the PATH to $PATH])
935     fi
936     _os=Darwin
937     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
938     INSTROOTCONTENTSUFFIX=/Contents
939     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
940     # See comment above the case "$host_os"
941     LINKFLAGSSHL="-dynamiclib -single_module"
943     # -fPIC is default
944     PICSWITCH=""
946     DLLPOST=".dylib"
948     # -undefined error is the default
949     LINKFLAGSNOUNDEFS=""
950     case "$host_cpu" in
951     aarch64|arm64)
952         case "$host_os" in
953         macos*)
954             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
955             # the "macos" part so be sure to use aarch64-apple-darwin for now.
956             HOST_PLATFORM=aarch64-apple-darwin
957             ;;
958         esac
960         # Apple's Clang uses "arm64"
961         host_cpu_for_clang=arm64
962     esac
965 ios*) # iOS
966     using_freetype_fontconfig=no
967     using_vclplug=no
968     using_x11=no
969     build_crypto=no
970     test_cmis=no
971     test_openldap=no
972     test_webdav=no
973     if test -n "$LODE_HOME" ; then
974         mac_sanitize_path
975         AC_MSG_NOTICE([sanitized the PATH to $PATH])
976     fi
977     enable_gpgmepp=no
978     _os=iOS
979     enable_mpl_subset=yes
980     enable_lotuswordpro=no
981     disable_database_connectivity_dependencies
982     enable_coinmp=no
983     enable_lpsolve=no
984     enable_extension_integration=no
985     enable_xmlhelp=no
986     with_ppds=no
987     if test "$enable_ios_simulator" = "yes"; then
988         host=x86_64-apple-darwin
989     fi
990     # See comment above the case "$host_os"
991     LINKFLAGSSHL="-dynamiclib -single_module"
993     # -fPIC is default
994     PICSWITCH=""
996     DLLPOST=".dylib"
998     # -undefined error is the default
999     LINKFLAGSNOUNDEFS=""
1001     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1002     # part, so use aarch64-apple-darwin for now.
1003     HOST_PLATFORM=aarch64-apple-darwin
1005     # Apple's Clang uses "arm64"
1006     host_cpu_for_clang=arm64
1009 freebsd*)
1010     using_freetype_fontconfig=yes
1011     using_x11=yes
1012     build_skia=yes
1013     AC_MSG_CHECKING([the FreeBSD operating system release])
1014     if test -n "$with_os_version"; then
1015         OSVERSION="$with_os_version"
1016     else
1017         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1018     fi
1019     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1020     AC_MSG_CHECKING([which thread library to use])
1021     if test "$OSVERSION" -lt "500016"; then
1022         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1023         PTHREAD_LIBS="-pthread"
1024     elif test "$OSVERSION" -lt "502102"; then
1025         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1026         PTHREAD_LIBS="-lc_r"
1027     else
1028         PTHREAD_CFLAGS=""
1029         PTHREAD_LIBS="-pthread"
1030     fi
1031     AC_MSG_RESULT([$PTHREAD_LIBS])
1032     _os=FreeBSD
1033     ;;
1035 *netbsd*)
1036     using_freetype_fontconfig=yes
1037     using_x11=yes
1038     test_gtk3_kde5=no
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     using_freetype_fontconfig=yes
1046     using_x11=yes
1047     test_randr=no
1048     test_gstreamer_1_0=no
1049     PTHREAD_LIBS=-pthread
1050     _os=AIX
1051     ;;
1053 openbsd*)
1054     using_freetype_fontconfig=yes
1055     using_x11=yes
1056     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057     PTHREAD_LIBS="-pthread"
1058     _os=OpenBSD
1059     ;;
1061 dragonfly*)
1062     using_freetype_fontconfig=yes
1063     using_x11=yes
1064     build_skia=yes
1065     PTHREAD_LIBS="-pthread"
1066     _os=DragonFly
1067     ;;
1069 linux-android*)
1070     using_freetype_fontconfig=yes
1071     using_headless_plugin=no
1072     using_x11=no
1073     build_crypto=no
1074     test_openldap=no
1075     test_system_freetype=no
1076     test_webdav=no
1077     disable_database_connectivity_dependencies
1078     enable_lotuswordpro=no
1079     enable_mpl_subset=yes
1080     enable_cairo_canvas=no
1081     enable_coinmp=yes
1082     enable_lpsolve=no
1083     enable_odk=no
1084     enable_python=no
1085     enable_xmlhelp=no
1086     _os=Android
1088     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1089     ;;
1091 haiku*)
1092     using_freetype_fontconfig=yes
1093     using_x11=no
1094     test_gtk3_kde5=no
1095     test_kf5=yes
1096     enable_odk=no
1097     enable_coinmp=no
1098     enable_pdfium=no
1099     enable_sdremote=no
1100     enable_postgresql_sdbc=no
1101     enable_firebird_sdbc=no
1102     _os=Haiku
1103     ;;
1105 emscripten)
1106     using_freetype_fontconfig=yes
1107     using_x11=no
1108     test_openldap=no
1109     enable_compiler_plugins=no
1110     test_cmis=no
1111     test_webdav=no
1112     enable_database_connectivity=no
1113     enable_lpsolve=no
1114     enable_xmlhelp=no
1115     with_system_zlib=no
1116     with_theme="breeze"
1117     _os=Emscripten
1118     ;;
1121     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1122     ;;
1123 esac
1125 AC_SUBST(HOST_PLATFORM)
1127 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1128     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1131 # Set defaults, if not set by platform
1132 test "${test_cups+set}" = set || test_cups="$using_x11"
1133 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1134 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1135 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1136 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1137 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1138 # don't handle test_qt5, so it can disable test_kf5 later
1139 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1140 test "${test_randr+set}" = set || test_randr="$using_x11"
1141 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1142 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1144 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1145 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1146 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1148 # convenience / platform overriding "fixes"
1149 # Don't sort!
1150 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1151 test "$test_kf5" = yes && test_qt5=yes
1152 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1153 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1154 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1156 # Keep in sync with the above $using_x11 depending test default list
1157 disable_x11_tests()
1159     test_cups=no
1160     test_dbus=no
1161     test_gstreamer_1_0=no
1162     test_gtk3_kde5=no
1163     test_gtk3=no
1164     test_gtk4=no
1165     test_kf5=no
1166     test_qt5=no
1167     test_qt6=no
1168     test_randr=no
1169     test_xrender=no
1172 test "$using_x11" = yes && USING_X11=TRUE
1174 if test "$using_freetype_fontconfig" = yes; then
1175     if test "$using_headless_plugin" = yes; then
1176         AC_DEFINE(ENABLE_HEADLESS)
1177         ENABLE_HEADLESS=TRUE
1178     fi
1181 AC_SUBST(ENABLE_HEADLESS)
1183 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1184 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1185 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1186 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1188 # ===================================================================
1190 # End initial platform setup
1192 # ===================================================================
1194 if test "$_os" = "Android" ; then
1195     # Verify that the NDK and SDK options are proper
1196     if test -z "$with_android_ndk"; then
1197         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1198     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1199         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1200     fi
1202     if test -z "$ANDROID_SDK_HOME"; then
1203         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1204     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1205         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1206     fi
1208     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1209     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1210         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1211                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1212                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1213         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1214         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1215         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1216     fi
1217     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1218         AC_MSG_WARN([android support repository not found - install with
1219                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1220                      to allow the build to download the specified version of the android support libraries])
1221         add_warning "android support repository not found - install with"
1222         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1223         add_warning "to allow the build to download the specified version of the android support libraries"
1224     fi
1227 if test "$_os" = "AIX"; then
1228     AC_PATH_PROG(GAWK, gawk)
1229     if test -z "$GAWK"; then
1230         AC_MSG_ERROR([gawk not found in \$PATH])
1231     fi
1234 AC_SUBST(SDKDIRNAME)
1236 AC_SUBST(PTHREAD_CFLAGS)
1237 AC_SUBST(PTHREAD_LIBS)
1239 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1240 # By default use the ones specified by our build system,
1241 # but explicit override is possible.
1242 AC_MSG_CHECKING(for explicit AFLAGS)
1243 if test -n "$AFLAGS"; then
1244     AC_MSG_RESULT([$AFLAGS])
1245     x_AFLAGS=
1246 else
1247     AC_MSG_RESULT(no)
1248     x_AFLAGS=[\#]
1250 AC_MSG_CHECKING(for explicit CFLAGS)
1251 if test -n "$CFLAGS"; then
1252     AC_MSG_RESULT([$CFLAGS])
1253     x_CFLAGS=
1254 else
1255     AC_MSG_RESULT(no)
1256     x_CFLAGS=[\#]
1258 AC_MSG_CHECKING(for explicit CXXFLAGS)
1259 if test -n "$CXXFLAGS"; then
1260     AC_MSG_RESULT([$CXXFLAGS])
1261     x_CXXFLAGS=
1262 else
1263     AC_MSG_RESULT(no)
1264     x_CXXFLAGS=[\#]
1266 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1267 if test -n "$OBJCFLAGS"; then
1268     AC_MSG_RESULT([$OBJCFLAGS])
1269     x_OBJCFLAGS=
1270 else
1271     AC_MSG_RESULT(no)
1272     x_OBJCFLAGS=[\#]
1274 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1275 if test -n "$OBJCXXFLAGS"; then
1276     AC_MSG_RESULT([$OBJCXXFLAGS])
1277     x_OBJCXXFLAGS=
1278 else
1279     AC_MSG_RESULT(no)
1280     x_OBJCXXFLAGS=[\#]
1282 AC_MSG_CHECKING(for explicit LDFLAGS)
1283 if test -n "$LDFLAGS"; then
1284     AC_MSG_RESULT([$LDFLAGS])
1285     x_LDFLAGS=
1286 else
1287     AC_MSG_RESULT(no)
1288     x_LDFLAGS=[\#]
1290 AC_SUBST(AFLAGS)
1291 AC_SUBST(CFLAGS)
1292 AC_SUBST(CXXFLAGS)
1293 AC_SUBST(OBJCFLAGS)
1294 AC_SUBST(OBJCXXFLAGS)
1295 AC_SUBST(LDFLAGS)
1296 AC_SUBST(x_AFLAGS)
1297 AC_SUBST(x_CFLAGS)
1298 AC_SUBST(x_CXXFLAGS)
1299 AC_SUBST(x_OBJCFLAGS)
1300 AC_SUBST(x_OBJCXXFLAGS)
1301 AC_SUBST(x_LDFLAGS)
1303 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1304 my_original_CFLAGS=$CFLAGS
1305 my_original_CXXFLAGS=$CXXFLAGS
1306 my_original_CPPFLAGS=$CPPFLAGS
1308 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1309 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1310 dnl AC_PROG_CC internally.
1311 if test "$_os" != "WINNT"; then
1312     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1313     save_CFLAGS=$CFLAGS
1314     AC_PROG_CC
1315     CFLAGS=$save_CFLAGS
1316     if test -z "$CC_BASE"; then
1317         CC_BASE=`first_arg_basename "$CC"`
1318     fi
1321 if test "$_os" != "WINNT"; then
1322     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1323 else
1324     ENDIANNESS=little
1326 AC_SUBST(ENDIANNESS)
1328 if test $_os != "WINNT"; then
1329     save_LIBS="$LIBS"
1330     AC_SEARCH_LIBS([dlsym], [dl],
1331         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1332         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1333     LIBS="$save_LIBS"
1335 AC_SUBST(DLOPEN_LIBS)
1337 dnl ===================================================================
1338 dnl Sanity checks for Emscripten SDK setup
1339 dnl ===================================================================
1341 if test "$_os" = "Emscripten"; then
1342     EMSCRIPTEN_ERROR=0
1343     if ! which emconfigure >/dev/null 2>&1; then
1344         AC_MSG_WARN([emconfigure must be in your \$PATH])
1345         EMSCRIPTEN_ERROR=1
1346     fi
1347     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1348         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1349         EMSCRIPTEN_ERROR=1
1350     fi
1351     if test $EMSCRIPTEN_ERROR -ne 0; then
1352         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1353     fi
1356 ###############################################################################
1357 # Extensions switches --enable/--disable
1358 ###############################################################################
1359 # By default these should be enabled unless having extra dependencies.
1360 # If there is extra dependency over configure options then the enable should
1361 # be automagic based on whether the requiring feature is enabled or not.
1362 # All this options change anything only with --enable-extension-integration.
1364 # The name of this option and its help string makes it sound as if
1365 # extensions are built anyway, just not integrated in the installer,
1366 # if you use --disable-extension-integration. Is that really the
1367 # case?
1369 AC_ARG_ENABLE(ios-simulator,
1370     AS_HELP_STRING([--enable-ios-simulator],
1371         [build for iOS simulator])
1374 libo_FUZZ_ARG_ENABLE(extension-integration,
1375     AS_HELP_STRING([--disable-extension-integration],
1376         [Disable integration of the built extensions in the installer of the
1377          product. Use this switch to disable the integration.])
1380 AC_ARG_ENABLE(avmedia,
1381     AS_HELP_STRING([--disable-avmedia],
1382         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1385 AC_ARG_ENABLE(database-connectivity,
1386     AS_HELP_STRING([--disable-database-connectivity],
1387         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1390 # This doesn't mean not building (or "integrating") extensions
1391 # (although it probably should; i.e. it should imply
1392 # --disable-extension-integration I guess), it means not supporting
1393 # any extension mechanism at all
1394 libo_FUZZ_ARG_ENABLE(extensions,
1395     AS_HELP_STRING([--disable-extensions],
1396         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(scripting,
1400     AS_HELP_STRING([--disable-scripting],
1401         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1404 # This is mainly for Android and iOS, but could potentially be used in some
1405 # special case otherwise, too, so factored out as a separate setting
1407 AC_ARG_ENABLE(dynamic-loading,
1408     AS_HELP_STRING([--disable-dynamic-loading],
1409         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1412 libo_FUZZ_ARG_ENABLE(report-builder,
1413     AS_HELP_STRING([--disable-report-builder],
1414         [Disable the Report Builder.])
1417 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1418     AS_HELP_STRING([--enable-ext-wiki-publisher],
1419         [Enable the Wiki Publisher extension.])
1422 libo_FUZZ_ARG_ENABLE(lpsolve,
1423     AS_HELP_STRING([--disable-lpsolve],
1424         [Disable compilation of the lp solve solver ])
1426 libo_FUZZ_ARG_ENABLE(coinmp,
1427     AS_HELP_STRING([--disable-coinmp],
1428         [Disable compilation of the CoinMP solver ])
1431 libo_FUZZ_ARG_ENABLE(pdfimport,
1432     AS_HELP_STRING([--disable-pdfimport],
1433         [Disable building the PDF import feature.])
1436 libo_FUZZ_ARG_ENABLE(pdfium,
1437     AS_HELP_STRING([--disable-pdfium],
1438         [Disable building PDFium. Results in unsecure PDF signature verification.])
1441 libo_FUZZ_ARG_ENABLE(skia,
1442     AS_HELP_STRING([--disable-skia],
1443         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1446 ###############################################################################
1448 dnl ---------- *** ----------
1450 libo_FUZZ_ARG_ENABLE(mergelibs,
1451     AS_HELP_STRING([--enable-mergelibs],
1452         [Merge several of the smaller libraries into one big, "merged", one.])
1455 libo_FUZZ_ARG_ENABLE(breakpad,
1456     AS_HELP_STRING([--enable-breakpad],
1457         [Enables breakpad for crash reporting.])
1460 libo_FUZZ_ARG_ENABLE(crashdump,
1461     AS_HELP_STRING([--disable-crashdump],
1462         [Disable dump.ini and dump-file, when --enable-breakpad])
1465 AC_ARG_ENABLE(fetch-external,
1466     AS_HELP_STRING([--disable-fetch-external],
1467         [Disables fetching external tarballs from web sources.])
1470 AC_ARG_ENABLE(fuzzers,
1471     AS_HELP_STRING([--enable-fuzzers],
1472         [Enables building libfuzzer targets for fuzz testing.])
1475 libo_FUZZ_ARG_ENABLE(pch,
1476     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1477         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1478          Using 'system' will include only external headers, 'base' will add also headers
1479          from base modules, 'normal' will also add all headers except from the module built,
1480          'full' will use all suitable headers even from a module itself.])
1483 libo_FUZZ_ARG_ENABLE(epm,
1484     AS_HELP_STRING([--enable-epm],
1485         [LibreOffice includes self-packaging code, that requires epm, however epm is
1486          useless for large scale package building.])
1489 libo_FUZZ_ARG_ENABLE(odk,
1490     AS_HELP_STRING([--enable-odk],
1491         [Enable building the Office Development Kit, the part that extensions need to build against])
1494 AC_ARG_ENABLE(mpl-subset,
1495     AS_HELP_STRING([--enable-mpl-subset],
1496         [Don't compile any pieces which are not MPL or more liberally licensed])
1499 libo_FUZZ_ARG_ENABLE(evolution2,
1500     AS_HELP_STRING([--enable-evolution2],
1501         [Allows the built-in evolution 2 addressbook connectivity build to be
1502          enabled.])
1505 AC_ARG_ENABLE(avahi,
1506     AS_HELP_STRING([--enable-avahi],
1507         [Determines whether to use Avahi to advertise Impress to remote controls.])
1510 libo_FUZZ_ARG_ENABLE(werror,
1511     AS_HELP_STRING([--enable-werror],
1512         [Turn warnings to errors. (Has no effect in modules where the treating
1513          of warnings as errors is disabled explicitly.)]),
1516 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1517     AS_HELP_STRING([--enable-assert-always-abort],
1518         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1521 libo_FUZZ_ARG_ENABLE(dbgutil,
1522     AS_HELP_STRING([--enable-dbgutil],
1523         [Provide debugging support from --enable-debug and include additional debugging
1524          utilities such as object counting or more expensive checks.
1525          This is the recommended option for developers.
1526          Note that this makes the build ABI incompatible, it is not possible to mix object
1527          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1529 libo_FUZZ_ARG_ENABLE(debug,
1530     AS_HELP_STRING([--enable-debug],
1531         [Include debugging information, disable compiler optimization and inlining plus
1532          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1534 libo_FUZZ_ARG_ENABLE(split-debug,
1535     AS_HELP_STRING([--disable-split-debug],
1536         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1537          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1539 libo_FUZZ_ARG_ENABLE(gdb-index,
1540     AS_HELP_STRING([--disable-gdb-index],
1541         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1542          The feature requires the gold or lld linker.]))
1544 libo_FUZZ_ARG_ENABLE(sal-log,
1545     AS_HELP_STRING([--enable-sal-log],
1546         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1548 libo_FUZZ_ARG_ENABLE(symbols,
1549     AS_HELP_STRING([--enable-symbols],
1550         [Generate debug information.
1551          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1552          otherwise. It is possible to explicitly specify gbuild build targets
1553          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1554          everything in the directory; there is no ordering, more specific overrides
1555          more general, and disabling takes precedence).
1556          Example: --enable-symbols="all -sw/ -Library_sc".]))
1558 libo_FUZZ_ARG_ENABLE(optimized,
1559     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1560         [Whether to compile with optimization flags.
1561          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1562          otherwise. Using 'debug' will try to use only optimizations that should
1563          not interfere with debugging. For Emscripten we default to optimized (-O1)
1564          debug build, as otherwise binaries become too large.]))
1566 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1567     AS_HELP_STRING([--disable-runtime-optimizations],
1568         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1569          JVM JIT) that are known to interact badly with certain dynamic analysis
1570          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1571          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1572          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1574 AC_ARG_WITH(valgrind,
1575     AS_HELP_STRING([--with-valgrind],
1576         [Make availability of Valgrind headers a hard requirement.]))
1578 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1579     AS_HELP_STRING([--enable-compiler-plugins],
1580         [Enable compiler plugins that will perform additional checks during
1581          building. Enabled automatically by --enable-dbgutil.
1582          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1583 COMPILER_PLUGINS_DEBUG=
1584 if test "$enable_compiler_plugins" = debug; then
1585     enable_compiler_plugins=yes
1586     COMPILER_PLUGINS_DEBUG=TRUE
1589 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1590     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1591         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1592          relevant in the --disable-compiler-plugins case.]))
1594 libo_FUZZ_ARG_ENABLE(ooenv,
1595     AS_HELP_STRING([--enable-ooenv],
1596         [Enable ooenv for the instdir installation.]))
1598 AC_ARG_ENABLE(lto,
1599     AS_HELP_STRING([--enable-lto],
1600         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1601          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1602          linker.)]))
1604 AC_ARG_ENABLE(python,
1605     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1606         [Enables or disables Python support at run-time.
1607          Also specifies what Python to use at build-time.
1608          'fully-internal' even forces the internal version for uses of Python
1609          during the build.
1610          On macOS the only choices are
1611          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1612          ]))
1614 libo_FUZZ_ARG_ENABLE(gtk3,
1615     AS_HELP_STRING([--disable-gtk3],
1616         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1617 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1619 AC_ARG_ENABLE(gtk4,
1620     AS_HELP_STRING([--enable-gtk4],
1621         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1623 AC_ARG_ENABLE(introspection,
1624     AS_HELP_STRING([--enable-introspection],
1625         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1626          Linux distributions.)]))
1628 AC_ARG_ENABLE(split-app-modules,
1629     AS_HELP_STRING([--enable-split-app-modules],
1630         [Split file lists for app modules, e.g. base, calc.
1631          Has effect only with make distro-pack-install]),
1634 AC_ARG_ENABLE(split-opt-features,
1635     AS_HELP_STRING([--enable-split-opt-features],
1636         [Split file lists for some optional features, e.g. pyuno, testtool.
1637          Has effect only with make distro-pack-install]),
1640 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1641     AS_HELP_STRING([--disable-cairo-canvas],
1642         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1645 libo_FUZZ_ARG_ENABLE(dbus,
1646     AS_HELP_STRING([--disable-dbus],
1647         [Determines whether to enable features that depend on dbus.
1648          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1649 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1651 libo_FUZZ_ARG_ENABLE(sdremote,
1652     AS_HELP_STRING([--disable-sdremote],
1653         [Determines whether to enable Impress remote control (i.e. the server component).]),
1654 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1656 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1657     AS_HELP_STRING([--disable-sdremote-bluetooth],
1658         [Determines whether to build sdremote with bluetooth support.
1659          Requires dbus on Linux.]))
1661 libo_FUZZ_ARG_ENABLE(gio,
1662     AS_HELP_STRING([--disable-gio],
1663         [Determines whether to use the GIO support.]),
1664 ,test "${enable_gio+set}" = set || enable_gio=yes)
1666 AC_ARG_ENABLE(qt5,
1667     AS_HELP_STRING([--enable-qt5],
1668         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1669          available.]),
1672 AC_ARG_ENABLE(qt6,
1673     AS_HELP_STRING([--enable-qt6],
1674         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1675          available.]),
1678 AC_ARG_ENABLE(kf5,
1679     AS_HELP_STRING([--enable-kf5],
1680         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1681          KF5 are available.]),
1684 AC_ARG_ENABLE(gtk3_kde5,
1685     AS_HELP_STRING([--enable-gtk3-kde5],
1686         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1687          platforms where Gtk3, Qt5 and Plasma is available.]),
1690 AC_ARG_ENABLE(gui,
1691     AS_HELP_STRING([--disable-gui],
1692         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1693 ,enable_gui=yes)
1695 libo_FUZZ_ARG_ENABLE(randr,
1696     AS_HELP_STRING([--disable-randr],
1697         [Disable RandR support in the vcl project.]),
1698 ,test "${enable_randr+set}" = set || enable_randr=yes)
1700 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1701     AS_HELP_STRING([--disable-gstreamer-1-0],
1702         [Disable building with the gstreamer 1.0 avmedia backend.]),
1703 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1705 libo_FUZZ_ARG_ENABLE([eot],
1706     [AS_HELP_STRING([--enable-eot],
1707         [Enable support for Embedded OpenType fonts.])],
1708 ,test "${enable_eot+set}" = set || enable_eot=no)
1710 libo_FUZZ_ARG_ENABLE(cve-tests,
1711     AS_HELP_STRING([--disable-cve-tests],
1712         [Prevent CVE tests to be executed]),
1715 libo_FUZZ_ARG_ENABLE(chart-tests,
1716     AS_HELP_STRING([--enable-chart-tests],
1717         [Executes chart XShape tests. In a perfect world these tests would be
1718          stable and everyone could run them, in reality it is best to run them
1719          only on a few machines that are known to work and maintained by people
1720          who can judge if a test failure is a regression or not.]),
1723 AC_ARG_ENABLE(build-opensymbol,
1724     AS_HELP_STRING([--enable-build-opensymbol],
1725         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1726          fontforge installed.]),
1729 AC_ARG_ENABLE(dependency-tracking,
1730     AS_HELP_STRING([--enable-dependency-tracking],
1731         [Do not reject slow dependency extractors.])[
1732   --disable-dependency-tracking
1733                           Disables generation of dependency information.
1734                           Speed up one-time builds.],
1737 AC_ARG_ENABLE(icecream,
1738     AS_HELP_STRING([--enable-icecream],
1739         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1740          It defaults to /opt/icecream for the location of the icecream gcc/g++
1741          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1744 AC_ARG_ENABLE(ld,
1745     AS_HELP_STRING([--enable-ld=<linker>],
1746         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1747          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1748          If <linker> contains any ':', the part before the first ':' is used as the value of
1749          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1750          needed for Clang 12).]),
1753 libo_FUZZ_ARG_ENABLE(cups,
1754     AS_HELP_STRING([--disable-cups],
1755         [Do not build cups support.])
1758 AC_ARG_ENABLE(ccache,
1759     AS_HELP_STRING([--disable-ccache],
1760         [Do not try to use ccache automatically.
1761          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1762          CC/CXX are not yet set, and --enable-icecream is not given, we
1763          attempt to use ccache. --disable-ccache disables ccache completely.
1764          Additionally ccache's depend mode is enabled if possible,
1765          use --enable-ccache=nodepend to enable ccache without depend mode.
1769 libo_FUZZ_ARG_ENABLE(online-update,
1770     AS_HELP_STRING([--enable-online-update],
1771         [Enable the online update service that will check for new versions of
1772          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1773          If the value is "mar", the experimental Mozilla-like update will be
1774          enabled instead of the traditional update mechanism.]),
1777 AC_ARG_WITH(update-config,
1778     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1779                    [Path to the update config ini file]))
1781 libo_FUZZ_ARG_ENABLE(extension-update,
1782     AS_HELP_STRING([--disable-extension-update],
1783         [Disable possibility to update installed extensions.]),
1786 libo_FUZZ_ARG_ENABLE(release-build,
1787     AS_HELP_STRING([--enable-release-build],
1788         [Enable release build. Note that the "release build" choice is orthogonal to
1789          whether symbols are present, debug info is generated, or optimization
1790          is done.
1791          See http://wiki.documentfoundation.org/Development/DevBuild]),
1794 AC_ARG_ENABLE(windows-build-signing,
1795     AS_HELP_STRING([--enable-windows-build-signing],
1796         [Enable signing of windows binaries (*.exe, *.dll)]),
1799 AC_ARG_ENABLE(silent-msi,
1800     AS_HELP_STRING([--enable-silent-msi],
1801         [Enable MSI with LIMITUI=1 (silent install).]),
1804 AC_ARG_ENABLE(macosx-code-signing,
1805     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1806         [Sign executables, dylibs, frameworks and the app bundle. If you
1807          don't provide an identity the first suitable certificate
1808          in your keychain is used.]),
1811 AC_ARG_ENABLE(macosx-package-signing,
1812     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1813         [Create a .pkg suitable for uploading to the Mac App Store and sign
1814          it. If you don't provide an identity the first suitable certificate
1815          in your keychain is used.]),
1818 AC_ARG_ENABLE(macosx-sandbox,
1819     AS_HELP_STRING([--enable-macosx-sandbox],
1820         [Make the app bundle run in a sandbox. Requires code signing.
1821          Is required by apps distributed in the Mac App Store, and implies
1822          adherence to App Store rules.]),
1825 AC_ARG_WITH(macosx-bundle-identifier,
1826     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1827         [Define the macOS bundle identifier. Default is the somewhat weird
1828          org.libreoffice.script ("script", huh?).]),
1829 ,with_macosx_bundle_identifier=org.libreoffice.script)
1831 AC_ARG_WITH(product-name,
1832     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1833         [Define the product name. Default is AC_PACKAGE_NAME.]),
1834 ,with_product_name=$PRODUCTNAME)
1836 libo_FUZZ_ARG_ENABLE(community-flavor,
1837     AS_HELP_STRING([--disable-community-flavor],
1838         [Disable the Community branding.]),
1841 AC_ARG_WITH(package-version,
1842     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1843         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1846 libo_FUZZ_ARG_ENABLE(readonly-installset,
1847     AS_HELP_STRING([--enable-readonly-installset],
1848         [Prevents any attempts by LibreOffice to write into its installation. That means
1849          at least that no "system-wide" extensions can be added. Partly experimental work in
1850          progress, probably not fully implemented. Always enabled for macOS.]),
1853 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1854     AS_HELP_STRING([--disable-mariadb-sdbc],
1855         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1858 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1859     AS_HELP_STRING([--disable-postgresql-sdbc],
1860         [Disable the build of the PostgreSQL-SDBC driver.])
1863 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1864     AS_HELP_STRING([--disable-lotuswordpro],
1865         [Disable the build of the Lotus Word Pro filter.]),
1866 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1868 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1869     AS_HELP_STRING([--disable-firebird-sdbc],
1870         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1871 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1873 AC_ARG_ENABLE(bogus-pkg-config,
1874     AS_HELP_STRING([--enable-bogus-pkg-config],
1875         [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.]),
1878 AC_ARG_ENABLE(openssl,
1879     AS_HELP_STRING([--disable-openssl],
1880         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1881          components will either use GNUTLS or NSS. Work in progress,
1882          use only if you are hacking on it.]),
1883 ,enable_openssl=yes)
1885 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1886     AS_HELP_STRING([--enable-cipher-openssl-backend],
1887         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1888          Requires --enable-openssl.]))
1890 AC_ARG_ENABLE(nss,
1891     AS_HELP_STRING([--disable-nss],
1892         [Disable using NSS. If disabled,
1893          components will either use GNUTLS or openssl. Work in progress,
1894          use only if you are hacking on it.]),
1895 ,enable_nss=yes)
1897 AC_ARG_ENABLE(library-bin-tar,
1898     AS_HELP_STRING([--enable-library-bin-tar],
1899         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1900         Some libraries can save their build result in a tarball
1901         stored in TARFILE_LOCATION. That binary tarball is
1902         uniquely identified by the source tarball,
1903         the content of the config_host.mk file and the content
1904         of the top-level directory in core for that library
1905         If this option is enabled, then if such a tarfile exist, it will be untarred
1906         instead of the source tarfile, and the build step will be skipped for that
1907         library.
1908         If a proper tarfile does not exist, then the normal source-based
1909         build is done for that library and a proper binary tarfile is created
1910         for the next time.]),
1913 AC_ARG_ENABLE(dconf,
1914     AS_HELP_STRING([--disable-dconf],
1915         [Disable the dconf configuration backend (enabled by default where
1916          available).]))
1918 libo_FUZZ_ARG_ENABLE(formula-logger,
1919     AS_HELP_STRING(
1920         [--enable-formula-logger],
1921         [Enable formula logger for logging formula calculation flow in Calc.]
1922     )
1925 AC_ARG_ENABLE(ldap,
1926     AS_HELP_STRING([--disable-ldap],
1927         [Disable LDAP support.]),
1928 ,enable_ldap=yes)
1930 AC_ARG_ENABLE(opencl,
1931     AS_HELP_STRING([--disable-opencl],
1932         [Disable OpenCL support.]),
1933 ,enable_opencl=yes)
1935 libo_FUZZ_ARG_ENABLE(librelogo,
1936     AS_HELP_STRING([--disable-librelogo],
1937         [Do not build LibreLogo.]),
1938 ,enable_librelogo=yes)
1940 AC_ARG_ENABLE(cmis,
1941     AS_HELP_STRING([--disable-cmis],
1942         [Disable CMIS support.]),
1943 ,enable_cmis=yes)
1945 AC_ARG_ENABLE(curl,
1946     AS_HELP_STRING([--disable-curl],
1947         [Disable CURL support.]),
1948 ,enable_curl=yes)
1950 AC_ARG_ENABLE(wasm-strip,
1951     AS_HELP_STRING([--enable-wasm-strip],
1952         [Strip the static build like for WASM/emscripten platform.]),
1953 ,enable_wasm_strip=yes)
1955 AC_ARG_ENABLE(xmlhelp,
1956     AS_HELP_STRING([--disable-xmlhelp],
1957         [Disable XML help support]),
1958 ,enable_xmlhelp=yes)
1961 dnl ===================================================================
1962 dnl Optional Packages (--with/without-)
1963 dnl ===================================================================
1965 AC_ARG_WITH(gcc-home,
1966     AS_HELP_STRING([--with-gcc-home],
1967         [Specify the location of gcc/g++ manually. This can be used in conjunction
1968          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1969          non-default path.]),
1972 AC_ARG_WITH(gnu-patch,
1973     AS_HELP_STRING([--with-gnu-patch],
1974         [Specify location of GNU patch on Solaris or FreeBSD.]),
1977 AC_ARG_WITH(build-platform-configure-options,
1978     AS_HELP_STRING([--with-build-platform-configure-options],
1979         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1982 AC_ARG_WITH(gnu-cp,
1983     AS_HELP_STRING([--with-gnu-cp],
1984         [Specify location of GNU cp on Solaris or FreeBSD.]),
1987 AC_ARG_WITH(external-tar,
1988     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1989         [Specify an absolute path of where to find (and store) tarfiles.]),
1990     TARFILE_LOCATION=$withval ,
1993 AC_ARG_WITH(referenced-git,
1994     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1995         [Specify another checkout directory to reference. This makes use of
1996                  git submodule update --reference, and saves a lot of diskspace
1997                  when having multiple trees side-by-side.]),
1998     GIT_REFERENCE_SRC=$withval ,
2001 AC_ARG_WITH(linked-git,
2002     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2003         [Specify a directory where the repositories of submodules are located.
2004          This uses a method similar to git-new-workdir to get submodules.]),
2005     GIT_LINK_SRC=$withval ,
2008 AC_ARG_WITH(galleries,
2009     AS_HELP_STRING([--with-galleries],
2010         [Specify how galleries should be built. It is possible either to
2011          build these internally from source ("build"),
2012          or to disable them ("no")]),
2015 AC_ARG_WITH(theme,
2016     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2017         [Choose which themes to include. By default those themes with an '*' are included.
2018          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2019          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2022 libo_FUZZ_ARG_WITH(helppack-integration,
2023     AS_HELP_STRING([--without-helppack-integration],
2024         [It will not integrate the helppacks to the installer
2025          of the product. Please use this switch to use the online help
2026          or separate help packages.]),
2029 libo_FUZZ_ARG_WITH(fonts,
2030     AS_HELP_STRING([--without-fonts],
2031         [LibreOffice includes some third-party fonts to provide a reliable basis for
2032          help content, templates, samples, etc. When these fonts are already
2033          known to be available on the system then you should use this option.]),
2036 AC_ARG_WITH(epm,
2037     AS_HELP_STRING([--with-epm],
2038         [Decides which epm to use. Default is to use the one from the system if
2039          one is built. When either this is not there or you say =internal epm
2040          will be built.]),
2043 AC_ARG_WITH(package-format,
2044     AS_HELP_STRING([--with-package-format],
2045         [Specify package format(s) for LibreOffice installation sets. The
2046          implicit --without-package-format leads to no installation sets being
2047          generated. Possible values: aix, archive, bsd, deb, dmg,
2048          installed, msi, pkg, and rpm.
2049          Example: --with-package-format='deb rpm']),
2052 AC_ARG_WITH(tls,
2053     AS_HELP_STRING([--with-tls],
2054         [Decides which TLS/SSL and cryptographic implementations to use for
2055          LibreOffice's code. Notice that this doesn't apply for depending
2056          libraries like "neon", for example. Default is to use NSS
2057          although OpenSSL is also possible. Notice that selecting NSS restricts
2058          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2059          restrict by now the usage of NSS in LO's code. Possible values:
2060          openssl, nss. Example: --with-tls="nss"]),
2063 AC_ARG_WITH(system-libs,
2064     AS_HELP_STRING([--with-system-libs],
2065         [Use libraries already on system -- enables all --with-system-* flags.]),
2068 AC_ARG_WITH(system-bzip2,
2069     AS_HELP_STRING([--with-system-bzip2],
2070         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2071     [with_system_bzip2="$with_system_libs"])
2073 AC_ARG_WITH(system-headers,
2074     AS_HELP_STRING([--with-system-headers],
2075         [Use headers already on system -- enables all --with-system-* flags for
2076          external packages whose headers are the only entities used i.e.
2077          boost/odbc/sane-header(s).]),,
2078     [with_system_headers="$with_system_libs"])
2080 AC_ARG_WITH(system-jars,
2081     AS_HELP_STRING([--without-system-jars],
2082         [When building with --with-system-libs, also the needed jars are expected
2083          on the system. Use this to disable that]),,
2084     [with_system_jars="$with_system_libs"])
2086 AC_ARG_WITH(system-cairo,
2087     AS_HELP_STRING([--with-system-cairo],
2088         [Use cairo libraries already on system.  Happens automatically for
2089          (implicit) --enable-gtk3.]))
2091 AC_ARG_WITH(system-epoxy,
2092     AS_HELP_STRING([--with-system-epoxy],
2093         [Use epoxy libraries already on system.  Happens automatically for
2094          (implicit) --enable-gtk3.]),,
2095        [with_system_epoxy="$with_system_libs"])
2097 AC_ARG_WITH(myspell-dicts,
2098     AS_HELP_STRING([--with-myspell-dicts],
2099         [Adds myspell dictionaries to the LibreOffice installation set]),
2102 AC_ARG_WITH(system-dicts,
2103     AS_HELP_STRING([--without-system-dicts],
2104         [Do not use dictionaries from system paths.]),
2107 AC_ARG_WITH(external-dict-dir,
2108     AS_HELP_STRING([--with-external-dict-dir],
2109         [Specify external dictionary dir.]),
2112 AC_ARG_WITH(external-hyph-dir,
2113     AS_HELP_STRING([--with-external-hyph-dir],
2114         [Specify external hyphenation pattern dir.]),
2117 AC_ARG_WITH(external-thes-dir,
2118     AS_HELP_STRING([--with-external-thes-dir],
2119         [Specify external thesaurus dir.]),
2122 AC_ARG_WITH(system-zlib,
2123     AS_HELP_STRING([--with-system-zlib],
2124         [Use zlib already on system.]),,
2125     [with_system_zlib=auto])
2127 AC_ARG_WITH(system-jpeg,
2128     AS_HELP_STRING([--with-system-jpeg],
2129         [Use jpeg already on system.]),,
2130     [with_system_jpeg="$with_system_libs"])
2132 AC_ARG_WITH(system-clucene,
2133     AS_HELP_STRING([--with-system-clucene],
2134         [Use clucene already on system.]),,
2135     [with_system_clucene="$with_system_libs"])
2137 AC_ARG_WITH(system-expat,
2138     AS_HELP_STRING([--with-system-expat],
2139         [Use expat already on system.]),,
2140     [with_system_expat="$with_system_libs"])
2142 AC_ARG_WITH(system-libxml,
2143     AS_HELP_STRING([--with-system-libxml],
2144         [Use libxml/libxslt already on system.]),,
2145     [with_system_libxml=auto])
2147 AC_ARG_WITH(system-icu,
2148     AS_HELP_STRING([--with-system-icu],
2149         [Use icu already on system.]),,
2150     [with_system_icu="$with_system_libs"])
2152 AC_ARG_WITH(system-ucpp,
2153     AS_HELP_STRING([--with-system-ucpp],
2154         [Use ucpp already on system.]),,
2155     [])
2157 AC_ARG_WITH(system-openldap,
2158     AS_HELP_STRING([--with-system-openldap],
2159         [Use the OpenLDAP LDAP SDK already on system.]),,
2160     [with_system_openldap="$with_system_libs"])
2162 libo_FUZZ_ARG_ENABLE(poppler,
2163     AS_HELP_STRING([--disable-poppler],
2164         [Disable building Poppler.])
2167 AC_ARG_WITH(system-poppler,
2168     AS_HELP_STRING([--with-system-poppler],
2169         [Use system poppler (only needed for PDF import).]),,
2170     [with_system_poppler="$with_system_libs"])
2172 libo_FUZZ_ARG_ENABLE(gpgmepp,
2173     AS_HELP_STRING([--disable-gpgmepp],
2174         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2177 AC_ARG_WITH(system-gpgmepp,
2178     AS_HELP_STRING([--with-system-gpgmepp],
2179         [Use gpgmepp already on system]),,
2180     [with_system_gpgmepp="$with_system_libs"])
2182 AC_ARG_WITH(system-mariadb,
2183     AS_HELP_STRING([--with-system-mariadb],
2184         [Use MariaDB/MySQL libraries already on system.]),,
2185     [with_system_mariadb="$with_system_libs"])
2187 AC_ARG_ENABLE(bundle-mariadb,
2188     AS_HELP_STRING([--enable-bundle-mariadb],
2189         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2192 AC_ARG_WITH(system-postgresql,
2193     AS_HELP_STRING([--with-system-postgresql],
2194         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2195          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2196     [with_system_postgresql="$with_system_libs"])
2198 AC_ARG_WITH(libpq-path,
2199     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2200         [Use this PostgreSQL C interface (libpq) installation for building
2201          the PostgreSQL-SDBC extension.]),
2204 AC_ARG_WITH(system-firebird,
2205     AS_HELP_STRING([--with-system-firebird],
2206         [Use Firebird libraries already on system, for building the Firebird-SDBC
2207          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2208     [with_system_firebird="$with_system_libs"])
2210 AC_ARG_WITH(system-libtommath,
2211             AS_HELP_STRING([--with-system-libtommath],
2212                            [Use libtommath already on system]),,
2213             [with_system_libtommath="$with_system_libs"])
2215 AC_ARG_WITH(system-hsqldb,
2216     AS_HELP_STRING([--with-system-hsqldb],
2217         [Use hsqldb already on system.]))
2219 AC_ARG_WITH(hsqldb-jar,
2220     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2221         [Specify path to jarfile manually.]),
2222     HSQLDB_JAR=$withval)
2224 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2225     AS_HELP_STRING([--disable-scripting-beanshell],
2226         [Disable support for scripts in BeanShell.]),
2230 AC_ARG_WITH(system-beanshell,
2231     AS_HELP_STRING([--with-system-beanshell],
2232         [Use beanshell already on system.]),,
2233     [with_system_beanshell="$with_system_jars"])
2235 AC_ARG_WITH(beanshell-jar,
2236     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2237         [Specify path to jarfile manually.]),
2238     BSH_JAR=$withval)
2240 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2241     AS_HELP_STRING([--disable-scripting-javascript],
2242         [Disable support for scripts in JavaScript.]),
2246 AC_ARG_WITH(system-rhino,
2247     AS_HELP_STRING([--with-system-rhino],
2248         [Use rhino already on system.]),,)
2249 #    [with_system_rhino="$with_system_jars"])
2250 # Above is not used as we have different debug interface
2251 # patched into internal rhino. This code needs to be fixed
2252 # before we can enable it by default.
2254 AC_ARG_WITH(rhino-jar,
2255     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2256         [Specify path to jarfile manually.]),
2257     RHINO_JAR=$withval)
2259 AC_ARG_WITH(system-jfreereport,
2260     AS_HELP_STRING([--with-system-jfreereport],
2261         [Use JFreeReport already on system.]),,
2262     [with_system_jfreereport="$with_system_jars"])
2264 AC_ARG_WITH(sac-jar,
2265     AS_HELP_STRING([--with-sac-jar=JARFILE],
2266         [Specify path to jarfile manually.]),
2267     SAC_JAR=$withval)
2269 AC_ARG_WITH(libxml-jar,
2270     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2271         [Specify path to jarfile manually.]),
2272     LIBXML_JAR=$withval)
2274 AC_ARG_WITH(flute-jar,
2275     AS_HELP_STRING([--with-flute-jar=JARFILE],
2276         [Specify path to jarfile manually.]),
2277     FLUTE_JAR=$withval)
2279 AC_ARG_WITH(jfreereport-jar,
2280     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2281         [Specify path to jarfile manually.]),
2282     JFREEREPORT_JAR=$withval)
2284 AC_ARG_WITH(liblayout-jar,
2285     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2286         [Specify path to jarfile manually.]),
2287     LIBLAYOUT_JAR=$withval)
2289 AC_ARG_WITH(libloader-jar,
2290     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2291         [Specify path to jarfile manually.]),
2292     LIBLOADER_JAR=$withval)
2294 AC_ARG_WITH(libformula-jar,
2295     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2296         [Specify path to jarfile manually.]),
2297     LIBFORMULA_JAR=$withval)
2299 AC_ARG_WITH(librepository-jar,
2300     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2301         [Specify path to jarfile manually.]),
2302     LIBREPOSITORY_JAR=$withval)
2304 AC_ARG_WITH(libfonts-jar,
2305     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2306         [Specify path to jarfile manually.]),
2307     LIBFONTS_JAR=$withval)
2309 AC_ARG_WITH(libserializer-jar,
2310     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2311         [Specify path to jarfile manually.]),
2312     LIBSERIALIZER_JAR=$withval)
2314 AC_ARG_WITH(libbase-jar,
2315     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2316         [Specify path to jarfile manually.]),
2317     LIBBASE_JAR=$withval)
2319 AC_ARG_WITH(system-odbc,
2320     AS_HELP_STRING([--with-system-odbc],
2321         [Use the odbc headers already on system.]),,
2322     [with_system_odbc="auto"])
2324 AC_ARG_WITH(system-sane,
2325     AS_HELP_STRING([--with-system-sane],
2326         [Use sane.h already on system.]),,
2327     [with_system_sane="$with_system_headers"])
2329 AC_ARG_WITH(system-bluez,
2330     AS_HELP_STRING([--with-system-bluez],
2331         [Use bluetooth.h already on system.]),,
2332     [with_system_bluez="$with_system_headers"])
2334 AC_ARG_WITH(system-curl,
2335     AS_HELP_STRING([--with-system-curl],
2336         [Use curl already on system.]),,
2337     [with_system_curl=auto])
2339 AC_ARG_WITH(system-boost,
2340     AS_HELP_STRING([--with-system-boost],
2341         [Use boost already on system.]),,
2342     [with_system_boost="$with_system_headers"])
2344 AC_ARG_WITH(system-cuckoo,
2345     AS_HELP_STRING([--with-system-cuckoo],
2346         [Use libcuckoo already on system.]),,
2347     [with_system_cuckoo="$with_system_headers"])
2349 AC_ARG_WITH(system-glm,
2350     AS_HELP_STRING([--with-system-glm],
2351         [Use glm already on system.]),,
2352     [with_system_glm="$with_system_headers"])
2354 AC_ARG_WITH(system-hunspell,
2355     AS_HELP_STRING([--with-system-hunspell],
2356         [Use libhunspell already on system.]),,
2357     [with_system_hunspell="$with_system_libs"])
2359 libo_FUZZ_ARG_ENABLE(zxing,
2360     AS_HELP_STRING([--disable-zxing],
2361        [Disable use of zxing external library.]))
2363 AC_ARG_WITH(system-zxing,
2364     AS_HELP_STRING([--with-system-zxing],
2365         [Use libzxing already on system.]),,
2366     [with_system_zxing="$with_system_libs"])
2368 AC_ARG_WITH(system-box2d,
2369     AS_HELP_STRING([--with-system-box2d],
2370         [Use box2d already on system.]),,
2371     [with_system_box2d="$with_system_libs"])
2373 AC_ARG_WITH(system-mythes,
2374     AS_HELP_STRING([--with-system-mythes],
2375         [Use mythes already on system.]),,
2376     [with_system_mythes="$with_system_libs"])
2378 AC_ARG_WITH(system-altlinuxhyph,
2379     AS_HELP_STRING([--with-system-altlinuxhyph],
2380         [Use ALTLinuxhyph already on system.]),,
2381     [with_system_altlinuxhyph="$with_system_libs"])
2383 AC_ARG_WITH(system-lpsolve,
2384     AS_HELP_STRING([--with-system-lpsolve],
2385         [Use lpsolve already on system.]),,
2386     [with_system_lpsolve="$with_system_libs"])
2388 AC_ARG_WITH(system-coinmp,
2389     AS_HELP_STRING([--with-system-coinmp],
2390         [Use CoinMP already on system.]),,
2391     [with_system_coinmp="$with_system_libs"])
2393 AC_ARG_WITH(system-liblangtag,
2394     AS_HELP_STRING([--with-system-liblangtag],
2395         [Use liblangtag library already on system.]),,
2396     [with_system_liblangtag="$with_system_libs"])
2398 AC_ARG_WITH(webdav,
2399     AS_HELP_STRING([--with-webdav],
2400         [Specify which library to use for webdav implementation.
2401          Possible values: "neon", "serf", "no". The default value is "neon".
2402          Example: --with-webdav="serf"]))
2404 AC_ARG_WITH(linker-hash-style,
2405     AS_HELP_STRING([--with-linker-hash-style],
2406         [Use linker with --hash-style=<style> when linking shared objects.
2407          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2408          if supported on the build system, and "sysv" otherwise.]))
2410 AC_ARG_WITH(jdk-home,
2411     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2412         [If you have installed JDK 9 or later on your system please supply the
2413          path here. Note that this is not the location of the java command but the
2414          location of the entire distribution. In case of cross-compiling, this
2415          is the JDK of the host os. Use --with-build-platform-configure-options
2416          to point to a different build platform JDK.]),
2419 AC_ARG_WITH(help,
2420     AS_HELP_STRING([--with-help],
2421         [Enable the build of help. There is a special parameter "common" that
2422          can be used to bundle only the common part, .e.g help-specific icons.
2423          This is useful when you build the helpcontent separately.])
2424     [
2425                           Usage:     --with-help    build the old local help
2426                                  --without-help     no local help (default)
2427                                  --with-help=html   build the new HTML local help
2428                                  --with-help=online build the new HTML online help
2429     ],
2432 AC_ARG_WITH(omindex,
2433    AS_HELP_STRING([--with-omindex],
2434         [Enable the support of xapian-omega index for online help.])
2435    [
2436                          Usage: --with-omindex=server prepare the pages for omindex
2437                                 but let xapian-omega be built in server.
2438                                 --with-omindex=noxap do not prepare online pages
2439                                 for xapian-omega
2440   ],
2443 libo_FUZZ_ARG_WITH(java,
2444     AS_HELP_STRING([--with-java=<java command>],
2445         [Specify the name of the Java interpreter command. Typically "java"
2446          which is the default.
2448          To build without support for Java components, applets, accessibility
2449          or the XML filters written in Java, use --without-java or --with-java=no.]),
2450     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2451     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2454 AC_ARG_WITH(jvm-path,
2455     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2456         [Use a specific JVM search path at runtime.
2457          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2460 AC_ARG_WITH(ant-home,
2461     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2462         [If you have installed Apache Ant on your system, please supply the path here.
2463          Note that this is not the location of the Ant binary but the location
2464          of the entire distribution.]),
2467 AC_ARG_WITH(symbol-config,
2468     AS_HELP_STRING([--with-symbol-config],
2469         [Configuration for the crashreport symbol upload]),
2470         [],
2471         [with_symbol_config=no])
2473 AC_ARG_WITH(export-validation,
2474     AS_HELP_STRING([--without-export-validation],
2475         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2476 ,with_export_validation=auto)
2478 AC_ARG_WITH(bffvalidator,
2479     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2480         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2481          Requires installed Microsoft Office Binary File Format Validator.
2482          Note: export-validation (--with-export-validation) is required to be turned on.
2483          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2484 ,with_bffvalidator=no)
2486 libo_FUZZ_ARG_WITH(junit,
2487     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2488         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2489          --without-junit disables those tests. Not relevant in the --without-java case.]),
2490 ,with_junit=yes)
2492 AC_ARG_WITH(hamcrest,
2493     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2494         [Specifies the hamcrest jar file to use for JUnit-based tests.
2495          --without-junit disables those tests. Not relevant in the --without-java case.]),
2496 ,with_hamcrest=yes)
2498 AC_ARG_WITH(perl-home,
2499     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2500         [If you have installed Perl 5 Distribution, on your system, please
2501          supply the path here. Note that this is not the location of the Perl
2502          binary but the location of the entire distribution.]),
2505 libo_FUZZ_ARG_WITH(doxygen,
2506     AS_HELP_STRING(
2507         [--with-doxygen=<absolute path to doxygen executable>],
2508         [Specifies the doxygen executable to use when generating ODK C/C++
2509          documentation. --without-doxygen disables generation of ODK C/C++
2510          documentation. Not relevant in the --disable-odk case.]),
2511 ,with_doxygen=yes)
2513 AC_ARG_WITH(visual-studio,
2514     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2515         [Specify which Visual Studio version to use in case several are
2516          installed. Currently 2019 (default) and 2022 are supported.]),
2519 AC_ARG_WITH(windows-sdk,
2520     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2521         [Specify which Windows SDK, or "Windows Kit", version to use
2522          in case the one that came with the selected Visual Studio
2523          is not what you want for some reason. Note that not all compiler/SDK
2524          combinations are supported. The intent is that this option should not
2525          be needed.]),
2528 AC_ARG_WITH(lang,
2529     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2530         [Use this option to build LibreOffice with additional UI language support.
2531          English (US) is always included by default.
2532          Separate multiple languages with space.
2533          For all languages, use --with-lang=ALL.]),
2536 AC_ARG_WITH(locales,
2537     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2538         [Use this option to limit the locale information built in.
2539          Separate multiple locales with space.
2540          Very experimental and might well break stuff.
2541          Just a desperate measure to shrink code and data size.
2542          By default all the locales available is included.
2543          This option is completely unrelated to --with-lang.])
2544     [
2545                           Affects also our character encoding conversion
2546                           tables for encodings mainly targeted for a
2547                           particular locale, like EUC-CN and EUC-TW for
2548                           zh, ISO-2022-JP for ja.
2550                           Affects also our add-on break iterator data for
2551                           some languages.
2553                           For the default, all locales, don't use this switch at all.
2554                           Specifying just the language part of a locale means all matching
2555                           locales will be included.
2556     ],
2559 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2560 libo_FUZZ_ARG_WITH(krb5,
2561     AS_HELP_STRING([--with-krb5],
2562         [Enable MIT Kerberos 5 support in modules that support it.
2563          By default automatically enabled on platforms
2564          where a good system Kerberos 5 is available.]),
2567 libo_FUZZ_ARG_WITH(gssapi,
2568     AS_HELP_STRING([--with-gssapi],
2569         [Enable GSSAPI support in modules that support it.
2570          By default automatically enabled on platforms
2571          where a good system GSSAPI is available.]),
2574 AC_ARG_WITH(iwyu,
2575     AS_HELP_STRING([--with-iwyu],
2576         [Use given IWYU binary path to check unneeded includes instead of building.
2577          Use only if you are hacking on it.]),
2580 libo_FUZZ_ARG_WITH(lxml,
2581     AS_HELP_STRING([--without-lxml],
2582         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2583          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2584          report widget classes and ids.]),
2587 libo_FUZZ_ARG_WITH(latest-c++,
2588     AS_HELP_STRING([--with-latest-c++],
2589         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2590          published standard.]),,
2591         [with_latest_c__=no])
2593 dnl ===================================================================
2594 dnl Branding
2595 dnl ===================================================================
2597 AC_ARG_WITH(branding,
2598     AS_HELP_STRING([--with-branding=/path/to/images],
2599         [Use given path to retrieve branding images set.])
2600     [
2601                           Search for intro.png about.svg and logo.svg.
2602                           If any is missing, default ones will be used instead.
2604                           Search also progress.conf for progress
2605                           settings on intro screen :
2607                           PROGRESSBARCOLOR="255,255,255" Set color of
2608                           progress bar. Comma separated RGB decimal values.
2609                           PROGRESSSIZE="407,6" Set size of progress bar.
2610                           Comma separated decimal values (width, height).
2611                           PROGRESSPOSITION="61,317" Set position of progress
2612                           bar from left,top. Comma separated decimal values.
2613                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2614                           bar frame. Comma separated RGB decimal values.
2615                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2616                           bar text. Comma separated RGB decimal values.
2617                           PROGRESSTEXTBASELINE="287" Set vertical position of
2618                           progress bar text from top. Decimal value.
2620                           Default values will be used if not found.
2621     ],
2625 AC_ARG_WITH(extra-buildid,
2626     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2627         [Show addition build identification in about dialog.]),
2631 AC_ARG_WITH(vendor,
2632     AS_HELP_STRING([--with-vendor="John the Builder"],
2633         [Set vendor of the build.]),
2636 AC_ARG_WITH(privacy-policy-url,
2637     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2638         [The URL to your privacy policy (needed when
2639          enabling online-update or crashreporting via breakpad)]),
2640         [if test "x$with_privacy_policy_url" = "xyes"; then
2641             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2642          elif test "x$with_privacy_policy_url" = "xno"; then
2643             with_privacy_policy_url="undefined"
2644          fi]
2645 ,[with_privacy_policy_url="undefined"])
2647 AC_ARG_WITH(android-package-name,
2648     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2649         [Set Android package name of the build.]),
2652 AC_ARG_WITH(compat-oowrappers,
2653     AS_HELP_STRING([--with-compat-oowrappers],
2654         [Install oo* wrappers in parallel with
2655          lo* ones to keep backward compatibility.
2656          Has effect only with make distro-pack-install]),
2659 AC_ARG_WITH(os-version,
2660     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2661         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2664 AC_ARG_WITH(idlc-cpp,
2665     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2666         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2669 AC_ARG_WITH(parallelism,
2670     AS_HELP_STRING([--with-parallelism],
2671         [Number of jobs to run simultaneously during build. Parallel builds can
2672         save a lot of time on multi-cpu machines. Defaults to the number of
2673         CPUs on the machine, unless you configure --enable-icecream - then to
2674         40.]),
2677 AC_ARG_WITH(all-tarballs,
2678     AS_HELP_STRING([--with-all-tarballs],
2679         [Download all external tarballs unconditionally]))
2681 AC_ARG_WITH(gdrive-client-id,
2682     AS_HELP_STRING([--with-gdrive-client-id],
2683         [Provides the client id of the application for OAuth2 authentication
2684         on Google Drive. If either this or --with-gdrive-client-secret is
2685         empty, the feature will be disabled]),
2688 AC_ARG_WITH(gdrive-client-secret,
2689     AS_HELP_STRING([--with-gdrive-client-secret],
2690         [Provides the client secret of the application for OAuth2
2691         authentication on Google Drive. If either this or
2692         --with-gdrive-client-id is empty, the feature will be disabled]),
2695 AC_ARG_WITH(alfresco-cloud-client-id,
2696     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2697         [Provides the client id of the application for OAuth2 authentication
2698         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2699         empty, the feature will be disabled]),
2702 AC_ARG_WITH(alfresco-cloud-client-secret,
2703     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2704         [Provides the client secret of the application for OAuth2
2705         authentication on Alfresco Cloud. If either this or
2706         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2709 AC_ARG_WITH(onedrive-client-id,
2710     AS_HELP_STRING([--with-onedrive-client-id],
2711         [Provides the client id of the application for OAuth2 authentication
2712         on OneDrive. If either this or --with-onedrive-client-secret is
2713         empty, the feature will be disabled]),
2716 AC_ARG_WITH(onedrive-client-secret,
2717     AS_HELP_STRING([--with-onedrive-client-secret],
2718         [Provides the client secret of the application for OAuth2
2719         authentication on OneDrive. If either this or
2720         --with-onedrive-client-id is empty, the feature will be disabled]),
2722 dnl ===================================================================
2723 dnl Do we want to use pre-build binary tarball for recompile
2724 dnl ===================================================================
2726 if test "$enable_library_bin_tar" = "yes" ; then
2727     USE_LIBRARY_BIN_TAR=TRUE
2728 else
2729     USE_LIBRARY_BIN_TAR=
2731 AC_SUBST(USE_LIBRARY_BIN_TAR)
2733 dnl ===================================================================
2734 dnl Test whether build target is Release Build
2735 dnl ===================================================================
2736 AC_MSG_CHECKING([whether build target is Release Build])
2737 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2738     AC_MSG_RESULT([no])
2739     ENABLE_RELEASE_BUILD=
2740     GET_TASK_ALLOW_ENTITLEMENT='
2741         <!-- We want to be able to debug a hardened process when not building for release -->
2742         <key>com.apple.security.get-task-allow</key>
2743         <true/>'
2744 else
2745     AC_MSG_RESULT([yes])
2746     ENABLE_RELEASE_BUILD=TRUE
2747     GET_TASK_ALLOW_ENTITLEMENT=''
2749 AC_SUBST(ENABLE_RELEASE_BUILD)
2750 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2752 AC_MSG_CHECKING([whether to build a Community flavor])
2753 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2754     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2755     AC_MSG_RESULT([yes])
2756 else
2757     AC_MSG_RESULT([no])
2760 dnl ===================================================================
2761 dnl Test whether to sign Windows Build
2762 dnl ===================================================================
2763 AC_MSG_CHECKING([whether to sign windows build])
2764 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2765     AC_MSG_RESULT([yes])
2766     WINDOWS_BUILD_SIGNING="TRUE"
2767 else
2768     AC_MSG_RESULT([no])
2769     WINDOWS_BUILD_SIGNING="FALSE"
2771 AC_SUBST(WINDOWS_BUILD_SIGNING)
2773 dnl ===================================================================
2774 dnl MacOSX build and runtime environment options
2775 dnl ===================================================================
2777 AC_ARG_WITH(macosx-sdk,
2778     AS_HELP_STRING([--with-macosx-sdk=<version>],
2779         [Prefer a specific SDK for building.])
2780     [
2781                           If the requested SDK is not available, a search for the oldest one will be done.
2782                           With current Xcode versions, only the latest SDK is included, so this option is
2783                           not terribly useful. It works fine to build with a new SDK and run the result
2784                           on an older OS.
2786                           e. g.: --with-macosx-sdk=10.10
2788                           there are 3 options to control the MacOSX build:
2789                           --with-macosx-sdk (referred as 'sdk' below)
2790                           --with-macosx-version-min-required (referred as 'min' below)
2791                           --with-macosx-version-max-allowed (referred as 'max' below)
2793                           the connection between these value and the default they take is as follow:
2794                           ( ? means not specified on the command line, s means the SDK version found,
2795                           constraint: 8 <= x <= y <= z)
2797                           ==========================================
2798                            command line      || config result
2799                           ==========================================
2800                           min  | max  | sdk  || min   | max  | sdk  |
2801                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2802                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2803                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2804                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2805                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2806                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2807                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2808                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2811                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2812                           for a detailed technical explanation of these variables
2814                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2815     ],
2818 AC_ARG_WITH(macosx-version-min-required,
2819     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2820         [set the minimum OS version needed to run the built LibreOffice])
2821     [
2822                           e. g.: --with-macosx-version-min-required=10.10
2823                           see --with-macosx-sdk for more info
2824     ],
2827 AC_ARG_WITH(macosx-version-max-allowed,
2828     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2829         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2830     [
2831                           e. g.: --with-macosx-version-max-allowed=10.10
2832                           see --with-macosx-sdk for more info
2833     ],
2837 dnl ===================================================================
2838 dnl options for stuff used during cross-compilation build
2839 dnl Not quite superseded by --with-build-platform-configure-options.
2840 dnl TODO: check, if the "force" option is still needed anywhere.
2841 dnl ===================================================================
2843 AC_ARG_WITH(system-icu-for-build,
2844     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2845         [Use icu already on system for build tools (cross-compilation only).]))
2848 dnl ===================================================================
2849 dnl Check for incompatible options set by fuzzing, and reset those
2850 dnl automatically to working combinations
2851 dnl ===================================================================
2853 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2854         "$enable_dbus" != "$enable_avahi"; then
2855     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2856     enable_avahi=$enable_dbus
2859 add_lopath_after ()
2861     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2862         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2863     fi
2866 add_lopath_before ()
2868     local IFS=${P_SEP}
2869     local path_cleanup
2870     local dir
2871     for dir in $LO_PATH ; do
2872         if test "$dir" != "$1" ; then
2873             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2874         fi
2875     done
2876     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2879 dnl ===================================================================
2880 dnl check for required programs (grep, awk, sed, bash)
2881 dnl ===================================================================
2883 pathmunge ()
2885     local new_path
2886     if test -n "$1"; then
2887         if test "$build_os" = "cygwin"; then
2888             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2889                 PathFormat "$1"
2890                 new_path=`cygpath -sm "$formatted_path"`
2891             else
2892                 PathFormat "$1"
2893                 new_path=`cygpath -u "$formatted_path"`
2894             fi
2895         else
2896             new_path="$1"
2897         fi
2898         if test "$2" = "after"; then
2899             add_lopath_after "$new_path"
2900         else
2901             add_lopath_before "$new_path"
2902         fi
2903     fi
2906 AC_PROG_AWK
2907 AC_PATH_PROG( AWK, $AWK)
2908 if test -z "$AWK"; then
2909     AC_MSG_ERROR([install awk to run this script])
2912 AC_PATH_PROG(BASH, bash)
2913 if test -z "$BASH"; then
2914     AC_MSG_ERROR([bash not found in \$PATH])
2916 AC_SUBST(BASH)
2918 AC_MSG_CHECKING([for GNU or BSD tar])
2919 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2920     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2921     if test $? -eq 0;  then
2922         GNUTAR=$a
2923         break
2924     fi
2925 done
2926 AC_MSG_RESULT($GNUTAR)
2927 if test -z "$GNUTAR"; then
2928     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2930 AC_SUBST(GNUTAR)
2932 AC_MSG_CHECKING([for tar's option to strip components])
2933 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2934 if test $? -eq 0; then
2935     STRIP_COMPONENTS="--strip-components"
2936 else
2937     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2938     if test $? -eq 0; then
2939         STRIP_COMPONENTS="--strip-path"
2940     else
2941         STRIP_COMPONENTS="unsupported"
2942     fi
2944 AC_MSG_RESULT($STRIP_COMPONENTS)
2945 if test x$STRIP_COMPONENTS = xunsupported; then
2946     AC_MSG_ERROR([you need a tar that is able to strip components.])
2948 AC_SUBST(STRIP_COMPONENTS)
2950 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2951 dnl desktop OSes from "mobile" ones.
2953 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2954 dnl In other words, that when building for an OS that is not a
2955 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2957 dnl Note the direction of the implication; there is no assumption that
2958 dnl cross-compiling would imply a non-desktop OS.
2960 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2961     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2962     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2963     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2966 # Whether to build "avmedia" functionality or not.
2968 if test -z "$enable_avmedia"; then
2969     enable_avmedia=yes
2972 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2973 if test "$enable_avmedia" = yes; then
2974     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2975 else
2976     USE_AVMEDIA_DUMMY='TRUE'
2978 AC_SUBST(USE_AVMEDIA_DUMMY)
2980 # Decide whether to build database connectivity stuff (including Base) or not.
2981 if test "$enable_database_connectivity" != no; then
2982     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2983     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2984 else
2985     if test "$_os" = iOS; then
2986         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2987     fi
2988     disable_database_connectivity_dependencies
2991 if test -z "$enable_extensions"; then
2992     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2993     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2994         enable_extensions=yes
2995     fi
2998 if test "$enable_extensions" = yes; then
2999     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3000     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3001 else
3002     enable_extension_integration=no
3003     enable_extension_update=no
3006 if test -z "$enable_scripting"; then
3007     # Disable scripting for iOS unless specifically overridden
3008     # with --enable-scripting.
3009     if test $_os != iOS -o $_os = Emscripten; then
3010         enable_scripting=yes
3011     fi
3014 DISABLE_SCRIPTING=''
3015 if test "$enable_scripting" = yes; then
3016     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3017     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3018 else
3019     DISABLE_SCRIPTING='TRUE'
3020     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3023 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3024     # Disable dynamic_loading always for iOS and Android
3025     enable_dynamic_loading=no
3026 elif test -z "$enable_dynamic_loading"; then
3027     # Otherwise enable it unless specifically disabled
3028     enable_dynamic_loading=yes
3031 DISABLE_DYNLOADING=''
3032 if test "$enable_dynamic_loading" = yes; then
3033     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3034 else
3035     DISABLE_DYNLOADING='TRUE'
3037 AC_SUBST(DISABLE_DYNLOADING)
3039 # remember SYSBASE value
3040 AC_SUBST(SYSBASE)
3042 dnl ===================================================================
3043 dnl  Sort out various gallery compilation options
3044 dnl ===================================================================
3045 WITH_GALLERY_BUILD=TRUE
3046 AC_MSG_CHECKING([how to build and package galleries])
3047 if test -n "${with_galleries}"; then
3048     if test "$with_galleries" = "build"; then
3049         if test "$enable_database_connectivity" = no; then
3050             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3051         fi
3052         AC_MSG_RESULT([build from source images internally])
3053     elif test "$with_galleries" = "no"; then
3054         WITH_GALLERY_BUILD=
3055         AC_MSG_RESULT([disable non-internal gallery build])
3056     else
3057         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3058     fi
3059 else
3060     if test $_os != iOS -a $_os != Android; then
3061         AC_MSG_RESULT([internal src images for desktop])
3062     else
3063         WITH_GALLERY_BUILD=
3064         AC_MSG_RESULT([disable src image build])
3065     fi
3067 AC_SUBST(WITH_GALLERY_BUILD)
3069 dnl ===================================================================
3070 dnl  Checks if ccache is available
3071 dnl ===================================================================
3072 CCACHE_DEPEND_MODE=
3073 if test "$enable_ccache" = "no"; then
3074     CCACHE=""
3075 elif test "$_os" = "WINNT"; then
3076     # on windows/VC build do not use ccache - but perhaps sccache is around?
3077     case "%$CC%$CXX%" in
3078     # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3079     # assume that's good then
3080     *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3081         AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3082         CCACHE_DEPEND_MODE=1
3083         ;;
3084     *)
3085         # for sharing code below, reuse CCACHE env var
3086         AC_PATH_PROG([CCACHE],[sccache],[not found])
3087         if test "$CCACHE" = "not found"; then
3088             CCACHE=""
3089         else
3090             CCACHE=`win_short_path_for_make "$CCACHE"`
3091             CCACHE_DEPEND_MODE=1
3092         fi
3093         ;;
3094     esac
3095 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3096     case "%$CC%$CXX%" in
3097     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3098     # assume that's good then
3099     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3100         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3101         CCACHE_DEPEND_MODE=1
3102         ;;
3103     *)
3104         AC_PATH_PROG([CCACHE],[ccache],[not found])
3105         if test "$CCACHE" = "not found"; then
3106             CCACHE=""
3107         else
3108             CCACHE_DEPEND_MODE=1
3109             # Need to check for ccache version: otherwise prevents
3110             # caching of the results (like "-x objective-c++" for Mac)
3111             if test $_os = Darwin -o $_os = iOS; then
3112                 # Check ccache version
3113                 AC_MSG_CHECKING([whether version of ccache is suitable])
3114                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3115                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3116                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3117                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3118                 else
3119                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3120                     CCACHE=""
3121                     CCACHE_DEPEND_MODE=
3122                 fi
3123             fi
3124         fi
3125         ;;
3126     esac
3127 else
3128     CCACHE=""
3130 if test "$enable_ccache" = "nodepend"; then
3131     CCACHE_DEPEND_MODE=""
3133 AC_SUBST(CCACHE_DEPEND_MODE)
3135 # skip on windows - sccache defaults are good enough
3136 if test "$CCACHE" != "" -a "$_os" != "WINNT"; then
3137     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3138     # -p works with both 4.2 and 4.4
3139     ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3140     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3141     if test "$ccache_size" = ""; then
3142         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3143         if test "$ccache_size" = ""; then
3144             ccache_size=0
3145         fi
3146         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3147         if test $ccache_size -lt 1024; then
3148             CCACHE=""
3149             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3150             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3151         else
3152             # warn that ccache may be too small for debug build
3153             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3154             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3155         fi
3156     else
3157         if test $ccache_size -lt 5; then
3158             #warn that ccache may be too small for debug build
3159             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3160             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3161         fi
3162     fi
3165 dnl ===================================================================
3166 dnl  Checks for C compiler,
3167 dnl  The check for the C++ compiler is later on.
3168 dnl ===================================================================
3169 if test "$_os" != "WINNT"; then
3170     GCC_HOME_SET="true"
3171     AC_MSG_CHECKING([gcc home])
3172     if test -z "$with_gcc_home"; then
3173         if test "$enable_icecream" = "yes"; then
3174             if test -d "/usr/lib/icecc/bin"; then
3175                 GCC_HOME="/usr/lib/icecc/"
3176             elif test -d "/usr/libexec/icecc/bin"; then
3177                 GCC_HOME="/usr/libexec/icecc/"
3178             elif test -d "/opt/icecream/bin"; then
3179                 GCC_HOME="/opt/icecream/"
3180             else
3181                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3183             fi
3184         else
3185             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3186             GCC_HOME_SET="false"
3187         fi
3188     else
3189         GCC_HOME="$with_gcc_home"
3190     fi
3191     AC_MSG_RESULT($GCC_HOME)
3192     AC_SUBST(GCC_HOME)
3194     if test "$GCC_HOME_SET" = "true"; then
3195         if test -z "$CC"; then
3196             CC="$GCC_HOME/bin/gcc"
3197             CC_BASE="gcc"
3198         fi
3199         if test -z "$CXX"; then
3200             CXX="$GCC_HOME/bin/g++"
3201             CXX_BASE="g++"
3202         fi
3203     fi
3206 COMPATH=`dirname "$CC"`
3207 if test "$COMPATH" = "."; then
3208     AC_PATH_PROGS(COMPATH, $CC)
3209     dnl double square bracket to get single because of M4 quote...
3210     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3212 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3214 dnl ===================================================================
3215 dnl Java support
3216 dnl ===================================================================
3217 AC_MSG_CHECKING([whether to build with Java support])
3218 if test "$with_java" != "no"; then
3219     if test "$DISABLE_SCRIPTING" = TRUE; then
3220         AC_MSG_RESULT([no, overridden by --disable-scripting])
3221         ENABLE_JAVA=""
3222         with_java=no
3223     else
3224         AC_MSG_RESULT([yes])
3225         ENABLE_JAVA="TRUE"
3226         AC_DEFINE(HAVE_FEATURE_JAVA)
3227     fi
3228 else
3229     AC_MSG_RESULT([no])
3230     ENABLE_JAVA=""
3233 AC_SUBST(ENABLE_JAVA)
3235 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3237 dnl ENABLE_JAVA="" indicate no Java support at all
3239 dnl ===================================================================
3240 dnl Check macOS SDK and compiler
3241 dnl ===================================================================
3243 if test $_os = Darwin; then
3245     # If no --with-macosx-sdk option is given, look for one
3247     # The intent is that for "most" Mac-based developers, a suitable
3248     # SDK will be found automatically without any configure options.
3250     # For developers with a current Xcode, the lowest-numbered SDK
3251     # higher than or equal to the minimum required should be found.
3253     AC_MSG_CHECKING([what macOS SDK to use])
3254     for _macosx_sdk in ${with_macosx_sdk-12.0 11.3 11.1 11.0 10.15 10.14 10.13}; do
3255         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3256         if test -d "$MACOSX_SDK_PATH"; then
3257             with_macosx_sdk="${_macosx_sdk}"
3258             break
3259         else
3260             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3261             if test -d "$MACOSX_SDK_PATH"; then
3262                 with_macosx_sdk="${_macosx_sdk}"
3263                 break
3264             fi
3265         fi
3266     done
3267     if test ! -d "$MACOSX_SDK_PATH"; then
3268         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3269     fi
3271     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3273     case $with_macosx_sdk in
3274     10.13)
3275         MACOSX_SDK_VERSION=101300
3276         ;;
3277     10.14)
3278         MACOSX_SDK_VERSION=101400
3279         ;;
3280     10.15)
3281         MACOSX_SDK_VERSION=101500
3282         ;;
3283     11.0)
3284         MACOSX_SDK_VERSION=110000
3285         ;;
3286     11.1)
3287         MACOSX_SDK_VERSION=110100
3288         ;;
3289     11.3)
3290         MACOSX_SDK_VERSION=110300
3291         ;;
3292     12.0)
3293         MACOSX_SDK_VERSION=120000
3294         ;;
3295     *)
3296         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--12.0])
3297         ;;
3298     esac
3300     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3301         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3302     fi
3304     if test "$with_macosx_version_min_required" = "" ; then
3305         if test "$host_cpu" = x86_64; then
3306             with_macosx_version_min_required="10.10";
3307         else
3308             with_macosx_version_min_required="11.0";
3309         fi
3310     fi
3312     if test "$with_macosx_version_max_allowed" = "" ; then
3313         with_macosx_version_max_allowed="$with_macosx_sdk"
3314     fi
3316     # export this so that "xcrun" invocations later return matching values
3317     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3318     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3319     export DEVELOPER_DIR
3320     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3321     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3323     AC_MSG_CHECKING([whether Xcode is new enough])
3324     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3325     my_xcode_ver2=${my_xcode_ver1#Xcode }
3326     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3327     if test "$my_xcode_ver3" -ge 1103; then
3328         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3329     else
3330         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3331     fi
3333     case "$with_macosx_version_min_required" in
3334     10.10)
3335         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3336         ;;
3337     10.11)
3338         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3339         ;;
3340     10.12)
3341         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3342         ;;
3343     10.13)
3344         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3345         ;;
3346     10.14)
3347         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3348         ;;
3349     10.15)
3350         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3351         ;;
3352     10.16)
3353         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3354         ;;
3355     11.0)
3356         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3357         ;;
3358     11.1)
3359         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3360         ;;
3361     11.3)
3362         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3363         ;;
3364     12.0)
3365         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3366         ;;
3367     *)
3368         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--12.0])
3369         ;;
3370     esac
3372     LIBTOOL=/usr/bin/libtool
3373     INSTALL_NAME_TOOL=install_name_tool
3374     if test -z "$save_CC"; then
3375         stdlib=-stdlib=libc++
3377         AC_MSG_CHECKING([what C compiler to use])
3378         CC="`xcrun -find clang`"
3379         CC_BASE=`first_arg_basename "$CC"`
3380         if test "$host_cpu" = x86_64; then
3381             CC+=" -target x86_64-apple-macos"
3382         else
3383             CC+=" -target arm64-apple-macos"
3384         fi
3385         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3386         AC_MSG_RESULT([$CC])
3388         AC_MSG_CHECKING([what C++ compiler to use])
3389         CXX="`xcrun -find clang++`"
3390         CXX_BASE=`first_arg_basename "$CXX"`
3391         if test "$host_cpu" = x86_64; then
3392             CXX+=" -target x86_64-apple-macos"
3393         else
3394             CXX+=" -target arm64-apple-macos"
3395         fi
3396         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3397         AC_MSG_RESULT([$CXX])
3399         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3400         AR=`xcrun -find ar`
3401         NM=`xcrun -find nm`
3402         STRIP=`xcrun -find strip`
3403         LIBTOOL=`xcrun -find libtool`
3404         RANLIB=`xcrun -find ranlib`
3405     fi
3407     case "$with_macosx_version_max_allowed" in
3408     10.10)
3409         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3410         ;;
3411     10.11)
3412         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3413         ;;
3414     10.12)
3415         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3416         ;;
3417     10.13)
3418         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3419         ;;
3420     10.14)
3421         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3422         ;;
3423     10.15)
3424         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3425         ;;
3426     11.0)
3427         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3428         ;;
3429     11.1)
3430         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3431         ;;
3432     11.3)
3433         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3434         ;;
3435     12.0)
3436         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3437         ;;
3438     *)
3439         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--12.0])
3440         ;;
3441     esac
3443     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3444     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3445         AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED])
3446     else
3447         AC_MSG_RESULT([ok])
3448     fi
3450     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3451     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3452         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3453     else
3454         AC_MSG_RESULT([ok])
3455     fi
3456     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3457     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3459     AC_MSG_CHECKING([whether to do code signing])
3461     if test "$enable_macosx_code_signing" = yes; then
3462         # By default use the first suitable certificate (?).
3464         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3465         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3466         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3467         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3468         # "Developer ID Application" one.
3470         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3471         if test -n "$identity"; then
3472             MACOSX_CODESIGNING_IDENTITY=$identity
3473             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3474             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3475         else
3476             AC_MSG_ERROR([cannot determine identity to use])
3477         fi
3478     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3479         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3480         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3481         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3482     else
3483         AC_MSG_RESULT([no])
3484     fi
3486     AC_MSG_CHECKING([whether to create a Mac App Store package])
3488     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3489         AC_MSG_RESULT([no])
3490     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3491         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3492     elif test "$enable_macosx_package_signing" = yes; then
3493         # By default use the first suitable certificate.
3494         # It should be a "3rd Party Mac Developer Installer" one
3496         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3497         if test -n "$identity"; then
3498             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3499             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3500             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3501         else
3502             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3503         fi
3504     else
3505         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3506         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3507         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3508     fi
3510     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3511         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3512     fi
3514     AC_MSG_CHECKING([whether to sandbox the application])
3516     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3517         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3518     elif test "$enable_macosx_sandbox" = yes; then
3519         ENABLE_MACOSX_SANDBOX=TRUE
3520         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3521         AC_MSG_RESULT([yes])
3522     else
3523         AC_MSG_RESULT([no])
3524     fi
3526     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3527     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3528     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3530 AC_SUBST(MACOSX_SDK_PATH)
3531 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3532 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3533 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3534 AC_SUBST(INSTALL_NAME_TOOL)
3535 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3536 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3537 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3538 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3539 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3541 dnl ===================================================================
3542 dnl Check iOS SDK and compiler
3543 dnl ===================================================================
3545 if test $_os = iOS; then
3546     AC_MSG_CHECKING([what iOS SDK to use])
3547     current_sdk_ver=15.0
3548     older_sdk_vers="14.5"
3549     if test "$enable_ios_simulator" = "yes"; then
3550         platform=iPhoneSimulator
3551         versionmin=-mios-simulator-version-min=13.6
3552     else
3553         platform=iPhoneOS
3554         versionmin=-miphoneos-version-min=13.6
3555     fi
3556     xcode_developer=`xcode-select -print-path`
3558     for sdkver in $current_sdk_ver $older_sdk_vers; do
3559         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3560         if test -d $t; then
3561             sysroot=$t
3562             break
3563         fi
3564     done
3566     if test -z "$sysroot"; then
3567         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3568     fi
3570     AC_MSG_RESULT($sysroot)
3572     stdlib="-stdlib=libc++"
3574     AC_MSG_CHECKING([what C compiler to use])
3575     CC="`xcrun -find clang`"
3576     CC_BASE=`first_arg_basename "$CC"`
3577     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3578     AC_MSG_RESULT([$CC])
3580     AC_MSG_CHECKING([what C++ compiler to use])
3581     CXX="`xcrun -find clang++`"
3582     CXX_BASE=`first_arg_basename "$CXX"`
3583     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3584     AC_MSG_RESULT([$CXX])
3586     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3587     AR=`xcrun -find ar`
3588     NM=`xcrun -find nm`
3589     STRIP=`xcrun -find strip`
3590     LIBTOOL=`xcrun -find libtool`
3591     RANLIB=`xcrun -find ranlib`
3594 AC_MSG_CHECKING([whether to treat the installation as read-only])
3596 if test $_os = Darwin; then
3597     enable_readonly_installset=yes
3598 elif test "$enable_extensions" != yes; then
3599     enable_readonly_installset=yes
3601 if test "$enable_readonly_installset" = yes; then
3602     AC_MSG_RESULT([yes])
3603     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3604 else
3605     AC_MSG_RESULT([no])
3608 dnl ===================================================================
3609 dnl Structure of install set
3610 dnl ===================================================================
3612 if test $_os = Darwin; then
3613     LIBO_BIN_FOLDER=MacOS
3614     LIBO_ETC_FOLDER=Resources
3615     LIBO_LIBEXEC_FOLDER=MacOS
3616     LIBO_LIB_FOLDER=Frameworks
3617     LIBO_LIB_PYUNO_FOLDER=Resources
3618     LIBO_SHARE_FOLDER=Resources
3619     LIBO_SHARE_HELP_FOLDER=Resources/help
3620     LIBO_SHARE_JAVA_FOLDER=Resources/java
3621     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3622     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3623     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3624     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3625     LIBO_URE_BIN_FOLDER=MacOS
3626     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3627     LIBO_URE_LIB_FOLDER=Frameworks
3628     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3629     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3630 elif test $_os = WINNT; then
3631     LIBO_BIN_FOLDER=program
3632     LIBO_ETC_FOLDER=program
3633     LIBO_LIBEXEC_FOLDER=program
3634     LIBO_LIB_FOLDER=program
3635     LIBO_LIB_PYUNO_FOLDER=program
3636     LIBO_SHARE_FOLDER=share
3637     LIBO_SHARE_HELP_FOLDER=help
3638     LIBO_SHARE_JAVA_FOLDER=program/classes
3639     LIBO_SHARE_PRESETS_FOLDER=presets
3640     LIBO_SHARE_READMES_FOLDER=readmes
3641     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3642     LIBO_SHARE_SHELL_FOLDER=program/shell
3643     LIBO_URE_BIN_FOLDER=program
3644     LIBO_URE_ETC_FOLDER=program
3645     LIBO_URE_LIB_FOLDER=program
3646     LIBO_URE_MISC_FOLDER=program
3647     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3648 else
3649     LIBO_BIN_FOLDER=program
3650     LIBO_ETC_FOLDER=program
3651     LIBO_LIBEXEC_FOLDER=program
3652     LIBO_LIB_FOLDER=program
3653     LIBO_LIB_PYUNO_FOLDER=program
3654     LIBO_SHARE_FOLDER=share
3655     LIBO_SHARE_HELP_FOLDER=help
3656     LIBO_SHARE_JAVA_FOLDER=program/classes
3657     LIBO_SHARE_PRESETS_FOLDER=presets
3658     LIBO_SHARE_READMES_FOLDER=readmes
3659     if test "$enable_fuzzers" != yes; then
3660         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3661     else
3662         LIBO_SHARE_RESOURCE_FOLDER=resource
3663     fi
3664     LIBO_SHARE_SHELL_FOLDER=program/shell
3665     LIBO_URE_BIN_FOLDER=program
3666     LIBO_URE_ETC_FOLDER=program
3667     LIBO_URE_LIB_FOLDER=program
3668     LIBO_URE_MISC_FOLDER=program
3669     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3671 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3672 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3673 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3674 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3675 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3676 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3677 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3678 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3679 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3680 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3681 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3682 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3683 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3684 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3685 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3686 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3688 # Not all of them needed in config_host.mk, add more if need arises
3689 AC_SUBST(LIBO_BIN_FOLDER)
3690 AC_SUBST(LIBO_ETC_FOLDER)
3691 AC_SUBST(LIBO_LIB_FOLDER)
3692 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3693 AC_SUBST(LIBO_SHARE_FOLDER)
3694 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3695 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3696 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3697 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3698 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3699 AC_SUBST(LIBO_URE_BIN_FOLDER)
3700 AC_SUBST(LIBO_URE_ETC_FOLDER)
3701 AC_SUBST(LIBO_URE_LIB_FOLDER)
3702 AC_SUBST(LIBO_URE_MISC_FOLDER)
3703 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3705 dnl ===================================================================
3706 dnl Windows specific tests and stuff
3707 dnl ===================================================================
3709 reg_get_value()
3711     # Return value: $regvalue
3712     unset regvalue
3714     if test "$build_os" = "wsl"; then
3715         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3716         return
3717     fi
3719     local _regentry="/proc/registry${1}/${2}"
3720     if test -f "$_regentry"; then
3721         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3722         # Registry keys read via /proc/registry* are always \0 terminated!
3723         local _regvalue=$(tr -d '\0' < "$_regentry")
3724         if test $? -eq 0; then
3725             regvalue=$_regvalue
3726         fi
3727     fi
3730 # Get a value from the 32-bit side of the Registry
3731 reg_get_value_32()
3733     reg_get_value "32" "$1"
3736 # Get a value from the 64-bit side of the Registry
3737 reg_get_value_64()
3739     reg_get_value "64" "$1"
3742 case "$host_os" in
3743 cygwin*|wsl*)
3744     COM=MSC
3745     OS=WNT
3746     RTL_OS=Windows
3747     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3748         P_SEP=";"
3749     else
3750         P_SEP=:
3751     fi
3752     case "$host_cpu" in
3753     x86_64)
3754         CPUNAME=X86_64
3755         RTL_ARCH=X86_64
3756         PLATFORMID=windows_x86_64
3757         WINDOWS_X64=1
3758         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3759         WIN_HOST_ARCH="x64"
3760         WIN_MULTI_ARCH="x86"
3761         WIN_HOST_BITS=64
3762         ;;
3763     i*86)
3764         CPUNAME=INTEL
3765         RTL_ARCH=x86
3766         PLATFORMID=windows_x86
3767         WIN_HOST_ARCH="x86"
3768         WIN_HOST_BITS=32
3769         WIN_OTHER_ARCH="x64"
3770         ;;
3771     aarch64)
3772         CPUNAME=AARCH64
3773         RTL_ARCH=AARCH64
3774         PLATFORMID=windows_aarch64
3775         WINDOWS_X64=1
3776         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3777         WIN_HOST_ARCH="arm64"
3778         WIN_HOST_BITS=64
3779         with_ucrt_dir=no
3780         ;;
3781     *)
3782         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3783         ;;
3784     esac
3786     case "$build_cpu" in
3787     x86_64) WIN_BUILD_ARCH="x64" ;;
3788     i*86) WIN_BUILD_ARCH="x86" ;;
3789     aarch64) WIN_BUILD_ARCH="arm64" ;;
3790     *)
3791         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3792         ;;
3793     esac
3795     SCPDEFS="$SCPDEFS -D_MSC_VER"
3796     ;;
3797 esac
3799 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3800 # other-arch won't, but wouldn't break the build (x64 on x86).
3801 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3802     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3806 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3807     # To allow building Windows multi-arch releases without cross-tooling
3808     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3809         cross_compiling="yes"
3810     fi
3813 ENABLE_WASM_STRIP=''
3814 if test "$cross_compiling" = "yes"; then
3815     export CROSS_COMPILING=TRUE
3816     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3817         ENABLE_WASM_STRIP=TRUE
3818     fi
3819 else
3820     CROSS_COMPILING=
3821     BUILD_TYPE="$BUILD_TYPE NATIVE"
3823 AC_SUBST(CROSS_COMPILING)
3824 AC_SUBST(ENABLE_WASM_STRIP)
3826 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3827 # NOTE: must _not_ be used for bundled external libraries!
3828 ISYSTEM=
3829 if test "$GCC" = "yes"; then
3830     AC_MSG_CHECKING( for -isystem )
3831     save_CFLAGS=$CFLAGS
3832     CFLAGS="$CFLAGS -Werror"
3833     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3834     CFLAGS=$save_CFLAGS
3835     if test -n "$ISYSTEM"; then
3836         AC_MSG_RESULT(yes)
3837     else
3838         AC_MSG_RESULT(no)
3839     fi
3841 if test -z "$ISYSTEM"; then
3842     # fall back to using -I
3843     ISYSTEM=-I
3845 AC_SUBST(ISYSTEM)
3847 dnl ===================================================================
3848 dnl  Check which Visual Studio compiler is used
3849 dnl ===================================================================
3851 map_vs_year_to_version()
3853     # Return value: $vsversion
3855     unset vsversion
3857     case $1 in
3858     2019)
3859         vsversion=16;;
3860     2022)
3861         vsversion=17;;
3862     *)
3863         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3864     esac
3867 vs_versions_to_check()
3869     # Args: $1 (optional) : versions to check, in the order of preference
3870     # Return value: $vsversions
3872     unset vsversions
3874     if test -n "$1"; then
3875         map_vs_year_to_version "$1"
3876         vsversions=$vsversion
3877     else
3878         # Default version is 2019
3879         vsversions="16"
3880     fi
3883 win_get_env_from_vsvars32bat()
3885     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3886     # Also seems to be located in another directory under the same name: vsvars32.bat
3887     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3888     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3889     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3890     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3891     local result
3892     if test "$build_os" = "wsl"; then
3893         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3894     else
3895         chmod +x $WRAPPERBATCHFILEPATH
3896         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3897     fi
3898     rm -f $WRAPPERBATCHFILEPATH
3899     printf '%s' "$result"
3902 find_ucrt()
3904     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3905     if test -n "$regvalue"; then
3906         PathFormat "$regvalue"
3907         UCRTSDKDIR=$formatted_path_unix
3908         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3909         UCRTVERSION=$regvalue
3910         # Rest if not exist
3911         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3912           UCRTSDKDIR=
3913         fi
3914     fi
3915     if test -z "$UCRTSDKDIR"; then
3916         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3917         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3918         if test -f "$ide_env_file"; then
3919             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3920             UCRTSDKDIR=$formatted_path
3921             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3922             dnl Hack needed at least by tml:
3923             if test "$UCRTVERSION" = 10.0.15063.0 \
3924                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3925                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3926             then
3927                 UCRTVERSION=10.0.14393.0
3928             fi
3929         else
3930           AC_MSG_ERROR([No UCRT found])
3931         fi
3932     fi
3935 find_msvc()
3937     # Find Visual C++
3938     # Args: $1 (optional) : The VS version year
3939     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3941     unset vctest vctoolset vcnumwithdot vcbuildnumber
3943     vs_versions_to_check "$1"
3944     if test "$build_os" = wsl; then
3945         vswhere="$PROGRAMFILESX86"
3946     else
3947         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3948     fi
3949     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3950     PathFormat "$vswhere"
3951     vswhere=$formatted_path_unix
3952     for ver in $vsversions; do
3953         vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3954         # Fall back to all MS products (this includes VC++ Build Tools)
3955         if ! test -n "$vswhereoutput"; then
3956             AC_MSG_CHECKING([VC++ Build Tools and similar])
3957             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3958         fi
3959         if test -n "$vswhereoutput"; then
3960             PathFormat "$vswhereoutput"
3961             vctest=$formatted_path_unix
3962             break
3963         fi
3964     done
3966     if test -n "$vctest"; then
3967         vcnumwithdot="$ver.0"
3968         case "$vcnumwithdot" in
3969         16.0)
3970             vcyear=2019
3971             vctoolset=v142
3972             ;;
3973         17.0)
3974             vcyear=2022
3975             vctoolset=v143
3976             ;;
3977         esac
3978         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3980     fi
3983 test_cl_exe()
3985     AC_MSG_CHECKING([$1 compiler])
3987     CL_EXE_PATH="$2/cl.exe"
3989     if test ! -f "$CL_EXE_PATH"; then
3990         if test "$1" = "multi-arch"; then
3991             AC_MSG_WARN([no compiler (cl.exe) in $2])
3992             return 1
3993         else
3994             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3995         fi
3996     fi
3998     dnl ===========================================================
3999     dnl  Check for the corresponding mspdb*.dll
4000     dnl ===========================================================
4002     # MSVC 15.0 has libraries from 14.0?
4003     mspdbnum="140"
4005     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4006         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4007     fi
4009     # The compiles has to find its shared libraries
4010     OLD_PATH="$PATH"
4011     TEMP_PATH=`cygpath -d "$2"`
4012     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4014     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4015         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4016     fi
4018     PATH="$OLD_PATH"
4020     AC_MSG_RESULT([$CL_EXE_PATH])
4023 SOLARINC=
4024 MSBUILD_PATH=
4025 DEVENV=
4026 if test "$_os" = "WINNT"; then
4027     AC_MSG_CHECKING([Visual C++])
4028     find_msvc "$with_visual_studio"
4029     if test -z "$vctest"; then
4030         if test -n "$with_visual_studio"; then
4031             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4032         else
4033             AC_MSG_ERROR([no Visual Studio installation found])
4034         fi
4035     fi
4036     AC_MSG_RESULT([])
4038     VC_PRODUCT_DIR="$vctest/VC"
4039     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4041     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4042     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4043         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4044         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4045         if test $? -ne 0; then
4046             WIN_MULTI_ARCH=""
4047             WIN_OTHER_ARCH=""
4048         fi
4049     fi
4051     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4052         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4053         test_cl_exe "build" "$MSVC_BUILD_PATH"
4054     fi
4056     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4057         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4058         test_cl_exe "host" "$MSVC_HOST_PATH"
4059     else
4060         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4061     fi
4063     AC_MSG_CHECKING([for short pathname of VC product directory])
4064     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4065     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4067     UCRTSDKDIR=
4068     UCRTVERSION=
4070     AC_MSG_CHECKING([for UCRT location])
4071     find_ucrt
4072     # find_ucrt errors out if it doesn't find it
4073     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4074     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4075     ucrtincpath_formatted=$formatted_path
4076     # SOLARINC is used for external modules and must be set too.
4077     # And no, it's not sufficient to set SOLARINC only, as configure
4078     # itself doesn't honour it.
4079     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4080     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4081     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4082     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4084     AC_SUBST(UCRTSDKDIR)
4085     AC_SUBST(UCRTVERSION)
4087     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4088     # Find the proper version of MSBuild.exe to use based on the VS version
4089     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4090     if test -z "$regvalue" ; then
4091         if test "$WIN_BUILD_ARCH" != "x64"; then
4092             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4093         else
4094             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4095         fi
4096     fi
4097     if test -d "$regvalue" ; then
4098         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4099         AC_MSG_RESULT([$regvalue])
4100     else
4101         AC_MSG_ERROR([MSBuild.exe location not found])
4102     fi
4104     # Find the version of devenv.exe
4105     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4106     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4107     DEVENV_unix=$(cygpath -u "$DEVENV")
4108     if test ! -e "$DEVENV_unix"; then
4109         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4110     fi
4112     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4113     dnl needed when building CLR code:
4114     if test -z "$MSVC_CXX"; then
4115         # This gives us a posix path with 8.3 filename restrictions
4116         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4117     fi
4119     if test -z "$CC"; then
4120         CC=$MSVC_CXX
4121         CC_BASE=`first_arg_basename "$CC"`
4122     fi
4123     if test -z "$CXX"; then
4124         CXX=$MSVC_CXX
4125         CXX_BASE=`first_arg_basename "$CXX"`
4126     fi
4128     if test -n "$CC"; then
4129         # Remove /cl.exe from CC case insensitive
4130         AC_MSG_NOTICE([found Visual C++ $vcyear])
4132         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4133         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4135         PathFormat "$COMPATH"
4136         COMPATH=`win_short_path_for_make "$formatted_path"`
4138         VCVER=$vcnumwithdot
4139         VCTOOLSET=$vctoolset
4141         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4142         # are always "better", we list them in reverse chronological order.
4144         case "$vcnumwithdot" in
4145         16.0 | 17.0)
4146             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4147             ;;
4148         esac
4150         # The expectation is that --with-windows-sdk should not need to be used
4151         if test -n "$with_windows_sdk"; then
4152             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4153             *" "$with_windows_sdk" "*)
4154                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4155                 ;;
4156             *)
4157                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4158                 ;;
4159             esac
4160         fi
4162         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4163         ac_objext=obj
4164         ac_exeext=exe
4166     else
4167         AC_MSG_ERROR([Visual C++ not found after all, huh])
4168     fi
4170     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4171     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4172         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4173         // between Visual Studio versions and _MSC_VER:
4174         #if _MSC_VER < 1925
4175         #error
4176         #endif
4177     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4179     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4180     # version of the Explorer extension (and maybe other small
4181     # bits, too) needed when installing a 32-bit LibreOffice on a
4182     # 64-bit OS. The 64-bit Explorer extension is a feature that
4183     # has been present since long in OOo. Don't confuse it with
4184     # building LibreOffice itself as 64-bit code.
4186     BUILD_X64=
4187     CXX_X64_BINARY=
4189     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4190         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4191         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4192              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4193         then
4194             BUILD_X64=TRUE
4195             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4196             AC_MSG_RESULT([found])
4197         else
4198             AC_MSG_RESULT([not found])
4199             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4200         fi
4201     elif test "$WIN_HOST_ARCH" = "x64"; then
4202         CXX_X64_BINARY=$CXX
4203     fi
4204     AC_SUBST(BUILD_X64)
4206     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4207     AC_SUBST(CXX_X64_BINARY)
4209     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4210     # needed to support TWAIN scan on both 32- and 64-bit systems
4212     case "$WIN_HOST_ARCH" in
4213     x64)
4214         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4215         if test -n "$CXX_X86_BINARY"; then
4216             BUILD_X86=TRUE
4217             AC_MSG_RESULT([preset])
4218         elif test -n "$WIN_MULTI_ARCH"; then
4219             BUILD_X86=TRUE
4220             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4221             CXX_X86_BINARY+=" /arch:SSE"
4222             AC_MSG_RESULT([found])
4223         else
4224             AC_MSG_RESULT([not found])
4225             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4226         fi
4227         ;;
4228     x86)
4229         BUILD_X86=TRUE
4230         CXX_X86_BINARY=$MSVC_CXX
4231         ;;
4232     esac
4233     AC_SUBST(BUILD_X86)
4234     AC_SUBST(CXX_X86_BINARY)
4236 AC_SUBST(VCVER)
4237 AC_SUBST(VCTOOLSET)
4238 AC_SUBST(DEVENV)
4239 AC_SUBST(MSVC_CXX)
4241 COM_IS_CLANG=
4242 AC_MSG_CHECKING([whether the compiler is actually Clang])
4243 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4244     #ifndef __clang__
4245     you lose
4246     #endif
4247     int foo=42;
4248     ]])],
4249     [AC_MSG_RESULT([yes])
4250      COM_IS_CLANG=TRUE],
4251     [AC_MSG_RESULT([no])])
4252 AC_SUBST(COM_IS_CLANG)
4254 CC_PLAIN=$CC
4255 CLANGVER=
4256 if test "$COM_IS_CLANG" = TRUE; then
4257     AC_MSG_CHECKING([whether Clang is new enough])
4258     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4259         #if !defined __apple_build_version__
4260         #error
4261         #endif
4262         ]])],
4263         [my_apple_clang=yes],[my_apple_clang=])
4264     if test "$my_apple_clang" = yes; then
4265         AC_MSG_RESULT([assumed yes (Apple Clang)])
4266     elif test "$_os" = Emscripten; then
4267         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4268     else
4269         if test "$_os" = WINNT; then
4270             dnl In which case, assume clang-cl:
4271             my_args="/EP /TC"
4272             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4273             dnl clang-cl:
4274             CC_PLAIN=
4275             for i in $CC; do
4276                 case $i in
4277                 -FIIntrin.h)
4278                     ;;
4279                 *)
4280                     CC_PLAIN="$CC_PLAIN $i"
4281                     ;;
4282                 esac
4283             done
4284         else
4285             my_args="-E -P"
4286         fi
4287         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4288         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4289         CLANGVER=`echo $clang_version \
4290             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4291         if test "$CLANGVER" -ge 50002; then
4292             AC_MSG_RESULT([yes ($clang_version)])
4293         else
4294             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4295         fi
4296         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4297         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4298     fi
4301 SHOWINCLUDES_PREFIX=
4302 if test "$_os" = WINNT; then
4303     dnl We need to guess the prefix of the -showIncludes output, it can be
4304     dnl localized
4305     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4306     echo "#include <stdlib.h>" > conftest.c
4307     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4308         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4309     rm -f conftest.c conftest.obj
4310     if test -z "$SHOWINCLUDES_PREFIX"; then
4311         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4312     else
4313         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4314     fi
4316 AC_SUBST(SHOWINCLUDES_PREFIX)
4319 # prefix C with ccache if needed
4321 UNCACHED_CC="$CC"
4322 if test "$CCACHE" != ""; then
4323     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4325     AC_LANG_PUSH([C])
4326     save_CFLAGS=$CFLAGS
4327     CFLAGS="$CFLAGS --ccache-skip -O2"
4328     dnl an empty program will do, we're checking the compiler flags
4329     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4330                       [use_ccache=yes], [use_ccache=no])
4331     CFLAGS=$save_CFLAGS
4332     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4333         AC_MSG_RESULT([yes])
4334     else
4335         CC="$CCACHE $CC"
4336         CC_BASE="ccache $CC_BASE"
4337         AC_MSG_RESULT([no])
4338     fi
4339     AC_LANG_POP([C])
4342 # ===================================================================
4343 # check various GCC options that Clang does not support now but maybe
4344 # will somewhen in the future, check them even for GCC, so that the
4345 # flags are set
4346 # ===================================================================
4348 HAVE_GCC_GGDB2=
4349 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4350     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4351     save_CFLAGS=$CFLAGS
4352     CFLAGS="$CFLAGS -Werror -ggdb2"
4353     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4354     CFLAGS=$save_CFLAGS
4355     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4356         AC_MSG_RESULT([yes])
4357     else
4358         AC_MSG_RESULT([no])
4359     fi
4361     if test "$host_cpu" = "m68k"; then
4362         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4363         save_CFLAGS=$CFLAGS
4364         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4365         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4366         CFLAGS=$save_CFLAGS
4367         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4368             AC_MSG_RESULT([yes])
4369         else
4370             AC_MSG_ERROR([no])
4371         fi
4372     fi
4374 AC_SUBST(HAVE_GCC_GGDB2)
4376 dnl ===================================================================
4377 dnl  Test the gcc version
4378 dnl ===================================================================
4379 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4380     AC_MSG_CHECKING([the GCC version])
4381     _gcc_version=`$CC -dumpfullversion`
4382     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4383         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4384     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4386     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4388     if test "$gcc_full_version" -lt 70000; then
4389         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4390     fi
4391 else
4392     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4393     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4394     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4395     # (which reports itself as GCC 4.2.1).
4396     GCC_VERSION=
4398 AC_SUBST(GCC_VERSION)
4400 dnl Set the ENABLE_DBGUTIL variable
4401 dnl ===================================================================
4402 AC_MSG_CHECKING([whether to build with additional debug utilities])
4403 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4404     ENABLE_DBGUTIL="TRUE"
4405     # this is an extra var so it can have different default on different MSVC
4406     # versions (in case there are version specific problems with it)
4407     MSVC_USE_DEBUG_RUNTIME="TRUE"
4409     AC_MSG_RESULT([yes])
4410     # cppunit and graphite expose STL in public headers
4411     if test "$with_system_cppunit" = "yes"; then
4412         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4413     else
4414         with_system_cppunit=no
4415     fi
4416     if test "$with_system_graphite" = "yes"; then
4417         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4418     else
4419         with_system_graphite=no
4420     fi
4421     if test "$with_system_orcus" = "yes"; then
4422         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4423     else
4424         with_system_orcus=no
4425     fi
4426     if test "$with_system_libcmis" = "yes"; then
4427         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4428     else
4429         with_system_libcmis=no
4430     fi
4431     if test "$with_system_hunspell" = "yes"; then
4432         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4433     else
4434         with_system_hunspell=no
4435     fi
4436     if test "$with_system_gpgmepp" = "yes"; then
4437         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4438     else
4439         with_system_gpgmepp=no
4440     fi
4441     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4442     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4443     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4444     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4445     # of those two is using the system variant:
4446     if test "$with_system_libnumbertext" = "yes"; then
4447         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4448     else
4449         with_system_libnumbertext=no
4450     fi
4451     if test "$with_system_libwps" = "yes"; then
4452         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4453     else
4454         with_system_libwps=no
4455     fi
4456 else
4457     ENABLE_DBGUTIL=""
4458     MSVC_USE_DEBUG_RUNTIME=""
4459     AC_MSG_RESULT([no])
4461 AC_SUBST(ENABLE_DBGUTIL)
4462 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4464 dnl Set the ENABLE_DEBUG variable.
4465 dnl ===================================================================
4466 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4467     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4469 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4470     if test -z "$libo_fuzzed_enable_debug"; then
4471         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4472     else
4473         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4474         enable_debug=yes
4475     fi
4478 AC_MSG_CHECKING([whether to do a debug build])
4479 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4480     ENABLE_DEBUG="TRUE"
4481     if test -n "$ENABLE_DBGUTIL" ; then
4482         AC_MSG_RESULT([yes (dbgutil)])
4483     else
4484         AC_MSG_RESULT([yes])
4485     fi
4486 else
4487     ENABLE_DEBUG=""
4488     AC_MSG_RESULT([no])
4490 AC_SUBST(ENABLE_DEBUG)
4492 dnl ===================================================================
4493 dnl Select the linker to use (gold/lld/ld.bfd).
4494 dnl This is done only after compiler checks (need to know if Clang is
4495 dnl used, for different defaults) and after checking if a debug build
4496 dnl is wanted (non-debug builds get the default linker if not explicitly
4497 dnl specified otherwise).
4498 dnl All checks for linker features/options should come after this.
4499 dnl ===================================================================
4500 check_use_ld()
4502     use_ld=-fuse-ld=${1%%:*}
4503     use_ld_path=${1#*:}
4504     if test "$use_ld_path" != "$1"; then
4505         use_ld="$use_ld --ld-path=$use_ld_path"
4506     fi
4507     use_ld_fail_if_error=$2
4508     use_ld_ok=
4509     AC_MSG_CHECKING([for $use_ld linker support])
4510     use_ld_ldflags_save="$LDFLAGS"
4511     LDFLAGS="$LDFLAGS $use_ld"
4512     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4513 #include <stdio.h>
4514         ],[
4515 printf ("hello world\n");
4516         ])], USE_LD=$use_ld, [])
4517     if test -n "$USE_LD"; then
4518         AC_MSG_RESULT( yes )
4519         use_ld_ok=yes
4520     else
4521         if test -n "$use_ld_fail_if_error"; then
4522             AC_MSG_ERROR( no )
4523         else
4524             AC_MSG_RESULT( no )
4525         fi
4526     fi
4527     if test -n "$use_ld_ok"; then
4528         dnl keep the value of LDFLAGS
4529         return 0
4530     fi
4531     LDFLAGS="$use_ld_ldflags_save"
4532     return 1
4534 USE_LD=
4535 if test "$enable_ld" != "no"; then
4536     if test "$GCC" = "yes"; then
4537         if test -n "$enable_ld"; then
4538             check_use_ld "$enable_ld" fail_if_error
4539         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4540             dnl non-debug builds default to the default linker
4541             true
4542         elif test -n "$COM_IS_CLANG"; then
4543             check_use_ld lld
4544             if test $? -ne 0; then
4545                 check_use_ld gold
4546             fi
4547         else
4548             # For gcc first try gold, new versions also support lld.
4549             check_use_ld gold
4550             if test $? -ne 0; then
4551                 check_use_ld lld
4552             fi
4553         fi
4554         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4555         rm conftest.out
4556         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4557         if test -z "$ld_used"; then
4558             ld_used="unknown"
4559         fi
4560         AC_MSG_CHECKING([for linker that is used])
4561         AC_MSG_RESULT([$ld_used])
4562         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4563             if echo "$ld_used" | grep -q "^GNU ld"; then
4564                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4565                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4566             fi
4567         fi
4568     else
4569         if test "$enable_ld" = "yes"; then
4570             AC_MSG_ERROR([--enable-ld not supported])
4571         fi
4572     fi
4574 AC_SUBST(USE_LD)
4576 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4577 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4578     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4579     bsymbolic_functions_ldflags_save=$LDFLAGS
4580     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4581     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4582 #include <stdio.h>
4583         ],[
4584 printf ("hello world\n");
4585         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4586     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4587         AC_MSG_RESULT( found )
4588     else
4589         AC_MSG_RESULT( not found )
4590     fi
4591     LDFLAGS=$bsymbolic_functions_ldflags_save
4593 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4595 LD_GC_SECTIONS=
4596 if test "$GCC" = "yes"; then
4597     for flag in "--gc-sections" "-dead_strip"; do
4598         AC_MSG_CHECKING([for $flag linker support])
4599         ldflags_save=$LDFLAGS
4600         LDFLAGS="$LDFLAGS -Wl,$flag"
4601         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4602 #include <stdio.h>
4603             ],[
4604 printf ("hello world\n");
4605             ])],[
4606             LD_GC_SECTIONS="-Wl,$flag"
4607             AC_MSG_RESULT( found )
4608             ], [
4609             AC_MSG_RESULT( not found )
4610             ])
4611         LDFLAGS=$ldflags_save
4612         if test -n "$LD_GC_SECTIONS"; then
4613             break
4614         fi
4615     done
4617 AC_SUBST(LD_GC_SECTIONS)
4619 HAVE_GSPLIT_DWARF=
4620 if test "$enable_split_debug" != no; then
4621     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4622     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4623         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4624         save_CFLAGS=$CFLAGS
4625         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4626         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4627         CFLAGS=$save_CFLAGS
4628         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4629             AC_MSG_RESULT([yes])
4630         else
4631             if test "$enable_split_debug" = yes; then
4632                 AC_MSG_ERROR([no])
4633             else
4634                 AC_MSG_RESULT([no])
4635             fi
4636         fi
4637     fi
4638     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4639         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4640         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4641     fi
4643 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4645 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4646 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4647 save_CFLAGS=$CFLAGS
4648 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4649 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4650 CFLAGS=$save_CFLAGS
4651 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4652     AC_MSG_RESULT([yes])
4653 else
4654     AC_MSG_RESULT([no])
4656 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4658 ENABLE_GDB_INDEX=
4659 if test "$enable_gdb_index" != "no"; then
4660     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4661     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4662         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4663         save_CFLAGS=$CFLAGS
4664         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4665         have_ggnu_pubnames=
4666         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4667         if test "$have_ggnu_pubnames" != "TRUE"; then
4668             if test "$enable_gdb_index" = "yes"; then
4669                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4670             else
4671                 AC_MSG_RESULT( no )
4672             fi
4673         else
4674             AC_MSG_RESULT( yes )
4675             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4676             ldflags_save=$LDFLAGS
4677             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4678             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4679 #include <stdio.h>
4680                 ],[
4681 printf ("hello world\n");
4682                 ])], ENABLE_GDB_INDEX=TRUE, [])
4683             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4684                 AC_MSG_RESULT( yes )
4685             else
4686                 if test "$enable_gdb_index" = "yes"; then
4687                     AC_MSG_ERROR( no )
4688                 else
4689                     AC_MSG_RESULT( no )
4690                 fi
4691             fi
4692             LDFLAGS=$ldflags_save
4693         fi
4694         CFLAGS=$save_CFLAGS
4695         fi
4696     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4697         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4698         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4699     fi
4701 AC_SUBST(ENABLE_GDB_INDEX)
4703 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4704     enable_sal_log=yes
4706 if test "$enable_sal_log" = yes; then
4707     ENABLE_SAL_LOG=TRUE
4709 AC_SUBST(ENABLE_SAL_LOG)
4711 dnl Check for enable symbols option
4712 dnl ===================================================================
4713 AC_MSG_CHECKING([whether to generate debug information])
4714 if test -z "$enable_symbols"; then
4715     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4716         enable_symbols=yes
4717     else
4718         enable_symbols=no
4719     fi
4721 if test "$enable_symbols" = yes; then
4722     ENABLE_SYMBOLS_FOR=all
4723     AC_MSG_RESULT([yes])
4724 elif test "$enable_symbols" = no; then
4725     ENABLE_SYMBOLS_FOR=
4726     AC_MSG_RESULT([no])
4727 else
4728     # Selective debuginfo.
4729     ENABLE_SYMBOLS_FOR="$enable_symbols"
4730     AC_MSG_RESULT([for "$enable_symbols"])
4732 AC_SUBST(ENABLE_SYMBOLS_FOR)
4734 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4735     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4736     AC_MSG_CHECKING([whether enough memory is available for linking])
4737     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4738     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4739     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4740         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4741     else
4742         AC_MSG_RESULT([yes])
4743     fi
4746 ENABLE_OPTIMIZED=
4747 ENABLE_OPTIMIZED_DEBUG=
4748 AC_MSG_CHECKING([whether to compile with optimization flags])
4749 if test -z "$enable_optimized"; then
4750     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4751         enable_optimized=no
4752     else
4753         enable_optimized=yes
4754     fi
4756 if test "$enable_optimized" = yes; then
4757     ENABLE_OPTIMIZED=TRUE
4758     AC_MSG_RESULT([yes])
4759 elif test "$enable_optimized" = debug; then
4760     ENABLE_OPTIMIZED_DEBUG=TRUE
4761     AC_MSG_RESULT([yes (debug)])
4762     HAVE_GCC_OG=
4763     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4764         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4765         save_CFLAGS=$CFLAGS
4766         CFLAGS="$CFLAGS -Werror -Og"
4767         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4768         CFLAGS=$save_CFLAGS
4769         if test "$HAVE_GCC_OG" = "TRUE"; then
4770             AC_MSG_RESULT([yes])
4771         else
4772             AC_MSG_RESULT([no])
4773         fi
4774     fi
4775     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4776         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4777     fi
4778 else
4779     AC_MSG_RESULT([no])
4781 AC_SUBST(ENABLE_OPTIMIZED)
4782 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4785 # determine CPUNAME, OS, ...
4787 case "$host_os" in
4789 aix*)
4790     COM=GCC
4791     CPUNAME=POWERPC
4792     OS=AIX
4793     RTL_OS=AIX
4794     RTL_ARCH=PowerPC
4795     PLATFORMID=aix_powerpc
4796     P_SEP=:
4797     ;;
4799 cygwin*|wsl*)
4800     # Already handled
4801     ;;
4803 darwin*|macos*)
4804     COM=GCC
4805     OS=MACOSX
4806     RTL_OS=MacOSX
4807     P_SEP=:
4809     case "$host_cpu" in
4810     aarch64|arm64)
4811         if test "$enable_ios_simulator" = "yes"; then
4812             OS=iOS
4813         else
4814             CPUNAME=AARCH64
4815             RTL_ARCH=AARCH64
4816             PLATFORMID=macosx_aarch64
4817         fi
4818         ;;
4819     x86_64)
4820         if test "$enable_ios_simulator" = "yes"; then
4821             OS=iOS
4822         fi
4823         CPUNAME=X86_64
4824         RTL_ARCH=X86_64
4825         PLATFORMID=macosx_x86_64
4826         ;;
4827     *)
4828         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4829         ;;
4830     esac
4831     ;;
4833 ios*)
4834     COM=GCC
4835     OS=iOS
4836     RTL_OS=iOS
4837     P_SEP=:
4839     case "$host_cpu" in
4840     aarch64|arm64)
4841         if test "$enable_ios_simulator" = "yes"; then
4842             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4843         fi
4844         ;;
4845     *)
4846         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4847         ;;
4848     esac
4849     CPUNAME=AARCH64
4850     RTL_ARCH=AARCH64
4851     PLATFORMID=ios_arm64
4852     ;;
4854 dragonfly*)
4855     COM=GCC
4856     OS=DRAGONFLY
4857     RTL_OS=DragonFly
4858     P_SEP=:
4860     case "$host_cpu" in
4861     i*86)
4862         CPUNAME=INTEL
4863         RTL_ARCH=x86
4864         PLATFORMID=dragonfly_x86
4865         ;;
4866     x86_64)
4867         CPUNAME=X86_64
4868         RTL_ARCH=X86_64
4869         PLATFORMID=dragonfly_x86_64
4870         ;;
4871     *)
4872         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4873         ;;
4874     esac
4875     ;;
4877 freebsd*)
4878     COM=GCC
4879     RTL_OS=FreeBSD
4880     OS=FREEBSD
4881     P_SEP=:
4883     case "$host_cpu" in
4884     aarch64)
4885         CPUNAME=AARCH64
4886         PLATFORMID=freebsd_aarch64
4887         RTL_ARCH=AARCH64
4888         ;;
4889     i*86)
4890         CPUNAME=INTEL
4891         RTL_ARCH=x86
4892         PLATFORMID=freebsd_x86
4893         ;;
4894     x86_64|amd64)
4895         CPUNAME=X86_64
4896         RTL_ARCH=X86_64
4897         PLATFORMID=freebsd_x86_64
4898         ;;
4899     powerpc64)
4900         CPUNAME=POWERPC64
4901         RTL_ARCH=PowerPC_64
4902         PLATFORMID=freebsd_powerpc64
4903         ;;
4904     powerpc|powerpcspe)
4905         CPUNAME=POWERPC
4906         RTL_ARCH=PowerPC
4907         PLATFORMID=freebsd_powerpc
4908         ;;
4909     *)
4910         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4911         ;;
4912     esac
4913     ;;
4915 haiku*)
4916     COM=GCC
4917     GUIBASE=haiku
4918     RTL_OS=Haiku
4919     OS=HAIKU
4920     P_SEP=:
4922     case "$host_cpu" in
4923     i*86)
4924         CPUNAME=INTEL
4925         RTL_ARCH=x86
4926         PLATFORMID=haiku_x86
4927         ;;
4928     x86_64|amd64)
4929         CPUNAME=X86_64
4930         RTL_ARCH=X86_64
4931         PLATFORMID=haiku_x86_64
4932         ;;
4933     *)
4934         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4935         ;;
4936     esac
4937     ;;
4939 kfreebsd*)
4940     COM=GCC
4941     OS=LINUX
4942     RTL_OS=kFreeBSD
4943     P_SEP=:
4945     case "$host_cpu" in
4947     i*86)
4948         CPUNAME=INTEL
4949         RTL_ARCH=x86
4950         PLATFORMID=kfreebsd_x86
4951         ;;
4952     x86_64)
4953         CPUNAME=X86_64
4954         RTL_ARCH=X86_64
4955         PLATFORMID=kfreebsd_x86_64
4956         ;;
4957     *)
4958         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4959         ;;
4960     esac
4961     ;;
4963 linux-gnu*|linux-musl*)
4964     COM=GCC
4965     OS=LINUX
4966     RTL_OS=Linux
4967     P_SEP=:
4969     case "$host_cpu" in
4971     aarch64)
4972         CPUNAME=AARCH64
4973         PLATFORMID=linux_aarch64
4974         RTL_ARCH=AARCH64
4975         EPM_FLAGS="-a arm64"
4976         ;;
4977     alpha)
4978         CPUNAME=AXP
4979         RTL_ARCH=ALPHA
4980         PLATFORMID=linux_alpha
4981         ;;
4982     arm*)
4983         CPUNAME=ARM
4984         EPM_FLAGS="-a arm"
4985         RTL_ARCH=ARM_EABI
4986         PLATFORMID=linux_arm_eabi
4987         case "$host_cpu" in
4988         arm*-linux)
4989             RTL_ARCH=ARM_OABI
4990             PLATFORMID=linux_arm_oabi
4991             ;;
4992         esac
4993         ;;
4994     hppa)
4995         CPUNAME=HPPA
4996         RTL_ARCH=HPPA
4997         EPM_FLAGS="-a hppa"
4998         PLATFORMID=linux_hppa
4999         ;;
5000     i*86)
5001         CPUNAME=INTEL
5002         RTL_ARCH=x86
5003         PLATFORMID=linux_x86
5004         ;;
5005     ia64)
5006         CPUNAME=IA64
5007         RTL_ARCH=IA64
5008         PLATFORMID=linux_ia64
5009         ;;
5010     mips)
5011         CPUNAME=GODSON
5012         RTL_ARCH=MIPS_EB
5013         EPM_FLAGS="-a mips"
5014         PLATFORMID=linux_mips_eb
5015         ;;
5016     mips64)
5017         CPUNAME=GODSON64
5018         RTL_ARCH=MIPS64_EB
5019         EPM_FLAGS="-a mips64"
5020         PLATFORMID=linux_mips64_eb
5021         ;;
5022     mips64el)
5023         CPUNAME=GODSON64
5024         RTL_ARCH=MIPS64_EL
5025         EPM_FLAGS="-a mips64el"
5026         PLATFORMID=linux_mips64_el
5027         ;;
5028     mipsel)
5029         CPUNAME=GODSON
5030         RTL_ARCH=MIPS_EL
5031         EPM_FLAGS="-a mipsel"
5032         PLATFORMID=linux_mips_el
5033         ;;
5034     m68k)
5035         CPUNAME=M68K
5036         RTL_ARCH=M68K
5037         PLATFORMID=linux_m68k
5038         ;;
5039     powerpc)
5040         CPUNAME=POWERPC
5041         RTL_ARCH=PowerPC
5042         PLATFORMID=linux_powerpc
5043         ;;
5044     powerpc64)
5045         CPUNAME=POWERPC64
5046         RTL_ARCH=PowerPC_64
5047         PLATFORMID=linux_powerpc64
5048         ;;
5049     powerpc64le)
5050         CPUNAME=POWERPC64
5051         RTL_ARCH=PowerPC_64_LE
5052         PLATFORMID=linux_powerpc64_le
5053         ;;
5054     sparc)
5055         CPUNAME=SPARC
5056         RTL_ARCH=SPARC
5057         PLATFORMID=linux_sparc
5058         ;;
5059     sparc64)
5060         CPUNAME=SPARC64
5061         RTL_ARCH=SPARC64
5062         PLATFORMID=linux_sparc64
5063         ;;
5064     s390)
5065         CPUNAME=S390
5066         RTL_ARCH=S390
5067         PLATFORMID=linux_s390
5068         ;;
5069     s390x)
5070         CPUNAME=S390X
5071         RTL_ARCH=S390x
5072         PLATFORMID=linux_s390x
5073         ;;
5074     x86_64)
5075         CPUNAME=X86_64
5076         RTL_ARCH=X86_64
5077         PLATFORMID=linux_x86_64
5078         ;;
5079     *)
5080         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5081         ;;
5082     esac
5083     ;;
5085 linux-android*)
5086     COM=GCC
5087     OS=ANDROID
5088     RTL_OS=Android
5089     P_SEP=:
5091     case "$host_cpu" in
5093     arm|armel)
5094         CPUNAME=ARM
5095         RTL_ARCH=ARM_EABI
5096         PLATFORMID=android_arm_eabi
5097         ;;
5098     aarch64)
5099         CPUNAME=AARCH64
5100         RTL_ARCH=AARCH64
5101         PLATFORMID=android_aarch64
5102         ;;
5103     i*86)
5104         CPUNAME=INTEL
5105         RTL_ARCH=x86
5106         PLATFORMID=android_x86
5107         ;;
5108     x86_64)
5109         CPUNAME=X86_64
5110         RTL_ARCH=X86_64
5111         PLATFORMID=android_x86_64
5112         ;;
5113     *)
5114         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5115         ;;
5116     esac
5117     ;;
5119 *netbsd*)
5120     COM=GCC
5121     OS=NETBSD
5122     RTL_OS=NetBSD
5123     P_SEP=:
5125     case "$host_cpu" in
5126     i*86)
5127         CPUNAME=INTEL
5128         RTL_ARCH=x86
5129         PLATFORMID=netbsd_x86
5130         ;;
5131     powerpc)
5132         CPUNAME=POWERPC
5133         RTL_ARCH=PowerPC
5134         PLATFORMID=netbsd_powerpc
5135         ;;
5136     sparc)
5137         CPUNAME=SPARC
5138         RTL_ARCH=SPARC
5139         PLATFORMID=netbsd_sparc
5140         ;;
5141     x86_64)
5142         CPUNAME=X86_64
5143         RTL_ARCH=X86_64
5144         PLATFORMID=netbsd_x86_64
5145         ;;
5146     *)
5147         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5148         ;;
5149     esac
5150     ;;
5152 openbsd*)
5153     COM=GCC
5154     OS=OPENBSD
5155     RTL_OS=OpenBSD
5156     P_SEP=:
5158     case "$host_cpu" in
5159     i*86)
5160         CPUNAME=INTEL
5161         RTL_ARCH=x86
5162         PLATFORMID=openbsd_x86
5163         ;;
5164     x86_64)
5165         CPUNAME=X86_64
5166         RTL_ARCH=X86_64
5167         PLATFORMID=openbsd_x86_64
5168         ;;
5169     *)
5170         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5171         ;;
5172     esac
5173     SOLARINC="$SOLARINC -I/usr/local/include"
5174     ;;
5176 solaris*)
5177     COM=GCC
5178     OS=SOLARIS
5179     RTL_OS=Solaris
5180     P_SEP=:
5182     case "$host_cpu" in
5183     i*86)
5184         CPUNAME=INTEL
5185         RTL_ARCH=x86
5186         PLATFORMID=solaris_x86
5187         ;;
5188     sparc)
5189         CPUNAME=SPARC
5190         RTL_ARCH=SPARC
5191         PLATFORMID=solaris_sparc
5192         ;;
5193     sparc64)
5194         CPUNAME=SPARC64
5195         RTL_ARCH=SPARC64
5196         PLATFORMID=solaris_sparc64
5197         ;;
5198     *)
5199         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5200         ;;
5201     esac
5202     SOLARINC="$SOLARINC -I/usr/local/include"
5203     ;;
5205 emscripten*)
5206     COM=GCC
5207     OS=EMSCRIPTEN
5208     RTL_OS=Emscripten
5209     P_SEP=:
5211     case "$host_cpu" in
5212     wasm32|wasm64)
5213         ;;
5214     *)
5215         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5216         ;;
5217     esac
5218     CPUNAME=INTEL
5219     RTL_ARCH=x86
5220     PLATFORMID=linux_x86
5221     ;;
5224     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5225     ;;
5226 esac
5228 if test "$with_x" = "no"; then
5229     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5232 DISABLE_GUI=""
5233 if test "$enable_gui" = "no"; then
5234     if test "$using_x11" != yes; then
5235         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5236     fi
5237     USING_X11=
5238     DISABLE_GUI=TRUE
5239 else
5240     AC_DEFINE(HAVE_FEATURE_UI)
5242 AC_SUBST(DISABLE_GUI)
5244 if test "$using_x11" = yes; then
5245     if test "$USING_X11" = TRUE; then
5246         AC_DEFINE(USING_X11)
5247     else
5248         disable_x11_tests
5249     fi
5250 else
5251     if test "$USING_X11" = TRUE; then
5252         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5253     fi
5256 WORKDIR="${BUILDDIR}/workdir"
5257 INSTDIR="${BUILDDIR}/instdir"
5258 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5259 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5260 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5261 AC_SUBST(COM)
5262 AC_SUBST(CPUNAME)
5263 AC_SUBST(RTL_OS)
5264 AC_SUBST(RTL_ARCH)
5265 AC_SUBST(EPM_FLAGS)
5266 AC_SUBST(USING_X11)
5267 AC_SUBST([INSTDIR])
5268 AC_SUBST([INSTROOT])
5269 AC_SUBST([INSTROOTBASE])
5270 AC_SUBST(OS)
5271 AC_SUBST(P_SEP)
5272 AC_SUBST(WORKDIR)
5273 AC_SUBST(PLATFORMID)
5274 AC_SUBST(WINDOWS_X64)
5275 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5277 if test "$OS" = WNT -a "$COM" = MSC; then
5278     case "$CPUNAME" in
5279     INTEL) CPPU_ENV=msci ;;
5280     X86_64) CPPU_ENV=mscx ;;
5281     AARCH64) CPPU_ENV=msca ;;
5282     *)
5283         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5284         ;;
5285     esac
5286 else
5287     CPPU_ENV=gcc3
5289 AC_SUBST(CPPU_ENV)
5291 dnl ===================================================================
5292 dnl Test which package format to use
5293 dnl ===================================================================
5294 AC_MSG_CHECKING([which package format to use])
5295 if test -n "$with_package_format" -a "$with_package_format" != no; then
5296     for i in $with_package_format; do
5297         case "$i" in
5298         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5299             ;;
5300         *)
5301             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5302 aix - AIX software distribution
5303 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5304 deb - Debian software distribution
5305 pkg - Solaris software distribution
5306 rpm - RedHat software distribution
5308 LibreOffice additionally supports:
5309 archive - .tar.gz or .zip
5310 dmg - macOS .dmg
5311 installed - installation tree
5312 msi - Windows .msi
5313         ])
5314             ;;
5315         esac
5316     done
5317     # fakeroot is needed to ensure correct file ownerships/permissions
5318     # inside deb packages and tar archives created on Linux and Solaris.
5319     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5320         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5321         if test "$FAKEROOT" = "no"; then
5322             AC_MSG_ERROR(
5323                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5324         fi
5325     fi
5326     PKGFORMAT="$with_package_format"
5327     AC_MSG_RESULT([$PKGFORMAT])
5328 else
5329     PKGFORMAT=
5330     AC_MSG_RESULT([none])
5332 AC_SUBST(PKGFORMAT)
5334 dnl ===================================================================
5335 dnl handle help related options
5337 dnl If you change help related options, please update README.help
5338 dnl ===================================================================
5340 ENABLE_HTMLHELP=
5341 HELP_OMINDEX_PAGE=
5342 HELP_ONLINE=
5343 WITH_HELPPACKS=
5345 AC_MSG_CHECKING([which help to build])
5346 if test -n "$with_help" -a "$with_help" != "no"; then
5347     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5348     BUILD_TYPE="$BUILD_TYPE HELP"
5349     case "$with_help" in
5350     "html")
5351         ENABLE_HTMLHELP=TRUE
5352         WITH_HELPPACKS=TRUE
5353         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5354         AC_MSG_RESULT([HTML (local)])
5355         ;;
5356     "online")
5357         ENABLE_HTMLHELP=TRUE
5358         HELP_ONLINE=TRUE
5359         AC_MSG_RESULT([HTML (online)])
5360         ;;
5361     yes)
5362         WITH_HELPPACKS=TRUE
5363         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5364         AC_MSG_RESULT([XML (local)])
5365         ;;
5366     *)
5367         AC_MSG_ERROR([Unknown --with-help=$with_help])
5368         ;;
5369     esac
5370 else
5371     AC_MSG_RESULT([no])
5374 AC_MSG_CHECKING([if we need to build the help index tooling])
5375 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5376     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5377     AC_MSG_RESULT([yes])
5378 else
5379     AC_MSG_RESULT([no])
5382 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5383 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5384     if test "$HELP_ONLINE" != TRUE; then
5385         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5386     fi
5387     case "$with_omindex" in
5388     "server")
5389         HELP_OMINDEX_PAGE=TRUE
5390         AC_MSG_RESULT([SERVER])
5391         ;;
5392     "noxap")
5393         AC_MSG_RESULT([NOXAP])
5394         ;;
5395     *)
5396         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5397         ;;
5398     esac
5399 else
5400     AC_MSG_RESULT([no])
5403 AC_MSG_CHECKING([whether to include the XML-help support])
5404 if test "$enable_xmlhelp" = yes; then
5405     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5406     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5407     AC_MSG_RESULT([yes])
5408 else
5409     if test "$with_help" = yes; then
5410         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5411     fi
5412     AC_MSG_RESULT([no])
5415 dnl Test whether to integrate helppacks into the product's installer
5416 AC_MSG_CHECKING([for helppack integration])
5417 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5418     AC_MSG_RESULT([no integration])
5419 else
5420     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5421     AC_MSG_RESULT([integration])
5424 AC_SUBST([ENABLE_HTMLHELP])
5425 AC_SUBST([HELP_OMINDEX_PAGE])
5426 AC_SUBST([HELP_ONLINE])
5427 # WITH_HELPPACKS is used only in configure
5429 dnl ===================================================================
5430 dnl Set up a different compiler to produce tools to run on the build
5431 dnl machine when doing cross-compilation
5432 dnl ===================================================================
5434 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5435 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5436 if test "$cross_compiling" = "yes"; then
5437     AC_MSG_CHECKING([for BUILD platform configuration])
5438     echo
5439     rm -rf CONF-FOR-BUILD config_build.mk
5440     mkdir CONF-FOR-BUILD
5441     # Here must be listed all files needed when running the configure script. In particular, also
5442     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5443     # keep them in the same order as there.
5444     (cd $SRC_ROOT && tar cf - \
5445         config.guess \
5446         bin/get_config_variables \
5447         solenv/bin/getcompver.awk \
5448         solenv/inc/langlist.mk \
5449         download.lst \
5450         config_host.mk.in \
5451         config_host_lang.mk.in \
5452         Makefile.in \
5453         bin/bffvalidator.sh.in \
5454         bin/odfvalidator.sh.in \
5455         bin/officeotron.sh.in \
5456         hardened_runtime.xcent.in \
5457         instsetoo_native/util/openoffice.lst.in \
5458         config_host/*.in \
5459         sysui/desktop/macosx/Info.plist.in \
5460         .vscode/vs-code-template.code-workspace.in \
5461         ) \
5462     | (cd CONF-FOR-BUILD && tar xf -)
5463     cp configure CONF-FOR-BUILD
5464     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5465     (
5466     unset COM USING_X11 OS CPUNAME
5467     unset CC CXX SYSBASE CFLAGS
5468     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5469     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5470     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5471     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5472     if test -n "$CC_FOR_BUILD"; then
5473         export CC="$CC_FOR_BUILD"
5474         CC_BASE=`first_arg_basename "$CC"`
5475     fi
5476     if test -n "$CXX_FOR_BUILD"; then
5477         export CXX="$CXX_FOR_BUILD"
5478         CXX_BASE=`first_arg_basename "$CXX"`
5479     fi
5480     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5481     cd CONF-FOR-BUILD
5483     # Handle host configuration, which affects the cross-toolset too
5484     sub_conf_opts=""
5485     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5486     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5487     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5488     if test -n "$ENABLE_JAVA"; then
5489         case "$_os" in
5490         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5491         Android)
5492             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5493             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5494             ;;
5495         *)
5496             if test -z "$with_jdk_home"; then
5497                 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.])
5498             fi
5499             ;;
5500         esac
5501     else
5502         sub_conf_opts="$sub_conf_opts --without-java"
5503     fi
5504     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5505     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5506     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5507     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5508     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5509     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5510     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5512     # Don't bother having configure look for stuff not needed for the build platform anyway
5513     ./configure \
5514         --build="$build_alias" \
5515         --disable-cairo-canvas \
5516         --disable-cups \
5517         --disable-firebird-sdbc \
5518         --disable-gpgmepp \
5519         --disable-gstreamer-1-0 \
5520         --disable-gtk3 \
5521         --disable-gtk4 \
5522         --disable-mariadb-sdbc \
5523         --disable-nss \
5524         --disable-online-update \
5525         --disable-opencl \
5526         --disable-pdfimport \
5527         --disable-postgresql-sdbc \
5528         --disable-skia \
5529         --enable-icecream="$enable_icecream" \
5530         --without-doxygen \
5531         --without-webdav \
5532         --with-parallelism="$with_parallelism" \
5533         --with-theme="$with_theme" \
5534         --with-tls=openssl \
5535         $sub_conf_opts \
5536         --srcdir=$srcdir \
5537         2>&1 | sed -e 's/^/    /'
5538     if test [${PIPESTATUS[0]}] -ne 0; then
5539         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5540     fi
5542     # filter permitted build targets
5543     PERMITTED_BUILD_TARGETS="
5544         AVMEDIA
5545         BOOST
5546         CAIRO
5547         CLUCENE
5548         CUCKOO
5549         CURL
5550         DBCONNECTIVITY
5551         DESKTOP
5552         DYNLOADING
5553         EPOXY
5554         EXPAT
5555         GLM
5556         GRAPHITE
5557         HARFBUZZ
5558         HELPTOOLS
5559         ICU
5560         LCMS2
5561         LIBJPEG_TURBO
5562         LIBLANGTAG
5563         LibO
5564         LIBFFI
5565         LIBPN
5566         LIBXML2
5567         LIBXSLT
5568         MDDS
5569         NATIVE
5570         OPENSSL
5571         ORCUS
5572         PYTHON
5573         SCRIPTING
5574         ZLIB
5576     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5577     # newlined lists, to use grep as a filter
5578     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5579     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5580     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5581     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5583     cp config_host.mk ../config_build.mk
5584     cp config_host_lang.mk ../config_build_lang.mk
5585     mv config.log ../config.Build.log
5586     mkdir -p ../config_build
5587     mv config_host/*.h ../config_build
5588     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5590     # all these will get a _FOR_BUILD postfix
5591     DIRECT_FOR_BUILD_SETTINGS="
5592         CC
5593         CPPU_ENV
5594         CXX
5595         ILIB
5596         JAVA_HOME
5597         JAVAIFLAGS
5598         JDK
5599         LIBO_BIN_FOLDER
5600         LIBO_LIB_FOLDER
5601         LIBO_URE_LIB_FOLDER
5602         LIBO_URE_MISC_FOLDER
5603         OS
5604         SDKDIRNAME
5605         SYSTEM_LIBXML
5606         SYSTEM_LIBXSLT
5608     # these overwrite host config with build config
5609     OVERWRITING_SETTINGS="
5610         ANT
5611         ANT_HOME
5612         ANT_LIB
5613         HSQLDB_USE_JDBC_4_1
5614         JAVA_CLASSPATH_NOT_SET
5615         JAVA_SOURCE_VER
5616         JAVA_TARGET_VER
5617         JAVACFLAGS
5618         JAVACOMPILER
5619         JAVADOC
5620         JAVADOCISGJDOC
5622     # these need some special handling
5623     EXTRA_HANDLED_SETTINGS="
5624         INSTDIR
5625         INSTROOT
5626         PATH
5627         WORKDIR
5629     OLD_PATH=$PATH
5630     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5631     BUILD_PATH=$PATH
5632     PATH=$OLD_PATH
5634     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5635     echo "$line" >>build-config
5637     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5638         VV='$'$V
5639         VV=`eval "echo $VV"`
5640         if test -n "$VV"; then
5641             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5642             echo "$line" >>build-config
5643         fi
5644     done
5646     for V in $OVERWRITING_SETTINGS; do
5647         VV='$'$V
5648         VV=`eval "echo $VV"`
5649         if test -n "$VV"; then
5650             line=${V}='${'${V}:-$VV'}'
5651             echo "$line" >>build-config
5652         fi
5653     done
5655     for V in INSTDIR INSTROOT WORKDIR; do
5656         VV='$'$V
5657         VV=`eval "echo $VV"`
5658         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5659         if test -n "$VV"; then
5660             line="${V}_FOR_BUILD='$VV'"
5661             echo "$line" >>build-config
5662         fi
5663     done
5665     )
5666     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5667     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])
5668     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5669              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5671     eval `cat CONF-FOR-BUILD/build-config`
5673     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5675     rm -rf CONF-FOR-BUILD
5676 else
5677     OS_FOR_BUILD="$OS"
5678     CC_FOR_BUILD="$CC"
5679     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5680     CXX_FOR_BUILD="$CXX"
5681     INSTDIR_FOR_BUILD="$INSTDIR"
5682     INSTROOT_FOR_BUILD="$INSTROOT"
5683     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5684     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5685     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5686     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5687     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5688     WORKDIR_FOR_BUILD="$WORKDIR"
5690 AC_SUBST(OS_FOR_BUILD)
5691 AC_SUBST(INSTDIR_FOR_BUILD)
5692 AC_SUBST(INSTROOT_FOR_BUILD)
5693 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5694 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5695 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5696 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5697 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5698 AC_SUBST(WORKDIR_FOR_BUILD)
5699 AC_SUBST(CC_FOR_BUILD)
5700 AC_SUBST(CXX_FOR_BUILD)
5701 AC_SUBST(CPPU_ENV_FOR_BUILD)
5703 dnl ===================================================================
5704 dnl Check for syslog header
5705 dnl ===================================================================
5706 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5708 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5709 dnl ===================================================================
5710 AC_MSG_CHECKING([whether to turn warnings to errors])
5711 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5712     ENABLE_WERROR="TRUE"
5713     PYTHONWARNINGS="error"
5714     AC_MSG_RESULT([yes])
5715 else
5716     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5717         ENABLE_WERROR="TRUE"
5718         PYTHONWARNINGS="error"
5719         AC_MSG_RESULT([yes])
5720     else
5721         AC_MSG_RESULT([no])
5722     fi
5724 AC_SUBST(ENABLE_WERROR)
5725 AC_SUBST(PYTHONWARNINGS)
5727 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5728 dnl ===================================================================
5729 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5730 if test -z "$enable_assert_always_abort"; then
5731    if test "$ENABLE_DEBUG" = TRUE; then
5732        enable_assert_always_abort=yes
5733    else
5734        enable_assert_always_abort=no
5735    fi
5737 if test "$enable_assert_always_abort" = "yes"; then
5738     ASSERT_ALWAYS_ABORT="TRUE"
5739     AC_MSG_RESULT([yes])
5740 else
5741     ASSERT_ALWAYS_ABORT="FALSE"
5742     AC_MSG_RESULT([no])
5744 AC_SUBST(ASSERT_ALWAYS_ABORT)
5746 # Determine whether to use ooenv for the instdir installation
5747 # ===================================================================
5748 if test $_os != "WINNT" -a $_os != "Darwin"; then
5749     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5750     if test -z "$enable_ooenv"; then
5751         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5752             enable_ooenv=yes
5753         else
5754             enable_ooenv=no
5755         fi
5756     fi
5757     if test "$enable_ooenv" = "no"; then
5758         AC_MSG_RESULT([no])
5759     else
5760         ENABLE_OOENV="TRUE"
5761         AC_MSG_RESULT([yes])
5762     fi
5764 AC_SUBST(ENABLE_OOENV)
5766 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5767     if test "$enable_qt5" = "no"; then
5768         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5769     else
5770         enable_qt5=yes
5771     fi
5774 dnl ===================================================================
5775 dnl check for cups support
5776 dnl ===================================================================
5778 AC_MSG_CHECKING([whether to enable CUPS support])
5779 if test "$test_cups" = yes -a "$enable_cups" != no; then
5780     ENABLE_CUPS=TRUE
5781     AC_MSG_RESULT([yes])
5783     AC_MSG_CHECKING([whether cups support is present])
5784     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5785     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5786     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5787         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5788     fi
5789 else
5790     AC_MSG_RESULT([no])
5793 AC_SUBST(ENABLE_CUPS)
5795 # fontconfig checks
5796 if test "$using_freetype_fontconfig" = yes; then
5797     AC_MSG_CHECKING([which fontconfig to use])
5799 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5800     AC_MSG_RESULT([external])
5801     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5802     SYSTEM_FONTCONFIG=TRUE
5803     FilterLibs "${FONTCONFIG_LIBS}"
5804     FONTCONFIG_LIBS="${filteredlibs}"
5805 elif test "$using_freetype_fontconfig" = yes; then
5806     AC_MSG_RESULT([internal])
5807     BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5809 AC_SUBST(FONTCONFIG_CFLAGS)
5810 AC_SUBST(FONTCONFIG_LIBS)
5811 AC_SUBST([SYSTEM_FONTCONFIG])
5813 dnl whether to find & fetch external tarballs?
5814 dnl ===================================================================
5815 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5816    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5817        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5818    else
5819        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5820    fi
5822 if test -z "$TARFILE_LOCATION"; then
5823     if test -d "$SRC_ROOT/src" ; then
5824         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5825         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5826     fi
5827     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5828 else
5829     AbsolutePath "$TARFILE_LOCATION"
5830     PathFormat "${absolute_path}"
5831     TARFILE_LOCATION="${formatted_path}"
5833 AC_SUBST(TARFILE_LOCATION)
5835 AC_MSG_CHECKING([whether we want to fetch tarballs])
5836 if test "$enable_fetch_external" != "no"; then
5837     if test "$with_all_tarballs" = "yes"; then
5838         AC_MSG_RESULT([yes, all of them])
5839         DO_FETCH_TARBALLS="ALL"
5840     else
5841         AC_MSG_RESULT([yes, if we use them])
5842         DO_FETCH_TARBALLS="TRUE"
5843     fi
5844 else
5845     AC_MSG_RESULT([no])
5846     DO_FETCH_TARBALLS=
5848 AC_SUBST(DO_FETCH_TARBALLS)
5850 dnl Test whether to include MySpell dictionaries
5851 dnl ===================================================================
5852 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5853 if test "$with_myspell_dicts" = "yes"; then
5854     AC_MSG_RESULT([yes])
5855     WITH_MYSPELL_DICTS=TRUE
5856     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5857     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5858 else
5859     AC_MSG_RESULT([no])
5860     WITH_MYSPELL_DICTS=
5862 AC_SUBST(WITH_MYSPELL_DICTS)
5864 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5865 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5866     if test "$with_system_dicts" = yes; then
5867         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5868     fi
5869     with_system_dicts=no
5872 AC_MSG_CHECKING([whether to use dicts from external paths])
5873 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5874     AC_MSG_RESULT([yes])
5875     SYSTEM_DICTS=TRUE
5876     AC_MSG_CHECKING([for spelling dictionary directory])
5877     if test -n "$with_external_dict_dir"; then
5878         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5879     else
5880         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5881         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5882             DICT_SYSTEM_DIR=file:///usr/share/myspell
5883         fi
5884     fi
5885     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5886     AC_MSG_CHECKING([for hyphenation patterns directory])
5887     if test -n "$with_external_hyph_dir"; then
5888         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5889     else
5890         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5891     fi
5892     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5893     AC_MSG_CHECKING([for thesaurus directory])
5894     if test -n "$with_external_thes_dir"; then
5895         THES_SYSTEM_DIR=file://$with_external_thes_dir
5896     else
5897         THES_SYSTEM_DIR=file:///usr/share/mythes
5898     fi
5899     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5900 else
5901     AC_MSG_RESULT([no])
5902     SYSTEM_DICTS=
5904 AC_SUBST(SYSTEM_DICTS)
5905 AC_SUBST(DICT_SYSTEM_DIR)
5906 AC_SUBST(HYPH_SYSTEM_DIR)
5907 AC_SUBST(THES_SYSTEM_DIR)
5909 dnl ===================================================================
5910 dnl Precompiled headers.
5911 ENABLE_PCH=""
5912 AC_MSG_CHECKING([whether to enable pch feature])
5913 if test -z "$enable_pch"; then
5914     if test "$_os" = "WINNT"; then
5915         # Enabled by default on Windows.
5916         enable_pch=yes
5917     else
5918         enable_pch=no
5919     fi
5921 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5922     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5924 if test "$enable_pch" = "system"; then
5925     ENABLE_PCH="1"
5926     AC_MSG_RESULT([yes (system headers)])
5927 elif test "$enable_pch" = "base"; then
5928     ENABLE_PCH="2"
5929     AC_MSG_RESULT([yes (system and base headers)])
5930 elif test "$enable_pch" = "normal"; then
5931     ENABLE_PCH="3"
5932     AC_MSG_RESULT([yes (normal)])
5933 elif test "$enable_pch" = "full"; then
5934     ENABLE_PCH="4"
5935     AC_MSG_RESULT([yes (full)])
5936 elif test "$enable_pch" = "yes"; then
5937     # Pick a suitable default.
5938     if test "$GCC" = "yes"; then
5939         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5940         # while making the PCHs larger and rebuilds more likely.
5941         ENABLE_PCH="2"
5942         AC_MSG_RESULT([yes (system and base headers)])
5943     else
5944         # With MSVC the highest level makes a significant difference,
5945         # and it was the default when there used to be no PCH levels.
5946         ENABLE_PCH="4"
5947         AC_MSG_RESULT([yes (full)])
5948     fi
5949 elif test "$enable_pch" = "no"; then
5950     AC_MSG_RESULT([no])
5951 else
5952     AC_MSG_ERROR([Unknown value for --enable-pch])
5954 AC_SUBST(ENABLE_PCH)
5955 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5956 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5957     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5958     if test "$CCACHE_BIN" != "not found"; then
5959         AC_MSG_CHECKING([ccache version])
5960         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5961         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5962         AC_MSG_RESULT([$CCACHE_VERSION])
5963         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5964         if test "$CCACHE_NUMVER" -gt "030701"; then
5965             AC_MSG_RESULT([yes])
5966         else
5967             AC_MSG_RESULT([no (not newer than 3.7.1)])
5968             CCACHE_DEPEND_MODE=
5969         fi
5970     fi
5973 PCH_INSTANTIATE_TEMPLATES=
5974 if test -n "$ENABLE_PCH"; then
5975     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5976     save_CFLAGS=$CFLAGS
5977     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5978     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5979     CFLAGS=$save_CFLAGS
5980     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5981         AC_MSG_RESULT(yes)
5982     else
5983         AC_MSG_RESULT(no)
5984     fi
5986 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5988 BUILDING_PCH_WITH_OBJ=
5989 if test -n "$ENABLE_PCH"; then
5990     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5991     save_CFLAGS=$CFLAGS
5992     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5993     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5994     CFLAGS=$save_CFLAGS
5995     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5996         AC_MSG_RESULT(yes)
5997     else
5998         AC_MSG_RESULT(no)
5999     fi
6001 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6003 PCH_CODEGEN=
6004 PCH_NO_CODEGEN=
6005 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6006     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
6007     save_CFLAGS=$CFLAGS
6008     CFLAGS="$CFLAGS -Werror -fpch-codegen"
6009     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6010         [
6011         PCH_CODEGEN="-fpch-codegen"
6012         PCH_NO_CODEGEN="-fno-pch-codegen"
6013         ],[])
6014     CFLAGS=$save_CFLAGS
6015     if test -n "$PCH_CODEGEN"; then
6016         AC_MSG_RESULT(yes)
6017     else
6018         AC_MSG_RESULT(no)
6019     fi
6021 AC_SUBST(PCH_CODEGEN)
6022 AC_SUBST(PCH_NO_CODEGEN)
6023 PCH_DEBUGINFO=
6024 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6025     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
6026     save_CFLAGS=$CFLAGS
6027     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
6028     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
6029     CFLAGS=$save_CFLAGS
6030     if test -n "$PCH_DEBUGINFO"; then
6031         AC_MSG_RESULT(yes)
6032     else
6033         AC_MSG_RESULT(no)
6034     fi
6036 AC_SUBST(PCH_DEBUGINFO)
6038 TAB=`printf '\t'`
6040 AC_MSG_CHECKING([the GNU Make version])
6041 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6042 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6043 if test "$_make_longver" -ge "038200"; then
6044     AC_MSG_RESULT([$GNUMAKE $_make_version])
6046 elif test "$_make_longver" -ge "038100"; then
6047     if test "$build_os" = "cygwin"; then
6048         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6049     fi
6050     AC_MSG_RESULT([$GNUMAKE $_make_version])
6052     dnl ===================================================================
6053     dnl Search all the common names for sha1sum
6054     dnl ===================================================================
6055     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6056     if test -z "$SHA1SUM"; then
6057         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6058     elif test "$SHA1SUM" = "openssl"; then
6059         SHA1SUM="openssl sha1"
6060     fi
6061     AC_MSG_CHECKING([for GNU Make bug 20033])
6062     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6063     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6064 A := \$(wildcard *.a)
6066 .PHONY: all
6067 all: \$(A:.a=.b)
6068 <TAB>@echo survived bug20033.
6070 .PHONY: setup
6071 setup:
6072 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6074 define d1
6075 @echo lala \$(1)
6076 @sleep 1
6077 endef
6079 define d2
6080 @echo tyty \$(1)
6081 @sleep 1
6082 endef
6084 %.b : %.a
6085 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6086 <TAB>\$(call d1,\$(CHECKSUM)),\
6087 <TAB>\$(call d2,\$(CHECKSUM)))
6089     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6090         no_parallelism_make="YES"
6091         AC_MSG_RESULT([yes, disable parallelism])
6092     else
6093         AC_MSG_RESULT([no, keep parallelism enabled])
6094     fi
6095     rm -rf $TESTGMAKEBUG20033
6096 else
6097     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6100 # find if gnumake support file function
6101 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6102 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6103 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6104     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6106 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6107 \$(file >test.txt,Success )
6109 .PHONY: all
6110 all:
6111 <TAB>@cat test.txt
6114 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6115 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6116     HAVE_GNUMAKE_FILE_FUNC=TRUE
6117     AC_MSG_RESULT([yes])
6118 else
6119     AC_MSG_RESULT([no])
6121 rm -rf $TESTGMAKEFILEFUNC
6122 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6124 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6125 STALE_MAKE=
6126 if test "$_make_ver_check" = ""; then
6127    STALE_MAKE=TRUE
6130 HAVE_LD_HASH_STYLE=FALSE
6131 WITH_LINKER_HASH_STYLE=
6132 AC_MSG_CHECKING([for --hash-style gcc linker support])
6133 if test "$GCC" = "yes"; then
6134     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6135         hash_styles="gnu sysv"
6136     elif test "$with_linker_hash_style" = "no"; then
6137         hash_styles=
6138     else
6139         hash_styles="$with_linker_hash_style"
6140     fi
6142     for hash_style in $hash_styles; do
6143         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6144         hash_style_ldflags_save=$LDFLAGS
6145         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6147         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6148             [
6149 #include <stdio.h>
6150             ],[
6151 printf ("");
6152             ])],
6153             [
6154                   HAVE_LD_HASH_STYLE=TRUE
6155                   WITH_LINKER_HASH_STYLE=$hash_style
6156             ],
6157             [HAVE_LD_HASH_STYLE=FALSE],
6158             [HAVE_LD_HASH_STYLE=FALSE])
6159         LDFLAGS=$hash_style_ldflags_save
6160     done
6162     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6163         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6164     else
6165         AC_MSG_RESULT( no )
6166     fi
6167     LDFLAGS=$hash_style_ldflags_save
6168 else
6169     AC_MSG_RESULT( no )
6171 AC_SUBST(HAVE_LD_HASH_STYLE)
6172 AC_SUBST(WITH_LINKER_HASH_STYLE)
6174 dnl ===================================================================
6175 dnl Check whether there's a Perl version available.
6176 dnl ===================================================================
6177 if test -z "$with_perl_home"; then
6178     AC_PATH_PROG(PERL, perl)
6179 else
6180     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6181     _perl_path="$with_perl_home/bin/perl"
6182     if test -x "$_perl_path"; then
6183         PERL=$_perl_path
6184     else
6185         AC_MSG_ERROR([$_perl_path not found])
6186     fi
6189 dnl ===================================================================
6190 dnl Testing for Perl version 5 or greater.
6191 dnl $] is the Perl version variable, it is returned as an integer
6192 dnl ===================================================================
6193 if test "$PERL"; then
6194     AC_MSG_CHECKING([the Perl version])
6195     ${PERL} -e "exit($]);"
6196     _perl_version=$?
6197     if test "$_perl_version" -lt 5; then
6198         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6199     fi
6200     AC_MSG_RESULT([Perl $_perl_version])
6201 else
6202     AC_MSG_ERROR([Perl not found, install Perl 5])
6205 dnl ===================================================================
6206 dnl Testing for required Perl modules
6207 dnl ===================================================================
6209 AC_MSG_CHECKING([for required Perl modules])
6210 perl_use_string="use Cwd ; use Digest::MD5"
6211 if test "$_os" = "WINNT"; then
6212     if test -n "$PKGFORMAT"; then
6213         for i in $PKGFORMAT; do
6214             case "$i" in
6215             msi)
6216                 # for getting fonts versions to use in MSI
6217                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6218                 ;;
6219             esac
6220         done
6221     fi
6223 if test "$with_system_hsqldb" = "yes"; then
6224     perl_use_string="$perl_use_string ; use Archive::Zip"
6226 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6227     # OpenSSL needs that to build
6228     perl_use_string="$perl_use_string ; use FindBin"
6230 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6231     AC_MSG_RESULT([all modules found])
6232 else
6233     AC_MSG_RESULT([failed to find some modules])
6234     # Find out which modules are missing.
6235     for i in $perl_use_string; do
6236         if test "$i" != "use" -a "$i" != ";"; then
6237             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6238                 missing_perl_modules="$missing_perl_modules $i"
6239             fi
6240         fi
6241     done
6242     AC_MSG_ERROR([
6243     The missing Perl modules are: $missing_perl_modules
6244     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6247 dnl ===================================================================
6248 dnl Check for pkg-config
6249 dnl ===================================================================
6250 if test "$_os" != "WINNT"; then
6251     PKG_PROG_PKG_CONFIG
6254 if test "$_os" != "WINNT"; then
6256     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6257     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6258     # explicitly. Or put /path/to/compiler in PATH yourself.
6260     # Use wrappers for LTO
6261     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6262         AC_CHECK_TOOL(AR,gcc-ar)
6263         AC_CHECK_TOOL(NM,gcc-nm)
6264         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6265     else
6266         AC_CHECK_TOOL(AR,ar)
6267         AC_CHECK_TOOL(NM,nm)
6268         AC_CHECK_TOOL(RANLIB,ranlib)
6269     fi
6270     AC_CHECK_TOOL(OBJDUMP,objdump)
6271     AC_CHECK_TOOL(READELF,readelf)
6272     AC_CHECK_TOOL(STRIP,strip)
6274 AC_SUBST(AR)
6275 AC_SUBST(LD)
6276 AC_SUBST(NM)
6277 AC_SUBST(OBJDUMP)
6278 AC_SUBST(PKG_CONFIG)
6279 AC_SUBST(PKG_CONFIG_PATH)
6280 AC_SUBST(PKG_CONFIG_LIBDIR)
6281 AC_SUBST(RANLIB)
6282 AC_SUBST(READELF)
6283 AC_SUBST(STRIP)
6285 dnl ===================================================================
6286 dnl pkg-config checks on macOS
6287 dnl ===================================================================
6289 if test $_os = Darwin; then
6290     AC_MSG_CHECKING([for bogus pkg-config])
6291     if test -n "$PKG_CONFIG"; then
6292         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6293             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6294         else
6295             if test "$enable_bogus_pkg_config" = "yes"; then
6296                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6297             else
6298                 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.])
6299             fi
6300         fi
6301     else
6302         AC_MSG_RESULT([no, good])
6303     fi
6306 find_csc()
6308     # Return value: $csctest
6310     unset csctest
6312     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6313     if test -n "$regvalue"; then
6314         csctest=$regvalue
6315         return
6316     fi
6319 find_al()
6321     # Return value: $altest
6323     unset altest
6325     # We need this check to detect 4.6.1 or above.
6326     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6327         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6328         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6329             altest=$regvalue
6330             return
6331         fi
6332     done
6334     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6335         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6336         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6337             altest=$regvalue
6338             return
6339         fi
6340     done
6343 find_dotnetsdk46()
6345     unset frametest
6347     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6348         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6349         if test -n "$regvalue"; then
6350             frametest=$regvalue
6351             return
6352         fi
6353     done
6356 find_winsdk_version()
6358     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6359     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6361     unset winsdktest winsdkbinsubdir winsdklibsubdir
6363     case "$1" in
6364     8.0|8.0A)
6365         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6366         if test -n "$regvalue"; then
6367             winsdktest=$regvalue
6368             winsdklibsubdir=win8
6369             return
6370         fi
6371         ;;
6372     8.1|8.1A)
6373         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6374         if test -n "$regvalue"; then
6375             winsdktest=$regvalue
6376             winsdklibsubdir=winv6.3
6377             return
6378         fi
6379         ;;
6380     10.0)
6381         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6382         if test -n "$regvalue"; then
6383             winsdktest=$regvalue
6384             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6385             if test -n "$regvalue"; then
6386                 winsdkbinsubdir="$regvalue".0
6387                 winsdklibsubdir=$winsdkbinsubdir
6388                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6389                 local tmppath_unix=$(cygpath -u "$tmppath")
6390                 # test exist the SDK path
6391                 if test -d "$tmppath_unix"; then
6392                    # when path is convertible to a short path then path is okay
6393                    cygpath -d "$tmppath" >/dev/null 2>&1
6394                    if test $? -ne 0; then
6395                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6396                    fi
6397                 else
6398                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6399                 fi
6400             fi
6401             return
6402         fi
6403         ;;
6404     esac
6407 find_winsdk()
6409     # Return value: From find_winsdk_version
6411     unset winsdktest
6413     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6414         find_winsdk_version $ver
6415         if test -n "$winsdktest"; then
6416             return
6417         fi
6418     done
6421 find_msms()
6423     # Return value: $msmdir
6425     AC_MSG_CHECKING([for MSVC merge modules directory])
6426     local my_msm_files
6427     local my_msm_dir
6429     dnl Order my_msm_files in increasing order. Then check the directories returned
6430     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6431     dnl the result will be the highest MSM version found in the highest directory.
6433     case "$VCVER" in
6434         16.0 | 17.0)
6435         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6436         ;;
6437     esac
6438     for f in $my_msm_files; do
6439         echo "$as_me:$LINENO: searching for $f" >&5
6440     done
6442     msmdir=
6443     case "$VCVER" in
6444     16.0 | 17.0)
6445         for f in ${my_msm_files}; do
6446             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6447                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6448                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6449                 if test -e "$my_msm_dir${f}"; then
6450                     msmdir=$my_msm_dir
6451                 fi
6452             done
6453         done
6454         ;;
6455     esac
6457     if test -n "$msmdir"; then
6458         msmdir=`cygpath -m "$msmdir"`
6459         AC_MSG_RESULT([$msmdir])
6460     else
6461         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6462             AC_MSG_FAILURE([not found])
6463         else
6464             AC_MSG_WARN([not found (check config.log)])
6465             add_warning "MSM none of ${my_msm_files} found"
6466         fi
6467     fi
6470 find_msvc_x64_dlls()
6472     # Return value: $msvcdllpath, $msvcdlls
6474     AC_MSG_CHECKING([for MSVC x64 DLL path])
6476     dnl Order crtver in increasing order. Then check the directories returned by
6477     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6478     dnl the result will be the highest CRT version found in the highest directory.
6480     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6481     case "$VCVER" in
6482     16.0 | 17.0)
6483         for crtver in 141 142 143; do
6484             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6485                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6486                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6487                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6488                 fi
6489             done
6490         done
6491         ;;
6492     esac
6493     AC_MSG_RESULT([$msvcdllpath])
6494     AC_MSG_CHECKING([for MSVC x64 DLLs])
6495     msvcdlls="msvcp140.dll vcruntime140.dll"
6496     for dll in $msvcdlls; do
6497         if ! test -f "$msvcdllpath/$dll"; then
6498             AC_MSG_FAILURE([missing $dll])
6499         fi
6500     done
6501     AC_MSG_RESULT([found all ($msvcdlls)])
6504 dnl =========================================
6505 dnl Check for the Windows  SDK.
6506 dnl =========================================
6507 if test "$_os" = "WINNT"; then
6508     AC_MSG_CHECKING([for Windows SDK])
6509     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6510         find_winsdk
6511         WINDOWS_SDK_HOME=$winsdktest
6513         # normalize if found
6514         if test -n "$WINDOWS_SDK_HOME"; then
6515             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6516             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6517         fi
6519         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6520     fi
6522     if test -n "$WINDOWS_SDK_HOME"; then
6523         # Remove a possible trailing backslash
6524         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6526         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6527              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6528              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6529             have_windows_sdk_headers=yes
6530         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6531              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6532              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6533             have_windows_sdk_headers=yes
6534         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6535              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6536              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6537             have_windows_sdk_headers=yes
6538         else
6539             have_windows_sdk_headers=no
6540         fi
6542         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6543             have_windows_sdk_libs=yes
6544         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6545             have_windows_sdk_libs=yes
6546         else
6547             have_windows_sdk_libs=no
6548         fi
6550         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6551             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6552 the  Windows SDK are installed.])
6553         fi
6554     fi
6556     if test -z "$WINDOWS_SDK_HOME"; then
6557         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6558     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6559         WINDOWS_SDK_VERSION=80
6560         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6561     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6562         WINDOWS_SDK_VERSION=81
6563         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6564     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6565         WINDOWS_SDK_VERSION=10
6566         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6567     else
6568         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6569     fi
6570     PathFormat "$WINDOWS_SDK_HOME"
6571     WINDOWS_SDK_HOME="$formatted_path"
6572     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6573     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6574         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6575         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6576             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6577         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6578             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6579         fi
6580     fi
6582     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6583     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6584     dnl but not in v8.0), so allow this to be overridden with a
6585     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6586     dnl and configuration error if no WiLangId.vbs is found would arguably be
6587     dnl better, but I do not know under which conditions exactly it is needed by
6588     dnl msiglobal.pm:
6589     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6590         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6591         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6592         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6593             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6594             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6595         fi
6596         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6597             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6598             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6599         fi
6600         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6601             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6602             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6603         fi
6604     fi
6605     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6606         if test -n "$with_package_format" -a "$with_package_format" != no; then
6607             for i in "$with_package_format"; do
6608                 if test "$i" = "msi"; then
6609                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6610                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6611                     fi
6612                 fi
6613             done
6614         fi
6615     fi
6617 AC_SUBST(WINDOWS_SDK_HOME)
6618 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6619 AC_SUBST(WINDOWS_SDK_VERSION)
6620 AC_SUBST(WINDOWS_SDK_WILANGID)
6622 if test "$build_os" = "cygwin"; then
6623     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6624     dnl dir, it also determines that dir's path w/o an arch segment if any,
6625     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6626     AC_MSG_CHECKING([for midl.exe])
6628     find_winsdk
6629     if test -n "$winsdkbinsubdir" \
6630         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6631     then
6632         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6633         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6634     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6635         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6636         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6637     elif test -f "$winsdktest/Bin/midl.exe"; then
6638         MIDL_PATH=$winsdktest/Bin
6639         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6640     fi
6641     if test ! -f "$MIDL_PATH/midl.exe"; then
6642         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6643     else
6644         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6645     fi
6647     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6648     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6650     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6651          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6652          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6653          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6654     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6655          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6656          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6657          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6658     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6659          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6660          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6661          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6662     else
6663         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6664     fi
6666     dnl Check csc.exe
6667     AC_MSG_CHECKING([for csc.exe])
6668     find_csc
6669     if test -f "$csctest/csc.exe"; then
6670         CSC_PATH="$csctest"
6671     fi
6672     if test ! -f "$CSC_PATH/csc.exe"; then
6673         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6674     else
6675         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6676     fi
6678     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6680     dnl Check al.exe
6681     AC_MSG_CHECKING([for al.exe])
6682     find_winsdk
6683     if test -n "$winsdkbinsubdir" \
6684         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6685     then
6686         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6687     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6688         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6689     elif test -f "$winsdktest/Bin/al.exe"; then
6690         AL_PATH="$winsdktest/Bin"
6691     fi
6693     if test -z "$AL_PATH"; then
6694         find_al
6695         if test -f "$altest/bin/al.exe"; then
6696             AL_PATH="$altest/bin"
6697         elif test -f "$altest/al.exe"; then
6698             AL_PATH="$altest"
6699         fi
6700     fi
6701     if test ! -f "$AL_PATH/al.exe"; then
6702         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6703     else
6704         AC_MSG_RESULT([$AL_PATH/al.exe])
6705     fi
6707     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6709     dnl Check mscoree.lib / .NET Framework dir
6710     AC_MSG_CHECKING(.NET Framework)
6711     find_dotnetsdk46
6712     PathFormat "$frametest"
6713     frametest="$formatted_path"
6714     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6715         DOTNET_FRAMEWORK_HOME="$frametest"
6716     else
6717         find_winsdk
6718         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6719             DOTNET_FRAMEWORK_HOME="$winsdktest"
6720         fi
6721     fi
6722     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
6723         AC_MSG_ERROR([mscoree.lib not found])
6724     fi
6725     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6727     PathFormat "$MIDL_PATH"
6728     MIDL_PATH="$formatted_path"
6730     PathFormat "$AL_PATH"
6731     AL_PATH="$formatted_path"
6733     PathFormat "$DOTNET_FRAMEWORK_HOME"
6734     DOTNET_FRAMEWORK_HOME="$formatted_path"
6736     PathFormat "$CSC_PATH"
6737     CSC_PATH="$formatted_path"
6740 dnl ===================================================================
6741 dnl Testing for C++ compiler and version...
6742 dnl ===================================================================
6744 if test "$_os" != "WINNT"; then
6745     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6746     save_CXXFLAGS=$CXXFLAGS
6747     AC_PROG_CXX
6748     CXXFLAGS=$save_CXXFLAGS
6749     if test -z "$CXX_BASE"; then
6750         CXX_BASE=`first_arg_basename "$CXX"`
6751     fi
6754 dnl check for GNU C++ compiler version
6755 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6756     AC_MSG_CHECKING([the GNU C++ compiler version])
6758     _gpp_version=`$CXX -dumpversion`
6759     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6761     if test "$_gpp_majmin" -lt "700"; then
6762         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6763     else
6764         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6765     fi
6767     dnl see https://code.google.com/p/android/issues/detail?id=41770
6768         glibcxx_threads=no
6769         AC_LANG_PUSH([C++])
6770         AC_REQUIRE_CPP
6771         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6772         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6773             #include <bits/c++config.h>]],[[
6774             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6775             && !defined(_GLIBCXX__PTHREADS) \
6776             && !defined(_GLIBCXX_HAS_GTHREADS)
6777             choke me
6778             #endif
6779         ]])],[AC_MSG_RESULT([yes])
6780         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6781         AC_LANG_POP([C++])
6782         if test $glibcxx_threads = yes; then
6783             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6784         fi
6786 AC_SUBST(BOOST_CXXFLAGS)
6789 # prefx CXX with ccache if needed
6791 UNCACHED_CXX="$CXX"
6792 if test "$CCACHE" != ""; then
6793     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6794     AC_LANG_PUSH([C++])
6795     save_CXXFLAGS=$CXXFLAGS
6796     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6797     dnl an empty program will do, we're checking the compiler flags
6798     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6799                       [use_ccache=yes], [use_ccache=no])
6800     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6801         AC_MSG_RESULT([yes])
6802     else
6803         CXX="$CCACHE $CXX"
6804         CXX_BASE="ccache $CXX_BASE"
6805         AC_MSG_RESULT([no])
6806     fi
6807     CXXFLAGS=$save_CXXFLAGS
6808     AC_LANG_POP([C++])
6811 dnl ===================================================================
6812 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6813 dnl ===================================================================
6815 if test "$_os" != "WINNT"; then
6816     AC_PROG_CXXCPP
6818     dnl Check whether there's a C pre-processor.
6819     AC_PROG_CPP
6823 dnl ===================================================================
6824 dnl Find integral type sizes and alignments
6825 dnl ===================================================================
6827 if test "$_os" != "WINNT"; then
6829     AC_CHECK_SIZEOF(long)
6830     AC_CHECK_SIZEOF(short)
6831     AC_CHECK_SIZEOF(int)
6832     AC_CHECK_SIZEOF(long long)
6833     AC_CHECK_SIZEOF(double)
6834     AC_CHECK_SIZEOF(void*)
6836     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6837     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6838     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6839     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6840     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6842     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6843     m4_pattern_allow([AC_CHECK_ALIGNOF])
6844     m4_ifdef([AC_CHECK_ALIGNOF],
6845         [
6846             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6847             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6848             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6849             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6850         ],
6851         [
6852             case "$_os-$host_cpu" in
6853             Linux-i686)
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=4
6857                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6858                 ;;
6859             Linux-x86_64)
6860                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6861                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6862                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6863                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6864                 ;;
6865             *)
6866                 if test -z "$ac_cv_alignof_short" -o \
6867                         -z "$ac_cv_alignof_int" -o \
6868                         -z "$ac_cv_alignof_long" -o \
6869                         -z "$ac_cv_alignof_double"; then
6870                    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.])
6871                 fi
6872                 ;;
6873             esac
6874         ])
6876     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6877     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6878     if test $ac_cv_sizeof_long -eq 8; then
6879         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6880     elif test $ac_cv_sizeof_double -eq 8; then
6881         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6882     else
6883         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6884     fi
6886     dnl Check for large file support
6887     AC_SYS_LARGEFILE
6888     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6889         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6890     fi
6891     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6892         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6893     fi
6894 else
6895     # Hardcode for MSVC
6896     SAL_TYPES_SIZEOFSHORT=2
6897     SAL_TYPES_SIZEOFINT=4
6898     SAL_TYPES_SIZEOFLONG=4
6899     SAL_TYPES_SIZEOFLONGLONG=8
6900     if test $WIN_HOST_BITS -eq 32; then
6901         SAL_TYPES_SIZEOFPOINTER=4
6902     else
6903         SAL_TYPES_SIZEOFPOINTER=8
6904     fi
6905     SAL_TYPES_ALIGNMENT2=2
6906     SAL_TYPES_ALIGNMENT4=4
6907     SAL_TYPES_ALIGNMENT8=8
6908     LFS_CFLAGS=''
6910 AC_SUBST(LFS_CFLAGS)
6912 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6913 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6914 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6915 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6916 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6917 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6918 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6919 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6921 dnl ===================================================================
6922 dnl Check whether to enable runtime optimizations
6923 dnl ===================================================================
6924 ENABLE_RUNTIME_OPTIMIZATIONS=
6925 AC_MSG_CHECKING([whether to enable runtime optimizations])
6926 if test -z "$enable_runtime_optimizations"; then
6927     for i in $CC; do
6928         case $i in
6929         -fsanitize=*)
6930             enable_runtime_optimizations=no
6931             break
6932             ;;
6933         esac
6934     done
6936 if test "$enable_runtime_optimizations" != no; then
6937     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6938     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6939     AC_MSG_RESULT([yes])
6940 else
6941     AC_MSG_RESULT([no])
6943 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6945 dnl ===================================================================
6946 dnl Check if valgrind headers are available
6947 dnl ===================================================================
6948 ENABLE_VALGRIND=
6949 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6950     prev_cppflags=$CPPFLAGS
6951     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6952     # or where does it come from?
6953     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6954     AC_CHECK_HEADER([valgrind/valgrind.h],
6955         [ENABLE_VALGRIND=TRUE])
6956     CPPFLAGS=$prev_cppflags
6958 AC_SUBST([ENABLE_VALGRIND])
6959 if test -z "$ENABLE_VALGRIND"; then
6960     if test "$with_valgrind" = yes; then
6961         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6962     fi
6963     VALGRIND_CFLAGS=
6965 AC_SUBST([VALGRIND_CFLAGS])
6968 dnl ===================================================================
6969 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6970 dnl ===================================================================
6972 # We need at least the sys/sdt.h include header.
6973 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6974 if test "$SDT_H_FOUND" = "TRUE"; then
6975     # Found sys/sdt.h header, now make sure the c++ compiler works.
6976     # Old g++ versions had problems with probes in constructors/destructors.
6977     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6978     AC_LANG_PUSH([C++])
6979     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6980     #include <sys/sdt.h>
6981     class ProbeClass
6982     {
6983     private:
6984       int& ref;
6985       const char *name;
6987     public:
6988       ProbeClass(int& v, const char *n) : ref(v), name(n)
6989       {
6990         DTRACE_PROBE2(_test_, cons, name, ref);
6991       }
6993       void method(int min)
6994       {
6995         DTRACE_PROBE3(_test_, meth, name, ref, min);
6996         ref -= min;
6997       }
6999       ~ProbeClass()
7000       {
7001         DTRACE_PROBE2(_test_, dest, name, ref);
7002       }
7003     };
7004     ]],[[
7005     int i = 64;
7006     DTRACE_PROBE1(_test_, call, i);
7007     ProbeClass inst = ProbeClass(i, "call");
7008     inst.method(24);
7009     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7010           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7011     AC_LANG_POP([C++])
7013 AC_CONFIG_HEADERS([config_host/config_probes.h])
7015 dnl ===================================================================
7016 dnl GCC features
7017 dnl ===================================================================
7018 HAVE_GCC_STACK_CLASH_PROTECTION=
7019 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7020     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7021     save_CFLAGS=$CFLAGS
7022     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7023     AC_LINK_IFELSE(
7024         [AC_LANG_PROGRAM(, [[return 0;]])],
7025         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7026         [AC_MSG_RESULT([no])])
7027     CFLAGS=$save_CFLAGS
7029     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7030     save_CFLAGS=$CFLAGS
7031     CFLAGS="$CFLAGS -Werror -mno-avx"
7032     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7033     CFLAGS=$save_CFLAGS
7034     if test "$HAVE_GCC_AVX" = "TRUE"; then
7035         AC_MSG_RESULT([yes])
7036     else
7037         AC_MSG_RESULT([no])
7038     fi
7040     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7041     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7042     int v = 0;
7043     if (__sync_add_and_fetch(&v, 1) != 1 ||
7044         __sync_sub_and_fetch(&v, 1) != 0)
7045         return 1;
7046     __sync_synchronize();
7047     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7048         v != 1)
7049         return 1;
7050     return 0;
7051 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7052     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7053         AC_MSG_RESULT([yes])
7054         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7055     else
7056         AC_MSG_RESULT([no])
7057     fi
7059     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7060     AC_LANG_PUSH([C++])
7061     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7062             #include <cstddef>
7063             #include <cxxabi.h>
7064             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7065         ])], [
7066             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7067             AC_MSG_RESULT([yes])
7068         ], [AC_MSG_RESULT([no])])
7069     AC_LANG_POP([C++])
7071     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7072     AC_LANG_PUSH([C++])
7073     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7074             #include <cstddef>
7075             #include <cxxabi.h>
7076             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7077         ])], [
7078             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7079             AC_MSG_RESULT([yes])
7080         ], [AC_MSG_RESULT([no])])
7081     AC_LANG_POP([C++])
7083     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7084     AC_LANG_PUSH([C++])
7085     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7086             #include <cxxabi.h>
7087             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7088         ])], [
7089             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7090             AC_MSG_RESULT([yes])
7091         ], [AC_MSG_RESULT([no])])
7092     AC_LANG_POP([C++])
7094     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7095     AC_LANG_PUSH([C++])
7096     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7097             #include <cstddef>
7098             #include <cxxabi.h>
7099             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7100         ])], [
7101             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7102             AC_MSG_RESULT([yes])
7103         ], [AC_MSG_RESULT([no])])
7104     AC_LANG_POP([C++])
7106     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7107     AC_LANG_PUSH([C++])
7108     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7109             #include <cstddef>
7110             #include <cxxabi.h>
7111             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7112         ])], [
7113             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7114             AC_MSG_RESULT([yes])
7115         ], [AC_MSG_RESULT([no])])
7116     AC_LANG_POP([C++])
7118     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7119     AC_LANG_PUSH([C++])
7120     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7121             #include <cxxabi.h>
7122             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7123         ])], [
7124             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7125             AC_MSG_RESULT([yes])
7126         ], [AC_MSG_RESULT([no])])
7127     AC_LANG_POP([C++])
7129     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7130     AC_LANG_PUSH([C++])
7131     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7132             #include <cxxabi.h>
7133             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7134         ])], [
7135             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7136             AC_MSG_RESULT([yes])
7137         ], [AC_MSG_RESULT([no])])
7138     AC_LANG_POP([C++])
7140     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7141     AC_LANG_PUSH([C++])
7142     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7143             #include <cxxabi.h>
7144             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7145         ])], [
7146             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7147             AC_MSG_RESULT([yes])
7148         ], [AC_MSG_RESULT([no])])
7149     AC_LANG_POP([C++])
7151     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7152     AC_LANG_PUSH([C++])
7153     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7154             #include <cstddef>
7155             #include <cxxabi.h>
7156             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7157         ])], [
7158             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7159             AC_MSG_RESULT([yes])
7160         ], [AC_MSG_RESULT([no])])
7161     AC_LANG_POP([C++])
7163     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7164     AC_LANG_PUSH([C++])
7165     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7166             #include <cstddef>
7167             #include <cxxabi.h>
7168             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7169         ])], [
7170             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7171             AC_MSG_RESULT([yes])
7172         ], [AC_MSG_RESULT([no])])
7173     AC_LANG_POP([C++])
7176 AC_SUBST(HAVE_GCC_AVX)
7177 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7178 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7180 dnl ===================================================================
7181 dnl Identify the C++ library
7182 dnl ===================================================================
7184 AC_MSG_CHECKING([what the C++ library is])
7185 AC_LANG_PUSH([C++])
7186 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7187 #include <utility>
7188 #ifndef __GLIBCXX__
7189 foo bar
7190 #endif
7191 ]])],
7192     [CPP_LIBRARY=GLIBCXX
7193      cpp_library_name="GNU libstdc++"
7194     ],
7195     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7196 #include <utility>
7197 #ifndef _LIBCPP_VERSION
7198 foo bar
7199 #endif
7200 ]])],
7201     [CPP_LIBRARY=LIBCPP
7202      cpp_library_name="LLVM libc++"
7203      AC_DEFINE([HAVE_LIBCXX])
7204     ],
7205     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7206 #include <utility>
7207 #ifndef _MSC_VER
7208 foo bar
7209 #endif
7210 ]])],
7211     [CPP_LIBRARY=MSVCRT
7212      cpp_library_name="Microsoft"
7213     ],
7214     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7215 AC_MSG_RESULT([$cpp_library_name])
7216 AC_LANG_POP([C++])
7218 dnl ===================================================================
7219 dnl Check for gperf
7220 dnl ===================================================================
7221 AC_PATH_PROG(GPERF, gperf)
7222 if test -z "$GPERF"; then
7223     AC_MSG_ERROR([gperf not found but needed. Install it.])
7225 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7226     GPERF=`cygpath -m $GPERF`
7228 AC_MSG_CHECKING([whether gperf is new enough])
7229 my_gperf_ver1=$($GPERF --version | head -n 1)
7230 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7231 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7232 if test "$my_gperf_ver3" -ge 301; then
7233     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7234 else
7235     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7237 AC_SUBST(GPERF)
7239 dnl ===================================================================
7240 dnl Check for system libcmis
7241 dnl ===================================================================
7242 # libcmis requires curl and we can't build curl for iOS
7243 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7244     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7245     ENABLE_LIBCMIS=TRUE
7246 else
7247     ENABLE_LIBCMIS=
7249 AC_SUBST(ENABLE_LIBCMIS)
7251 dnl ===================================================================
7252 dnl C++11
7253 dnl ===================================================================
7255 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7256 CXXFLAGS_CXX11=
7257 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7258     if test "$with_latest_c__" = yes; then
7259         CXXFLAGS_CXX11=-std:c++latest
7260     else
7261         CXXFLAGS_CXX11=-std:c++17
7262     fi
7263     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7264 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7265     my_flags='-std=c++17 -std=c++1z'
7266     if test "$with_latest_c__" = yes; then
7267         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7268     fi
7269     for flag in $my_flags; do
7270         if test "$COM" = MSC; then
7271             flag="-Xclang $flag"
7272         fi
7273         save_CXXFLAGS=$CXXFLAGS
7274         CXXFLAGS="$CXXFLAGS $flag -Werror"
7275         if test "$SYSTEM_LIBCMIS" = TRUE; then
7276             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7277         fi
7278         AC_LANG_PUSH([C++])
7279         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7280             #include <algorithm>
7281             #include <functional>
7282             #include <vector>
7284             #if defined SYSTEM_LIBCMIS
7285             // See ucb/source/ucp/cmis/auth_provider.hxx:
7286             #if !defined __clang__
7287             #pragma GCC diagnostic push
7288             #pragma GCC diagnostic ignored "-Wdeprecated"
7289             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7290             #endif
7291             #include <libcmis/libcmis.hxx>
7292             #if !defined __clang__
7293             #pragma GCC diagnostic pop
7294             #endif
7295             #endif
7297             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7298                 std::sort(v.begin(), v.end(), fn);
7299             }
7300             ]])],[CXXFLAGS_CXX11=$flag])
7301         AC_LANG_POP([C++])
7302         CXXFLAGS=$save_CXXFLAGS
7303         if test -n "$CXXFLAGS_CXX11"; then
7304             break
7305         fi
7306     done
7308 if test -n "$CXXFLAGS_CXX11"; then
7309     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7310 else
7311     AC_MSG_ERROR(no)
7313 AC_SUBST(CXXFLAGS_CXX11)
7315 if test "$GCC" = "yes"; then
7316     save_CXXFLAGS=$CXXFLAGS
7317     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7318     CHECK_L_ATOMIC
7319     CXXFLAGS=$save_CXXFLAGS
7320     AC_SUBST(ATOMIC_LIB)
7323 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7324 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7325 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7326 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7327 dnl again towards 4.7.2:
7328 if test $CPP_LIBRARY = GLIBCXX; then
7329     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7330     AC_LANG_PUSH([C++])
7331     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7332 #include <list>
7333 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7334     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7335     //   GCC 4.7.0: 20120322
7336     //   GCC 4.7.1: 20120614
7337     // and using a range check is not possible as the mapping between
7338     // __GLIBCXX__ values and GCC versions is not monotonic
7339 /* ok */
7340 #else
7341 abi broken
7342 #endif
7343         ]])], [AC_MSG_RESULT(no, ok)],
7344         [AC_MSG_ERROR(yes)])
7345     AC_LANG_POP([C++])
7348 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7349 save_CXXFLAGS=$CXXFLAGS
7350 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7351 AC_LANG_PUSH([C++])
7353 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7354 #include <stddef.h>
7356 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7358 namespace
7360         struct b
7361         {
7362                 int i;
7363                 int j;
7364         };
7366 ]], [[
7367 struct a
7369         int i;
7370         int j;
7372 a thinga[]={{0,0}, {1,1}};
7373 b thingb[]={{0,0}, {1,1}};
7374 size_t i = sizeof(sal_n_array_size(thinga));
7375 size_t j = sizeof(sal_n_array_size(thingb));
7376 return !(i != 0 && j != 0);
7378     ], [ AC_MSG_RESULT(yes) ],
7379     [ AC_MSG_ERROR(no)])
7380 AC_LANG_POP([C++])
7381 CXXFLAGS=$save_CXXFLAGS
7383 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7384 if test "$GCC" = yes; then
7385     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7386     AC_LANG_PUSH([C++])
7387     save_CXXFLAGS=$CXXFLAGS
7388     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7389     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7390     CXXFLAGS=$save_CXXFLAGS
7391     AC_LANG_POP([C++])
7392     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7393         AC_MSG_RESULT([yes])
7394     else
7395         AC_MSG_RESULT([no])
7396     fi
7398 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7400 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7401 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7402 dnl from consteval constructor initializing const variable",
7403 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
7404 dnl expression' with consteval constructor", or <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
7405 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
7406 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'":
7407 AC_LANG_PUSH([C++])
7408 save_CXXFLAGS=$CXXFLAGS
7409 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7410 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7411         struct S {
7412             consteval S() { i = 1; }
7413             int i = 0;
7414         };
7415         S const s;
7417         struct S1 { consteval S1(int) {} };
7418         struct S2 {
7419             S1 x;
7420             S2(): x(0) {}
7421         };
7423         struct S3 {
7424             consteval S3() {}
7425             union {
7426                 int a;
7427                 unsigned b = 0;
7428             };
7429         };
7430         void f() { S3(); }
7431     ], [
7432         return (s.i == 1) ? 0 : 1;
7433     ])], [
7434         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7435         AC_MSG_RESULT([yes])
7436     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7437 CXXFLAGS=$save_CXXFLAGS
7438 AC_LANG_POP([C++])
7440 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7441 AC_LANG_PUSH([C++])
7442 save_CXXFLAGS=$CXXFLAGS
7443 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7444 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7445         #include <algorithm>
7446         #include <initializer_list>
7447         #include <vector>
7448         template<typename T> class S {
7449         private:
7450             std::vector<T> v_;
7451         public:
7452             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7453         };
7454         constinit S<int> s{3, 2, 1};
7455     ])], [
7456         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7457         AC_MSG_RESULT([yes])
7458     ], [AC_MSG_RESULT([no])])
7459 CXXFLAGS=$save_CXXFLAGS
7460 AC_LANG_POP([C++])
7462 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7463 AC_LANG_PUSH([C++])
7464 save_CXXFLAGS=$CXXFLAGS
7465 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7466 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7467         #include <span>
7468         #include <type_traits>
7469         // Don't check size_type directly, as it was called index_type before P1872R0:
7470         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7471     ])], [
7472         AC_DEFINE([HAVE_CPP_SPAN],[1])
7473         AC_MSG_RESULT([yes])
7474     ], [AC_MSG_RESULT([no])])
7475 CXXFLAGS=$save_CXXFLAGS
7476 AC_LANG_POP([C++])
7478 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7479 AC_LANG_PUSH([C++])
7480 save_CXXFLAGS=$CXXFLAGS
7481 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7482 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7483         struct S1 { S1(S1 &&); };
7484         struct S2: S1 {};
7485         S1 f(S2 s) { return s; }
7486     ])], [
7487         AC_DEFINE([HAVE_P1155R3],[1])
7488         AC_MSG_RESULT([yes])
7489     ], [AC_MSG_RESULT([no])])
7490 CXXFLAGS=$save_CXXFLAGS
7491 AC_LANG_POP([C++])
7493 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7494 dnl which is included in -Wextra anyway):
7495 HAVE_WDEPRECATED_COPY_DTOR=
7496 if test "$GCC" = yes; then
7497     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7498     AC_LANG_PUSH([C++])
7499     save_CXXFLAGS=$CXXFLAGS
7500     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7501     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7502             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7503             AC_MSG_RESULT([yes])
7504         ], [AC_MSG_RESULT([no])])
7505     CXXFLAGS=$save_CXXFLAGS
7506     AC_LANG_POP([C++])
7508 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7510 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7511 dnl uninitialized warning for code like
7513 dnl   OString f();
7514 dnl   boost::optional<OString> * g(bool b) {
7515 dnl       boost::optional<OString> o;
7516 dnl       if (b) o = f();
7517 dnl       return new boost::optional<OString>(o);
7518 dnl   }
7520 dnl (as is e.g. present, in a slightly more elaborate form, in
7521 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7522 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7523 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7524 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7525     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7526     AC_LANG_PUSH([C++])
7527     save_CXXFLAGS=$CXXFLAGS
7528     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7529     if test "$ENABLE_OPTIMIZED" = TRUE; then
7530         CXXFLAGS="$CXXFLAGS -O2"
7531     else
7532         CXXFLAGS="$CXXFLAGS -O0"
7533     fi
7534     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7535             #include <new>
7536             void f1(int);
7537             struct S1 {
7538                 ~S1() { f1(n); }
7539                 int n = 0;
7540             };
7541             struct S2 {
7542                 S2() {}
7543                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7544                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7545                 void set(S1 s) {
7546                     new (stg) S1(s);
7547                     init = true;
7548                 }
7549                 bool init = false;
7550                 char stg[sizeof (S1)];
7551             } ;
7552             S1 f2();
7553             S2 * f3(bool b) {
7554                 S2 o;
7555                 if (b) o.set(f2());
7556                 return new S2(o);
7557             }
7558         ]])], [AC_MSG_RESULT([no])], [
7559             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7560             AC_MSG_RESULT([yes])
7561         ])
7562     CXXFLAGS=$save_CXXFLAGS
7563     AC_LANG_POP([C++])
7565 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7567 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7568 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7569 dnl hits us e.g. with GCC 10 and --enable-optimized at
7571 dnl   In file included from include/rtl/string.hxx:49,
7572 dnl                    from include/rtl/ustring.hxx:43,
7573 dnl                    from include/osl/file.hxx:35,
7574 dnl                    from include/codemaker/global.hxx:28,
7575 dnl                    from include/codemaker/options.hxx:23,
7576 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7577 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7578 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,
7579 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,
7580 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,
7581 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7582 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7583 dnl      78 |         memcpy( buffer, data, length );
7584 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7585 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7586 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7587     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7588     AC_LANG_PUSH([C++])
7589     save_CXXFLAGS=$CXXFLAGS
7590     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7591     if test "$ENABLE_OPTIMIZED" = TRUE; then
7592         CXXFLAGS="$CXXFLAGS -O2"
7593     else
7594         CXXFLAGS="$CXXFLAGS -O0"
7595     fi
7596     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7597     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7598             void fill(char const * begin, char const * end, char c);
7599             struct q {
7600                 char ids[4];
7601                 char username[6];
7602             };
7603             void test(q & c) {
7604                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7605                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7606             }
7607         ]])], [AC_MSG_RESULT([no])], [
7608             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7609             AC_MSG_RESULT([yes])
7610         ])
7611     CXXFLAGS=$save_CXXFLAGS
7612     AC_LANG_POP([C++])
7614 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7616 HAVE_DLLEXPORTINLINES=
7617 if test "$_os" = "WINNT"; then
7618     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7619     AC_LANG_PUSH([C++])
7620     save_CXXFLAGS=$CXXFLAGS
7621     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7622     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7623             HAVE_DLLEXPORTINLINES=TRUE
7624             AC_MSG_RESULT([yes])
7625         ], [AC_MSG_RESULT([no])])
7626     CXXFLAGS=$save_CXXFLAGS
7627     AC_LANG_POP([C++])
7629 AC_SUBST([HAVE_DLLEXPORTINLINES])
7631 dnl ===================================================================
7632 dnl CPU Intrinsics support - SSE, AVX
7633 dnl ===================================================================
7635 CXXFLAGS_INTRINSICS_SSE2=
7636 CXXFLAGS_INTRINSICS_SSSE3=
7637 CXXFLAGS_INTRINSICS_SSE41=
7638 CXXFLAGS_INTRINSICS_SSE42=
7639 CXXFLAGS_INTRINSICS_AVX=
7640 CXXFLAGS_INTRINSICS_AVX2=
7641 CXXFLAGS_INTRINSICS_AVX512=
7642 CXXFLAGS_INTRINSICS_AVX512F=
7643 CXXFLAGS_INTRINSICS_F16C=
7644 CXXFLAGS_INTRINSICS_FMA=
7646 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7647     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7648     flag_sse2=-msse2
7649     flag_ssse3=-mssse3
7650     flag_sse41=-msse4.1
7651     flag_sse42=-msse4.2
7652     flag_avx=-mavx
7653     flag_avx2=-mavx2
7654     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7655     flag_avx512f=-mavx512f
7656     flag_f16c=-mf16c
7657     flag_fma=-mfma
7658 else
7659     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7660     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7661     # SSE2 seems to be SSE2+.
7662     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7663     # is not empty (and can be tested in gbuild).
7664     flag_sse2=-arch:SSE2
7665     flag_ssse3=-arch:SSE2
7666     flag_sse41=-arch:SSE2
7667     flag_sse42=-arch:SSE2
7668     flag_avx=-arch:AVX
7669     flag_avx2=-arch:AVX2
7670     flag_avx512=-arch:AVX512
7671     flag_avx512f=-arch:AVX512
7672     # These are part of -arch:AVX2
7673     flag_f16c=-arch:AVX2
7674     flag_fma=-arch:AVX2
7677 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7678 AC_LANG_PUSH([C++])
7679 save_CXXFLAGS=$CXXFLAGS
7680 CXXFLAGS="$CXXFLAGS $flag_sse2"
7681 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7682     #include <emmintrin.h>
7683     int main () {
7684         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7685         c = _mm_xor_si128 (a, b);
7686         return 0;
7687     }
7688     ])],
7689     [can_compile_sse2=yes],
7690     [can_compile_sse2=no])
7691 AC_LANG_POP([C++])
7692 CXXFLAGS=$save_CXXFLAGS
7693 AC_MSG_RESULT([${can_compile_sse2}])
7694 if test "${can_compile_sse2}" = "yes" ; then
7695     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7698 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7699 AC_LANG_PUSH([C++])
7700 save_CXXFLAGS=$CXXFLAGS
7701 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7702 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7703     #include <tmmintrin.h>
7704     int main () {
7705         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7706         c = _mm_maddubs_epi16 (a, b);
7707         return 0;
7708     }
7709     ])],
7710     [can_compile_ssse3=yes],
7711     [can_compile_ssse3=no])
7712 AC_LANG_POP([C++])
7713 CXXFLAGS=$save_CXXFLAGS
7714 AC_MSG_RESULT([${can_compile_ssse3}])
7715 if test "${can_compile_ssse3}" = "yes" ; then
7716     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7719 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7720 AC_LANG_PUSH([C++])
7721 save_CXXFLAGS=$CXXFLAGS
7722 CXXFLAGS="$CXXFLAGS $flag_sse41"
7723 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7724     #include <smmintrin.h>
7725     int main () {
7726         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7727         c = _mm_cmpeq_epi64 (a, b);
7728         return 0;
7729     }
7730     ])],
7731     [can_compile_sse41=yes],
7732     [can_compile_sse41=no])
7733 AC_LANG_POP([C++])
7734 CXXFLAGS=$save_CXXFLAGS
7735 AC_MSG_RESULT([${can_compile_sse41}])
7736 if test "${can_compile_sse41}" = "yes" ; then
7737     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7740 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7741 AC_LANG_PUSH([C++])
7742 save_CXXFLAGS=$CXXFLAGS
7743 CXXFLAGS="$CXXFLAGS $flag_sse42"
7744 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7745     #include <nmmintrin.h>
7746     int main () {
7747         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7748         c = _mm_cmpgt_epi64 (a, b);
7749         return 0;
7750     }
7751     ])],
7752     [can_compile_sse42=yes],
7753     [can_compile_sse42=no])
7754 AC_LANG_POP([C++])
7755 CXXFLAGS=$save_CXXFLAGS
7756 AC_MSG_RESULT([${can_compile_sse42}])
7757 if test "${can_compile_sse42}" = "yes" ; then
7758     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7761 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7762 AC_LANG_PUSH([C++])
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS $flag_avx"
7765 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7766     #include <immintrin.h>
7767     int main () {
7768         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7769         c = _mm256_xor_ps(a, b);
7770         return 0;
7771     }
7772     ])],
7773     [can_compile_avx=yes],
7774     [can_compile_avx=no])
7775 AC_LANG_POP([C++])
7776 CXXFLAGS=$save_CXXFLAGS
7777 AC_MSG_RESULT([${can_compile_avx}])
7778 if test "${can_compile_avx}" = "yes" ; then
7779     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7782 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7783 AC_LANG_PUSH([C++])
7784 save_CXXFLAGS=$CXXFLAGS
7785 CXXFLAGS="$CXXFLAGS $flag_avx2"
7786 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7787     #include <immintrin.h>
7788     int main () {
7789         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7790         c = _mm256_maddubs_epi16(a, b);
7791         return 0;
7792     }
7793     ])],
7794     [can_compile_avx2=yes],
7795     [can_compile_avx2=no])
7796 AC_LANG_POP([C++])
7797 CXXFLAGS=$save_CXXFLAGS
7798 AC_MSG_RESULT([${can_compile_avx2}])
7799 if test "${can_compile_avx2}" = "yes" ; then
7800     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7803 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7804 AC_LANG_PUSH([C++])
7805 save_CXXFLAGS=$CXXFLAGS
7806 CXXFLAGS="$CXXFLAGS $flag_avx512"
7807 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7808     #include <immintrin.h>
7809     int main () {
7810         __m512i a = _mm512_loadu_si512(0);
7811         __m512d v1 = _mm512_load_pd(0);
7812         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7813         __m512d v2 = _mm512_abs_pd(v1);
7814         return 0;
7815     }
7816     ])],
7817     [can_compile_avx512=yes],
7818     [can_compile_avx512=no])
7819 AC_LANG_POP([C++])
7820 CXXFLAGS=$save_CXXFLAGS
7821 AC_MSG_RESULT([${can_compile_avx512}])
7822 if test "${can_compile_avx512}" = "yes" ; then
7823     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7824     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7827 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7828 AC_LANG_PUSH([C++])
7829 save_CXXFLAGS=$CXXFLAGS
7830 CXXFLAGS="$CXXFLAGS $flag_f16c"
7831 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7832     #include <immintrin.h>
7833     int main () {
7834         __m128i a = _mm_set1_epi32 (0);
7835         __m128 c;
7836         c = _mm_cvtph_ps(a);
7837         return 0;
7838     }
7839     ])],
7840     [can_compile_f16c=yes],
7841     [can_compile_f16c=no])
7842 AC_LANG_POP([C++])
7843 CXXFLAGS=$save_CXXFLAGS
7844 AC_MSG_RESULT([${can_compile_f16c}])
7845 if test "${can_compile_f16c}" = "yes" ; then
7846     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7849 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7850 AC_LANG_PUSH([C++])
7851 save_CXXFLAGS=$CXXFLAGS
7852 CXXFLAGS="$CXXFLAGS $flag_fma"
7853 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7854     #include <immintrin.h>
7855     int main () {
7856         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7857         d = _mm256_fmadd_ps(a, b, c);
7858         return 0;
7859     }
7860     ])],
7861     [can_compile_fma=yes],
7862     [can_compile_fma=no])
7863 AC_LANG_POP([C++])
7864 CXXFLAGS=$save_CXXFLAGS
7865 AC_MSG_RESULT([${can_compile_fma}])
7866 if test "${can_compile_fma}" = "yes" ; then
7867     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7870 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7871 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7872 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7873 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7874 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7875 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7876 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7877 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7878 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7879 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7881 dnl ===================================================================
7882 dnl system stl sanity tests
7883 dnl ===================================================================
7884 if test "$_os" != "WINNT"; then
7886     AC_LANG_PUSH([C++])
7888     save_CPPFLAGS="$CPPFLAGS"
7889     if test -n "$MACOSX_SDK_PATH"; then
7890         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7891     fi
7893     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7894     # only.
7895     if test "$CPP_LIBRARY" = GLIBCXX; then
7896         dnl gcc#19664, gcc#22482, rhbz#162935
7897         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7898         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7899         AC_MSG_RESULT([$stlvisok])
7900         if test "$stlvisok" = "no"; then
7901             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7902         fi
7903     fi
7905     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7906     # when we don't make any dynamic libraries?
7907     if test "$DISABLE_DYNLOADING" = ""; then
7908         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7909         cat > conftestlib1.cc <<_ACEOF
7910 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7911 struct S2: S1<int> { virtual ~S2(); };
7912 S2::~S2() {}
7913 _ACEOF
7914         cat > conftestlib2.cc <<_ACEOF
7915 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7916 struct S2: S1<int> { virtual ~S2(); };
7917 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7918 _ACEOF
7919         gccvisinlineshiddenok=yes
7920         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7921             gccvisinlineshiddenok=no
7922         else
7923             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7924             dnl known to not work with -z defs (unsetting which makes the test
7925             dnl moot, though):
7926             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7927             if test "$COM_IS_CLANG" = TRUE; then
7928                 for i in $CXX $CXXFLAGS; do
7929                     case $i in
7930                     -fsanitize=*)
7931                         my_linkflagsnoundefs=
7932                         break
7933                         ;;
7934                     esac
7935                 done
7936             fi
7937             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7938                 gccvisinlineshiddenok=no
7939             fi
7940         fi
7942         rm -fr libconftest*
7943         AC_MSG_RESULT([$gccvisinlineshiddenok])
7944         if test "$gccvisinlineshiddenok" = "no"; then
7945             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7946         fi
7947     fi
7949    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7950     cat >visibility.cxx <<_ACEOF
7951 #pragma GCC visibility push(hidden)
7952 struct __attribute__ ((visibility ("default"))) TestStruct {
7953   static void Init();
7955 __attribute__ ((visibility ("default"))) void TestFunc() {
7956   TestStruct::Init();
7958 _ACEOF
7959     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7960         gccvisbroken=yes
7961     else
7962         case "$host_cpu" in
7963         i?86|x86_64)
7964             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7965                 gccvisbroken=no
7966             else
7967                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7968                     gccvisbroken=no
7969                 else
7970                     gccvisbroken=yes
7971                 fi
7972             fi
7973             ;;
7974         *)
7975             gccvisbroken=no
7976             ;;
7977         esac
7978     fi
7979     rm -f visibility.s visibility.cxx
7981     AC_MSG_RESULT([$gccvisbroken])
7982     if test "$gccvisbroken" = "yes"; then
7983         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7984     fi
7986     CPPFLAGS="$save_CPPFLAGS"
7988     AC_LANG_POP([C++])
7991 dnl ===================================================================
7992 dnl  Clang++ tests
7993 dnl ===================================================================
7995 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7996 if test "$GCC" = "yes"; then
7997     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7998     AC_LANG_PUSH([C++])
7999     save_CXXFLAGS=$CXXFLAGS
8000     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8001     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8002     CXXFLAGS=$save_CXXFLAGS
8003     AC_LANG_POP([C++])
8004     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8005         AC_MSG_RESULT([yes])
8006     else
8007         AC_MSG_RESULT([no])
8008     fi
8010 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8012 dnl ===================================================================
8013 dnl Compiler plugins
8014 dnl ===================================================================
8016 COMPILER_PLUGINS=
8017 # currently only Clang
8019 if test "$COM_IS_CLANG" != "TRUE"; then
8020     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8021         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8022         enable_compiler_plugins=no
8023     fi
8026 COMPILER_PLUGINS_COM_IS_CLANG=
8027 if test "$COM_IS_CLANG" = "TRUE"; then
8028     if test -n "$enable_compiler_plugins"; then
8029         compiler_plugins="$enable_compiler_plugins"
8030     elif test -n "$ENABLE_DBGUTIL"; then
8031         compiler_plugins=test
8032     else
8033         compiler_plugins=no
8034     fi
8035     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8036         if test "$CLANGVER" -lt 50002; then
8037             if test "$compiler_plugins" = yes; then
8038                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8039             else
8040                 compiler_plugins=no
8041             fi
8042         fi
8043     fi
8044     if test "$compiler_plugins" != "no"; then
8045         dnl The prefix where Clang resides, override to where Clang resides if
8046         dnl using a source build:
8047         if test -z "$CLANGDIR"; then
8048             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8049         fi
8050         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8051         if test -z "$COMPILER_PLUGINS_CXX"; then
8052             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8053         fi
8054         clangbindir=$CLANGDIR/bin
8055         if test "$build_os" = "cygwin"; then
8056             clangbindir=$(cygpath -u "$clangbindir")
8057         fi
8058         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8059         if test -n "$LLVM_CONFIG"; then
8060             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8061             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8062             if test -z "$CLANGLIBDIR"; then
8063                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8064             fi
8065             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8066             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8067             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8068             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8069                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8070             fi
8071             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8072             clangobjdir=$($LLVM_CONFIG --obj-root)
8073             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8074                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8075             fi
8076         fi
8077         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8078         AC_LANG_PUSH([C++])
8079         save_CXX=$CXX
8080         save_CXXCPP=$CXXCPP
8081         save_CPPFLAGS=$CPPFLAGS
8082         save_CXXFLAGS=$CXXFLAGS
8083         save_LDFLAGS=$LDFLAGS
8084         save_LIBS=$LIBS
8085         CXX=$COMPILER_PLUGINS_CXX
8086         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8087         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8088         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8089         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8090             [COMPILER_PLUGINS=TRUE],
8091             [
8092             if test "$compiler_plugins" = "yes"; then
8093                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8094             else
8095                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8096                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8097             fi
8098             ])
8099         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8100         dnl comment in compilerplugins/Makefile-clang.mk:
8101         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8102             LDFLAGS=""
8103             AC_MSG_CHECKING([for clang libraries to use])
8104             if test -z "$CLANGTOOLLIBS"; then
8105                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8106  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8107                 AC_LINK_IFELSE([
8108                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8109                         [[ clang::FullSourceLoc().dump(); ]])
8110                 ],[CLANGTOOLLIBS="$LIBS"],[])
8111             fi
8112             if test -z "$CLANGTOOLLIBS"; then
8113                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8114                 AC_LINK_IFELSE([
8115                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8116                         [[ clang::FullSourceLoc().dump(); ]])
8117                 ],[CLANGTOOLLIBS="$LIBS"],[])
8118             fi
8119             AC_MSG_RESULT([$CLANGTOOLLIBS])
8120             if test -z "$CLANGTOOLLIBS"; then
8121                 if test "$compiler_plugins" = "yes"; then
8122                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8123                 else
8124                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8125                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8126                 fi
8127                 COMPILER_PLUGINS=
8128             fi
8129             if test -n "$COMPILER_PLUGINS"; then
8130                 if test -z "$CLANGSYSINCLUDE"; then
8131                     if test -n "$LLVM_CONFIG"; then
8132                         # Path to the clang system headers (no idea if there's a better way to get it).
8133                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8134                     fi
8135                 fi
8136             fi
8137         fi
8138         CXX=$save_CXX
8139         CXXCPP=$save_CXXCPP
8140         CPPFLAGS=$save_CPPFLAGS
8141         CXXFLAGS=$save_CXXFLAGS
8142         LDFLAGS=$save_LDFLAGS
8143         LIBS="$save_LIBS"
8144         AC_LANG_POP([C++])
8146         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8147         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8148             #ifndef __clang__
8149             you lose
8150             #endif
8151             int foo=42;
8152             ]])],
8153             [AC_MSG_RESULT([yes])
8154              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8155             [AC_MSG_RESULT([no])])
8156         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8157     fi
8158 else
8159     if test "$enable_compiler_plugins" = "yes"; then
8160         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8161     fi
8163 COMPILER_PLUGINS_ANALYZER_PCH=
8164 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8165     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8167 AC_SUBST(COMPILER_PLUGINS)
8168 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8169 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8170 AC_SUBST(COMPILER_PLUGINS_CXX)
8171 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8172 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8173 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8174 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8175 AC_SUBST(CLANGDIR)
8176 AC_SUBST(CLANGLIBDIR)
8177 AC_SUBST(CLANGTOOLLIBS)
8178 AC_SUBST(CLANGSYSINCLUDE)
8180 # Plugin to help linker.
8181 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8182 # This makes --enable-lto build with clang work.
8183 AC_SUBST(LD_PLUGIN)
8185 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8186 AC_SUBST(HAVE_POSIX_FALLOCATE)
8188 JITC_PROCESSOR_TYPE=""
8189 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8190     # IBMs JDK needs this...
8191     JITC_PROCESSOR_TYPE=6
8192     export JITC_PROCESSOR_TYPE
8194 AC_SUBST([JITC_PROCESSOR_TYPE])
8196 # Misc Windows Stuff
8197 AC_ARG_WITH(ucrt-dir,
8198     AS_HELP_STRING([--with-ucrt-dir],
8199         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8200         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8201         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8202             Windows6.1-KB2999226-x64.msu
8203             Windows6.1-KB2999226-x86.msu
8204             Windows8.1-KB2999226-x64.msu
8205             Windows8.1-KB2999226-x86.msu
8206             Windows8-RT-KB2999226-x64.msu
8207             Windows8-RT-KB2999226-x86.msu
8208         A zip archive including those files is available from Microsoft site:
8209         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8212 UCRT_REDISTDIR="$with_ucrt_dir"
8213 if test $_os = "WINNT"; then
8214     find_msvc_x64_dlls
8215     for i in $PKGFORMAT; do
8216         if test "$i" = msi; then
8217             find_msms
8218             break
8219         fi
8220     done
8221     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8222     MSVC_DLLS="$msvcdlls"
8223     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8224     # MSVC 15.3 changed it to VC141
8225     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8226         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8227     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8228         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8229     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8230         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8231     else
8232         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8233     fi
8235     if test "$UCRT_REDISTDIR" = "no"; then
8236         dnl explicitly disabled
8237         UCRT_REDISTDIR=""
8238     else
8239         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8240                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8241                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8242                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8243                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8244                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8245             UCRT_REDISTDIR=""
8246             if test -n "$PKGFORMAT"; then
8247                for i in $PKGFORMAT; do
8248                    case "$i" in
8249                    msi)
8250                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8251                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8252                        ;;
8253                    esac
8254                done
8255             fi
8256         fi
8257     fi
8260 AC_SUBST(UCRT_REDISTDIR)
8261 AC_SUBST(MSVC_DLL_PATH)
8262 AC_SUBST(MSVC_DLLS)
8263 AC_SUBST(MSM_PATH)
8266 dnl ===================================================================
8267 dnl Checks for Java
8268 dnl ===================================================================
8269 if test "$ENABLE_JAVA" != ""; then
8271     # Windows-specific tests
8272     if test "$build_os" = "cygwin"; then
8273         if test -z "$with_jdk_home"; then
8274             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8275             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8276             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8277             if test -n "$regvalue"; then
8278                 ver=$regvalue
8279                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8280                 with_jdk_home=$regvalue
8281             fi
8282             howfound="found automatically"
8283         else
8284             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8285             howfound="you passed"
8286         fi
8288         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8289             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])
8290         fi
8291     fi
8293     # 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.
8294     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8295     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8296         with_jdk_home=`/usr/libexec/java_home`
8297     fi
8299     JAVA_HOME=; export JAVA_HOME
8300     if test -z "$with_jdk_home"; then
8301         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8302     else
8303         _java_path="$with_jdk_home/bin/$with_java"
8304         dnl Check if there is a Java interpreter at all.
8305         if test -x "$_java_path"; then
8306             JAVAINTERPRETER=$_java_path
8307         else
8308             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8309         fi
8310     fi
8312     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8313     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8314     dnl loaded by java to run JunitTests:
8315     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8316         shortjdkhome=`cygpath -d "$with_jdk_home"`
8317         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
8318             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8319             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8320         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
8321             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8322             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8323         fi
8325         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8326             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8327         fi
8328         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8329     elif test "$cross_compiling" != "yes"; then
8330         case $CPUNAME in
8331             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8332                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8333                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8334                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8335                 fi
8336                 ;;
8337             *) # assumption: everything else 32-bit
8338                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8339                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8340                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8341                 fi
8342                 ;;
8343         esac
8344     fi
8347 dnl ===================================================================
8348 dnl Checks for JDK.
8349 dnl ===================================================================
8351 # Whether all the complexity here actually is needed any more or not, no idea.
8353 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8354     _gij_longver=0
8355     AC_MSG_CHECKING([the installed JDK])
8356     if test -n "$JAVAINTERPRETER"; then
8357         dnl java -version sends output to stderr!
8358         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8359             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8360         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8361             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8362         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8363             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8364         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8365             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8366         else
8367             JDK=sun
8369             dnl Sun JDK specific tests
8370             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8371             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8373             if test "$_jdk_ver" -lt 10900; then
8374                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8375             fi
8376             if test "$_jdk_ver" -gt 10900; then
8377                 JAVA_CLASSPATH_NOT_SET=TRUE
8378             fi
8380             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8381             if test "$_os" = "WINNT"; then
8382                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8383             fi
8384             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8386             # set to limit VM usage for JunitTests
8387             JAVAIFLAGS=-Xmx64M
8388             # set to limit VM usage for javac
8389             JAVACFLAGS=-J-Xmx128M
8390         fi
8391     else
8392         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8393     fi
8394 else
8395     if test -z "$ENABLE_JAVA"; then
8396         dnl Java disabled
8397         JAVA_HOME=
8398         export JAVA_HOME
8399     elif test "$cross_compiling" = "yes"; then
8400         # Just assume compatibility of build and host JDK
8401         JDK=$JDK_FOR_BUILD
8402         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8403     fi
8406 dnl ===================================================================
8407 dnl Checks for javac
8408 dnl ===================================================================
8409 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8410     javacompiler="javac"
8411     : ${JAVA_SOURCE_VER=8}
8412     : ${JAVA_TARGET_VER=8}
8413     if test -z "$with_jdk_home"; then
8414         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8415     else
8416         _javac_path="$with_jdk_home/bin/$javacompiler"
8417         dnl Check if there is a Java compiler at all.
8418         if test -x "$_javac_path"; then
8419             JAVACOMPILER=$_javac_path
8420         fi
8421     fi
8422     if test -z "$JAVACOMPILER"; then
8423         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8424     fi
8425     if test "$build_os" = "cygwin"; then
8426         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8427             JAVACOMPILER="${JAVACOMPILER}.exe"
8428         fi
8429         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8430     fi
8433 dnl ===================================================================
8434 dnl Checks for javadoc
8435 dnl ===================================================================
8436 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8437     if test -z "$with_jdk_home"; then
8438         AC_PATH_PROG(JAVADOC, javadoc)
8439     else
8440         _javadoc_path="$with_jdk_home/bin/javadoc"
8441         dnl Check if there is a javadoc at all.
8442         if test -x "$_javadoc_path"; then
8443             JAVADOC=$_javadoc_path
8444         else
8445             AC_PATH_PROG(JAVADOC, javadoc)
8446         fi
8447     fi
8448     if test -z "$JAVADOC"; then
8449         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8450     fi
8451     if test "$build_os" = "cygwin"; then
8452         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8453             JAVADOC="${JAVADOC}.exe"
8454         fi
8455         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8456     fi
8458     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8459     JAVADOCISGJDOC="yes"
8460     fi
8462 AC_SUBST(JAVADOC)
8463 AC_SUBST(JAVADOCISGJDOC)
8465 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8466     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8467     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8468         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8469            # try to recover first by looking whether we have an alternative
8470            # system as in Debian or newer SuSEs where following /usr/bin/javac
8471            # over /etc/alternatives/javac leads to the right bindir where we
8472            # just need to strip a bit away to get a valid JAVA_HOME
8473            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8474         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8475             # maybe only one level of symlink (e.g. on Mac)
8476             JAVA_HOME=$(readlink $JAVACOMPILER)
8477             if test "$(dirname $JAVA_HOME)" = "."; then
8478                 # we've got no path to trim back
8479                 JAVA_HOME=""
8480             fi
8481         else
8482             # else warn
8483             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8484             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8485             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8486             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8487         fi
8488         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8489         if test "$JAVA_HOME" != "/usr"; then
8490             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8491                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8492                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8493                 dnl Tiger already returns a JDK path...
8494                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8495             else
8496                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8497                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8498                 dnl that checks which version to run
8499                 if test -f "$JAVA_HOME"; then
8500                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8501                 fi
8502             fi
8503         fi
8504     fi
8505     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8507     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8508     if test -z "$JAVA_HOME"; then
8509         if test "x$with_jdk_home" = "x"; then
8510             cat > findhome.java <<_ACEOF
8511 [import java.io.File;
8513 class findhome
8515     public static void main(String args[])
8516     {
8517         String jrelocation = System.getProperty("java.home");
8518         File jre = new File(jrelocation);
8519         System.out.println(jre.getParent());
8520     }
8522 _ACEOF
8523             AC_MSG_CHECKING([if javac works])
8524             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8525             AC_TRY_EVAL(javac_cmd)
8526             if test $? = 0 -a -f ./findhome.class; then
8527                 AC_MSG_RESULT([javac works])
8528             else
8529                 echo "configure: javac test failed" >&5
8530                 cat findhome.java >&5
8531                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8532             fi
8533             AC_MSG_CHECKING([if gij knows its java.home])
8534             JAVA_HOME=`$JAVAINTERPRETER findhome`
8535             if test $? = 0 -a "$JAVA_HOME" != ""; then
8536                 AC_MSG_RESULT([$JAVA_HOME])
8537             else
8538                 echo "configure: java test failed" >&5
8539                 cat findhome.java >&5
8540                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8541             fi
8542             # clean-up after ourselves
8543             rm -f ./findhome.java ./findhome.class
8544         else
8545             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8546         fi
8547     fi
8549     # now check if $JAVA_HOME is really valid
8550     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8551         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8552             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8553             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8554             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8555             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8556             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8557             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8558         fi
8559     fi
8560     PathFormat "$JAVA_HOME"
8561     JAVA_HOME="$formatted_path"
8564 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8565     "$_os" != Darwin
8566 then
8567     AC_MSG_CHECKING([for JAWT lib])
8568     if test "$_os" = WINNT; then
8569         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8570         JAWTLIB=jawt.lib
8571     else
8572         case "$host_cpu" in
8573         arm*)
8574             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8575             JAVA_ARCH=$my_java_arch
8576             ;;
8577         i*86)
8578             my_java_arch=i386
8579             ;;
8580         m68k)
8581             my_java_arch=m68k
8582             ;;
8583         powerpc)
8584             my_java_arch=ppc
8585             ;;
8586         powerpc64)
8587             my_java_arch=ppc64
8588             ;;
8589         powerpc64le)
8590             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8591             JAVA_ARCH=$my_java_arch
8592             ;;
8593         sparc64)
8594             my_java_arch=sparcv9
8595             ;;
8596         x86_64)
8597             my_java_arch=amd64
8598             ;;
8599         *)
8600             my_java_arch=$host_cpu
8601             ;;
8602         esac
8603         # This is where JDK9 puts the library
8604         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8605             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8606         else
8607             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8608         fi
8609         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8610     fi
8611     AC_MSG_RESULT([$JAWTLIB])
8613 AC_SUBST(JAWTLIB)
8615 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8616     case "$host_os" in
8618     aix*)
8619         JAVAINC="-I$JAVA_HOME/include"
8620         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8621         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8622         ;;
8624     cygwin*|wsl*)
8625         JAVAINC="-I$JAVA_HOME/include/win32"
8626         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8627         ;;
8629     darwin*|macos*)
8630         if test -d "$JAVA_HOME/include/darwin"; then
8631             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8632         else
8633             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8634         fi
8635         ;;
8637     dragonfly*)
8638         JAVAINC="-I$JAVA_HOME/include"
8639         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8640         ;;
8642     freebsd*)
8643         JAVAINC="-I$JAVA_HOME/include"
8644         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8645         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8646         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8647         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8648         ;;
8650     k*bsd*-gnu*)
8651         JAVAINC="-I$JAVA_HOME/include"
8652         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8653         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8654         ;;
8656     linux-gnu*)
8657         JAVAINC="-I$JAVA_HOME/include"
8658         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8659         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8660         ;;
8662     *netbsd*)
8663         JAVAINC="-I$JAVA_HOME/include"
8664         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8665         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8666        ;;
8668     openbsd*)
8669         JAVAINC="-I$JAVA_HOME/include"
8670         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8671         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8672         ;;
8674     solaris*)
8675         JAVAINC="-I$JAVA_HOME/include"
8676         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8677         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8678         ;;
8679     esac
8681 SOLARINC="$SOLARINC $JAVAINC"
8683 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8684     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8685     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8686     JDK_FOR_BUILD=$JDK
8689 AC_SUBST(JAVACFLAGS)
8690 AC_SUBST(JAVACOMPILER)
8691 AC_SUBST(JAVAINTERPRETER)
8692 AC_SUBST(JAVAIFLAGS)
8693 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8694 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8695 AC_SUBST(JAVA_HOME)
8696 AC_SUBST(JAVA_HOME_FOR_BUILD)
8697 AC_SUBST(JDK)
8698 AC_SUBST(JDK_FOR_BUILD)
8699 AC_SUBST(JAVA_SOURCE_VER)
8700 AC_SUBST(JAVA_TARGET_VER)
8703 dnl ===================================================================
8704 dnl Export file validation
8705 dnl ===================================================================
8706 AC_MSG_CHECKING([whether to enable export file validation])
8707 if test "$with_export_validation" != "no"; then
8708     if test -z "$ENABLE_JAVA"; then
8709         if test "$with_export_validation" = "yes"; then
8710             AC_MSG_ERROR([requested, but Java is disabled])
8711         else
8712             AC_MSG_RESULT([no, as Java is disabled])
8713         fi
8714     elif ! test -d "${SRC_ROOT}/schema"; then
8715         if test "$with_export_validation" = "yes"; then
8716             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8717         else
8718             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8719         fi
8720     else
8721         AC_MSG_RESULT([yes])
8722         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8724         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8725         if test -z "$ODFVALIDATOR"; then
8726             # remember to download the ODF toolkit with validator later
8727             AC_MSG_NOTICE([no odfvalidator found, will download it])
8728             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8729             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8731             # and fetch name of odfvalidator jar name from download.lst
8732             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8733             AC_SUBST(ODFVALIDATOR_JAR)
8735             if test -z "$ODFVALIDATOR_JAR"; then
8736                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8737             fi
8738         fi
8739         if test "$build_os" = "cygwin"; then
8740             # In case of Cygwin it will be executed from Windows,
8741             # so we need to run bash and absolute path to validator
8742             # so instead of "odfvalidator" it will be
8743             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8744             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8745         else
8746             ODFVALIDATOR="sh $ODFVALIDATOR"
8747         fi
8748         AC_SUBST(ODFVALIDATOR)
8751         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8752         if test -z "$OFFICEOTRON"; then
8753             # remember to download the officeotron with validator later
8754             AC_MSG_NOTICE([no officeotron found, will download it])
8755             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8756             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8758             # and fetch name of officeotron jar name from download.lst
8759             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8760             AC_SUBST(OFFICEOTRON_JAR)
8762             if test -z "$OFFICEOTRON_JAR"; then
8763                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8764             fi
8765         else
8766             # check version of existing officeotron
8767             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8768             if test 0"$OFFICEOTRON_VER" -lt 704; then
8769                 AC_MSG_ERROR([officeotron too old])
8770             fi
8771         fi
8772         if test "$build_os" = "cygwin"; then
8773             # In case of Cygwin it will be executed from Windows,
8774             # so we need to run bash and absolute path to validator
8775             # so instead of "odfvalidator" it will be
8776             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8777             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8778         else
8779             OFFICEOTRON="sh $OFFICEOTRON"
8780         fi
8781     fi
8782     AC_SUBST(OFFICEOTRON)
8783 else
8784     AC_MSG_RESULT([no])
8787 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8788 if test "$with_bffvalidator" != "no"; then
8789     AC_DEFINE(HAVE_BFFVALIDATOR)
8791     if test "$with_export_validation" = "no"; then
8792         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8793     fi
8795     if test "$with_bffvalidator" = "yes"; then
8796         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8797     else
8798         BFFVALIDATOR="$with_bffvalidator"
8799     fi
8801     if test "$build_os" = "cygwin"; then
8802         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8803             AC_MSG_RESULT($BFFVALIDATOR)
8804         else
8805             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8806         fi
8807     elif test -n "$BFFVALIDATOR"; then
8808         # We are not in Cygwin but need to run Windows binary with wine
8809         AC_PATH_PROGS(WINE, wine)
8811         # so swap in a shell wrapper that converts paths transparently
8812         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8813         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8814         AC_SUBST(BFFVALIDATOR_EXE)
8815         AC_MSG_RESULT($BFFVALIDATOR)
8816     else
8817         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8818     fi
8819     AC_SUBST(BFFVALIDATOR)
8820 else
8821     AC_MSG_RESULT([no])
8824 dnl ===================================================================
8825 dnl Check for C preprocessor to use
8826 dnl ===================================================================
8827 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8828 SYSTEM_UCPP_IS_GCC=
8829 if test -n "$with_idlc_cpp"; then
8830     AC_MSG_RESULT([$with_idlc_cpp])
8831     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8832     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8833     # ucpp will accept -v (to output version), warn about the others as unknown
8834     # and return 1 (due to -v)
8835     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8836     # and return 0 (due to --version ) if all options are supported
8837     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8838     if test $? -eq 0;  then
8839         SYSTEM_UCPP_IS_GCC=TRUE
8840         AC_MSG_RESULT([yes])
8841     else
8842         AC_MSG_RESULT([no])
8843     fi
8844 else
8845     AC_MSG_RESULT([ucpp])
8846     AC_MSG_CHECKING([which ucpp to use])
8847     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8848         AC_MSG_RESULT([external])
8849         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8850     else
8851         AC_MSG_RESULT([internal])
8852         BUILD_TYPE="$BUILD_TYPE UCPP"
8853     fi
8855 AC_SUBST(SYSTEM_UCPP)
8856 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8858 dnl ===================================================================
8859 dnl Check for epm (not needed for Windows)
8860 dnl ===================================================================
8861 AC_MSG_CHECKING([whether to enable EPM for packing])
8862 if test "$enable_epm" = "yes"; then
8863     AC_MSG_RESULT([yes])
8864     if test "$_os" != "WINNT"; then
8865         if test $_os = Darwin; then
8866             EPM=internal
8867         elif test -n "$with_epm"; then
8868             EPM=$with_epm
8869         else
8870             AC_PATH_PROG(EPM, epm, no)
8871         fi
8872         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8873             AC_MSG_NOTICE([EPM will be built.])
8874             BUILD_TYPE="$BUILD_TYPE EPM"
8875             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8876         else
8877             # Gentoo has some epm which is something different...
8878             AC_MSG_CHECKING([whether the found epm is the right epm])
8879             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8880                 AC_MSG_RESULT([yes])
8881             else
8882                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8883             fi
8884             AC_MSG_CHECKING([epm version])
8885             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8886             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8887                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8888                 AC_MSG_RESULT([OK, >= 3.7])
8889             else
8890                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8891                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8892             fi
8893         fi
8894     fi
8896     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8897         AC_MSG_CHECKING([for rpm])
8898         for a in "$RPM" rpmbuild rpm; do
8899             $a --usage >/dev/null 2> /dev/null
8900             if test $? -eq 0; then
8901                 RPM=$a
8902                 break
8903             else
8904                 $a --version >/dev/null 2> /dev/null
8905                 if test $? -eq 0; then
8906                     RPM=$a
8907                     break
8908                 fi
8909             fi
8910         done
8911         if test -z "$RPM"; then
8912             AC_MSG_ERROR([not found])
8913         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8914             RPM_PATH=`which $RPM`
8915             AC_MSG_RESULT([$RPM_PATH])
8916             SCPDEFS="$SCPDEFS -DWITH_RPM"
8917         else
8918             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8919         fi
8920     fi
8921     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8922         AC_PATH_PROG(DPKG, dpkg, no)
8923         if test "$DPKG" = "no"; then
8924             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8925         fi
8926     fi
8927     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8928        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8929         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8930             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8931                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8932                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8933                     AC_MSG_RESULT([yes])
8934                 else
8935                     AC_MSG_RESULT([no])
8936                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8937                         _pt="rpm"
8938                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8939                         add_warning "the rpms will need to be installed with --nodeps"
8940                     else
8941                         _pt="pkg"
8942                     fi
8943                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8944                     add_warning "the ${_pt}s will not be relocatable"
8945                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8946                                  relocation will work, you need to patch your epm with the
8947                                  patch in epm/epm-3.7.patch or build with
8948                                  --with-epm=internal which will build a suitable epm])
8949                 fi
8950             fi
8951         fi
8952     fi
8953     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8954         AC_PATH_PROG(PKGMK, pkgmk, no)
8955         if test "$PKGMK" = "no"; then
8956             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8957         fi
8958     fi
8959     AC_SUBST(RPM)
8960     AC_SUBST(DPKG)
8961     AC_SUBST(PKGMK)
8962 else
8963     for i in $PKGFORMAT; do
8964         case "$i" in
8965         aix | bsd | deb | pkg | rpm | native | portable)
8966             AC_MSG_ERROR(
8967                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8968             ;;
8969         esac
8970     done
8971     AC_MSG_RESULT([no])
8972     EPM=NO
8974 AC_SUBST(EPM)
8976 ENABLE_LWP=
8977 if test "$enable_lotuswordpro" = "yes"; then
8978     ENABLE_LWP="TRUE"
8980 AC_SUBST(ENABLE_LWP)
8982 dnl ===================================================================
8983 dnl Check for building ODK
8984 dnl ===================================================================
8985 if test "$enable_odk" != yes; then
8986     unset DOXYGEN
8987 else
8988     if test "$with_doxygen" = no; then
8989         AC_MSG_CHECKING([for doxygen])
8990         unset DOXYGEN
8991         AC_MSG_RESULT([no])
8992     else
8993         if test "$with_doxygen" = yes; then
8994             AC_PATH_PROG([DOXYGEN], [doxygen])
8995             if test -z "$DOXYGEN"; then
8996                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8997             fi
8998             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8999                 if ! dot -V 2>/dev/null; then
9000                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9001                 fi
9002             fi
9003         else
9004             AC_MSG_CHECKING([for doxygen])
9005             DOXYGEN=$with_doxygen
9006             AC_MSG_RESULT([$DOXYGEN])
9007         fi
9008         if test -n "$DOXYGEN"; then
9009             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9010             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9011             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9012                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9013             fi
9014         fi
9015     fi
9017 AC_SUBST([DOXYGEN])
9019 AC_MSG_CHECKING([whether to build the ODK])
9020 if test "$enable_odk" = yes; then
9021     AC_MSG_RESULT([yes])
9022     BUILD_TYPE="$BUILD_TYPE ODK"
9023 else
9024     AC_MSG_RESULT([no])
9027 dnl ===================================================================
9028 dnl Check for system zlib
9029 dnl ===================================================================
9030 if test "$with_system_zlib" = "auto"; then
9031     case "$_os" in
9032     WINNT)
9033         with_system_zlib="$with_system_libs"
9034         ;;
9035     *)
9036         if test "$enable_fuzzers" != "yes"; then
9037             with_system_zlib=yes
9038         else
9039             with_system_zlib=no
9040         fi
9041         ;;
9042     esac
9045 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9046 dnl and has no pkg-config for it at least on some tinderboxes,
9047 dnl so leaving that out for now
9048 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9049 AC_MSG_CHECKING([which zlib to use])
9050 if test "$with_system_zlib" = "yes"; then
9051     AC_MSG_RESULT([external])
9052     SYSTEM_ZLIB=TRUE
9053     AC_CHECK_HEADER(zlib.h, [],
9054         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9055     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9056         [AC_MSG_ERROR(zlib not found or functional)], [])
9057 else
9058     AC_MSG_RESULT([internal])
9059     SYSTEM_ZLIB=
9060     BUILD_TYPE="$BUILD_TYPE ZLIB"
9061     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9062     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9064 AC_SUBST(ZLIB_CFLAGS)
9065 AC_SUBST(ZLIB_LIBS)
9066 AC_SUBST(SYSTEM_ZLIB)
9068 dnl ===================================================================
9069 dnl Check for system jpeg
9070 dnl ===================================================================
9071 AC_MSG_CHECKING([which libjpeg to use])
9072 if test "$with_system_jpeg" = "yes"; then
9073     AC_MSG_RESULT([external])
9074     SYSTEM_LIBJPEG=TRUE
9075     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9076         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9077     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9078         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9079 else
9080     SYSTEM_LIBJPEG=
9081     AC_MSG_RESULT([internal, libjpeg-turbo])
9082     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9083     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
9084     if test "$COM" = "MSC"; then
9085         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
9086     else
9087         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
9088     fi
9090     case "$host_cpu" in
9091     x86_64 | amd64 | i*86 | x86 | ia32)
9092         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9093         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9094             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9095                 NASM="$LODE_HOME/opt/bin/nasm"
9096             elif test -x "/opt/lo/bin/nasm"; then
9097                 NASM="/opt/lo/bin/nasm"
9098             fi
9099         fi
9101         if test -n "$NASM"; then
9102             AC_MSG_CHECKING([for object file format of host system])
9103             case "$host_os" in
9104               cygwin* | mingw* | pw32* | wsl*)
9105                 case "$host_cpu" in
9106                   x86_64)
9107                     objfmt='Win64-COFF'
9108                     ;;
9109                   *)
9110                     objfmt='Win32-COFF'
9111                     ;;
9112                 esac
9113               ;;
9114               msdosdjgpp* | go32*)
9115                 objfmt='COFF'
9116               ;;
9117               os2-emx*) # not tested
9118                 objfmt='MSOMF' # obj
9119               ;;
9120               linux*coff* | linux*oldld*)
9121                 objfmt='COFF' # ???
9122               ;;
9123               linux*aout*)
9124                 objfmt='a.out'
9125               ;;
9126               linux*)
9127                 case "$host_cpu" in
9128                   x86_64)
9129                     objfmt='ELF64'
9130                     ;;
9131                   *)
9132                     objfmt='ELF'
9133                     ;;
9134                 esac
9135               ;;
9136               kfreebsd* | freebsd* | netbsd* | openbsd*)
9137                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9138                   objfmt='BSD-a.out'
9139                 else
9140                   case "$host_cpu" in
9141                     x86_64 | amd64)
9142                       objfmt='ELF64'
9143                       ;;
9144                     *)
9145                       objfmt='ELF'
9146                       ;;
9147                   esac
9148                 fi
9149               ;;
9150               solaris* | sunos* | sysv* | sco*)
9151                 case "$host_cpu" in
9152                   x86_64)
9153                     objfmt='ELF64'
9154                     ;;
9155                   *)
9156                     objfmt='ELF'
9157                     ;;
9158                 esac
9159               ;;
9160               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9161                 case "$host_cpu" in
9162                   x86_64)
9163                     objfmt='Mach-O64'
9164                     ;;
9165                   *)
9166                     objfmt='Mach-O'
9167                     ;;
9168                 esac
9169               ;;
9170               *)
9171                 objfmt='ELF ?'
9172               ;;
9173             esac
9175             AC_MSG_RESULT([$objfmt])
9176             if test "$objfmt" = 'ELF ?'; then
9177               objfmt='ELF'
9178               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9179             fi
9181             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9182             case "$objfmt" in
9183               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
9184               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
9185               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
9186               COFF)       NAFLAGS='-fcoff -DCOFF';;
9187               a.out)      NAFLAGS='-faout -DAOUT';;
9188               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
9189               ELF)        NAFLAGS='-felf -DELF';;
9190               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
9191               RDF)        NAFLAGS='-frdf -DRDF';;
9192               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
9193               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
9194             esac
9195             AC_MSG_RESULT([$NAFLAGS])
9197             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9198             cat > conftest.asm << EOF
9199             [%line __oline__ "configure"
9200                     section .text
9201                     global  _main,main
9202             _main:
9203             main:   xor     eax,eax
9204                     ret
9205             ]
9207             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9208             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9209               AC_MSG_RESULT(yes)
9210             else
9211               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9212               cat conftest.asm >&AS_MESSAGE_LOG_FD
9213               rm -rf conftest*
9214               AC_MSG_RESULT(no)
9215               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9216               NASM=""
9217             fi
9219         fi
9221         if test -z "$NASM"; then
9222 cat << _EOS
9223 ****************************************************************************
9224 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9225 To get one please:
9227 _EOS
9228             if test "$build_os" = "cygwin"; then
9229 cat << _EOS
9230 install a pre-compiled binary for Win32
9232 mkdir -p /opt/lo/bin
9233 cd /opt/lo/bin
9234 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9235 chmod +x nasm
9237 or get and install one from http://www.nasm.us/
9239 Then re-run autogen.sh
9241 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9242 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9244 _EOS
9245             else
9246 cat << _EOS
9247 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9249 _EOS
9250             fi
9251             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9252             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9253         fi
9254       ;;
9255     esac
9258 AC_SUBST(NASM)
9259 AC_SUBST(LIBJPEG_CFLAGS)
9260 AC_SUBST(LIBJPEG_LIBS)
9261 AC_SUBST(SYSTEM_LIBJPEG)
9263 dnl ===================================================================
9264 dnl Check for system clucene
9265 dnl ===================================================================
9266 dnl we should rather be using
9267 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9268 dnl but the contribs-lib check seems tricky
9269 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9270 AC_MSG_CHECKING([which clucene to use])
9271 if test "$with_system_clucene" = "yes"; then
9272     AC_MSG_RESULT([external])
9273     SYSTEM_CLUCENE=TRUE
9274     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9275     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9276     FilterLibs "${CLUCENE_LIBS}"
9277     CLUCENE_LIBS="${filteredlibs}"
9278     AC_LANG_PUSH([C++])
9279     save_CXXFLAGS=$CXXFLAGS
9280     save_CPPFLAGS=$CPPFLAGS
9281     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9282     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9283     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9284     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9285     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9286                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9287     CXXFLAGS=$save_CXXFLAGS
9288     CPPFLAGS=$save_CPPFLAGS
9289     AC_LANG_POP([C++])
9291     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9292 else
9293     AC_MSG_RESULT([internal])
9294     SYSTEM_CLUCENE=
9295     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9298 AC_SUBST(SYSTEM_CLUCENE)
9299 AC_SUBST(CLUCENE_CFLAGS)
9300 AC_SUBST(CLUCENE_LIBS)
9302 dnl ===================================================================
9303 dnl Check for system expat
9304 dnl ===================================================================
9305 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9307 dnl ===================================================================
9308 dnl Check for system xmlsec
9309 dnl ===================================================================
9310 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9312 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9313 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9314     ENABLE_EOT="TRUE"
9315     AC_DEFINE([ENABLE_EOT])
9316     AC_MSG_RESULT([yes])
9318     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9319 else
9320     ENABLE_EOT=
9321     AC_MSG_RESULT([no])
9323 AC_SUBST([ENABLE_EOT])
9325 dnl ===================================================================
9326 dnl Check for DLP libs
9327 dnl ===================================================================
9328 AS_IF([test "$COM" = "MSC"],
9329       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9330       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9332 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9334 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9336 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9338 AS_IF([test "$COM" = "MSC"],
9339       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9340       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9342 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9344 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9346 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9347 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9349 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9351 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9353 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9355 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9356 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9358 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9359 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9361 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9363 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9364 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9366 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9368 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9370 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9372 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9374 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9375 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9377 dnl ===================================================================
9378 dnl Check for system lcms2
9379 dnl ===================================================================
9380 if test "$with_system_lcms2" != "yes"; then
9381     SYSTEM_LCMS2=
9383 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9384 if test "$GCC" = "yes"; then
9385     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9387 if test "$COM" = "MSC"; then # override the above
9388     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9391 dnl ===================================================================
9392 dnl Check for system cppunit
9393 dnl ===================================================================
9394 if test "$_os" != "Android" ; then
9395     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9398 dnl ===================================================================
9399 dnl Check whether freetype is available
9400 dnl ===================================================================
9401 if test "$using_freetype_fontconfig" = yes; then
9402     AC_MSG_CHECKING([which freetype to use])
9404 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9405     AC_MSG_RESULT([external])
9406     # FreeType has 3 different kinds of versions
9407     # * release, like 2.4.10
9408     # * libtool, like 13.0.7 (this what pkg-config returns)
9409     # * soname
9410     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9411     #
9412     # 9.9.3 is 2.2.0
9413     # When the minimal version is at least 2.8.1, remove Skia's check down below.
9414     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9415     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9416     FilterLibs "${FREETYPE_LIBS}"
9417     FREETYPE_LIBS="${filteredlibs}"
9418     SYSTEM_FREETYPE=TRUE
9419 elif test "$using_freetype_fontconfig" = yes; then
9420     AC_MSG_RESULT([internal])
9421     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9422     if test "x$ac_config_site_64bit_host" = xYES; then
9423         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9424     else
9425         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9426     fi
9427     BUILD_TYPE="$BUILD_TYPE FREETYPE"
9429 AC_SUBST(FREETYPE_CFLAGS)
9430 AC_SUBST(FREETYPE_LIBS)
9431 AC_SUBST([SYSTEM_FREETYPE])
9433 # ===================================================================
9434 # Check for system libxslt
9435 # to prevent incompatibilities between internal libxml2 and external libxslt,
9436 # or vice versa, use with_system_libxml here
9437 # ===================================================================
9438 if test "$with_system_libxml" = "auto"; then
9439     case "$_os" in
9440     WINNT|iOS|Android)
9441         with_system_libxml="$with_system_libs"
9442         ;;
9443     Emscripten)
9444         with_system_libxml=no
9445         ;;
9446     *)
9447         if test "$enable_fuzzers" != "yes"; then
9448             with_system_libxml=yes
9449         else
9450             with_system_libxml=no
9451         fi
9452         ;;
9453     esac
9456 AC_MSG_CHECKING([which libxslt to use])
9457 if test "$with_system_libxml" = "yes"; then
9458     AC_MSG_RESULT([external])
9459     SYSTEM_LIBXSLT=TRUE
9460     if test "$_os" = "Darwin"; then
9461         dnl make sure to use SDK path
9462         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9463         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9464         dnl omit -L/usr/lib
9465         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9466         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9467     else
9468         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9469         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9470         FilterLibs "${LIBXSLT_LIBS}"
9471         LIBXSLT_LIBS="${filteredlibs}"
9472         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9473         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9474         FilterLibs "${LIBEXSLT_LIBS}"
9475         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9476     fi
9478     dnl Check for xsltproc
9479     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9480     if test "$XSLTPROC" = "no"; then
9481         AC_MSG_ERROR([xsltproc is required])
9482     fi
9483 else
9484     AC_MSG_RESULT([internal])
9485     SYSTEM_LIBXSLT=
9486     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9488 AC_SUBST(SYSTEM_LIBXSLT)
9489 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9490     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9492 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9494 AC_SUBST(LIBEXSLT_CFLAGS)
9495 AC_SUBST(LIBEXSLT_LIBS)
9496 AC_SUBST(LIBXSLT_CFLAGS)
9497 AC_SUBST(LIBXSLT_LIBS)
9498 AC_SUBST(XSLTPROC)
9500 # ===================================================================
9501 # Check for system libxml
9502 # ===================================================================
9503 AC_MSG_CHECKING([which libxml to use])
9504 if test "$with_system_libxml" = "yes"; then
9505     AC_MSG_RESULT([external])
9506     SYSTEM_LIBXML=TRUE
9507     if test "$_os" = "Darwin"; then
9508         dnl make sure to use SDK path
9509         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9510         dnl omit -L/usr/lib
9511         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9512     elif test $_os = iOS; then
9513         dnl make sure to use SDK path
9514         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9515         LIBXML_CFLAGS="-I$usr/include/libxml2"
9516         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9517     else
9518         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9519         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9520         FilterLibs "${LIBXML_LIBS}"
9521         LIBXML_LIBS="${filteredlibs}"
9522     fi
9524     dnl Check for xmllint
9525     AC_PATH_PROG(XMLLINT, xmllint, no)
9526     if test "$XMLLINT" = "no"; then
9527         AC_MSG_ERROR([xmllint is required])
9528     fi
9529 else
9530     AC_MSG_RESULT([internal])
9531     SYSTEM_LIBXML=
9532     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9533     if test "$COM" = "MSC"; then
9534         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9535     fi
9536     if test "$COM" = "MSC"; then
9537         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9538     else
9539         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9540         if test "$_os" = Android; then
9541             LIBXML_LIBS="$LIBXML_LIBS -lm"
9542         fi
9543     fi
9544     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9546 AC_SUBST(SYSTEM_LIBXML)
9547 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9548     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9550 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9551 AC_SUBST(LIBXML_CFLAGS)
9552 AC_SUBST(LIBXML_LIBS)
9553 AC_SUBST(XMLLINT)
9555 # =====================================================================
9556 # Checking for a Python interpreter with version >= 3.3.
9557 # Optionally user can pass an option to configure, i. e.
9558 # ./configure PYTHON=/usr/bin/python
9559 # =====================================================================
9560 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9561     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9562     # unless PYTHON is defined as above which allows 'system'
9563     enable_python=internal
9565 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9566     if test -n "$PYTHON"; then
9567         PYTHON_FOR_BUILD=$PYTHON
9568     else
9569         # This allows a lack of system python with no error, we use internal one in that case.
9570         AM_PATH_PYTHON([3.3],, [:])
9571         # Clean PYTHON_VERSION checked below if cross-compiling
9572         PYTHON_VERSION=""
9573         if test "$PYTHON" != ":"; then
9574             PYTHON_FOR_BUILD=$PYTHON
9575         fi
9576     fi
9578 AC_SUBST(PYTHON_FOR_BUILD)
9580 # Checks for Python to use for Pyuno
9581 AC_MSG_CHECKING([which Python to use for Pyuno])
9582 case "$enable_python" in
9583 no|disable)
9584     if test -z $PYTHON_FOR_BUILD; then
9585         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9586         # requirement from the choice whether to include Python stuff in the installer, but why
9587         # bother?
9588         if test "$cross_compiling" = yes; then
9589             enable_python=system
9590         else
9591             AC_MSG_ERROR([Python is required at build time.])
9592         fi
9593     fi
9594     enable_python=no
9595     AC_MSG_RESULT([none])
9596     ;;
9597 ""|yes|auto)
9598     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9599         AC_MSG_RESULT([no, overridden by --disable-scripting])
9600         enable_python=no
9601     elif test $build_os = cygwin; then
9602         dnl When building on Windows we don't attempt to use any installed
9603         dnl "system"  Python.
9604         AC_MSG_RESULT([fully internal])
9605         enable_python=internal
9606     elif test "$cross_compiling" = yes; then
9607         AC_MSG_RESULT([system])
9608         enable_python=system
9609     else
9610         # Unset variables set by the above AM_PATH_PYTHON so that
9611         # we actually do check anew.
9612         AC_MSG_RESULT([])
9613         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
9614         AM_PATH_PYTHON([3.3],, [:])
9615         AC_MSG_CHECKING([which Python to use for Pyuno])
9616         if test "$PYTHON" = ":"; then
9617             if test -z "$PYTHON_FOR_BUILD"; then
9618                 AC_MSG_RESULT([fully internal])
9619             else
9620                 AC_MSG_RESULT([internal])
9621             fi
9622             enable_python=internal
9623         else
9624             AC_MSG_RESULT([system])
9625             enable_python=system
9626         fi
9627     fi
9628     ;;
9629 internal)
9630     AC_MSG_RESULT([internal])
9631     ;;
9632 fully-internal)
9633     AC_MSG_RESULT([fully internal])
9634     enable_python=internal
9635     ;;
9636 system)
9637     AC_MSG_RESULT([system])
9638     if test "$_os" = Darwin -a -z "$PYTHON"; then
9639         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9640     fi
9641     ;;
9643     AC_MSG_ERROR([Incorrect --enable-python option])
9644     ;;
9645 esac
9647 if test $enable_python != no; then
9648     BUILD_TYPE="$BUILD_TYPE PYUNO"
9651 if test $enable_python = system; then
9652     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9653         # Fallback: Accept these in the environment, or as set above
9654         # for MacOSX.
9655         :
9656     elif test "$cross_compiling" != yes; then
9657         # Unset variables set by the above AM_PATH_PYTHON so that
9658         # we actually do check anew.
9659         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
9660         # This causes an error if no python command is found
9661         AM_PATH_PYTHON([3.3])
9662         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9663         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9664         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9665         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9666         if test -z "$PKG_CONFIG"; then
9667             PYTHON_CFLAGS="-I$python_include"
9668             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9669         elif $PKG_CONFIG --exists python-$python_version-embed; then
9670             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9671             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9672         elif $PKG_CONFIG --exists python-$python_version; then
9673             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9674             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9675         else
9676             PYTHON_CFLAGS="-I$python_include"
9677             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9678         fi
9679         FilterLibs "${PYTHON_LIBS}"
9680         PYTHON_LIBS="${filteredlibs}"
9681     else
9682         dnl How to find out the cross-compilation Python installation path?
9683         AC_MSG_CHECKING([for python version])
9684         AS_IF([test -n "$PYTHON_VERSION"],
9685               [AC_MSG_RESULT([$PYTHON_VERSION])],
9686               [AC_MSG_RESULT([not found])
9687                AC_MSG_ERROR([no usable python found])])
9688         test -n "$PYTHON_CFLAGS" && break
9689     fi
9691     dnl Check if the headers really work
9692     save_CPPFLAGS="$CPPFLAGS"
9693     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9694     AC_CHECK_HEADER(Python.h)
9695     CPPFLAGS="$save_CPPFLAGS"
9697     # let the PYTHON_FOR_BUILD match the same python installation that
9698     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9699     # better for PythonTests.
9700     PYTHON_FOR_BUILD=$PYTHON
9703 if test "$with_lxml" != no; then
9704     if test -z "$PYTHON_FOR_BUILD"; then
9705         case $build_os in
9706             cygwin)
9707                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9708                 ;;
9709             *)
9710                 if test "$cross_compiling" != yes ; then
9711                     BUILD_TYPE="$BUILD_TYPE LXML"
9712                 fi
9713                 ;;
9714         esac
9715     else
9716         AC_MSG_CHECKING([for python lxml])
9717         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9718             AC_MSG_RESULT([yes])
9719         else
9720             case $build_os in
9721                 cygwin)
9722                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9723                     ;;
9724                 *)
9725                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9726                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9727                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9728                         else
9729                             BUILD_TYPE="$BUILD_TYPE LXML"
9730                             AC_MSG_RESULT([no, using internal lxml])
9731                         fi
9732                     else
9733                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9734                     fi
9735                     ;;
9736             esac
9737         fi
9738     fi
9741 dnl By now enable_python should be "system", "internal" or "no"
9742 case $enable_python in
9743 system)
9744     SYSTEM_PYTHON=TRUE
9746     if test "x$ac_cv_header_Python_h" != "xyes"; then
9747        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9748     fi
9750     AC_LANG_PUSH(C)
9751     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9752     AC_MSG_CHECKING([for correct python library version])
9753        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9754 #include <Python.h>
9756 int main(int argc, char **argv) {
9757    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9758    else return 1;
9760        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9761     AC_LANG_POP(C)
9763     dnl FIXME Check if the Python library can be linked with, too?
9764     ;;
9766 internal)
9767     SYSTEM_PYTHON=
9768     PYTHON_VERSION_MAJOR=3
9769     PYTHON_VERSION_MINOR=8
9770     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9771     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9772         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9773     fi
9774     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9775     BUILD_TYPE="$BUILD_TYPE PYTHON"
9776     if test "$OS" = LINUX -o "$OS" = WNT ; then
9777         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9778     fi
9779     # Embedded Python dies without Home set
9780     if test "$HOME" = ""; then
9781         export HOME=""
9782     fi
9783     ;;
9785     DISABLE_PYTHON=TRUE
9786     SYSTEM_PYTHON=
9787     ;;
9789     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9790     ;;
9791 esac
9793 AC_SUBST(DISABLE_PYTHON)
9794 AC_SUBST(SYSTEM_PYTHON)
9795 AC_SUBST(PYTHON_CFLAGS)
9796 AC_SUBST(PYTHON_LIBS)
9797 AC_SUBST(PYTHON_VERSION)
9798 AC_SUBST(PYTHON_VERSION_MAJOR)
9799 AC_SUBST(PYTHON_VERSION_MINOR)
9801 AC_MSG_CHECKING([whether to build LibreLogo])
9802 case "$enable_python" in
9803 no|disable)
9804     AC_MSG_RESULT([no; Python disabled])
9805     ;;
9807     if test "${enable_librelogo}" = "no"; then
9808         AC_MSG_RESULT([no])
9809     else
9810         AC_MSG_RESULT([yes])
9811         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9812         AC_DEFINE([ENABLE_LIBRELOGO],1)
9813     fi
9814     ;;
9815 esac
9816 AC_SUBST(ENABLE_LIBRELOGO)
9818 ENABLE_MARIADBC=
9819 MARIADBC_MAJOR=1
9820 MARIADBC_MINOR=0
9821 MARIADBC_MICRO=2
9822 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9823 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9824     ENABLE_MARIADBC=TRUE
9825     AC_MSG_RESULT([yes])
9826     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9827 else
9828     AC_MSG_RESULT([no])
9830 AC_SUBST(ENABLE_MARIADBC)
9831 AC_SUBST(MARIADBC_MAJOR)
9832 AC_SUBST(MARIADBC_MINOR)
9833 AC_SUBST(MARIADBC_MICRO)
9835 if test "$ENABLE_MARIADBC" = "TRUE"; then
9836     dnl ===================================================================
9837     dnl Check for system MariaDB
9838     dnl ===================================================================
9839     AC_MSG_CHECKING([which MariaDB to use])
9840     if test "$with_system_mariadb" = "yes"; then
9841         AC_MSG_RESULT([external])
9842         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9843         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9844         if test -z "$MARIADBCONFIG"; then
9845             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9846             if test -z "$MARIADBCONFIG"; then
9847                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9848                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9849             fi
9850         fi
9851         AC_MSG_CHECKING([MariaDB version])
9852         MARIADB_VERSION=`$MARIADBCONFIG --version`
9853         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9854         if test "$MARIADB_MAJOR" -ge "5"; then
9855             AC_MSG_RESULT([OK])
9856         else
9857             AC_MSG_ERROR([too old, use 5.0.x or later])
9858         fi
9859         AC_MSG_CHECKING([for MariaDB Client library])
9860         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9861         if test "$COM_IS_CLANG" = TRUE; then
9862             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9863         fi
9864         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9865         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9866         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9867         dnl linux32:
9868         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9869             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9870             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9871                 | sed -e 's|/lib64/|/lib/|')
9872         fi
9873         FilterLibs "${MARIADB_LIBS}"
9874         MARIADB_LIBS="${filteredlibs}"
9875         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9876         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9877         if test "$enable_bundle_mariadb" = "yes"; then
9878             AC_MSG_RESULT([yes])
9879             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9880             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9882 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9884 /g' | grep -E '(mysqlclient|mariadb)')
9885             if test "$_os" = "Darwin"; then
9886                 LIBMARIADB=${LIBMARIADB}.dylib
9887             elif test "$_os" = "WINNT"; then
9888                 LIBMARIADB=${LIBMARIADB}.dll
9889             else
9890                 LIBMARIADB=${LIBMARIADB}.so
9891             fi
9892             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9893             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9894             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9895                 AC_MSG_RESULT([found.])
9896                 PathFormat "$LIBMARIADB_PATH"
9897                 LIBMARIADB_PATH="$formatted_path"
9898             else
9899                 AC_MSG_ERROR([not found.])
9900             fi
9901         else
9902             AC_MSG_RESULT([no])
9903             BUNDLE_MARIADB_CONNECTOR_C=
9904         fi
9905     else
9906         AC_MSG_RESULT([internal])
9907         SYSTEM_MARIADB_CONNECTOR_C=
9908         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9909         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9910         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9911     fi
9913     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9914     AC_SUBST(MARIADB_CFLAGS)
9915     AC_SUBST(MARIADB_LIBS)
9916     AC_SUBST(LIBMARIADB)
9917     AC_SUBST(LIBMARIADB_PATH)
9918     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9921 dnl ===================================================================
9922 dnl Check for system hsqldb
9923 dnl ===================================================================
9924 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9925     HSQLDB_USE_JDBC_4_1=
9926     AC_MSG_CHECKING([which hsqldb to use])
9927     if test "$with_system_hsqldb" = "yes"; then
9928         AC_MSG_RESULT([external])
9929         SYSTEM_HSQLDB=TRUE
9930         if test -z $HSQLDB_JAR; then
9931             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9932         fi
9933         if ! test -f $HSQLDB_JAR; then
9934                AC_MSG_ERROR(hsqldb.jar not found.)
9935         fi
9936         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9937         export HSQLDB_JAR
9938         if $PERL -e \
9939            'use Archive::Zip;
9940             my $file = "$ENV{'HSQLDB_JAR'}";
9941             my $zip = Archive::Zip->new( $file );
9942             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9943             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9944             {
9945                 push @l, split(/\n/, $mf);
9946                 foreach my $line (@l)
9947                 {
9948                     if ($line =~ m/Specification-Version:/)
9949                     {
9950                         ($t, $version) = split (/:/,$line);
9951                         $version =~ s/^\s//;
9952                         ($a, $b, $c, $d) = split (/\./,$version);
9953                         if ($c == "0" && $d > "8")
9954                         {
9955                             exit 0;
9956                         }
9957                         else
9958                         {
9959                             exit 1;
9960                         }
9961                     }
9962                 }
9963             }
9964             else
9965             {
9966                 exit 1;
9967             }'; then
9968             AC_MSG_RESULT([yes])
9969         else
9970             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9971         fi
9972     else
9973         AC_MSG_RESULT([internal])
9974         SYSTEM_HSQLDB=
9975         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9976         NEED_ANT=TRUE
9977         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9978         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9979         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9980             AC_MSG_RESULT([yes])
9981             HSQLDB_USE_JDBC_4_1=TRUE
9982         else
9983             AC_MSG_RESULT([no])
9984         fi
9985     fi
9986 else
9987     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9988         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9989     fi
9991 AC_SUBST(SYSTEM_HSQLDB)
9992 AC_SUBST(HSQLDB_JAR)
9993 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9995 dnl ===================================================================
9996 dnl Check for PostgreSQL stuff
9997 dnl ===================================================================
9998 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9999 if test "x$enable_postgresql_sdbc" != "xno"; then
10000     AC_MSG_RESULT([yes])
10001     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10003     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10004         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10005     fi
10006     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10007         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10008     fi
10010     postgres_interface=""
10011     if test "$with_system_postgresql" = "yes"; then
10012         postgres_interface="external PostgreSQL"
10013         SYSTEM_POSTGRESQL=TRUE
10014         if test "$_os" = Darwin; then
10015             supp_path=''
10016             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10017                 pg_supp_path="$P_SEP$d$pg_supp_path"
10018             done
10019         fi
10020         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10021         if test -n "$PGCONFIG"; then
10022             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10023             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10024         else
10025             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10026               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10027               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10028             ],[
10029               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10030             ])
10031         fi
10032         FilterLibs "${POSTGRESQL_LIB}"
10033         POSTGRESQL_LIB="${filteredlibs}"
10034     else
10035         # if/when anything else than PostgreSQL uses Kerberos,
10036         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10037         WITH_KRB5=
10038         WITH_GSSAPI=
10039         case "$_os" in
10040         Darwin)
10041             # macOS has system MIT Kerberos 5 since 10.4
10042             if test "$with_krb5" != "no"; then
10043                 WITH_KRB5=TRUE
10044                 save_LIBS=$LIBS
10045                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10046                 # that the libraries where these functions are located on macOS will change, is it?
10047                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10048                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10049                 KRB5_LIBS=$LIBS
10050                 LIBS=$save_LIBS
10051                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10052                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10053                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10054                 LIBS=$save_LIBS
10055             fi
10056             if test "$with_gssapi" != "no"; then
10057                 WITH_GSSAPI=TRUE
10058                 save_LIBS=$LIBS
10059                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10060                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10061                 GSSAPI_LIBS=$LIBS
10062                 LIBS=$save_LIBS
10063             fi
10064             ;;
10065         WINNT)
10066             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10067                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10068             fi
10069             ;;
10070         Linux|GNU|*BSD|DragonFly)
10071             if test "$with_krb5" != "no"; then
10072                 WITH_KRB5=TRUE
10073                 save_LIBS=$LIBS
10074                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10075                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10076                 KRB5_LIBS=$LIBS
10077                 LIBS=$save_LIBS
10078                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10079                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10080                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10081                 LIBS=$save_LIBS
10082             fi
10083             if test "$with_gssapi" != "no"; then
10084                 WITH_GSSAPI=TRUE
10085                 save_LIBS=$LIBS
10086                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10087                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10088                 GSSAPI_LIBS=$LIBS
10089                 LIBS=$save_LIBS
10090             fi
10091             ;;
10092         *)
10093             if test "$with_krb5" = "yes"; then
10094                 WITH_KRB5=TRUE
10095                 save_LIBS=$LIBS
10096                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10097                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10098                 KRB5_LIBS=$LIBS
10099                 LIBS=$save_LIBS
10100                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10101                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10102                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10103                 LIBS=$save_LIBS
10104             fi
10105             if test "$with_gssapi" = "yes"; then
10106                 WITH_GSSAPI=TRUE
10107                 save_LIBS=$LIBS
10108                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10109                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10110                 LIBS=$save_LIBS
10111                 GSSAPI_LIBS=$LIBS
10112             fi
10113         esac
10115         if test -n "$with_libpq_path"; then
10116             SYSTEM_POSTGRESQL=TRUE
10117             postgres_interface="external libpq"
10118             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10119             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10120         else
10121             SYSTEM_POSTGRESQL=
10122             postgres_interface="internal"
10123             POSTGRESQL_LIB=""
10124             POSTGRESQL_INC="%OVERRIDE_ME%"
10125             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10126         fi
10127     fi
10129     AC_MSG_CHECKING([PostgreSQL C interface])
10130     AC_MSG_RESULT([$postgres_interface])
10132     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10133         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10134         save_CFLAGS=$CFLAGS
10135         save_CPPFLAGS=$CPPFLAGS
10136         save_LIBS=$LIBS
10137         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10138         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10139         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10140         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10141             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10142         CFLAGS=$save_CFLAGS
10143         CPPFLAGS=$save_CPPFLAGS
10144         LIBS=$save_LIBS
10145     fi
10146     BUILD_POSTGRESQL_SDBC=TRUE
10147 else
10148     AC_MSG_RESULT([no])
10150 AC_SUBST(WITH_KRB5)
10151 AC_SUBST(WITH_GSSAPI)
10152 AC_SUBST(GSSAPI_LIBS)
10153 AC_SUBST(KRB5_LIBS)
10154 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10155 AC_SUBST(SYSTEM_POSTGRESQL)
10156 AC_SUBST(POSTGRESQL_INC)
10157 AC_SUBST(POSTGRESQL_LIB)
10159 dnl ===================================================================
10160 dnl Check for Firebird stuff
10161 dnl ===================================================================
10162 ENABLE_FIREBIRD_SDBC=
10163 if test "$enable_firebird_sdbc" = "yes" ; then
10164     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10166     dnl ===================================================================
10167     dnl Check for system Firebird
10168     dnl ===================================================================
10169     AC_MSG_CHECKING([which Firebird to use])
10170     if test "$with_system_firebird" = "yes"; then
10171         AC_MSG_RESULT([external])
10172         SYSTEM_FIREBIRD=TRUE
10173         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10174         if test -z "$FIREBIRDCONFIG"; then
10175             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10176             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10177                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10178             ])
10179             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10180         else
10181             AC_MSG_NOTICE([fb_config found])
10182             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10183             AC_MSG_CHECKING([for Firebird Client library])
10184             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10185             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10186             FilterLibs "${FIREBIRD_LIBS}"
10187             FIREBIRD_LIBS="${filteredlibs}"
10188         fi
10189         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10190         AC_MSG_CHECKING([Firebird version])
10191         if test -n "${FIREBIRD_VERSION}"; then
10192             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10193             if test "$FIREBIRD_MAJOR" -ge "3"; then
10194                 AC_MSG_RESULT([OK])
10195             else
10196                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10197             fi
10198         else
10199             save_CFLAGS="${CFLAGS}"
10200             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10201             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10202 #if defined(FB_API_VER) && FB_API_VER == 30
10203 int fb_api_is_30(void) { return 0; }
10204 #else
10205 #error "Wrong Firebird API version"
10206 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10207             CFLAGS="$save_CFLAGS"
10208         fi
10209         ENABLE_FIREBIRD_SDBC=TRUE
10210         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10211     elif test "$enable_database_connectivity" = no; then
10212         AC_MSG_RESULT([none])
10213     elif test "$cross_compiling" = "yes"; then
10214         AC_MSG_RESULT([none])
10215     else
10216         dnl Embedded Firebird has version 3.0
10217         dnl We need libatomic_ops for any non X86/X64 system
10218         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10219             dnl ===================================================================
10220             dnl Check for system libatomic_ops
10221             dnl ===================================================================
10222             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10223             if test "$with_system_libatomic_ops" = "yes"; then
10224                 SYSTEM_LIBATOMIC_OPS=TRUE
10225                 AC_CHECK_HEADERS(atomic_ops.h, [],
10226                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10227             else
10228                 SYSTEM_LIBATOMIC_OPS=
10229                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10230                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10231                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10232             fi
10233         fi
10235         AC_MSG_RESULT([internal])
10236         SYSTEM_FIREBIRD=
10237         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10238         FIREBIRD_LIBS="-lfbclient"
10240         if test "$with_system_libtommath" = "yes"; then
10241             SYSTEM_LIBTOMMATH=TRUE
10242             dnl check for tommath presence
10243             save_LIBS=$LIBS
10244             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10245             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10246             LIBS=$save_LIBS
10247         else
10248             SYSTEM_LIBTOMMATH=
10249             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10250             LIBTOMMATH_LIBS="-ltommath"
10251             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10252         fi
10254         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10255         ENABLE_FIREBIRD_SDBC=TRUE
10256         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10257     fi
10259 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10260 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10261 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10262 AC_SUBST(LIBATOMIC_OPS_LIBS)
10263 AC_SUBST(SYSTEM_FIREBIRD)
10264 AC_SUBST(FIREBIRD_CFLAGS)
10265 AC_SUBST(FIREBIRD_LIBS)
10266 AC_SUBST(SYSTEM_LIBTOMMATH)
10267 AC_SUBST(LIBTOMMATH_CFLAGS)
10268 AC_SUBST(LIBTOMMATH_LIBS)
10270 dnl ===================================================================
10271 dnl Check for system curl
10272 dnl ===================================================================
10273 AC_MSG_CHECKING([which libcurl to use])
10274 if test "$with_system_curl" = "auto"; then
10275     with_system_curl="$with_system_libs"
10278 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10279     AC_MSG_RESULT([external])
10280     SYSTEM_CURL=TRUE
10282     # First try PKGCONFIG and then fall back
10283     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10285     if test -n "$CURL_PKG_ERRORS"; then
10286         AC_PATH_PROG(CURLCONFIG, curl-config)
10287         if test -z "$CURLCONFIG"; then
10288             AC_MSG_ERROR([curl development files not found])
10289         fi
10290         CURL_LIBS=`$CURLCONFIG --libs`
10291         FilterLibs "${CURL_LIBS}"
10292         CURL_LIBS="${filteredlibs}"
10293         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10294         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10296         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10297         case $curl_version in
10298         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10299         dnl so they need to be doubled to end up in the configure script
10300         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10301             AC_MSG_RESULT([yes])
10302             ;;
10303         *)
10304             AC_MSG_ERROR([no, you have $curl_version])
10305             ;;
10306         esac
10307     fi
10309     ENABLE_CURL=TRUE
10310 elif test "$enable_curl" = "no"; then
10311     AC_MSG_RESULT([none])
10312 else
10313     AC_MSG_RESULT([internal])
10314     SYSTEM_CURL=
10315     BUILD_TYPE="$BUILD_TYPE CURL"
10316     ENABLE_CURL=TRUE
10318 AC_SUBST(SYSTEM_CURL)
10319 AC_SUBST(CURL_CFLAGS)
10320 AC_SUBST(CURL_LIBS)
10321 AC_SUBST(ENABLE_CURL)
10323 dnl ===================================================================
10324 dnl Check for system boost
10325 dnl ===================================================================
10326 AC_MSG_CHECKING([which boost to use])
10327 if test "$with_system_boost" = "yes"; then
10328     AC_MSG_RESULT([external])
10329     SYSTEM_BOOST=TRUE
10330     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10331     AX_BOOST_DATE_TIME
10332     AX_BOOST_FILESYSTEM
10333     AX_BOOST_IOSTREAMS
10334     AX_BOOST_LOCALE
10335     AC_LANG_PUSH([C++])
10336     save_CXXFLAGS=$CXXFLAGS
10337     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10338     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10339        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10340     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10341        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10342     CXXFLAGS=$save_CXXFLAGS
10343     AC_LANG_POP([C++])
10344     # this is in m4/ax_boost_base.m4
10345     FilterLibs "${BOOST_LDFLAGS}"
10346     BOOST_LDFLAGS="${filteredlibs}"
10347 else
10348     AC_MSG_RESULT([internal])
10349     BUILD_TYPE="$BUILD_TYPE BOOST"
10350     SYSTEM_BOOST=
10351     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10352         # use warning-suppressing wrapper headers
10353         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10354     else
10355         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10356     fi
10358 AC_SUBST(SYSTEM_BOOST)
10360 dnl ===================================================================
10361 dnl Check for system mdds
10362 dnl ===================================================================
10363 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10365 dnl ===================================================================
10366 dnl Check for system cuckoo
10367 dnl ===================================================================
10368 AC_MSG_CHECKING([which cuckoo to use])
10369 if test "$with_system_cuckoo" = "yes"; then
10370     AC_MSG_RESULT([external])
10371     SYSTEM_CUCKOO=TRUE
10372     AC_LANG_PUSH([C++])
10373     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10374        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10375     AC_LANG_POP([C++])
10376 else
10377     AC_MSG_RESULT([internal])
10378     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10379     SYSTEM_CUCKOO=
10380     CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10382 AC_SUBST([CUCKOO_CFLAGS])
10383 AC_SUBST([SYSTEM_CUCKOO])
10385 dnl ===================================================================
10386 dnl Check for system glm
10387 dnl ===================================================================
10388 AC_MSG_CHECKING([which glm to use])
10389 if test "$with_system_glm" = "yes"; then
10390     AC_MSG_RESULT([external])
10391     SYSTEM_GLM=TRUE
10392     AC_LANG_PUSH([C++])
10393     AC_CHECK_HEADER([glm/glm.hpp], [],
10394        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10395     AC_LANG_POP([C++])
10396 else
10397     AC_MSG_RESULT([internal])
10398     BUILD_TYPE="$BUILD_TYPE GLM"
10399     SYSTEM_GLM=
10400     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10402 AC_SUBST([GLM_CFLAGS])
10403 AC_SUBST([SYSTEM_GLM])
10405 dnl ===================================================================
10406 dnl Check for system odbc
10407 dnl ===================================================================
10408 AC_MSG_CHECKING([which odbc headers to use])
10409 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
10410     AC_MSG_RESULT([external])
10411     SYSTEM_ODBC_HEADERS=TRUE
10413     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10414         save_CPPFLAGS=$CPPFLAGS
10415         find_winsdk
10416         PathFormat "$winsdktest"
10417         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"
10418         AC_CHECK_HEADER(sqlext.h, [],
10419             [AC_MSG_ERROR(odbc not found. install odbc)],
10420             [#include <windows.h>])
10421         CPPFLAGS=$save_CPPFLAGS
10422     else
10423         AC_CHECK_HEADER(sqlext.h, [],
10424             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10425     fi
10426 elif test "$enable_database_connectivity" = no; then
10427     AC_MSG_RESULT([none])
10428 else
10429     AC_MSG_RESULT([internal])
10430     SYSTEM_ODBC_HEADERS=
10432 AC_SUBST(SYSTEM_ODBC_HEADERS)
10434 dnl ===================================================================
10435 dnl Check for system NSS
10436 dnl ===================================================================
10437 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10438     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10439     AC_DEFINE(HAVE_FEATURE_NSS)
10440     ENABLE_NSS=TRUE
10441 elif test $_os != iOS ; then
10442     with_tls=openssl
10444 AC_SUBST(ENABLE_NSS)
10446 dnl ===================================================================
10447 dnl Enable LDAP support
10448 dnl ===================================================================
10450 if test "$test_openldap" = yes; then
10451     AC_MSG_CHECKING([whether to enable LDAP support])
10452     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10453         AC_MSG_RESULT([yes])
10454         ENABLE_LDAP=TRUE
10455     else
10456         if test "$enable_ldap" != "yes"; then
10457             AC_MSG_RESULT([no])
10458         else
10459             AC_MSG_RESULT([no (needs NSS or system openldap)])
10460         fi
10461     fi
10463 dnl ===================================================================
10464 dnl Check for system openldap
10465 dnl ===================================================================
10467     if test "$ENABLE_LDAP" = TRUE; then
10468         AC_MSG_CHECKING([which openldap library to use])
10469         if test "$with_system_openldap" = yes; then
10470             AC_MSG_RESULT([external])
10471             SYSTEM_OPENLDAP=TRUE
10472             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10473             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10474             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10475         else
10476             AC_MSG_RESULT([internal])
10477             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10478         fi
10479     fi
10482 AC_SUBST(ENABLE_LDAP)
10483 AC_SUBST(SYSTEM_OPENLDAP)
10485 dnl ===================================================================
10486 dnl Check for TLS/SSL and cryptographic implementation to use
10487 dnl ===================================================================
10488 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10489 if test -n "$with_tls"; then
10490     case $with_tls in
10491     openssl)
10492         AC_DEFINE(USE_TLS_OPENSSL)
10493         TLS=OPENSSL
10494         AC_MSG_RESULT([$TLS])
10496         if test "$enable_openssl" != "yes"; then
10497             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10498         fi
10500         # warn that OpenSSL has been selected but not all TLS code has this option
10501         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10502         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10503         ;;
10504     nss)
10505         AC_DEFINE(USE_TLS_NSS)
10506         TLS=NSS
10507         AC_MSG_RESULT([$TLS])
10508         ;;
10509     no)
10510         AC_MSG_RESULT([none])
10511         AC_MSG_WARN([Skipping TLS/SSL])
10512         ;;
10513     *)
10514         AC_MSG_RESULT([])
10515         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10516 openssl - OpenSSL
10517 nss - Mozilla's Network Security Services (NSS)
10518     ])
10519         ;;
10520     esac
10521 else
10522     # default to using NSS, it results in smaller oox lib
10523     AC_DEFINE(USE_TLS_NSS)
10524     TLS=NSS
10525     AC_MSG_RESULT([$TLS])
10527 AC_SUBST(TLS)
10529 dnl ===================================================================
10530 dnl Check for system sane
10531 dnl ===================================================================
10532 AC_MSG_CHECKING([which sane header to use])
10533 if test "$with_system_sane" = "yes"; then
10534     AC_MSG_RESULT([external])
10535     AC_CHECK_HEADER(sane/sane.h, [],
10536       [AC_MSG_ERROR(sane not found. install sane)], [])
10537 else
10538     AC_MSG_RESULT([internal])
10539     BUILD_TYPE="$BUILD_TYPE SANE"
10542 dnl ===================================================================
10543 dnl Check for system icu
10544 dnl ===================================================================
10545 SYSTEM_GENBRK=
10546 SYSTEM_GENCCODE=
10547 SYSTEM_GENCMN=
10549 ICU_MAJOR=69
10550 ICU_MINOR=1
10551 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10552 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10553 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10554 AC_MSG_CHECKING([which icu to use])
10555 if test "$with_system_icu" = "yes"; then
10556     AC_MSG_RESULT([external])
10557     SYSTEM_ICU=TRUE
10558     AC_LANG_PUSH([C++])
10559     AC_MSG_CHECKING([for unicode/rbbi.h])
10560     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10561     AC_LANG_POP([C++])
10563     if test "$cross_compiling" != "yes"; then
10564         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10565         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10566         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10567         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10568     fi
10570     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10571         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10572         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10573         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10574         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10575         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10576             AC_MSG_RESULT([yes])
10577         else
10578             AC_MSG_RESULT([no])
10579             if test "$with_system_icu_for_build" != "force"; then
10580                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10581 You can use --with-system-icu-for-build=force to use it anyway.])
10582             fi
10583         fi
10584     fi
10586     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10587         # using the system icu tools can lead to version confusion, use the
10588         # ones from the build environment when cross-compiling
10589         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10590         if test -z "$SYSTEM_GENBRK"; then
10591             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10592         fi
10593         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10594         if test -z "$SYSTEM_GENCCODE"; then
10595             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10596         fi
10597         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10598         if test -z "$SYSTEM_GENCMN"; then
10599             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10600         fi
10601         if test "$ICU_MAJOR" -ge "49"; then
10602             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10603             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10604             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10605         else
10606             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10607             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10608             ICU_RECLASSIFIED_HEBREW_LETTER=
10609         fi
10610     fi
10612     if test "$cross_compiling" = "yes"; then
10613         if test "$ICU_MAJOR" -ge "50"; then
10614             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10615             ICU_MINOR=""
10616         fi
10617     fi
10618 else
10619     AC_MSG_RESULT([internal])
10620     SYSTEM_ICU=
10621     BUILD_TYPE="$BUILD_TYPE ICU"
10622     # surprisingly set these only for "internal" (to be used by various other
10623     # external libs): the system icu-config is quite unhelpful and spits out
10624     # dozens of weird flags and also default path -I/usr/include
10625     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10626     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10628 if test "$ICU_MAJOR" -ge "59"; then
10629     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10630     # with -std=c++11 but not all external libraries can be built with that,
10631     # for those use a bit-compatible typedef uint16_t UChar; see
10632     # icu/source/common/unicode/umachine.h
10633     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10634 else
10635     ICU_UCHAR_TYPE=""
10637 AC_SUBST(SYSTEM_ICU)
10638 AC_SUBST(SYSTEM_GENBRK)
10639 AC_SUBST(SYSTEM_GENCCODE)
10640 AC_SUBST(SYSTEM_GENCMN)
10641 AC_SUBST(ICU_MAJOR)
10642 AC_SUBST(ICU_MINOR)
10643 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10644 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10645 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10646 AC_SUBST(ICU_CFLAGS)
10647 AC_SUBST(ICU_LIBS)
10648 AC_SUBST(ICU_UCHAR_TYPE)
10650 dnl ==================================================================
10651 dnl Breakpad
10652 dnl ==================================================================
10653 DEFAULT_CRASHDUMP_VALUE="true"
10654 AC_MSG_CHECKING([whether to enable breakpad])
10655 if test "$enable_breakpad" != yes; then
10656     AC_MSG_RESULT([no])
10657 else
10658     AC_MSG_RESULT([yes])
10659     ENABLE_BREAKPAD="TRUE"
10660     AC_DEFINE(ENABLE_BREAKPAD)
10661     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10662     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10664     AC_MSG_CHECKING([for disable crash dump])
10665     if test "$enable_crashdump" = no; then
10666         DEFAULT_CRASHDUMP_VALUE="false"
10667         AC_MSG_RESULT([yes])
10668     else
10669        AC_MSG_RESULT([no])
10670     fi
10672     AC_MSG_CHECKING([for crashreport config])
10673     if test "$with_symbol_config" = "no"; then
10674         BREAKPAD_SYMBOL_CONFIG="invalid"
10675         AC_MSG_RESULT([no])
10676     else
10677         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10678         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10679         AC_MSG_RESULT([yes])
10680     fi
10681     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10683 AC_SUBST(ENABLE_BREAKPAD)
10684 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10686 dnl ==================================================================
10687 dnl libfuzzer
10688 dnl ==================================================================
10689 AC_MSG_CHECKING([whether to enable fuzzers])
10690 if test "$enable_fuzzers" != yes; then
10691     AC_MSG_RESULT([no])
10692 else
10693     if test -z $LIB_FUZZING_ENGINE; then
10694       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10695     fi
10696     AC_MSG_RESULT([yes])
10697     ENABLE_FUZZERS="TRUE"
10698     AC_DEFINE([ENABLE_FUZZERS],1)
10699     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10701 AC_SUBST(LIB_FUZZING_ENGINE)
10702 AC_SUBST(ENABLE_FUZZERS)
10704 dnl ===================================================================
10705 dnl Orcus
10706 dnl ===================================================================
10707 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10708 if test "$with_system_orcus" != "yes"; then
10709     if test "$SYSTEM_BOOST" = "TRUE"; then
10710         # ===========================================================
10711         # Determine if we are going to need to link with Boost.System
10712         # ===========================================================
10713         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10714         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10715         dnl in documentation has no effect.
10716         AC_MSG_CHECKING([if we need to link with Boost.System])
10717         AC_LANG_PUSH([C++])
10718         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10719                 @%:@include <boost/version.hpp>
10720             ]],[[
10721                 #if BOOST_VERSION >= 105000
10722                 #   error yes, we need to link with Boost.System
10723                 #endif
10724             ]])],[
10725                 AC_MSG_RESULT([no])
10726             ],[
10727                 AC_MSG_RESULT([yes])
10728                 AX_BOOST_SYSTEM
10729         ])
10730         AC_LANG_POP([C++])
10731     fi
10733 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10734 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10735 AC_SUBST([BOOST_SYSTEM_LIB])
10736 AC_SUBST(SYSTEM_LIBORCUS)
10738 dnl ===================================================================
10739 dnl HarfBuzz
10740 dnl ===================================================================
10741 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10742                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10743                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10745 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10746                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10747                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10749 if test "$COM" = "MSC"; then # override the above
10750     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10751     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10754 if test "$with_system_harfbuzz" = "yes"; then
10755     if test "$with_system_graphite" = "no"; then
10756         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10757     fi
10758     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10759     save_LIBS="$LIBS"
10760     save_CFLAGS="$CFLAGS"
10761     LIBS="$LIBS $HARFBUZZ_LIBS"
10762     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10763     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10764     LIBS="$save_LIBS"
10765     CFLAGS="$save_CFLAGS"
10766 else
10767     if test "$with_system_graphite" = "yes"; then
10768         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10769     fi
10772 if test "$USING_X11" = TRUE; then
10773     AC_PATH_X
10774     AC_PATH_XTRA
10775     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10777     if test -z "$x_includes"; then
10778         x_includes="default_x_includes"
10779     fi
10780     if test -z "$x_libraries"; then
10781         x_libraries="default_x_libraries"
10782     fi
10783     CFLAGS="$CFLAGS $X_CFLAGS"
10784     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10785     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10786 else
10787     x_includes="no_x_includes"
10788     x_libraries="no_x_libraries"
10791 if test "$USING_X11" = TRUE; then
10792     dnl ===================================================================
10793     dnl Check for extension headers
10794     dnl ===================================================================
10795     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10796      [#include <X11/extensions/shape.h>])
10798     # vcl needs ICE and SM
10799     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10800     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10801         [AC_MSG_ERROR(ICE library not found)])
10802     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10803     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10804         [AC_MSG_ERROR(SM library not found)])
10807 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10808     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10809     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10812 dnl ===================================================================
10813 dnl Check for system Xrender
10814 dnl ===================================================================
10815 AC_MSG_CHECKING([whether to use Xrender])
10816 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10817     AC_MSG_RESULT([yes])
10818     PKG_CHECK_MODULES(XRENDER, xrender)
10819     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10820     FilterLibs "${XRENDER_LIBS}"
10821     XRENDER_LIBS="${filteredlibs}"
10822     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10823       [AC_MSG_ERROR(libXrender not found or functional)], [])
10824     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10825       [AC_MSG_ERROR(Xrender not found. install X)], [])
10826 else
10827     AC_MSG_RESULT([no])
10829 AC_SUBST(XRENDER_CFLAGS)
10830 AC_SUBST(XRENDER_LIBS)
10832 dnl ===================================================================
10833 dnl Check for XRandr
10834 dnl ===================================================================
10835 AC_MSG_CHECKING([whether to enable RandR support])
10836 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10837     AC_MSG_RESULT([yes])
10838     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10839     if test "$ENABLE_RANDR" != "TRUE"; then
10840         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10841                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10842         XRANDR_CFLAGS=" "
10843         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10844           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10845         XRANDR_LIBS="-lXrandr "
10846         ENABLE_RANDR="TRUE"
10847     fi
10848     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10849     FilterLibs "${XRANDR_LIBS}"
10850     XRANDR_LIBS="${filteredlibs}"
10851 else
10852     ENABLE_RANDR=""
10853     AC_MSG_RESULT([no])
10855 AC_SUBST(XRANDR_CFLAGS)
10856 AC_SUBST(XRANDR_LIBS)
10857 AC_SUBST(ENABLE_RANDR)
10859 if test "$test_webdav" = yes; then
10860     if test -z "$with_webdav"; then
10861         WITH_WEBDAV=neon
10862         if test "$enable_mpl_subset" = yes; then
10863             WITH_WEBDAV=serf
10864         fi
10865     else
10866         WITH_WEBDAV="$with_webdav"
10867     fi
10870 AC_MSG_CHECKING([for webdav library])
10871 case "$WITH_WEBDAV" in
10872 serf)
10873     AC_MSG_RESULT([serf])
10874     # Check for system apr-util
10875     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10876                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10877                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10878     if test "$COM" = "MSC"; then
10879         APR_LIB_DIR="LibR"
10880         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10881         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10882     fi
10884     # Check for system serf
10885     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10886     ;;
10887 neon)
10888     AC_MSG_RESULT([neon])
10889     # Check for system neon
10890     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10891     if test "$with_system_neon" = "yes"; then
10892         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10893     else
10894         NEON_VERSION=0312
10895     fi
10896     AC_SUBST(NEON_VERSION)
10897     ;;
10899     AC_MSG_RESULT([none, disabled])
10900     WITH_WEBDAV=""
10901     ;;
10902 esac
10903 AC_SUBST(WITH_WEBDAV)
10905 dnl ===================================================================
10906 dnl Check for disabling cve_tests
10907 dnl ===================================================================
10908 AC_MSG_CHECKING([whether to execute CVE tests])
10909 # If not explicitly enabled or disabled, default
10910 if test -z "$enable_cve_tests"; then
10911     case "$OS" in
10912     WNT)
10913         # Default cves off for Windows with its wild and wonderful
10914         # variety of AV software kicking in and panicking
10915         enable_cve_tests=no
10916         ;;
10917     *)
10918         # otherwise yes
10919         enable_cve_tests=yes
10920         ;;
10921     esac
10923 if test "$enable_cve_tests" = "no"; then
10924     AC_MSG_RESULT([no])
10925     DISABLE_CVE_TESTS=TRUE
10926     AC_SUBST(DISABLE_CVE_TESTS)
10927 else
10928     AC_MSG_RESULT([yes])
10931 dnl ===================================================================
10932 dnl Check for enabling chart XShape tests
10933 dnl ===================================================================
10934 AC_MSG_CHECKING([whether to execute chart XShape tests])
10935 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10936     AC_MSG_RESULT([yes])
10937     ENABLE_CHART_TESTS=TRUE
10938     AC_SUBST(ENABLE_CHART_TESTS)
10939 else
10940     AC_MSG_RESULT([no])
10943 dnl ===================================================================
10944 dnl Check for system openssl
10945 dnl ===================================================================
10946 ENABLE_OPENSSL=
10947 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10948 if test "$enable_openssl" = "yes"; then
10949     AC_MSG_RESULT([no])
10950     ENABLE_OPENSSL=TRUE
10951     if test "$_os" = Darwin ; then
10952         # OpenSSL is deprecated when building for 10.7 or later.
10953         #
10954         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10955         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10957         with_system_openssl=no
10958         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10959     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10960             && test "$with_system_openssl" != "no"; then
10961         with_system_openssl=yes
10962         SYSTEM_OPENSSL=TRUE
10963         OPENSSL_CFLAGS=
10964         OPENSSL_LIBS="-lssl -lcrypto"
10965     else
10966         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10967     fi
10968     if test "$with_system_openssl" = "yes"; then
10969         AC_MSG_CHECKING([whether openssl supports SHA512])
10970         AC_LANG_PUSH([C])
10971         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10972             SHA512_CTX context;
10973 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10974         AC_LANG_POP(C)
10975     fi
10976 else
10977     AC_MSG_RESULT([yes])
10979     # warn that although OpenSSL is disabled, system libraries may depend on it
10980     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10981     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10984 AC_SUBST([ENABLE_OPENSSL])
10986 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10987     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10988         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10989         enable_cipher_openssl_backend=no
10990     else
10991         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10992     fi
10994 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10995 ENABLE_CIPHER_OPENSSL_BACKEND=
10996 if test "$enable_cipher_openssl_backend" = yes; then
10997     AC_MSG_RESULT([yes])
10998     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10999 else
11000     AC_MSG_RESULT([no])
11002 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11004 dnl ===================================================================
11005 dnl Select the crypto backends used by LO
11006 dnl ===================================================================
11008 if test "$build_crypto" = yes; then
11009     if test "$OS" = WNT; then
11010         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11011         AC_DEFINE([USE_CRYPTO_MSCAPI])
11012     elif test "$ENABLE_NSS" = TRUE; then
11013         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11014         AC_DEFINE([USE_CRYPTO_NSS])
11015     fi
11018 dnl ===================================================================
11019 dnl Check for building gnutls
11020 dnl ===================================================================
11021 AC_MSG_CHECKING([whether to use gnutls])
11022 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
11023     AC_MSG_RESULT([yes])
11024     AM_PATH_LIBGCRYPT()
11025     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
11026         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
11027                       available in the system to use as replacement.]]))
11028     FilterLibs "${LIBGCRYPT_LIBS}"
11029     LIBGCRYPT_LIBS="${filteredlibs}"
11030 else
11031     AC_MSG_RESULT([no])
11034 AC_SUBST([LIBGCRYPT_CFLAGS])
11035 AC_SUBST([LIBGCRYPT_LIBS])
11037 dnl ===================================================================
11038 dnl Check for system redland
11039 dnl ===================================================================
11040 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11041 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11042 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11043 if test "$with_system_redland" = "yes"; then
11044     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11045             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11046 else
11047     RAPTOR_MAJOR="0"
11048     RASQAL_MAJOR="3"
11049     REDLAND_MAJOR="0"
11051 AC_SUBST(RAPTOR_MAJOR)
11052 AC_SUBST(RASQAL_MAJOR)
11053 AC_SUBST(REDLAND_MAJOR)
11055 dnl ===================================================================
11056 dnl Check for system hunspell
11057 dnl ===================================================================
11058 AC_MSG_CHECKING([which libhunspell to use])
11059 if test "$with_system_hunspell" = "yes"; then
11060     AC_MSG_RESULT([external])
11061     SYSTEM_HUNSPELL=TRUE
11062     AC_LANG_PUSH([C++])
11063     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11064     if test "$HUNSPELL_PC" != "TRUE"; then
11065         AC_CHECK_HEADER(hunspell.hxx, [],
11066             [
11067             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11068             [AC_MSG_ERROR(hunspell headers not found.)], [])
11069             ], [])
11070         AC_CHECK_LIB([hunspell], [main], [:],
11071            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11072         HUNSPELL_LIBS=-lhunspell
11073     fi
11074     AC_LANG_POP([C++])
11075     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11076     FilterLibs "${HUNSPELL_LIBS}"
11077     HUNSPELL_LIBS="${filteredlibs}"
11078 else
11079     AC_MSG_RESULT([internal])
11080     SYSTEM_HUNSPELL=
11081     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11082     if test "$COM" = "MSC"; then
11083         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11084     else
11085         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11086     fi
11087     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11089 AC_SUBST(SYSTEM_HUNSPELL)
11090 AC_SUBST(HUNSPELL_CFLAGS)
11091 AC_SUBST(HUNSPELL_LIBS)
11093 dnl ===================================================================
11094 dnl Check for system zxing
11095 dnl ===================================================================
11096 AC_MSG_CHECKING([whether to use zxing])
11097 if test "$enable_zxing" = "no"; then
11098     AC_MSG_RESULT([no])
11099     ENABLE_ZXING=
11100     SYSTEM_ZXING=
11101 else
11102     AC_MSG_RESULT([yes])
11103     ENABLE_ZXING=TRUE
11104     AC_MSG_CHECKING([which libzxing to use])
11105     if test "$with_system_zxing" = "yes"; then
11106         AC_MSG_RESULT([external])
11107         SYSTEM_ZXING=TRUE
11108         AC_LANG_PUSH([C++])
11109         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11110             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11111         ZXING_CFLAGS=-I/usr/include/ZXing
11112         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11113             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11114             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11115         AC_LANG_POP([C++])
11116         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11117         FilterLibs "${ZXING_LIBS}"
11118         ZXING_LIBS="${filteredlibs}"
11119     else
11120         AC_MSG_RESULT([internal])
11121         SYSTEM_ZXING=
11122         BUILD_TYPE="$BUILD_TYPE ZXING"
11123     fi
11124     if test "$ENABLE_ZXING" = TRUE; then
11125         AC_DEFINE(ENABLE_ZXING)
11126     fi
11128 AC_SUBST(SYSTEM_ZXING)
11129 AC_SUBST(ENABLE_ZXING)
11130 AC_SUBST(ZXING_CFLAGS)
11131 AC_SUBST(ZXING_LIBS)
11133 dnl ===================================================================
11134 dnl Check for system box2d
11135 dnl ===================================================================
11136 AC_MSG_CHECKING([which box2d to use])
11137 if test "$with_system_box2d" = "yes"; then
11138     AC_MSG_RESULT([external])
11139     SYSTEM_BOX2D=TRUE
11140     AC_LANG_PUSH([C++])
11141     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11142         [BOX2D_H_FOUND='FALSE'])
11143     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11144         _BOX2D_LIB=box2d
11145         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11146     else
11147         # fail this. there's no other alternative to check when we are here.
11148         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11149             [AC_MSG_ERROR(box2d headers not found.)])
11150         _BOX2D_LIB=Box2D
11151         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11152     fi
11153     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11154         [ AC_MSG_ERROR(box2d library not found.) ], [])
11155     BOX2D_LIBS=-l$_BOX2D_LIB
11156     AC_LANG_POP([C++])
11157     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11158     FilterLibs "${BOX2D_LIBS}"
11159     BOX2D_LIBS="${filteredlibs}"
11160 else
11161     AC_MSG_RESULT([internal])
11162     SYSTEM_BOX2D=
11163     BUILD_TYPE="$BUILD_TYPE BOX2D"
11165 AC_SUBST(SYSTEM_BOX2D)
11166 AC_SUBST(BOX2D_CFLAGS)
11167 AC_SUBST(BOX2D_LIBS)
11169 dnl ===================================================================
11170 dnl Checking for altlinuxhyph
11171 dnl ===================================================================
11172 AC_MSG_CHECKING([which altlinuxhyph to use])
11173 if test "$with_system_altlinuxhyph" = "yes"; then
11174     AC_MSG_RESULT([external])
11175     SYSTEM_HYPH=TRUE
11176     AC_CHECK_HEADER(hyphen.h, [],
11177        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11178     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11179        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11180        [#include <hyphen.h>])
11181     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11182         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11183     if test -z "$HYPHEN_LIB"; then
11184         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11185            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11186     fi
11187     if test -z "$HYPHEN_LIB"; then
11188         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11189            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11190     fi
11191 else
11192     AC_MSG_RESULT([internal])
11193     SYSTEM_HYPH=
11194     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11195     if test "$COM" = "MSC"; then
11196         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11197     else
11198         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11199     fi
11201 AC_SUBST(SYSTEM_HYPH)
11202 AC_SUBST(HYPHEN_LIB)
11204 dnl ===================================================================
11205 dnl Checking for mythes
11206 dnl ===================================================================
11207 AC_MSG_CHECKING([which mythes to use])
11208 if test "$with_system_mythes" = "yes"; then
11209     AC_MSG_RESULT([external])
11210     SYSTEM_MYTHES=TRUE
11211     AC_LANG_PUSH([C++])
11212     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11213     if test "$MYTHES_PKGCONFIG" = "no"; then
11214         AC_CHECK_HEADER(mythes.hxx, [],
11215             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11216         AC_CHECK_LIB([mythes-1.2], [main], [:],
11217             [ MYTHES_FOUND=no], [])
11218     if test "$MYTHES_FOUND" = "no"; then
11219         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11220                 [ MYTHES_FOUND=no], [])
11221     fi
11222     if test "$MYTHES_FOUND" = "no"; then
11223         AC_MSG_ERROR([mythes library not found!.])
11224     fi
11225     fi
11226     AC_LANG_POP([C++])
11227     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11228     FilterLibs "${MYTHES_LIBS}"
11229     MYTHES_LIBS="${filteredlibs}"
11230 else
11231     AC_MSG_RESULT([internal])
11232     SYSTEM_MYTHES=
11233     BUILD_TYPE="$BUILD_TYPE MYTHES"
11234     if test "$COM" = "MSC"; then
11235         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11236     else
11237         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11238     fi
11240 AC_SUBST(SYSTEM_MYTHES)
11241 AC_SUBST(MYTHES_CFLAGS)
11242 AC_SUBST(MYTHES_LIBS)
11244 dnl ===================================================================
11245 dnl How should we build the linear programming solver ?
11246 dnl ===================================================================
11248 ENABLE_COINMP=
11249 AC_MSG_CHECKING([whether to build with CoinMP])
11250 if test "$enable_coinmp" != "no"; then
11251     ENABLE_COINMP=TRUE
11252     AC_MSG_RESULT([yes])
11253     if test "$with_system_coinmp" = "yes"; then
11254         SYSTEM_COINMP=TRUE
11255         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11256         FilterLibs "${COINMP_LIBS}"
11257         COINMP_LIBS="${filteredlibs}"
11258     else
11259         BUILD_TYPE="$BUILD_TYPE COINMP"
11260     fi
11261 else
11262     AC_MSG_RESULT([no])
11264 AC_SUBST(ENABLE_COINMP)
11265 AC_SUBST(SYSTEM_COINMP)
11266 AC_SUBST(COINMP_CFLAGS)
11267 AC_SUBST(COINMP_LIBS)
11269 ENABLE_LPSOLVE=
11270 AC_MSG_CHECKING([whether to build with lpsolve])
11271 if test "$enable_lpsolve" != "no"; then
11272     ENABLE_LPSOLVE=TRUE
11273     AC_MSG_RESULT([yes])
11274 else
11275     AC_MSG_RESULT([no])
11277 AC_SUBST(ENABLE_LPSOLVE)
11279 if test "$ENABLE_LPSOLVE" = TRUE; then
11280     AC_MSG_CHECKING([which lpsolve to use])
11281     if test "$with_system_lpsolve" = "yes"; then
11282         AC_MSG_RESULT([external])
11283         SYSTEM_LPSOLVE=TRUE
11284         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11285            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11286         save_LIBS=$LIBS
11287         # some systems need this. Like Ubuntu...
11288         AC_CHECK_LIB(m, floor)
11289         AC_CHECK_LIB(dl, dlopen)
11290         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11291             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11292         LIBS=$save_LIBS
11293     else
11294         AC_MSG_RESULT([internal])
11295         SYSTEM_LPSOLVE=
11296         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11297     fi
11299 AC_SUBST(SYSTEM_LPSOLVE)
11301 dnl ===================================================================
11302 dnl Checking for libexttextcat
11303 dnl ===================================================================
11304 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11305 if test "$with_system_libexttextcat" = "yes"; then
11306     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11308 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11310 dnl ===================================================================
11311 dnl Checking for libnumbertext
11312 dnl ===================================================================
11313 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11314 if test "$with_system_libnumbertext" = "yes"; then
11315     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11316     SYSTEM_LIBNUMBERTEXT=YES
11317 else
11318     SYSTEM_LIBNUMBERTEXT=
11319     AC_LANG_PUSH([C++])
11320     save_CPPFLAGS=$CPPFLAGS
11321     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11322     AC_CHECK_HEADERS([codecvt regex])
11323     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11324             [ LIBNUMBERTEXT_CFLAGS=''
11325               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11326                            Enable libnumbertext fallback (missing number to number name conversion).])
11327             ])
11328     CPPFLAGS=$save_CPPFLAGS
11329     AC_LANG_POP([C++])
11331 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11332 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11333 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11335 dnl ***************************************
11336 dnl testing libc version for Linux...
11337 dnl ***************************************
11338 if test "$_os" = "Linux"; then
11339     AC_MSG_CHECKING([whether the libc is recent enough])
11340     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11341     #include <features.h>
11342     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11343     #error glibc >= 2.1 is required
11344     #endif
11345     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11348 dnl =========================================
11349 dnl Check for uuidgen
11350 dnl =========================================
11351 if test "$_os" = "WINNT"; then
11352     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11353     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11354     UUIDGEN=uuidgen.exe
11355     AC_SUBST(UUIDGEN)
11356 else
11357     AC_PATH_PROG([UUIDGEN], [uuidgen])
11358     if test -z "$UUIDGEN"; then
11359         AC_MSG_WARN([uuid is needed for building installation sets])
11360     fi
11363 dnl ***************************************
11364 dnl Checking for bison and flex
11365 dnl ***************************************
11366 AC_PATH_PROG(BISON, bison)
11367 if test -z "$BISON"; then
11368     AC_MSG_ERROR([no bison found in \$PATH, install it])
11369 else
11370     AC_MSG_CHECKING([the bison version])
11371     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11372     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11373     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11374     dnl cause
11375     dnl
11376     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]
11377     dnl   typedef union YYSTYPE
11378     dnl           ~~~~~~^~~~~~~
11379     dnl
11380     dnl while at least 3.4.1 is know to be good:
11381     if test "$COMPILER_PLUGINS" = TRUE; then
11382         if test "$_bison_longver" -lt 2004; then
11383             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11384         fi
11385     else
11386         if test "$_bison_longver" -lt 2000; then
11387             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11388         fi
11389     fi
11391 AC_SUBST([BISON])
11393 AC_PATH_PROG(FLEX, flex)
11394 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11395     FLEX=`cygpath -m $FLEX`
11397 if test -z "$FLEX"; then
11398     AC_MSG_ERROR([no flex found in \$PATH, install it])
11399 else
11400     AC_MSG_CHECKING([the flex version])
11401     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11402     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11403         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11404     fi
11406 AC_SUBST([FLEX])
11407 dnl ***************************************
11408 dnl Checking for patch
11409 dnl ***************************************
11410 AC_PATH_PROG(PATCH, patch)
11411 if test -z "$PATCH"; then
11412     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11415 dnl On Solaris or macOS, check if --with-gnu-patch was used
11416 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11417     if test -z "$with_gnu_patch"; then
11418         GNUPATCH=$PATCH
11419     else
11420         if test -x "$with_gnu_patch"; then
11421             GNUPATCH=$with_gnu_patch
11422         else
11423             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11424         fi
11425     fi
11427     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11428     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11429         AC_MSG_RESULT([yes])
11430     else
11431         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11432     fi
11433 else
11434     GNUPATCH=$PATCH
11437 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11438     GNUPATCH=`cygpath -m $GNUPATCH`
11441 dnl We also need to check for --with-gnu-cp
11443 if test -z "$with_gnu_cp"; then
11444     # check the place where the good stuff is hidden on Solaris...
11445     if test -x /usr/gnu/bin/cp; then
11446         GNUCP=/usr/gnu/bin/cp
11447     else
11448         AC_PATH_PROGS(GNUCP, gnucp cp)
11449     fi
11450     if test -z $GNUCP; then
11451         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11452     fi
11453 else
11454     if test -x "$with_gnu_cp"; then
11455         GNUCP=$with_gnu_cp
11456     else
11457         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11458     fi
11461 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11462     GNUCP=`cygpath -m $GNUCP`
11465 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11466 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11467     AC_MSG_RESULT([yes])
11468 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11469     AC_MSG_RESULT([yes])
11470 else
11471     case "$build_os" in
11472     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11473         x_GNUCP=[\#]
11474         GNUCP=''
11475         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11476         ;;
11477     *)
11478         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11479         ;;
11480     esac
11483 AC_SUBST(GNUPATCH)
11484 AC_SUBST(GNUCP)
11485 AC_SUBST(x_GNUCP)
11487 dnl ***************************************
11488 dnl testing assembler path
11489 dnl ***************************************
11490 ML_EXE=""
11491 if test "$_os" = "WINNT"; then
11492     case "$WIN_HOST_ARCH" in
11493     x86) assembler=ml.exe ;;
11494     x64) assembler=ml64.exe ;;
11495     arm64) assembler=armasm64.exe ;;
11496     esac
11498     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11499     if test -f "$MSVC_HOST_PATH/$assembler"; then
11500         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11501         AC_MSG_RESULT([$ML_EXE])
11502     else
11503         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11504     fi
11507 AC_SUBST(ML_EXE)
11509 dnl ===================================================================
11510 dnl We need zip and unzip
11511 dnl ===================================================================
11512 AC_PATH_PROG(ZIP, zip)
11513 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11514 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11515     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],,)
11518 AC_PATH_PROG(UNZIP, unzip)
11519 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11521 dnl ===================================================================
11522 dnl Zip must be a specific type for different build types.
11523 dnl ===================================================================
11524 if test $build_os = cygwin; then
11525     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11526         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11527     fi
11530 dnl ===================================================================
11531 dnl We need touch with -h option support.
11532 dnl ===================================================================
11533 AC_PATH_PROG(TOUCH, touch)
11534 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11535 touch "$WARNINGS_FILE"
11536 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11537     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],,)
11540 dnl ===================================================================
11541 dnl Check for system epoxy
11542 dnl ===================================================================
11543 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11545 dnl ===================================================================
11546 dnl Set vcl option: coordinate device in double or sal_Int32
11547 dnl ===================================================================
11549 dnl disabled for now, we don't want subtle differences between OSs
11550 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11551 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11552 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11553 dnl     AC_MSG_RESULT([double])
11554 dnl else
11555 dnl     AC_MSG_RESULT([sal_Int32])
11556 dnl fi
11558 dnl ===================================================================
11559 dnl Show which vclplugs will be built.
11560 dnl ===================================================================
11561 R=""
11562 if test "$USING_X11" != TRUE; then
11563     enable_gtk3=no
11566 ENABLE_GTK3=""
11567 if test "x$enable_gtk3" = "xyes"; then
11568     ENABLE_GTK3="TRUE"
11569     AC_DEFINE(ENABLE_GTK3)
11570     R="$R gtk3"
11572 AC_SUBST(ENABLE_GTK3)
11574 ENABLE_GTK3_KDE5=""
11575 if test "x$enable_gtk3_kde5" = "xyes"; then
11576     ENABLE_GTK3_KDE5="TRUE"
11577     AC_DEFINE(ENABLE_GTK3_KDE5)
11578     R="$R gtk3_kde5"
11580 AC_SUBST(ENABLE_GTK3_KDE5)
11582 ENABLE_GTK4=""
11583 if test "x$enable_gtk4" = "xyes"; then
11584     ENABLE_GTK4="TRUE"
11585     AC_DEFINE(ENABLE_GTK4)
11586     R="$R gtk4"
11588 AC_SUBST(ENABLE_GTK4)
11590 ENABLE_QT5=""
11591 if test "x$enable_qt5" = "xyes"; then
11592     ENABLE_QT5="TRUE"
11593     AC_DEFINE(ENABLE_QT5)
11594     R="$R qt5"
11596 AC_SUBST(ENABLE_QT5)
11598 ENABLE_QT6=""
11599 if test "x$enable_qt6" = "xyes"; then
11600     ENABLE_QT6="TRUE"
11601     AC_DEFINE(ENABLE_QT6)
11602     R="$R qt6"
11604 AC_SUBST(ENABLE_QT6)
11607 ENABLE_KF5=""
11608 if test "x$enable_kf5" = "xyes"; then
11609     ENABLE_KF5="TRUE"
11610     AC_DEFINE(ENABLE_KF5)
11611     R="$R kf5"
11613 AC_SUBST(ENABLE_KF5)
11615 if test "x$USING_X11" = "xyes"; then
11616     R="$R gen"
11619 if test "$_os" = "WINNT"; then
11620     R="$R win"
11621 elif test "$_os" = "Darwin"; then
11622     R="$R osx"
11623 elif test "$_os" = "iOS"; then
11624     R="ios"
11625 elif test "$_os" = Android; then
11626     R="android"
11629 build_vcl_plugins="$R"
11630 if test -z "$build_vcl_plugins"; then
11631     build_vcl_plugins=" none"
11633 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11634 VCL_PLUGIN_INFO=$R
11635 AC_SUBST([VCL_PLUGIN_INFO])
11637 dnl ===================================================================
11638 dnl Check for GTK libraries
11639 dnl ===================================================================
11641 GTK3_CFLAGS=""
11642 GTK3_LIBS=""
11643 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11644     if test "$with_system_cairo" = no; then
11645         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11646     fi
11647     : ${with_system_cairo:=yes}
11648     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)
11649     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11650     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11651     FilterLibs "${GTK3_LIBS}"
11652     GTK3_LIBS="${filteredlibs}"
11654     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11655     if test "$with_system_epoxy" != "yes"; then
11656         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11657         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11658                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11659     fi
11661 AC_SUBST(GTK3_LIBS)
11662 AC_SUBST(GTK3_CFLAGS)
11664 GTK4_CFLAGS=""
11665 GTK4_LIBS=""
11666 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11667     if test "$with_system_cairo" = no; then
11668         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11669     fi
11670     : ${with_system_cairo:=yes}
11671     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11672     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11673     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11674     FilterLibs "${GTK4_LIBS}"
11675     GTK4_LIBS="${filteredlibs}"
11677     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11678     if test "$with_system_epoxy" != "yes"; then
11679         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11680         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11681                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11682     fi
11684 AC_SUBST(GTK4_LIBS)
11685 AC_SUBST(GTK4_CFLAGS)
11687 if test "$enable_introspection" = yes; then
11688     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11689         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11690     else
11691         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11692     fi
11695 dnl ===================================================================
11696 dnl check for dbus support
11697 dnl ===================================================================
11698 ENABLE_DBUS=""
11699 DBUS_CFLAGS=""
11700 DBUS_LIBS=""
11701 DBUS_GLIB_CFLAGS=""
11702 DBUS_GLIB_LIBS=""
11703 DBUS_HAVE_GLIB=""
11705 if test "$enable_dbus" = "no"; then
11706     test_dbus=no
11709 AC_MSG_CHECKING([whether to enable DBUS support])
11710 if test "$test_dbus" = "yes"; then
11711     ENABLE_DBUS="TRUE"
11712     AC_MSG_RESULT([yes])
11713     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11714     AC_DEFINE(ENABLE_DBUS)
11715     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11716     FilterLibs "${DBUS_LIBS}"
11717     DBUS_LIBS="${filteredlibs}"
11719     # Glib is needed for BluetoothServer
11720     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11721     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11722         [
11723             DBUS_HAVE_GLIB="TRUE"
11724             AC_DEFINE(DBUS_HAVE_GLIB,1)
11725         ],
11726         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11727     )
11728 else
11729     AC_MSG_RESULT([no])
11732 AC_SUBST(ENABLE_DBUS)
11733 AC_SUBST(DBUS_CFLAGS)
11734 AC_SUBST(DBUS_LIBS)
11735 AC_SUBST(DBUS_GLIB_CFLAGS)
11736 AC_SUBST(DBUS_GLIB_LIBS)
11737 AC_SUBST(DBUS_HAVE_GLIB)
11739 AC_MSG_CHECKING([whether to enable Impress remote control])
11740 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11741     AC_MSG_RESULT([yes])
11742     ENABLE_SDREMOTE=TRUE
11743     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11745     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11746         # The Bluetooth code doesn't compile with macOS SDK 10.15
11747         if test "$enable_sdremote_bluetooth" = yes; then
11748             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11749         fi
11750         enable_sdremote_bluetooth=no
11751     fi
11752     # If not explicitly enabled or disabled, default
11753     if test -z "$enable_sdremote_bluetooth"; then
11754         case "$OS" in
11755         LINUX|MACOSX|WNT)
11756             # Default to yes for these
11757             enable_sdremote_bluetooth=yes
11758             ;;
11759         *)
11760             # otherwise no
11761             enable_sdremote_bluetooth=no
11762             ;;
11763         esac
11764     fi
11765     # $enable_sdremote_bluetooth is guaranteed non-empty now
11767     if test "$enable_sdremote_bluetooth" != "no"; then
11768         if test "$OS" = "LINUX"; then
11769             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11770                 AC_MSG_RESULT([yes])
11771                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11772                 dnl ===================================================================
11773                 dnl Check for system bluez
11774                 dnl ===================================================================
11775                 AC_MSG_CHECKING([which Bluetooth header to use])
11776                 if test "$with_system_bluez" = "yes"; then
11777                     AC_MSG_RESULT([external])
11778                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11779                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11780                     SYSTEM_BLUEZ=TRUE
11781                 else
11782                     AC_MSG_RESULT([internal])
11783                     SYSTEM_BLUEZ=
11784                 fi
11785             else
11786                 AC_MSG_RESULT([no, dbus disabled])
11787                 ENABLE_SDREMOTE_BLUETOOTH=
11788                 SYSTEM_BLUEZ=
11789             fi
11790         else
11791             AC_MSG_RESULT([yes])
11792             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11793             SYSTEM_BLUEZ=
11794         fi
11795     else
11796         AC_MSG_RESULT([no])
11797         ENABLE_SDREMOTE_BLUETOOTH=
11798         SYSTEM_BLUEZ=
11799     fi
11800 else
11801     ENABLE_SDREMOTE=
11802     SYSTEM_BLUEZ=
11803     AC_MSG_RESULT([no])
11805 AC_SUBST(ENABLE_SDREMOTE)
11806 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11807 AC_SUBST(SYSTEM_BLUEZ)
11809 dnl ===================================================================
11810 dnl Check whether to enable GIO support
11811 dnl ===================================================================
11812 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11813     AC_MSG_CHECKING([whether to enable GIO support])
11814     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11815         dnl Need at least 2.26 for the dbus support.
11816         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11817                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11818         if test "$ENABLE_GIO" = "TRUE"; then
11819             AC_DEFINE(ENABLE_GIO)
11820             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11821             FilterLibs "${GIO_LIBS}"
11822             GIO_LIBS="${filteredlibs}"
11823         fi
11824     else
11825         AC_MSG_RESULT([no])
11826     fi
11828 AC_SUBST(ENABLE_GIO)
11829 AC_SUBST(GIO_CFLAGS)
11830 AC_SUBST(GIO_LIBS)
11833 dnl ===================================================================
11835 SPLIT_APP_MODULES=""
11836 if test "$enable_split_app_modules" = "yes"; then
11837     SPLIT_APP_MODULES="TRUE"
11839 AC_SUBST(SPLIT_APP_MODULES)
11841 SPLIT_OPT_FEATURES=""
11842 if test "$enable_split_opt_features" = "yes"; then
11843     SPLIT_OPT_FEATURES="TRUE"
11845 AC_SUBST(SPLIT_OPT_FEATURES)
11847 dnl ===================================================================
11848 dnl Check whether the GStreamer libraries are available.
11849 dnl ===================================================================
11851 ENABLE_GSTREAMER_1_0=""
11853 if test "$test_gstreamer_1_0" = yes; then
11855     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11856     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11857         ENABLE_GSTREAMER_1_0="TRUE"
11858         AC_MSG_RESULT([yes])
11859         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11860         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11861         FilterLibs "${GSTREAMER_1_0_LIBS}"
11862         GSTREAMER_1_0_LIBS="${filteredlibs}"
11863         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11864     else
11865         AC_MSG_RESULT([no])
11866     fi
11868 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11869 AC_SUBST(GSTREAMER_1_0_LIBS)
11870 AC_SUBST(ENABLE_GSTREAMER_1_0)
11872 ENABLE_OPENGL_TRANSITIONS=
11873 ENABLE_OPENGL_CANVAS=
11874 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11875    : # disable
11876 elif test "$_os" = "Darwin"; then
11877     # We use frameworks on macOS, no need for detail checks
11878     ENABLE_OPENGL_TRANSITIONS=TRUE
11879     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11880     ENABLE_OPENGL_CANVAS=TRUE
11881 elif test $_os = WINNT; then
11882     ENABLE_OPENGL_TRANSITIONS=TRUE
11883     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11884     ENABLE_OPENGL_CANVAS=TRUE
11885 else
11886     if test "$USING_X11" = TRUE; then
11887         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11888         ENABLE_OPENGL_TRANSITIONS=TRUE
11889         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11890         ENABLE_OPENGL_CANVAS=TRUE
11891     fi
11894 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11895 AC_SUBST(ENABLE_OPENGL_CANVAS)
11897 dnl =================================================
11898 dnl Check whether to build with OpenCL support.
11899 dnl =================================================
11901 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11902     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11903     # platform (optional at run-time, used through clew).
11904     BUILD_TYPE="$BUILD_TYPE OPENCL"
11905     AC_DEFINE(HAVE_FEATURE_OPENCL)
11908 dnl =================================================
11909 dnl Check whether to build with dconf support.
11910 dnl =================================================
11912 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11913     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11914         if test "$enable_dconf" = yes; then
11915             AC_MSG_ERROR([dconf not found])
11916         else
11917             enable_dconf=no
11918         fi])
11920 AC_MSG_CHECKING([whether to enable dconf])
11921 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11922     DCONF_CFLAGS=
11923     DCONF_LIBS=
11924     ENABLE_DCONF=
11925     AC_MSG_RESULT([no])
11926 else
11927     ENABLE_DCONF=TRUE
11928     AC_DEFINE(ENABLE_DCONF)
11929     AC_MSG_RESULT([yes])
11931 AC_SUBST([DCONF_CFLAGS])
11932 AC_SUBST([DCONF_LIBS])
11933 AC_SUBST([ENABLE_DCONF])
11935 # pdf import?
11936 AC_MSG_CHECKING([whether to build the PDF import feature])
11937 ENABLE_PDFIMPORT=
11938 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11939     AC_MSG_RESULT([yes])
11940     ENABLE_PDFIMPORT=TRUE
11941     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11942 else
11943     AC_MSG_RESULT([no])
11946 # Pdfium?
11947 AC_MSG_CHECKING([whether to build PDFium])
11948 ENABLE_PDFIUM=
11949 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11950     AC_MSG_RESULT([yes])
11951     ENABLE_PDFIUM=TRUE
11952     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11953 else
11954     AC_MSG_RESULT([no])
11956 AC_SUBST(ENABLE_PDFIUM)
11958 dnl ===================================================================
11959 dnl Check for poppler
11960 dnl ===================================================================
11961 ENABLE_POPPLER=
11962 AC_MSG_CHECKING([whether to build Poppler])
11963 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11964     AC_MSG_RESULT([yes])
11965     ENABLE_POPPLER=TRUE
11966     AC_DEFINE(HAVE_FEATURE_POPPLER)
11967 else
11968     AC_MSG_RESULT([no])
11970 AC_SUBST(ENABLE_POPPLER)
11972 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11973     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11976 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11977     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11980 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11981     dnl ===================================================================
11982     dnl Check for system poppler
11983     dnl ===================================================================
11984     AC_MSG_CHECKING([which PDF import poppler to use])
11985     if test "$with_system_poppler" = "yes"; then
11986         AC_MSG_RESULT([external])
11987         SYSTEM_POPPLER=TRUE
11988         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11989         AC_LANG_PUSH([C++])
11990         save_CXXFLAGS=$CXXFLAGS
11991         save_CPPFLAGS=$CPPFLAGS
11992         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11993         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11994         AC_CHECK_HEADER([cpp/poppler-version.h],
11995             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11996             [])
11997         CXXFLAGS=$save_CXXFLAGS
11998         CPPFLAGS=$save_CPPFLAGS
11999         AC_LANG_POP([C++])
12000         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12002         FilterLibs "${POPPLER_LIBS}"
12003         POPPLER_LIBS="${filteredlibs}"
12004     else
12005         AC_MSG_RESULT([internal])
12006         SYSTEM_POPPLER=
12007         BUILD_TYPE="$BUILD_TYPE POPPLER"
12008         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
12009     fi
12010     AC_DEFINE([ENABLE_PDFIMPORT],1)
12012 AC_SUBST(ENABLE_PDFIMPORT)
12013 AC_SUBST(SYSTEM_POPPLER)
12014 AC_SUBST(POPPLER_CFLAGS)
12015 AC_SUBST(POPPLER_LIBS)
12017 # Skia?
12018 ENABLE_SKIA=
12019 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12020     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12021     if test "$SYSTEM_FREETYPE" = TRUE; then
12022         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12023             [skia_freetype_ok=yes],
12024             [skia_freetype_ok=no])
12025     else # internal is ok
12026         skia_freetype_ok=yes
12027     fi
12028     AC_MSG_CHECKING([whether to build Skia])
12029     if test "$skia_freetype_ok" = "yes"; then
12030         if test "$enable_skia" = "debug"; then
12031             AC_MSG_RESULT([yes (debug)])
12032             ENABLE_SKIA_DEBUG=TRUE
12033         else
12034             AC_MSG_RESULT([yes])
12035             ENABLE_SKIA_DEBUG=
12036         fi
12037         ENABLE_SKIA=TRUE
12038         AC_DEFINE(HAVE_FEATURE_SKIA)
12039         BUILD_TYPE="$BUILD_TYPE SKIA"
12041         if test "$OS" = "MACOSX"; then
12042             AC_DEFINE(SK_SUPPORT_GPU,1)
12043             AC_DEFINE(SK_METAL,1)
12044             SKIA_GPU=METAL
12045             AC_SUBST(SKIA_GPU)
12046         else
12047             AC_DEFINE(SK_SUPPORT_GPU,1)
12048             AC_DEFINE(SK_VULKAN,1)
12049             SKIA_GPU=VULKAN
12050             AC_SUBST(SKIA_GPU)
12051         fi
12053         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12054             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12055             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12056         fi
12057     else
12058         AC_MSG_RESULT([no (freetype too old)])
12059         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12060     fi
12062 else
12063     AC_MSG_CHECKING([whether to build Skia])
12064     AC_MSG_RESULT([no])
12066 AC_SUBST(ENABLE_SKIA)
12067 AC_SUBST(ENABLE_SKIA_DEBUG)
12069 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12070 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12071 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12072 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12073 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12074 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12075 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12076 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12077 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12078 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12079 HAVE_LO_CLANG_DLLEXPORTINLINES=
12081 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12082     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12083         AC_MSG_CHECKING([for Clang])
12084         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12085     else
12086         if test "$_os" = "WINNT"; then
12087             AC_MSG_CHECKING([for clang-cl])
12088             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12089                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12090                 dnl explicitly set -m32/-m64
12091                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12092                 LO_CLANG_CXX="$LO_CLANG_CC"
12093                 AC_MSG_RESULT([$LO_CLANG_CC])
12094             else
12095                 AC_MSG_RESULT([no])
12096             fi
12097         else
12098             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12099             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12100         fi
12101     fi
12102     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12103         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12104         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12105         if test "$clang2_ver" -lt 50002; then
12106             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12107             LO_CLANG_CC=
12108             LO_CLANG_CXX=
12109         fi
12110     fi
12111     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12112         save_CXX="$CXX"
12113         CXX="$LO_CLANG_CXX"
12114         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12115         AC_LANG_PUSH([C++])
12116         save_CXXFLAGS=$CXXFLAGS
12117         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12118         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12119                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12120                 AC_MSG_RESULT([yes])
12121             ], [AC_MSG_RESULT([no])])
12122         CXXFLAGS=$save_CXXFLAGS
12123         AC_LANG_POP([C++])
12124         CXX="$save_CXX"
12125         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12126             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.])
12127         fi
12128     fi
12129     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12130         # Skia is the default on Windows, so hard-require Clang.
12131         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12132         if test "$_os" = "WINNT"; then
12133             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
12134         else
12135             AC_MSG_WARN([Clang compiler not found.])
12136         fi
12137     else
12139         save_CXX="$CXX"
12140         CXX="$LO_CLANG_CXX"
12141         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12142         flag_sse2=-msse2
12143         flag_ssse3=-mssse3
12144         flag_sse41=-msse4.1
12145         flag_sse42=-msse4.2
12146         flag_avx=-mavx
12147         flag_avx2=-mavx2
12148         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12149         flag_avx512f=-mavx512f
12150         flag_f16c=-mf16c
12151         flag_fma=-mfma
12153         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12154         AC_LANG_PUSH([C++])
12155         save_CXXFLAGS=$CXXFLAGS
12156         CXXFLAGS="$CXXFLAGS $flag_sse2"
12157         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12158             #include <emmintrin.h>
12159             int main () {
12160                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12161                 c = _mm_xor_si128 (a, b);
12162                 return 0;
12163             }
12164             ])],
12165             [can_compile_sse2=yes],
12166             [can_compile_sse2=no])
12167         AC_LANG_POP([C++])
12168         CXXFLAGS=$save_CXXFLAGS
12169         AC_MSG_RESULT([${can_compile_sse2}])
12170         if test "${can_compile_sse2}" = "yes" ; then
12171             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12172         fi
12174         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12175         AC_LANG_PUSH([C++])
12176         save_CXXFLAGS=$CXXFLAGS
12177         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12178         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12179             #include <tmmintrin.h>
12180             int main () {
12181                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12182                 c = _mm_maddubs_epi16 (a, b);
12183                 return 0;
12184             }
12185             ])],
12186             [can_compile_ssse3=yes],
12187             [can_compile_ssse3=no])
12188         AC_LANG_POP([C++])
12189         CXXFLAGS=$save_CXXFLAGS
12190         AC_MSG_RESULT([${can_compile_ssse3}])
12191         if test "${can_compile_ssse3}" = "yes" ; then
12192             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12193         fi
12195         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12196         AC_LANG_PUSH([C++])
12197         save_CXXFLAGS=$CXXFLAGS
12198         CXXFLAGS="$CXXFLAGS $flag_sse41"
12199         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12200             #include <smmintrin.h>
12201             int main () {
12202                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12203                 c = _mm_cmpeq_epi64 (a, b);
12204                 return 0;
12205             }
12206             ])],
12207             [can_compile_sse41=yes],
12208             [can_compile_sse41=no])
12209         AC_LANG_POP([C++])
12210         CXXFLAGS=$save_CXXFLAGS
12211         AC_MSG_RESULT([${can_compile_sse41}])
12212         if test "${can_compile_sse41}" = "yes" ; then
12213             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12214         fi
12216         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12217         AC_LANG_PUSH([C++])
12218         save_CXXFLAGS=$CXXFLAGS
12219         CXXFLAGS="$CXXFLAGS $flag_sse42"
12220         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12221             #include <nmmintrin.h>
12222             int main () {
12223                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12224                 c = _mm_cmpgt_epi64 (a, b);
12225                 return 0;
12226             }
12227             ])],
12228             [can_compile_sse42=yes],
12229             [can_compile_sse42=no])
12230         AC_LANG_POP([C++])
12231         CXXFLAGS=$save_CXXFLAGS
12232         AC_MSG_RESULT([${can_compile_sse42}])
12233         if test "${can_compile_sse42}" = "yes" ; then
12234             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12235         fi
12237         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12238         AC_LANG_PUSH([C++])
12239         save_CXXFLAGS=$CXXFLAGS
12240         CXXFLAGS="$CXXFLAGS $flag_avx"
12241         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12242             #include <immintrin.h>
12243             int main () {
12244                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12245                 c = _mm256_xor_ps(a, b);
12246                 return 0;
12247             }
12248             ])],
12249             [can_compile_avx=yes],
12250             [can_compile_avx=no])
12251         AC_LANG_POP([C++])
12252         CXXFLAGS=$save_CXXFLAGS
12253         AC_MSG_RESULT([${can_compile_avx}])
12254         if test "${can_compile_avx}" = "yes" ; then
12255             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12256         fi
12258         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12259         AC_LANG_PUSH([C++])
12260         save_CXXFLAGS=$CXXFLAGS
12261         CXXFLAGS="$CXXFLAGS $flag_avx2"
12262         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12263             #include <immintrin.h>
12264             int main () {
12265                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12266                 c = _mm256_maddubs_epi16(a, b);
12267                 return 0;
12268             }
12269             ])],
12270             [can_compile_avx2=yes],
12271             [can_compile_avx2=no])
12272         AC_LANG_POP([C++])
12273         CXXFLAGS=$save_CXXFLAGS
12274         AC_MSG_RESULT([${can_compile_avx2}])
12275         if test "${can_compile_avx2}" = "yes" ; then
12276             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12277         fi
12279         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12280         AC_LANG_PUSH([C++])
12281         save_CXXFLAGS=$CXXFLAGS
12282         CXXFLAGS="$CXXFLAGS $flag_avx512"
12283         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12284             #include <immintrin.h>
12285             int main () {
12286                 __m512i a = _mm512_loadu_si512(0);
12287                 __m512d v1 = _mm512_load_pd(0);
12288                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12289                 __m512d v2 = _mm512_abs_pd(v1);
12290                 return 0;
12291             }
12292             ])],
12293             [can_compile_avx512=yes],
12294             [can_compile_avx512=no])
12295         AC_LANG_POP([C++])
12296         CXXFLAGS=$save_CXXFLAGS
12297         AC_MSG_RESULT([${can_compile_avx512}])
12298         if test "${can_compile_avx512}" = "yes" ; then
12299             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12300             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12301         fi
12303         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12304         AC_LANG_PUSH([C++])
12305         save_CXXFLAGS=$CXXFLAGS
12306         CXXFLAGS="$CXXFLAGS $flag_f16c"
12307         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12308             #include <immintrin.h>
12309             int main () {
12310                 __m128i a = _mm_set1_epi32 (0);
12311                 __m128 c;
12312                 c = _mm_cvtph_ps(a);
12313                 return 0;
12314             }
12315             ])],
12316             [can_compile_f16c=yes],
12317             [can_compile_f16c=no])
12318         AC_LANG_POP([C++])
12319         CXXFLAGS=$save_CXXFLAGS
12320         AC_MSG_RESULT([${can_compile_f16c}])
12321         if test "${can_compile_f16c}" = "yes" ; then
12322             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12323         fi
12325         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12326         AC_LANG_PUSH([C++])
12327         save_CXXFLAGS=$CXXFLAGS
12328         CXXFLAGS="$CXXFLAGS $flag_fma"
12329         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12330             #include <immintrin.h>
12331             int main () {
12332                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12333                 d = _mm256_fmadd_ps(a, b, c);
12334                 return 0;
12335             }
12336             ])],
12337             [can_compile_fma=yes],
12338             [can_compile_fma=no])
12339         AC_LANG_POP([C++])
12340         CXXFLAGS=$save_CXXFLAGS
12341         AC_MSG_RESULT([${can_compile_fma}])
12342         if test "${can_compile_fma}" = "yes" ; then
12343             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12344         fi
12346         CXX="$save_CXX"
12347     fi
12350 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12352 UNCACHED_CLANG_CC="$LO_CLANG_CC"
12353 UNCACHED_CLANG_CXX="$LO_CLANG_CXX"
12354 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12355     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12356     AC_LANG_PUSH([C])
12357     save_CC="$CC"
12358     CC="$LO_CLANG_CC"
12359     save_CFLAGS=$CFLAGS
12360     CFLAGS="$CFLAGS --ccache-skip -O2"
12361     dnl an empty program will do, we're checking the compiler flags
12362     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12363                       [use_ccache=yes], [use_ccache=no])
12364     CFLAGS=$save_CFLAGS
12365     CC=$save_CC
12366     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12367         AC_MSG_RESULT([yes])
12368     else
12369         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12370         AC_MSG_RESULT([no])
12371     fi
12372     AC_LANG_POP([C])
12374     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12375     AC_LANG_PUSH([C++])
12376     save_CXX="$CXX"
12377     CXX="$LO_CLANG_CXX"
12378     save_CXXFLAGS=$CXXFLAGS
12379     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12380     dnl an empty program will do, we're checking the compiler flags
12381     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12382                       [use_ccache=yes], [use_ccache=no])
12383     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12384         AC_MSG_RESULT([yes])
12385     else
12386         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12387         AC_MSG_RESULT([no])
12388     fi
12389     CXXFLAGS=$save_CXXFLAGS
12390     CXX=$save_CXX
12391     AC_LANG_POP([C++])
12394 AC_SUBST(UNCACHED_CC)
12395 AC_SUBST(UNCACHED_CXX)
12396 AC_SUBST(LO_CLANG_CC)
12397 AC_SUBST(LO_CLANG_CXX)
12398 AC_SUBST(UNCACHED_CLANG_CC)
12399 AC_SUBST(UNCACHED_CLANG_CXX)
12400 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12401 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12402 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12403 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12404 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12405 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12406 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12407 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12408 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12409 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12410 AC_SUBST(CLANG_USE_LD)
12411 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12413 SYSTEM_GPGMEPP=
12415 if test "$enable_gpgmepp" = no; then
12416     AC_MSG_CHECKING([whether to enable gpgmepp])
12417     AC_MSG_RESULT([no])
12418 elif test "$enable_mpl_subset" = "yes"; then
12419     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12420     AC_MSG_RESULT([yes])
12421 elif test "$enable_fuzzers" = "yes"; then
12422     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12423     AC_MSG_RESULT([yes])
12424 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12425     dnl ===================================================================
12426     dnl Check for system gpgme
12427     dnl ===================================================================
12428     AC_MSG_CHECKING([which gpgmepp to use])
12429     if test "$with_system_gpgmepp" = "yes"; then
12430         AC_MSG_RESULT([external])
12431         SYSTEM_GPGMEPP=TRUE
12433         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12434         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12435             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12436         # progress_callback is the only func with plain C linkage
12437         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12438         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12439             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12440         AC_CHECK_HEADER(gpgme.h, [],
12441             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12442     else
12443         AC_MSG_RESULT([internal])
12444         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12445         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12447         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12448         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12449         if test "$_os" != "WINNT"; then
12450             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12451             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12452         fi
12453     fi
12454     ENABLE_GPGMEPP=TRUE
12455     AC_DEFINE([HAVE_FEATURE_GPGME])
12456     AC_PATH_PROG(GPG, gpg)
12457     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12458     # so let's exclude that manually for the moment
12459     if test -n "$GPG" -a "$_os" != "WINNT"; then
12460         # make sure we not only have a working gpgme, but a full working
12461         # gpg installation to run OpenPGP signature verification
12462         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12463     fi
12464     if test "$_os" = "Linux"; then
12465       uid=`id -u`
12466       AC_MSG_CHECKING([for /run/user/$uid])
12467       if test -d /run/user/$uid; then
12468         AC_MSG_RESULT([yes])
12469         AC_PATH_PROG(GPGCONF, gpgconf)
12471         # Older versions of gpgconf are not working as expected, since
12472         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12473         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12474         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12475         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12476         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12477         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12478         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12479           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12480           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12481           if $GPGCONF --dump-options > /dev/null ; then
12482             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12483               AC_MSG_RESULT([yes])
12484               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12485               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12486             else
12487               AC_MSG_RESULT([no])
12488             fi
12489           else
12490             AC_MSG_RESULT([no. missing or broken gpgconf?])
12491           fi
12492         else
12493           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12494         fi
12495       else
12496         AC_MSG_RESULT([no])
12497      fi
12498    fi
12500 AC_SUBST(ENABLE_GPGMEPP)
12501 AC_SUBST(SYSTEM_GPGMEPP)
12502 AC_SUBST(GPG_ERROR_CFLAGS)
12503 AC_SUBST(GPG_ERROR_LIBS)
12504 AC_SUBST(LIBASSUAN_CFLAGS)
12505 AC_SUBST(LIBASSUAN_LIBS)
12506 AC_SUBST(GPGMEPP_CFLAGS)
12507 AC_SUBST(GPGMEPP_LIBS)
12509 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12510 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12511     AC_MSG_RESULT([yes])
12512     ENABLE_MEDIAWIKI=TRUE
12513     BUILD_TYPE="$BUILD_TYPE XSLTML"
12514     if test  "x$with_java" = "xno"; then
12515         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12516     fi
12517 else
12518     AC_MSG_RESULT([no])
12519     ENABLE_MEDIAWIKI=
12520     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12522 AC_SUBST(ENABLE_MEDIAWIKI)
12524 AC_MSG_CHECKING([whether to build the Report Builder])
12525 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12526     AC_MSG_RESULT([yes])
12527     ENABLE_REPORTBUILDER=TRUE
12528     AC_MSG_CHECKING([which jfreereport libs to use])
12529     if test "$with_system_jfreereport" = "yes"; then
12530         SYSTEM_JFREEREPORT=TRUE
12531         AC_MSG_RESULT([external])
12532         if test -z $SAC_JAR; then
12533             SAC_JAR=/usr/share/java/sac.jar
12534         fi
12535         if ! test -f $SAC_JAR; then
12536              AC_MSG_ERROR(sac.jar not found.)
12537         fi
12539         if test -z $LIBXML_JAR; then
12540             if test -f /usr/share/java/libxml-1.0.0.jar; then
12541                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12542             elif test -f /usr/share/java/libxml.jar; then
12543                 LIBXML_JAR=/usr/share/java/libxml.jar
12544             else
12545                 AC_MSG_ERROR(libxml.jar replacement not found.)
12546             fi
12547         elif ! test -f $LIBXML_JAR; then
12548             AC_MSG_ERROR(libxml.jar not found.)
12549         fi
12551         if test -z $FLUTE_JAR; then
12552             if test -f /usr/share/java/flute-1.3.0.jar; then
12553                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12554             elif test -f /usr/share/java/flute.jar; then
12555                 FLUTE_JAR=/usr/share/java/flute.jar
12556             else
12557                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12558             fi
12559         elif ! test -f $FLUTE_JAR; then
12560             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12561         fi
12563         if test -z $JFREEREPORT_JAR; then
12564             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12565                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12566             elif test -f /usr/share/java/flow-engine.jar; then
12567                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12568             else
12569                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12570             fi
12571         elif ! test -f  $JFREEREPORT_JAR; then
12572                 AC_MSG_ERROR(jfreereport.jar not found.)
12573         fi
12575         if test -z $LIBLAYOUT_JAR; then
12576             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12577                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12578             elif test -f /usr/share/java/liblayout.jar; then
12579                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12580             else
12581                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12582             fi
12583         elif ! test -f $LIBLAYOUT_JAR; then
12584                 AC_MSG_ERROR(liblayout.jar not found.)
12585         fi
12587         if test -z $LIBLOADER_JAR; then
12588             if test -f /usr/share/java/libloader-1.0.0.jar; then
12589                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12590             elif test -f /usr/share/java/libloader.jar; then
12591                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12592             else
12593                 AC_MSG_ERROR(libloader.jar replacement not found.)
12594             fi
12595         elif ! test -f  $LIBLOADER_JAR; then
12596             AC_MSG_ERROR(libloader.jar not found.)
12597         fi
12599         if test -z $LIBFORMULA_JAR; then
12600             if test -f /usr/share/java/libformula-0.2.0.jar; then
12601                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12602             elif test -f /usr/share/java/libformula.jar; then
12603                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12604             else
12605                 AC_MSG_ERROR(libformula.jar replacement not found.)
12606             fi
12607         elif ! test -f $LIBFORMULA_JAR; then
12608                 AC_MSG_ERROR(libformula.jar not found.)
12609         fi
12611         if test -z $LIBREPOSITORY_JAR; then
12612             if test -f /usr/share/java/librepository-1.0.0.jar; then
12613                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12614             elif test -f /usr/share/java/librepository.jar; then
12615                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12616             else
12617                 AC_MSG_ERROR(librepository.jar replacement not found.)
12618             fi
12619         elif ! test -f $LIBREPOSITORY_JAR; then
12620             AC_MSG_ERROR(librepository.jar not found.)
12621         fi
12623         if test -z $LIBFONTS_JAR; then
12624             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12625                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12626             elif test -f /usr/share/java/libfonts.jar; then
12627                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12628             else
12629                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12630             fi
12631         elif ! test -f $LIBFONTS_JAR; then
12632                 AC_MSG_ERROR(libfonts.jar not found.)
12633         fi
12635         if test -z $LIBSERIALIZER_JAR; then
12636             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12637                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12638             elif test -f /usr/share/java/libserializer.jar; then
12639                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12640             else
12641                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12642             fi
12643         elif ! test -f $LIBSERIALIZER_JAR; then
12644                 AC_MSG_ERROR(libserializer.jar not found.)
12645         fi
12647         if test -z $LIBBASE_JAR; then
12648             if test -f /usr/share/java/libbase-1.0.0.jar; then
12649                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12650             elif test -f /usr/share/java/libbase.jar; then
12651                 LIBBASE_JAR=/usr/share/java/libbase.jar
12652             else
12653                 AC_MSG_ERROR(libbase.jar replacement not found.)
12654             fi
12655         elif ! test -f $LIBBASE_JAR; then
12656             AC_MSG_ERROR(libbase.jar not found.)
12657         fi
12659     else
12660         AC_MSG_RESULT([internal])
12661         SYSTEM_JFREEREPORT=
12662         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12663         NEED_ANT=TRUE
12664     fi
12665 else
12666     AC_MSG_RESULT([no])
12667     ENABLE_REPORTBUILDER=
12668     SYSTEM_JFREEREPORT=
12670 AC_SUBST(ENABLE_REPORTBUILDER)
12671 AC_SUBST(SYSTEM_JFREEREPORT)
12672 AC_SUBST(SAC_JAR)
12673 AC_SUBST(LIBXML_JAR)
12674 AC_SUBST(FLUTE_JAR)
12675 AC_SUBST(JFREEREPORT_JAR)
12676 AC_SUBST(LIBBASE_JAR)
12677 AC_SUBST(LIBLAYOUT_JAR)
12678 AC_SUBST(LIBLOADER_JAR)
12679 AC_SUBST(LIBFORMULA_JAR)
12680 AC_SUBST(LIBREPOSITORY_JAR)
12681 AC_SUBST(LIBFONTS_JAR)
12682 AC_SUBST(LIBSERIALIZER_JAR)
12684 # scripting provider for BeanShell?
12685 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12686 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12687     AC_MSG_RESULT([yes])
12688     ENABLE_SCRIPTING_BEANSHELL=TRUE
12690     dnl ===================================================================
12691     dnl Check for system beanshell
12692     dnl ===================================================================
12693     AC_MSG_CHECKING([which beanshell to use])
12694     if test "$with_system_beanshell" = "yes"; then
12695         AC_MSG_RESULT([external])
12696         SYSTEM_BSH=TRUE
12697         if test -z $BSH_JAR; then
12698             BSH_JAR=/usr/share/java/bsh.jar
12699         fi
12700         if ! test -f $BSH_JAR; then
12701             AC_MSG_ERROR(bsh.jar not found.)
12702         fi
12703     else
12704         AC_MSG_RESULT([internal])
12705         SYSTEM_BSH=
12706         BUILD_TYPE="$BUILD_TYPE BSH"
12707     fi
12708 else
12709     AC_MSG_RESULT([no])
12710     ENABLE_SCRIPTING_BEANSHELL=
12711     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12713 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12714 AC_SUBST(SYSTEM_BSH)
12715 AC_SUBST(BSH_JAR)
12717 # scripting provider for JavaScript?
12718 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12719 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12720     AC_MSG_RESULT([yes])
12721     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12723     dnl ===================================================================
12724     dnl Check for system rhino
12725     dnl ===================================================================
12726     AC_MSG_CHECKING([which rhino to use])
12727     if test "$with_system_rhino" = "yes"; then
12728         AC_MSG_RESULT([external])
12729         SYSTEM_RHINO=TRUE
12730         if test -z $RHINO_JAR; then
12731             RHINO_JAR=/usr/share/java/js.jar
12732         fi
12733         if ! test -f $RHINO_JAR; then
12734             AC_MSG_ERROR(js.jar not found.)
12735         fi
12736     else
12737         AC_MSG_RESULT([internal])
12738         SYSTEM_RHINO=
12739         BUILD_TYPE="$BUILD_TYPE RHINO"
12740         NEED_ANT=TRUE
12741     fi
12742 else
12743     AC_MSG_RESULT([no])
12744     ENABLE_SCRIPTING_JAVASCRIPT=
12745     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12747 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12748 AC_SUBST(SYSTEM_RHINO)
12749 AC_SUBST(RHINO_JAR)
12751 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12752 # paths should be added to library search path. So lets put all 64-bit
12753 # platforms there.
12754 supports_multilib=
12755 case "$host_cpu" in
12756 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12757     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12758         supports_multilib="yes"
12759     fi
12760     ;;
12762     ;;
12763 esac
12765 dnl ===================================================================
12766 dnl QT5 Integration
12767 dnl ===================================================================
12769 QT5_CFLAGS=""
12770 QT5_LIBS=""
12771 QMAKE5="qmake"
12772 MOC5="moc"
12773 QT5_GOBJECT_CFLAGS=""
12774 QT5_GOBJECT_LIBS=""
12775 QT5_HAVE_GOBJECT=""
12776 QT5_PLATFORMS_SRCDIR=""
12777 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12778         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12779         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12780 then
12781     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12782     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12784     if test -n "$supports_multilib"; then
12785         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12786     fi
12788     qt5_test_include="QtWidgets/qapplication.h"
12789     if test "$_os" = "Emscripten"; then
12790         qt5_test_library="libQt5Widgets.a"
12791     else
12792         qt5_test_library="libQt5Widgets.so"
12793     fi
12795     dnl Check for qmake5
12796     if test -n "$QT5DIR"; then
12797         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12798     else
12799         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12800     fi
12801     if test "$QMAKE5" = "no"; then
12802         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12803     else
12804         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12805         if test -z "$qmake5_test_ver"; then
12806             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12807         fi
12808         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12809         qt5_minimal_minor="6"
12810         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12811             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12812         else
12813             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12814         fi
12815     fi
12817     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12818     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12819     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12820     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12822     AC_MSG_CHECKING([for Qt5 headers])
12823     qt5_incdir="no"
12824     for inc_dir in $qt5_incdirs; do
12825         if test -r "$inc_dir/$qt5_test_include"; then
12826             qt5_incdir="$inc_dir"
12827             break
12828         fi
12829     done
12830     AC_MSG_RESULT([$qt5_incdir])
12831     if test "x$qt5_incdir" = "xno"; then
12832         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12833     fi
12834     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12835     AC_LANG_PUSH([C++])
12836     save_CPPFLAGS=$CPPFLAGS
12837     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12838     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12839         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12840     CPPFLAGS=$save_CPPFLAGS
12841     AC_LANG_POP([C++])
12843     AC_MSG_CHECKING([for Qt5 libraries])
12844     qt5_libdir="no"
12845     for lib_dir in $qt5_libdirs; do
12846         if test -r "$lib_dir/$qt5_test_library"; then
12847             qt5_libdir="$lib_dir"
12848             break
12849         fi
12850     done
12851     AC_MSG_RESULT([$qt5_libdir])
12852     if test "x$qt5_libdir" = "xno"; then
12853         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12854     fi
12856     if test "$_os" = "Emscripten"; then
12857         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12858             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12859         fi
12860         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12861             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12862         fi
12863     fi
12865     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12866     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12867     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12868     if test "$_os" = "Emscripten"; then
12869         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12870     fi
12872     if test "$USING_X11" = TRUE; then
12873         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12874         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12875             QT5_HAVE_XCB_ICCCM=1
12876             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12877         ],[
12878             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)])
12879             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12880         ])
12881         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12882         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12883         QT5_USING_X11=1
12884         AC_DEFINE(QT5_USING_X11)
12885     fi
12887     dnl Check for Meta Object Compiler
12889     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12890     if test "$MOC5" = "no"; then
12891         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12892 the root of your Qt installation by exporting QT5DIR before running "configure".])
12893     fi
12895     if test "$test_gstreamer_1_0" = yes; then
12896         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12897                 QT5_HAVE_GOBJECT=1
12898                 AC_DEFINE(QT5_HAVE_GOBJECT)
12899             ],
12900             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12901         )
12902     fi
12904 AC_SUBST(QT5_CFLAGS)
12905 AC_SUBST(QT5_LIBS)
12906 AC_SUBST(MOC5)
12907 AC_SUBST(QT5_GOBJECT_CFLAGS)
12908 AC_SUBST(QT5_GOBJECT_LIBS)
12909 AC_SUBST(QT5_HAVE_GOBJECT)
12910 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12912 dnl ===================================================================
12913 dnl QT6 Integration
12914 dnl ===================================================================
12916 QT6_CFLAGS=""
12917 QT6_LIBS=""
12918 QMAKE6="qmake"
12919 MOC6="moc"
12920 QT6_PLATFORMS_SRCDIR=""
12921 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12922 then
12923     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12924     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12926     if test -n "$supports_multilib"; then
12927         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12928     fi
12930     qt6_test_include="QtWidgets/qapplication.h"
12931     if test "$_os" = "Emscripten"; then
12932         qt6_test_library="libQt6Widgets.a"
12933     else
12934         qt6_test_library="libQt6Widgets.so"
12935     fi
12937     dnl Check for qmake6
12938     if test -n "$QT6DIR"; then
12939         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12940     else
12941         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12942     fi
12943     if test "$QMAKE6" = "no"; then
12944         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12945     else
12946         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12947         if test -z "$qmake6_test_ver"; then
12948             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12949         fi
12950         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12951     fi
12953     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12954     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12955     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12956     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12958     AC_MSG_CHECKING([for Qt6 headers])
12959     qt6_incdir="no"
12960     for inc_dir in $qt6_incdirs; do
12961         if test -r "$inc_dir/$qt6_test_include"; then
12962             qt6_incdir="$inc_dir"
12963             break
12964         fi
12965     done
12966     AC_MSG_RESULT([$qt6_incdir])
12967     if test "x$qt6_incdir" = "xno"; then
12968         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12969     fi
12970     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12971     AC_LANG_PUSH([C++])
12972     save_CPPFLAGS=$CPPFLAGS
12973     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12974     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12975         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12976     CPPFLAGS=$save_CPPFLAGS
12977     AC_LANG_POP([C++])
12979     AC_MSG_CHECKING([for Qt6 libraries])
12980     qt6_libdir="no"
12981     for lib_dir in $qt6_libdirs; do
12982         if test -r "$lib_dir/$qt6_test_library"; then
12983             qt6_libdir="$lib_dir"
12984             break
12985         fi
12986     done
12987     AC_MSG_RESULT([$qt6_libdir])
12988     if test "x$qt6_libdir" = "xno"; then
12989         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12990     fi
12992     if test "$_os" = "Emscripten"; then
12993         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12994             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12995         fi
12996         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12997             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12998         fi
12999     fi
13001     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13002     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13003     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13004     if test "$_os" = "Emscripten"; then
13005         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13006     fi
13008     if test "$USING_X11" = TRUE; then
13009         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13010         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13011         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13012         QT6_USING_X11=1
13013         AC_DEFINE(QT6_USING_X11)
13014     fi
13016     dnl Check for Meta Object Compiler
13018     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13019     if test "$MOC6" = "no"; then
13020         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13021 the root of your Qt installation by exporting QT6DIR before running "configure".])
13022     fi
13024 AC_SUBST(QT6_CFLAGS)
13025 AC_SUBST(QT6_LIBS)
13026 AC_SUBST(MOC6)
13027 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13029 dnl ===================================================================
13030 dnl KF5 Integration
13031 dnl ===================================================================
13033 KF5_CFLAGS=""
13034 KF5_LIBS=""
13035 KF5_CONFIG="kf5-config"
13036 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13037         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13038 then
13039     if test "$OS" = "HAIKU"; then
13040         haiku_arch="`echo $RTL_ARCH | tr X x`"
13041         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13042         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13043     fi
13045     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13046     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13047     if test -n "$supports_multilib"; then
13048         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13049     fi
13051     kf5_test_include="KF5/kcoreaddons_version.h"
13052     kf5_test_library="libKF5CoreAddons.so"
13053     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13055     dnl kf5 KDE4 support compatibility installed
13056     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13057     if test "$KF5_CONFIG" != "no"; then
13058         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13059         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13060     fi
13062     dnl Check for KF5 headers
13063     AC_MSG_CHECKING([for KF5 headers])
13064     kf5_incdir="no"
13065     for kf5_check in $kf5_incdirs; do
13066         if test -r "$kf5_check/$kf5_test_include"; then
13067             kf5_incdir="$kf5_check/KF5"
13068             break
13069         fi
13070     done
13071     AC_MSG_RESULT([$kf5_incdir])
13072     if test "x$kf5_incdir" = "xno"; then
13073         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13074     fi
13076     dnl Check for KF5 libraries
13077     AC_MSG_CHECKING([for KF5 libraries])
13078     kf5_libdir="no"
13079     for kf5_check in $kf5_libdirs; do
13080         if test -r "$kf5_check/$kf5_test_library"; then
13081             kf5_libdir="$kf5_check"
13082             break
13083         fi
13084     done
13086     AC_MSG_RESULT([$kf5_libdir])
13087     if test "x$kf5_libdir" = "xno"; then
13088         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13089     fi
13091     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"
13092     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13093     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13095     if test "$USING_X11" = TRUE; then
13096         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13097     fi
13099     AC_LANG_PUSH([C++])
13100     save_CXXFLAGS=$CXXFLAGS
13101     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13102     AC_MSG_CHECKING([whether KDE is >= 5.0])
13103        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13104 #include <kcoreaddons_version.h>
13106 int main(int argc, char **argv) {
13107        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13108        else return 1;
13110        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13111     CXXFLAGS=$save_CXXFLAGS
13112     AC_LANG_POP([C++])
13114 AC_SUBST(KF5_CFLAGS)
13115 AC_SUBST(KF5_LIBS)
13117 dnl ===================================================================
13118 dnl Test whether to include Evolution 2 support
13119 dnl ===================================================================
13120 AC_MSG_CHECKING([whether to enable evolution 2 support])
13121 if test "$enable_evolution2" = yes; then
13122     AC_MSG_RESULT([yes])
13123     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13124     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13125     FilterLibs "${GOBJECT_LIBS}"
13126     GOBJECT_LIBS="${filteredlibs}"
13127     ENABLE_EVOAB2="TRUE"
13128 else
13129     AC_MSG_RESULT([no])
13131 AC_SUBST(ENABLE_EVOAB2)
13132 AC_SUBST(GOBJECT_CFLAGS)
13133 AC_SUBST(GOBJECT_LIBS)
13135 dnl ===================================================================
13136 dnl Test which themes to include
13137 dnl ===================================================================
13138 AC_MSG_CHECKING([which themes to include])
13139 # if none given use default subset of available themes
13140 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13141     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"
13144 WITH_THEMES=""
13145 if test "x$with_theme" != "xno"; then
13146     for theme in $with_theme; do
13147         case $theme in
13148         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" ;;
13149         default) real_theme=colibre ;;
13150         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13151         esac
13152         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13153     done
13155 AC_MSG_RESULT([$WITH_THEMES])
13156 AC_SUBST([WITH_THEMES])
13157 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13158 for theme in $with_theme; do
13159     case $theme in
13160     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13161     *) ;;
13162     esac
13163 done
13165 ###############################################################################
13166 # Extensions checking
13167 ###############################################################################
13168 AC_MSG_CHECKING([for extensions integration])
13169 if test "x$enable_extension_integration" != "xno"; then
13170     WITH_EXTENSION_INTEGRATION=TRUE
13171     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13172     AC_MSG_RESULT([yes, use integration])
13173 else
13174     WITH_EXTENSION_INTEGRATION=
13175     AC_MSG_RESULT([no, do not integrate])
13177 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13179 dnl Should any extra extensions be included?
13180 dnl There are standalone tests for each of these below.
13181 WITH_EXTRA_EXTENSIONS=
13182 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13184 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13185 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13186 if test "x$with_java" != "xno"; then
13187     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13188     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13191 AC_MSG_CHECKING([whether to build opens___.ttf])
13192 if test "$enable_build_opensymbol" = "yes"; then
13193     AC_MSG_RESULT([yes])
13194     AC_PATH_PROG(FONTFORGE, fontforge)
13195     if test -z "$FONTFORGE"; then
13196         AC_MSG_ERROR([fontforge not installed])
13197     fi
13198 else
13199     AC_MSG_RESULT([no])
13200     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
13201     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13203 AC_SUBST(OPENSYMBOL_TTF)
13204 AC_SUBST(FONTFORGE)
13206 dnl ===================================================================
13207 dnl Test whether to include fonts
13208 dnl ===================================================================
13209 AC_MSG_CHECKING([whether to include third-party fonts])
13210 if test "$with_fonts" != "no"; then
13211     AC_MSG_RESULT([yes])
13212     WITH_FONTS=TRUE
13213     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13214     AC_DEFINE(HAVE_MORE_FONTS)
13215 else
13216     AC_MSG_RESULT([no])
13217     WITH_FONTS=
13218     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13220 AC_SUBST(WITH_FONTS)
13223 dnl ===================================================================
13224 dnl Test whether to enable online update service
13225 dnl ===================================================================
13226 AC_MSG_CHECKING([whether to enable online update])
13227 ENABLE_ONLINE_UPDATE=
13228 ENABLE_ONLINE_UPDATE_MAR=
13229 UPDATE_CONFIG=
13230 if test "$enable_online_update" = ""; then
13231     AC_MSG_RESULT([no])
13232 else
13233     if test "$enable_online_update" = "mar"; then
13234         AC_MSG_RESULT([yes - MAR-based online update])
13235         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13236         if test "$with_update_config" = ""; then
13237             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13238         fi
13239         UPDATE_CONFIG="$with_update_config"
13240         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13241     elif test "$enable_online_update" = "yes"; then
13242         AC_MSG_RESULT([yes])
13243         ENABLE_ONLINE_UPDATE="TRUE"
13244     else
13245         AC_MSG_RESULT([no])
13246     fi
13248 AC_SUBST(ENABLE_ONLINE_UPDATE)
13249 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13250 AC_SUBST(UPDATE_CONFIG)
13253 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13254 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13255     if test "x$with_privacy_policy_url" = "xundefined"; then
13256         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13257     fi
13259 AC_SUBST(PRIVACY_POLICY_URL)
13260 dnl ===================================================================
13261 dnl Test whether we need bzip2
13262 dnl ===================================================================
13263 SYSTEM_BZIP2=
13264 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13265     AC_MSG_CHECKING([whether to use system bzip2])
13266     if test "$with_system_bzip2" = yes; then
13267         SYSTEM_BZIP2=TRUE
13268         AC_MSG_RESULT([yes])
13269         PKG_CHECK_MODULES(BZIP2, bzip2)
13270         FilterLibs "${BZIP2_LIBS}"
13271         BZIP2_LIBS="${filteredlibs}"
13272     else
13273         AC_MSG_RESULT([no])
13274         BUILD_TYPE="$BUILD_TYPE BZIP2"
13275     fi
13277 AC_SUBST(SYSTEM_BZIP2)
13278 AC_SUBST(BZIP2_CFLAGS)
13279 AC_SUBST(BZIP2_LIBS)
13281 dnl ===================================================================
13282 dnl Test whether to enable extension update
13283 dnl ===================================================================
13284 AC_MSG_CHECKING([whether to enable extension update])
13285 ENABLE_EXTENSION_UPDATE=
13286 if test "x$enable_extension_update" = "xno"; then
13287     AC_MSG_RESULT([no])
13288 else
13289     AC_MSG_RESULT([yes])
13290     ENABLE_EXTENSION_UPDATE="TRUE"
13291     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13292     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13294 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13297 dnl ===================================================================
13298 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13299 dnl ===================================================================
13300 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13301 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13302     AC_MSG_RESULT([no])
13303     ENABLE_SILENT_MSI=
13304 else
13305     AC_MSG_RESULT([yes])
13306     ENABLE_SILENT_MSI=TRUE
13307     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13309 AC_SUBST(ENABLE_SILENT_MSI)
13311 AC_MSG_CHECKING([whether and how to use Xinerama])
13312 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13313     if test "$x_libraries" = "default_x_libraries"; then
13314         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13315         if test "x$XINERAMALIB" = x; then
13316            XINERAMALIB="/usr/lib"
13317         fi
13318     else
13319         XINERAMALIB="$x_libraries"
13320     fi
13321     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13322         # we have both versions, let the user decide but use the dynamic one
13323         # per default
13324         USE_XINERAMA=TRUE
13325         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13326             XINERAMA_LINK=dynamic
13327         else
13328             XINERAMA_LINK=static
13329         fi
13330     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13331         # we have only the dynamic version
13332         USE_XINERAMA=TRUE
13333         XINERAMA_LINK=dynamic
13334     elif test -e "$XINERAMALIB/libXinerama.a"; then
13335         # static version
13336         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13337             USE_XINERAMA=TRUE
13338             XINERAMA_LINK=static
13339         else
13340             USE_XINERAMA=
13341             XINERAMA_LINK=none
13342         fi
13343     else
13344         # no Xinerama
13345         USE_XINERAMA=
13346         XINERAMA_LINK=none
13347     fi
13348     if test "$USE_XINERAMA" = "TRUE"; then
13349         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13350         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13351             [AC_MSG_ERROR(Xinerama header not found.)], [])
13352         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13353         if test "x$XEXTLIB" = x; then
13354            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13355         fi
13356         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13357         if test "$_os" = "FreeBSD"; then
13358             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13359         fi
13360         if test "$_os" = "Linux"; then
13361             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13362         fi
13363         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13364             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13365     else
13366         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13367     fi
13368 else
13369     USE_XINERAMA=
13370     XINERAMA_LINK=none
13371     AC_MSG_RESULT([no])
13373 AC_SUBST(USE_XINERAMA)
13374 AC_SUBST(XINERAMA_LINK)
13376 dnl ===================================================================
13377 dnl Test whether to build cairo or rely on the system version
13378 dnl ===================================================================
13380 if test "$test_cairo" = "yes"; then
13381     AC_MSG_CHECKING([whether to use the system cairo])
13383     : ${with_system_cairo:=$with_system_libs}
13384     if test "$with_system_cairo" = "yes"; then
13385         SYSTEM_CAIRO=TRUE
13386         AC_MSG_RESULT([yes])
13388         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13389         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13390         FilterLibs "${CAIRO_LIBS}"
13391         CAIRO_LIBS="${filteredlibs}"
13393         if test "$test_xrender" = "yes"; then
13394             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13395             AC_LANG_PUSH([C])
13396             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13397 #ifdef PictStandardA8
13398 #else
13399       return fail;
13400 #endif
13401 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13403             AC_LANG_POP([C])
13404         fi
13405     else
13406         AC_MSG_RESULT([no])
13407         BUILD_TYPE="$BUILD_TYPE CAIRO"
13408     fi
13410     if test "$enable_cairo_canvas" != no; then
13411         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13412         ENABLE_CAIRO_CANVAS=TRUE
13413     fi
13416 AC_SUBST(CAIRO_CFLAGS)
13417 AC_SUBST(CAIRO_LIBS)
13418 AC_SUBST(ENABLE_CAIRO_CANVAS)
13419 AC_SUBST(SYSTEM_CAIRO)
13421 dnl ===================================================================
13422 dnl Test whether to use avahi
13423 dnl ===================================================================
13424 if test "$_os" = "WINNT"; then
13425     # Windows uses bundled mDNSResponder
13426     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13427 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13428     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13429                       [ENABLE_AVAHI="TRUE"])
13430     AC_DEFINE(HAVE_FEATURE_AVAHI)
13431     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13432     FilterLibs "${AVAHI_LIBS}"
13433     AVAHI_LIBS="${filteredlibs}"
13436 AC_SUBST(ENABLE_AVAHI)
13437 AC_SUBST(AVAHI_CFLAGS)
13438 AC_SUBST(AVAHI_LIBS)
13440 dnl ===================================================================
13441 dnl Test whether to use liblangtag
13442 dnl ===================================================================
13443 SYSTEM_LIBLANGTAG=
13444 AC_MSG_CHECKING([whether to use system liblangtag])
13445 if test "$with_system_liblangtag" = yes; then
13446     SYSTEM_LIBLANGTAG=TRUE
13447     AC_MSG_RESULT([yes])
13448     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13449     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13450     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13451     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13452     FilterLibs "${LIBLANGTAG_LIBS}"
13453     LIBLANGTAG_LIBS="${filteredlibs}"
13454 else
13455     SYSTEM_LIBLANGTAG=
13456     AC_MSG_RESULT([no])
13457     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13458     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13459     if test "$COM" = "MSC"; then
13460         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13461     else
13462         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13463     fi
13465 AC_SUBST(SYSTEM_LIBLANGTAG)
13466 AC_SUBST(LIBLANGTAG_CFLAGS)
13467 AC_SUBST(LIBLANGTAG_LIBS)
13469 dnl ===================================================================
13470 dnl Test whether to build libpng or rely on the system version
13471 dnl ===================================================================
13473 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13475 dnl ===================================================================
13476 dnl Check for runtime JVM search path
13477 dnl ===================================================================
13478 if test "$ENABLE_JAVA" != ""; then
13479     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13480     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13481         AC_MSG_RESULT([yes])
13482         if ! test -d "$with_jvm_path"; then
13483             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13484         fi
13485         if ! test -d "$with_jvm_path"jvm; then
13486             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13487         fi
13488         JVM_ONE_PATH_CHECK="$with_jvm_path"
13489         AC_SUBST(JVM_ONE_PATH_CHECK)
13490     else
13491         AC_MSG_RESULT([no])
13492     fi
13495 dnl ===================================================================
13496 dnl Test for the presence of Ant and that it works
13497 dnl ===================================================================
13499 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13500     ANT_HOME=; export ANT_HOME
13501     WITH_ANT_HOME=; export WITH_ANT_HOME
13502     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13503         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13504             if test "$_os" = "WINNT"; then
13505                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13506             else
13507                 with_ant_home="$LODE_HOME/opt/ant"
13508             fi
13509         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13510             with_ant_home="$LODE_HOME/opt/ant"
13511         fi
13512     fi
13513     if test -z "$with_ant_home"; then
13514         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13515     else
13516         if test "$_os" = "WINNT"; then
13517             # AC_PATH_PROGS needs unix path
13518             with_ant_home=`cygpath -u "$with_ant_home"`
13519         fi
13520         AbsolutePath "$with_ant_home"
13521         with_ant_home=$absolute_path
13522         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13523         WITH_ANT_HOME=$with_ant_home
13524         ANT_HOME=$with_ant_home
13525     fi
13527     if test -z "$ANT"; then
13528         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13529     else
13530         # resolve relative or absolute symlink
13531         while test -h "$ANT"; do
13532             a_cwd=`pwd`
13533             a_basename=`basename "$ANT"`
13534             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13535             cd "`dirname "$ANT"`"
13536             cd "`dirname "$a_script"`"
13537             ANT="`pwd`"/"`basename "$a_script"`"
13538             cd "$a_cwd"
13539         done
13541         AC_MSG_CHECKING([if $ANT works])
13542         mkdir -p conftest.dir
13543         a_cwd=$(pwd)
13544         cd conftest.dir
13545         cat > conftest.java << EOF
13546         public class conftest {
13547             int testmethod(int a, int b) {
13548                     return a + b;
13549             }
13550         }
13553         cat > conftest.xml << EOF
13554         <project name="conftest" default="conftest">
13555         <target name="conftest">
13556             <javac srcdir="." includes="conftest.java">
13557             </javac>
13558         </target>
13559         </project>
13562         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13563         if test $? = 0 -a -f ./conftest.class; then
13564             AC_MSG_RESULT([Ant works])
13565             if test -z "$WITH_ANT_HOME"; then
13566                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13567                 if test -z "$ANT_HOME"; then
13568                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13569                 fi
13570             else
13571                 ANT_HOME="$WITH_ANT_HOME"
13572             fi
13573         else
13574             echo "configure: Ant test failed" >&5
13575             cat conftest.java >&5
13576             cat conftest.xml >&5
13577             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13578         fi
13579         cd "$a_cwd"
13580         rm -fr conftest.dir
13581     fi
13582     if test -z "$ANT_HOME"; then
13583         ANT_HOME="NO_ANT_HOME"
13584     else
13585         PathFormat "$ANT_HOME"
13586         ANT_HOME="$formatted_path"
13587         PathFormat "$ANT"
13588         ANT="$formatted_path"
13589     fi
13591     dnl Checking for ant.jar
13592     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13593         AC_MSG_CHECKING([Ant lib directory])
13594         if test -f $ANT_HOME/lib/ant.jar; then
13595             ANT_LIB="$ANT_HOME/lib"
13596         else
13597             if test -f $ANT_HOME/ant.jar; then
13598                 ANT_LIB="$ANT_HOME"
13599             else
13600                 if test -f /usr/share/java/ant.jar; then
13601                     ANT_LIB=/usr/share/java
13602                 else
13603                     if test -f /usr/share/ant-core/lib/ant.jar; then
13604                         ANT_LIB=/usr/share/ant-core/lib
13605                     else
13606                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13607                             ANT_LIB="$ANT_HOME/lib/ant"
13608                         else
13609                             if test -f /usr/share/lib/ant/ant.jar; then
13610                                 ANT_LIB=/usr/share/lib/ant
13611                             else
13612                                 AC_MSG_ERROR([Ant libraries not found!])
13613                             fi
13614                         fi
13615                     fi
13616                 fi
13617             fi
13618         fi
13619         PathFormat "$ANT_LIB"
13620         ANT_LIB="$formatted_path"
13621         AC_MSG_RESULT([Ant lib directory found.])
13622     fi
13624     ant_minver=1.6.0
13625     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13627     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13628     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13629     ant_version_major=`echo $ant_version | cut -d. -f1`
13630     ant_version_minor=`echo $ant_version | cut -d. -f2`
13631     echo "configure: ant_version $ant_version " >&5
13632     echo "configure: ant_version_major $ant_version_major " >&5
13633     echo "configure: ant_version_minor $ant_version_minor " >&5
13634     if test "$ant_version_major" -ge "2"; then
13635         AC_MSG_RESULT([yes, $ant_version])
13636     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13637         AC_MSG_RESULT([yes, $ant_version])
13638     else
13639         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13640     fi
13642     rm -f conftest* core core.* *.core
13644 AC_SUBST(ANT)
13645 AC_SUBST(ANT_HOME)
13646 AC_SUBST(ANT_LIB)
13648 OOO_JUNIT_JAR=
13649 HAMCREST_JAR=
13650 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13651     AC_MSG_CHECKING([for JUnit 4])
13652     if test "$with_junit" = "yes"; then
13653         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13654             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13655         elif test -e /usr/share/java/junit4.jar; then
13656             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13657         else
13658            if test -e /usr/share/lib/java/junit.jar; then
13659               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13660            else
13661               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13662            fi
13663         fi
13664     else
13665         OOO_JUNIT_JAR=$with_junit
13666     fi
13667     if test "$_os" = "WINNT"; then
13668         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13669     fi
13670     printf 'import org.junit.Before;' > conftest.java
13671     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13672         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13673     else
13674         AC_MSG_ERROR(
13675 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13676  specify its pathname via --with-junit=..., or disable it via --without-junit])
13677     fi
13678     rm -f conftest.class conftest.java
13679     if test $OOO_JUNIT_JAR != ""; then
13680         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13681     fi
13683     AC_MSG_CHECKING([for included Hamcrest])
13684     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13685     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13686         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13687     else
13688         AC_MSG_RESULT([Not included])
13689         AC_MSG_CHECKING([for standalone hamcrest jar.])
13690         if test "$with_hamcrest" = "yes"; then
13691             if test -e /usr/share/lib/java/hamcrest.jar; then
13692                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13693             elif test -e /usr/share/java/hamcrest/core.jar; then
13694                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13695             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13696                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13697             else
13698                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13699             fi
13700         else
13701             HAMCREST_JAR=$with_hamcrest
13702         fi
13703         if test "$_os" = "WINNT"; then
13704             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13705         fi
13706         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13707             AC_MSG_RESULT([$HAMCREST_JAR])
13708         else
13709             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),
13710                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13711         fi
13712     fi
13713     rm -f conftest.class conftest.java
13715 AC_SUBST(OOO_JUNIT_JAR)
13716 AC_SUBST(HAMCREST_JAR)
13719 AC_SUBST(SCPDEFS)
13722 # check for wget and curl
13724 WGET=
13725 CURL=
13727 if test "$enable_fetch_external" != "no"; then
13729 CURL=`which curl 2>/dev/null`
13731 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13732     # wget new enough?
13733     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13734     if test $? -eq 0; then
13735         WGET=$i
13736         break
13737     fi
13738 done
13740 if test -z "$WGET" -a -z "$CURL"; then
13741     AC_MSG_ERROR([neither wget nor curl found!])
13746 AC_SUBST(WGET)
13747 AC_SUBST(CURL)
13750 # check for sha256sum
13752 SHA256SUM=
13754 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13755     eval "$i -a 256 --version" > /dev/null 2>&1
13756     ret=$?
13757     if test $ret -eq 0; then
13758         SHA256SUM="$i -a 256"
13759         break
13760     fi
13761 done
13763 if test -z "$SHA256SUM"; then
13764     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13765         eval "$i --version" > /dev/null 2>&1
13766         ret=$?
13767         if test $ret -eq 0; then
13768             SHA256SUM=$i
13769             break
13770         fi
13771     done
13774 if test -z "$SHA256SUM"; then
13775     AC_MSG_ERROR([no sha256sum found!])
13778 AC_SUBST(SHA256SUM)
13780 dnl ===================================================================
13781 dnl Dealing with l10n options
13782 dnl ===================================================================
13783 AC_MSG_CHECKING([which languages to be built])
13784 # get list of all languages
13785 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13786 # the sed command does the following:
13787 #   + if a line ends with a backslash, append the next line to it
13788 #   + adds " on the beginning of the value (after =)
13789 #   + adds " at the end of the value
13790 #   + removes en-US; we want to put it on the beginning
13791 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13792 [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)]
13793 ALL_LANGS="en-US $completelangiso"
13794 # check the configured localizations
13795 WITH_LANG="$with_lang"
13797 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13798 # (Norwegian is "nb" and "nn".)
13799 if test "$WITH_LANG" = "no"; then
13800     WITH_LANG=
13803 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13804     AC_MSG_RESULT([en-US])
13805 else
13806     AC_MSG_RESULT([$WITH_LANG])
13807     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13808     if test -z "$MSGFMT"; then
13809         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13810             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13811         elif test -x "/opt/lo/bin/msgfmt"; then
13812             MSGFMT="/opt/lo/bin/msgfmt"
13813         else
13814             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13815             if test -z "$MSGFMT"; then
13816                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13817             fi
13818         fi
13819     fi
13820     if test -z "$MSGUNIQ"; then
13821         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13822             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13823         elif test -x "/opt/lo/bin/msguniq"; then
13824             MSGUNIQ="/opt/lo/bin/msguniq"
13825         else
13826             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13827             if test -z "$MSGUNIQ"; then
13828                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13829             fi
13830         fi
13831     fi
13833 AC_SUBST(MSGFMT)
13834 AC_SUBST(MSGUNIQ)
13835 # check that the list is valid
13836 for lang in $WITH_LANG; do
13837     test "$lang" = "ALL" && continue
13838     # need to check for the exact string, so add space before and after the list of all languages
13839     for vl in $ALL_LANGS; do
13840         if test "$vl" = "$lang"; then
13841            break
13842         fi
13843     done
13844     if test "$vl" != "$lang"; then
13845         # if you're reading this - you prolly quoted your languages remove the quotes ...
13846         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13847     fi
13848 done
13849 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13850     echo $WITH_LANG | grep -q en-US
13851     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13853 # list with substituted ALL
13854 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13855 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13856 test "$WITH_LANG" = "en-US" && WITH_LANG=
13857 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13858     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13859     ALL_LANGS=`echo $ALL_LANGS qtz`
13861 AC_SUBST(ALL_LANGS)
13862 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13863 AC_SUBST(WITH_LANG)
13864 AC_SUBST(WITH_LANG_LIST)
13865 AC_SUBST(GIT_NEEDED_SUBMODULES)
13867 WITH_POOR_HELP_LOCALIZATIONS=
13868 if test -d "$SRC_ROOT/translations/source"; then
13869     for l in `ls -1 $SRC_ROOT/translations/source`; do
13870         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13871             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13872         fi
13873     done
13875 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13877 if test -n "$with_locales"; then
13878     WITH_LOCALES="$with_locales"
13880     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13881     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13882     # config_host/config_locales.h.in
13883     for locale in $WITH_LOCALES; do
13884         lang=${locale%_*}
13886         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13888         case $lang in
13889         hi|mr*ne)
13890             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13891             ;;
13892         bg|ru)
13893             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13894             ;;
13895         esac
13896     done
13897 else
13898     AC_DEFINE(WITH_LOCALE_ALL)
13900 AC_SUBST(WITH_LOCALES)
13902 dnl git submodule update --reference
13903 dnl ===================================================================
13904 if test -n "${GIT_REFERENCE_SRC}"; then
13905     for repo in ${GIT_NEEDED_SUBMODULES}; do
13906         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13907             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13908         fi
13909     done
13911 AC_SUBST(GIT_REFERENCE_SRC)
13913 dnl git submodules linked dirs
13914 dnl ===================================================================
13915 if test -n "${GIT_LINK_SRC}"; then
13916     for repo in ${GIT_NEEDED_SUBMODULES}; do
13917         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13918             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13919         fi
13920     done
13922 AC_SUBST(GIT_LINK_SRC)
13924 dnl branding
13925 dnl ===================================================================
13926 AC_MSG_CHECKING([for alternative branding images directory])
13927 # initialize mapped arrays
13928 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13929 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13931 if test -z "$with_branding" -o "$with_branding" = "no"; then
13932     AC_MSG_RESULT([none])
13933     DEFAULT_BRAND_IMAGES="$brand_files"
13934 else
13935     if ! test -d $with_branding ; then
13936         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13937     else
13938         AC_MSG_RESULT([$with_branding])
13939         CUSTOM_BRAND_DIR="$with_branding"
13940         for lfile in $brand_files
13941         do
13942             if ! test -f $with_branding/$lfile ; then
13943                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13944                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13945             else
13946                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13947             fi
13948         done
13949         check_for_progress="yes"
13950     fi
13952 AC_SUBST([BRAND_INTRO_IMAGES])
13953 AC_SUBST([CUSTOM_BRAND_DIR])
13954 AC_SUBST([CUSTOM_BRAND_IMAGES])
13955 AC_SUBST([DEFAULT_BRAND_IMAGES])
13958 AC_MSG_CHECKING([for 'intro' progress settings])
13959 PROGRESSBARCOLOR=
13960 PROGRESSSIZE=
13961 PROGRESSPOSITION=
13962 PROGRESSFRAMECOLOR=
13963 PROGRESSTEXTCOLOR=
13964 PROGRESSTEXTBASELINE=
13966 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13967     source "$with_branding/progress.conf"
13968     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13969 else
13970     AC_MSG_RESULT([none])
13973 AC_SUBST(PROGRESSBARCOLOR)
13974 AC_SUBST(PROGRESSSIZE)
13975 AC_SUBST(PROGRESSPOSITION)
13976 AC_SUBST(PROGRESSFRAMECOLOR)
13977 AC_SUBST(PROGRESSTEXTCOLOR)
13978 AC_SUBST(PROGRESSTEXTBASELINE)
13981 dnl ===================================================================
13982 dnl Custom build version
13983 dnl ===================================================================
13984 AC_MSG_CHECKING([for extra build ID])
13985 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13986     EXTRA_BUILDID="$with_extra_buildid"
13988 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13989 if test -n "$EXTRA_BUILDID" ; then
13990     AC_MSG_RESULT([$EXTRA_BUILDID])
13991 else
13992     AC_MSG_RESULT([not set])
13994 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13996 OOO_VENDOR=
13997 AC_MSG_CHECKING([for vendor])
13998 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13999     OOO_VENDOR="$USERNAME"
14001     if test -z "$OOO_VENDOR"; then
14002         OOO_VENDOR="$USER"
14003     fi
14005     if test -z "$OOO_VENDOR"; then
14006         OOO_VENDOR="`id -u -n`"
14007     fi
14009     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14010 else
14011     OOO_VENDOR="$with_vendor"
14012     AC_MSG_RESULT([$OOO_VENDOR])
14014 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14015 AC_SUBST(OOO_VENDOR)
14017 if test "$_os" = "Android" ; then
14018     ANDROID_PACKAGE_NAME=
14019     AC_MSG_CHECKING([for Android package name])
14020     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14021         if test -n "$ENABLE_DEBUG"; then
14022             # Default to the package name that makes ndk-gdb happy.
14023             ANDROID_PACKAGE_NAME="org.libreoffice"
14024         else
14025             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14026         fi
14028         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14029     else
14030         ANDROID_PACKAGE_NAME="$with_android_package_name"
14031         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14032     fi
14033     AC_SUBST(ANDROID_PACKAGE_NAME)
14036 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14037 if test "$with_compat_oowrappers" = "yes"; then
14038     WITH_COMPAT_OOWRAPPERS=TRUE
14039     AC_MSG_RESULT(yes)
14040 else
14041     WITH_COMPAT_OOWRAPPERS=
14042     AC_MSG_RESULT(no)
14044 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14046 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14047 AC_MSG_CHECKING([for install dirname])
14048 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14049     INSTALLDIRNAME="$with_install_dirname"
14051 AC_MSG_RESULT([$INSTALLDIRNAME])
14052 AC_SUBST(INSTALLDIRNAME)
14054 AC_MSG_CHECKING([for prefix])
14055 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14056 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14057 PREFIXDIR="$prefix"
14058 AC_MSG_RESULT([$PREFIXDIR])
14059 AC_SUBST(PREFIXDIR)
14061 LIBDIR=[$(eval echo $(eval echo $libdir))]
14062 AC_SUBST(LIBDIR)
14064 DATADIR=[$(eval echo $(eval echo $datadir))]
14065 AC_SUBST(DATADIR)
14067 MANDIR=[$(eval echo $(eval echo $mandir))]
14068 AC_SUBST(MANDIR)
14070 DOCDIR=[$(eval echo $(eval echo $docdir))]
14071 AC_SUBST(DOCDIR)
14073 BINDIR=[$(eval echo $(eval echo $bindir))]
14074 AC_SUBST(BINDIR)
14076 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14077 AC_SUBST(INSTALLDIR)
14079 TESTINSTALLDIR="${BUILDDIR}/test-install"
14080 AC_SUBST(TESTINSTALLDIR)
14083 # ===================================================================
14084 # OAuth2 id and secrets
14085 # ===================================================================
14087 AC_MSG_CHECKING([for Google Drive client id and secret])
14088 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14089     AC_MSG_RESULT([not set])
14090     GDRIVE_CLIENT_ID="\"\""
14091     GDRIVE_CLIENT_SECRET="\"\""
14092 else
14093     AC_MSG_RESULT([set])
14094     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14095     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14097 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14098 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14100 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14101 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14102     AC_MSG_RESULT([not set])
14103     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14104     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14105 else
14106     AC_MSG_RESULT([set])
14107     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14108     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14110 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14111 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14113 AC_MSG_CHECKING([for OneDrive client id and secret])
14114 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14115     AC_MSG_RESULT([not set])
14116     ONEDRIVE_CLIENT_ID="\"\""
14117     ONEDRIVE_CLIENT_SECRET="\"\""
14118 else
14119     AC_MSG_RESULT([set])
14120     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14121     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14123 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14124 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14127 dnl ===================================================================
14128 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14129 dnl --enable-dependency-tracking configure option
14130 dnl ===================================================================
14131 AC_MSG_CHECKING([whether to enable dependency tracking])
14132 if test "$enable_dependency_tracking" = "no"; then
14133     nodep=TRUE
14134     AC_MSG_RESULT([no])
14135 else
14136     AC_MSG_RESULT([yes])
14138 AC_SUBST(nodep)
14140 dnl ===================================================================
14141 dnl Number of CPUs to use during the build
14142 dnl ===================================================================
14143 AC_MSG_CHECKING([for number of processors to use])
14144 # plain --with-parallelism is just the default
14145 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14146     if test "$with_parallelism" = "no"; then
14147         PARALLELISM=0
14148     else
14149         PARALLELISM=$with_parallelism
14150     fi
14151 else
14152     if test "$enable_icecream" = "yes"; then
14153         PARALLELISM="40"
14154     else
14155         case `uname -s` in
14157         Darwin|FreeBSD|NetBSD|OpenBSD)
14158             PARALLELISM=`sysctl -n hw.ncpu`
14159             ;;
14161         Linux)
14162             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14163         ;;
14164         # what else than above does profit here *and* has /proc?
14165         *)
14166             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14167             ;;
14168         esac
14170         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14171         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14172     fi
14175 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14176     if test -z "$with_parallelism"; then
14177             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14178             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14179             PARALLELISM="1"
14180     else
14181         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."
14182     fi
14185 if test $PARALLELISM -eq 0; then
14186     AC_MSG_RESULT([explicit make -j option needed])
14187 else
14188     AC_MSG_RESULT([$PARALLELISM])
14190 AC_SUBST(PARALLELISM)
14192 IWYU_PATH="$with_iwyu"
14193 AC_SUBST(IWYU_PATH)
14194 if test ! -z "$IWYU_PATH"; then
14195     if test ! -f "$IWYU_PATH"; then
14196         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14197     fi
14201 # Set up ILIB for MSVC build
14203 ILIB1=
14204 if test "$build_os" = "cygwin"; then
14205     ILIB="."
14206     if test -n "$JAVA_HOME"; then
14207         ILIB="$ILIB;$JAVA_HOME/lib"
14208     fi
14209     ILIB1=-link
14210     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14211     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14212     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14213     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14214     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14215         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14216         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14217     fi
14218     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14219     ucrtlibpath_formatted=$formatted_path
14220     ILIB="$ILIB;$ucrtlibpath_formatted"
14221     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14222     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14223         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14224     else
14225         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14226     fi
14228     if test "$cross_compiling" != "yes"; then
14229         ILIB_FOR_BUILD="$ILIB"
14230     fi
14232 AC_SUBST(ILIB)
14233 AC_SUBST(ILIB_FOR_BUILD)
14235 # ===================================================================
14236 # Creating bigger shared library to link against
14237 # ===================================================================
14238 AC_MSG_CHECKING([whether to create huge library])
14239 MERGELIBS=
14241 if test $_os = iOS -o $_os = Android; then
14242     # Never any point in mergelibs for these as we build just static
14243     # libraries anyway...
14244     enable_mergelibs=no
14247 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14248     if test $_os != Linux -a $_os != WINNT; then
14249         add_warning "--enable-mergelibs is not tested for this platform"
14250     fi
14251     MERGELIBS="TRUE"
14252     AC_MSG_RESULT([yes])
14253     AC_DEFINE(ENABLE_MERGELIBS)
14254 else
14255     AC_MSG_RESULT([no])
14257 AC_SUBST([MERGELIBS])
14259 dnl ===================================================================
14260 dnl icerun is a wrapper that stops us spawning tens of processes
14261 dnl locally - for tools that can't be executed on the compile cluster
14262 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14263 dnl ===================================================================
14264 AC_MSG_CHECKING([whether to use icerun wrapper])
14265 ICECREAM_RUN=
14266 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14267     ICECREAM_RUN=icerun
14268     AC_MSG_RESULT([yes])
14269 else
14270     AC_MSG_RESULT([no])
14272 AC_SUBST(ICECREAM_RUN)
14274 dnl ===================================================================
14275 dnl Setup the ICECC_VERSION for the build the same way it was set for
14276 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14277 dnl ===================================================================
14278 x_ICECC_VERSION=[\#]
14279 if test -n "$ICECC_VERSION" ; then
14280     x_ICECC_VERSION=
14282 AC_SUBST(x_ICECC_VERSION)
14283 AC_SUBST(ICECC_VERSION)
14285 dnl ===================================================================
14287 AC_MSG_CHECKING([MPL subset])
14288 MPL_SUBSET=
14290 if test "$enable_mpl_subset" = "yes"; then
14291     warn_report=false
14292     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14293         warn_report=true
14294     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14295         warn_report=true
14296     fi
14297     if test "$warn_report" = "true"; then
14298         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14299     fi
14300     if test "x$enable_postgresql_sdbc" != "xno"; then
14301         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14302     fi
14303     if test "$enable_lotuswordpro" = "yes"; then
14304         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14305     fi
14306     if test "$WITH_WEBDAV" = "neon"; then
14307         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14308     fi
14309     if test -n "$ENABLE_POPPLER"; then
14310         if test "x$SYSTEM_POPPLER" = "x"; then
14311             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14312         fi
14313     fi
14314     # cf. m4/libo_check_extension.m4
14315     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14316         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14317     fi
14318     for theme in $WITH_THEMES; do
14319         case $theme in
14320         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14321             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14322         *) : ;;
14323         esac
14324     done
14326     ENABLE_OPENGL_TRANSITIONS=
14328     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14329         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14330     fi
14332     MPL_SUBSET="TRUE"
14333     AC_DEFINE(MPL_HAVE_SUBSET)
14334     AC_MSG_RESULT([only])
14335 else
14336     AC_MSG_RESULT([no restrictions])
14338 AC_SUBST(MPL_SUBSET)
14340 dnl ===================================================================
14342 AC_MSG_CHECKING([formula logger])
14343 ENABLE_FORMULA_LOGGER=
14345 if test "x$enable_formula_logger" = "xyes"; then
14346     AC_MSG_RESULT([yes])
14347     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14348     ENABLE_FORMULA_LOGGER=TRUE
14349 elif test -n "$ENABLE_DBGUTIL" ; then
14350     AC_MSG_RESULT([yes])
14351     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14352     ENABLE_FORMULA_LOGGER=TRUE
14353 else
14354     AC_MSG_RESULT([no])
14357 AC_SUBST(ENABLE_FORMULA_LOGGER)
14359 dnl ===================================================================
14360 dnl Checking for active Antivirus software.
14361 dnl ===================================================================
14363 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14364     AC_MSG_CHECKING([for active Antivirus software])
14365     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14366     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14367         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14368             AC_MSG_RESULT([found])
14369             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14370             echo $EICAR_STRING > $SRC_ROOT/eicar
14371             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14372             rm $SRC_ROOT/eicar
14373             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14374                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14375             fi
14376             echo $EICAR_STRING > $BUILDDIR/eicar
14377             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14378             rm $BUILDDIR/eicar
14379             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14380                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14381             fi
14382             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"
14383         else
14384             AC_MSG_RESULT([not found])
14385         fi
14386     else
14387         AC_MSG_RESULT([n/a])
14388     fi
14391 dnl ===================================================================
14392 dnl Setting up the environment.
14393 dnl ===================================================================
14394 AC_MSG_NOTICE([setting up the build environment variables...])
14396 AC_SUBST(COMPATH)
14398 if test "$build_os" = "cygwin"; then
14399     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14400         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14401         ATL_INCLUDE="$COMPATH/atlmfc/include"
14402     elif test -d "$COMPATH/atlmfc/lib"; then
14403         ATL_LIB="$COMPATH/atlmfc/lib"
14404         ATL_INCLUDE="$COMPATH/atlmfc/include"
14405     else
14406         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14407         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14408     fi
14409     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14410     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14411     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14413     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14414     PathFormat "/usr/bin/find.exe"
14415     FIND="$formatted_path"
14416     PathFormat "/usr/bin/sort.exe"
14417     SORT="$formatted_path"
14418     PathFormat "/usr/bin/grep.exe"
14419     WIN_GREP="$formatted_path"
14420     PathFormat "/usr/bin/ls.exe"
14421     WIN_LS="$formatted_path"
14422     PathFormat "/usr/bin/touch.exe"
14423     WIN_TOUCH="$formatted_path"
14424 else
14425     FIND=find
14426     SORT=sort
14429 AC_SUBST(ATL_INCLUDE)
14430 AC_SUBST(ATL_LIB)
14431 AC_SUBST(FIND)
14432 AC_SUBST(SORT)
14433 AC_SUBST(WIN_GREP)
14434 AC_SUBST(WIN_LS)
14435 AC_SUBST(WIN_TOUCH)
14437 AC_SUBST(BUILD_TYPE)
14439 AC_SUBST(SOLARINC)
14441 PathFormat "$PERL"
14442 PERL="$formatted_path"
14443 AC_SUBST(PERL)
14445 if test -n "$TMPDIR"; then
14446     TEMP_DIRECTORY="$TMPDIR"
14447 else
14448     TEMP_DIRECTORY="/tmp"
14450 if test "$build_os" = "cygwin"; then
14451     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14453 AC_SUBST(TEMP_DIRECTORY)
14455 # setup the PATH for the environment
14456 if test -n "$LO_PATH_FOR_BUILD"; then
14457     LO_PATH="$LO_PATH_FOR_BUILD"
14458     case "$host_os" in
14459     cygwin*|wsl*)
14460         pathmunge "$MSVC_HOST_PATH" "before"
14461         ;;
14462     esac
14463 else
14464     LO_PATH="$PATH"
14466     case "$host_os" in
14468     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14469         if test "$ENABLE_JAVA" != ""; then
14470             pathmunge "$JAVA_HOME/bin" "after"
14471         fi
14472         ;;
14474     cygwin*|wsl*)
14475         # Win32 make needs native paths
14476         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14477             LO_PATH=`cygpath -p -m "$PATH"`
14478         fi
14479         if test "$WIN_BUILD_ARCH" = "x64"; then
14480             # needed for msi packaging
14481             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14482         fi
14483         # .NET 4.6 and higher don't have bin directory
14484         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14485             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14486         fi
14487         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14488         pathmunge "$CSC_PATH" "before"
14489         pathmunge "$MIDL_PATH" "before"
14490         pathmunge "$AL_PATH" "before"
14491         pathmunge "$MSVC_MULTI_PATH" "before"
14492         pathmunge "$MSVC_BUILD_PATH" "before"
14493         if test -n "$MSBUILD_PATH" ; then
14494             pathmunge "$MSBUILD_PATH" "before"
14495         fi
14496         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14497         if test "$ENABLE_JAVA" != ""; then
14498             if test -d "$JAVA_HOME/jre/bin/client"; then
14499                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14500             fi
14501             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14502                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14503             fi
14504             pathmunge "$JAVA_HOME/bin" "before"
14505         fi
14506         pathmunge "$MSVC_HOST_PATH" "before"
14507         ;;
14509     solaris*)
14510         pathmunge "/usr/css/bin" "before"
14511         if test "$ENABLE_JAVA" != ""; then
14512             pathmunge "$JAVA_HOME/bin" "after"
14513         fi
14514         ;;
14515     esac
14518 AC_SUBST(LO_PATH)
14520 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14521 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14522     x_LO_ELFCHECK_ALLOWLIST=
14523 else
14524     x_LO_ELFCHECK_ALLOWLIST=[\#]
14526 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14527 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14529 libo_FUZZ_SUMMARY
14531 # Generate a configuration sha256 we can use for deps
14532 if test -f config_host.mk; then
14533     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14535 if test -f config_host_lang.mk; then
14536     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14539 CFLAGS=$my_original_CFLAGS
14540 CXXFLAGS=$my_original_CXXFLAGS
14541 CPPFLAGS=$my_original_CPPFLAGS
14543 AC_CONFIG_LINKS([include:include])
14545 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14546 # BUILD platform configuration] - otherwise breaks cross building
14547 AC_CONFIG_FILES([config_host.mk
14548                  config_host_lang.mk
14549                  Makefile
14550                  bin/bffvalidator.sh
14551                  bin/odfvalidator.sh
14552                  bin/officeotron.sh
14553                  hardened_runtime.xcent
14554                  instsetoo_native/util/openoffice.lst
14555                  sysui/desktop/macosx/Info.plist
14556                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14557 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14558 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14559 AC_CONFIG_HEADERS([config_host/config_clang.h])
14560 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14561 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14562 AC_CONFIG_HEADERS([config_host/config_eot.h])
14563 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14564 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14565 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14566 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14567 AC_CONFIG_HEADERS([config_host/config_features.h])
14568 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14569 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14570 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14571 AC_CONFIG_HEADERS([config_host/config_folders.h])
14572 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14573 AC_CONFIG_HEADERS([config_host/config_gio.h])
14574 AC_CONFIG_HEADERS([config_host/config_global.h])
14575 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14576 AC_CONFIG_HEADERS([config_host/config_java.h])
14577 AC_CONFIG_HEADERS([config_host/config_langs.h])
14578 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14579 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14580 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14581 AC_CONFIG_HEADERS([config_host/config_locales.h])
14582 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14583 AC_CONFIG_HEADERS([config_host/config_oox.h])
14584 AC_CONFIG_HEADERS([config_host/config_options.h])
14585 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14586 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14587 AC_CONFIG_HEADERS([config_host/config_skia.h])
14588 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14589 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14590 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14591 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14592 AC_CONFIG_HEADERS([config_host/config_version.h])
14593 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14594 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14595 AC_CONFIG_HEADERS([config_host/config_python.h])
14596 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14597 AC_OUTPUT
14599 if test "$CROSS_COMPILING" = TRUE; then
14600     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14603 # touch the config timestamp file
14604 if test ! -f config_host.mk.stamp; then
14605     echo > config_host.mk.stamp
14606 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14607     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14608 else
14609     echo > config_host.mk.stamp
14612 # touch the config lang timestamp file
14613 if test ! -f config_host_lang.mk.stamp; then
14614     echo > config_host_lang.mk.stamp
14615 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14616     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14617 else
14618     echo > config_host_lang.mk.stamp
14622 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14623         -a "$build_os" = "cygwin"; then
14625 cat << _EOS
14626 ****************************************************************************
14627 WARNING:
14628 Your make version is known to be horribly slow, and hard to debug
14629 problems with. To get a reasonably functional make please do:
14631 to install a pre-compiled binary make for Win32
14633  mkdir -p /opt/lo/bin
14634  cd /opt/lo/bin
14635  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14636  cp make-4.2.1-msvc.exe make
14637  chmod +x make
14639 to install from source:
14640 place yourself in a working directory of you choice.
14642  git clone git://git.savannah.gnu.org/make.git
14644  [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"]
14645  set PATH=%PATH%;C:\Cygwin\bin
14646  [or Cygwin64, if that is what you have]
14647  cd path-to-make-repo-you-cloned-above
14648  build_w32.bat --without-guile
14650 should result in a WinRel/gnumake.exe.
14651 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14653 Then re-run autogen.sh
14655 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14656 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14658 _EOS
14659 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14660     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14665 cat << _EOF
14666 ****************************************************************************
14668 To build, run:
14669 $GNUMAKE
14671 To view some help, run:
14672 $GNUMAKE help
14674 _EOF
14676 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14677     cat << _EOF
14678 After the build has finished successfully, you can immediately run what you built using the command:
14679 _EOF
14681     if test $_os = Darwin; then
14682         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14683     else
14684         echo instdir/program/soffice
14685     fi
14686     cat << _EOF
14688 If you want to run the smoketest, run:
14689 $GNUMAKE check
14691 _EOF
14694 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14695     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14696     cat "$WARNINGS_FILE_FOR_BUILD"
14697     echo
14700 if test -s "$WARNINGS_FILE"; then
14701     echo "HOST config ($WARNINGS_FILE)"
14702     cat "$WARNINGS_FILE"
14705 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: