Resolves: tdf#146141 don't double delete comments
[LibreOffice.git] / configure.ac
blobbbd326b84321d5d6f9ff9050fa37db99ad3764aa
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.beta1+],[],[],[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 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 AC_ARG_ENABLE(z7-debug,
1770     AS_HELP_STRING([--enable-z7-debug],
1771         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1772          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1773          Enabled by default if ccache is detected.]))
1775 libo_FUZZ_ARG_ENABLE(online-update,
1776     AS_HELP_STRING([--enable-online-update],
1777         [Enable the online update service that will check for new versions of
1778          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1779          If the value is "mar", the experimental Mozilla-like update will be
1780          enabled instead of the traditional update mechanism.]),
1783 AC_ARG_WITH(update-config,
1784     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1785                    [Path to the update config ini file]))
1787 libo_FUZZ_ARG_ENABLE(extension-update,
1788     AS_HELP_STRING([--disable-extension-update],
1789         [Disable possibility to update installed extensions.]),
1792 libo_FUZZ_ARG_ENABLE(release-build,
1793     AS_HELP_STRING([--enable-release-build],
1794         [Enable release build. Note that the "release build" choice is orthogonal to
1795          whether symbols are present, debug info is generated, or optimization
1796          is done.
1797          See http://wiki.documentfoundation.org/Development/DevBuild]),
1800 AC_ARG_ENABLE(windows-build-signing,
1801     AS_HELP_STRING([--enable-windows-build-signing],
1802         [Enable signing of windows binaries (*.exe, *.dll)]),
1805 AC_ARG_ENABLE(silent-msi,
1806     AS_HELP_STRING([--enable-silent-msi],
1807         [Enable MSI with LIMITUI=1 (silent install).]),
1810 AC_ARG_ENABLE(macosx-code-signing,
1811     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1812         [Sign executables, dylibs, frameworks and the app bundle. If you
1813          don't provide an identity the first suitable certificate
1814          in your keychain is used.]),
1817 AC_ARG_ENABLE(macosx-package-signing,
1818     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1819         [Create a .pkg suitable for uploading to the Mac App Store and sign
1820          it. If you don't provide an identity the first suitable certificate
1821          in your keychain is used.]),
1824 AC_ARG_ENABLE(macosx-sandbox,
1825     AS_HELP_STRING([--enable-macosx-sandbox],
1826         [Make the app bundle run in a sandbox. Requires code signing.
1827          Is required by apps distributed in the Mac App Store, and implies
1828          adherence to App Store rules.]),
1831 AC_ARG_WITH(macosx-bundle-identifier,
1832     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1833         [Define the macOS bundle identifier. Default is the somewhat weird
1834          org.libreoffice.script ("script", huh?).]),
1835 ,with_macosx_bundle_identifier=org.libreoffice.script)
1837 AC_ARG_WITH(product-name,
1838     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1839         [Define the product name. Default is AC_PACKAGE_NAME.]),
1840 ,with_product_name=$PRODUCTNAME)
1842 libo_FUZZ_ARG_ENABLE(community-flavor,
1843     AS_HELP_STRING([--disable-community-flavor],
1844         [Disable the Community branding.]),
1847 AC_ARG_WITH(package-version,
1848     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1849         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1852 libo_FUZZ_ARG_ENABLE(readonly-installset,
1853     AS_HELP_STRING([--enable-readonly-installset],
1854         [Prevents any attempts by LibreOffice to write into its installation. That means
1855          at least that no "system-wide" extensions can be added. Partly experimental work in
1856          progress, probably not fully implemented. Always enabled for macOS.]),
1859 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1860     AS_HELP_STRING([--disable-mariadb-sdbc],
1861         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1864 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1865     AS_HELP_STRING([--disable-postgresql-sdbc],
1866         [Disable the build of the PostgreSQL-SDBC driver.])
1869 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1870     AS_HELP_STRING([--disable-lotuswordpro],
1871         [Disable the build of the Lotus Word Pro filter.]),
1872 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1874 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1875     AS_HELP_STRING([--disable-firebird-sdbc],
1876         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1877 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1879 AC_ARG_ENABLE(bogus-pkg-config,
1880     AS_HELP_STRING([--enable-bogus-pkg-config],
1881         [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.]),
1884 AC_ARG_ENABLE(openssl,
1885     AS_HELP_STRING([--disable-openssl],
1886         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1887          components will either use GNUTLS or NSS. Work in progress,
1888          use only if you are hacking on it.]),
1889 ,enable_openssl=yes)
1891 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1892     AS_HELP_STRING([--enable-cipher-openssl-backend],
1893         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1894          Requires --enable-openssl.]))
1896 AC_ARG_ENABLE(nss,
1897     AS_HELP_STRING([--disable-nss],
1898         [Disable using NSS. If disabled,
1899          components will either use GNUTLS or openssl. Work in progress,
1900          use only if you are hacking on it.]),
1901 ,enable_nss=yes)
1903 AC_ARG_ENABLE(library-bin-tar,
1904     AS_HELP_STRING([--enable-library-bin-tar],
1905         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1906         Some libraries can save their build result in a tarball
1907         stored in TARFILE_LOCATION. That binary tarball is
1908         uniquely identified by the source tarball,
1909         the content of the config_host.mk file and the content
1910         of the top-level directory in core for that library
1911         If this option is enabled, then if such a tarfile exist, it will be untarred
1912         instead of the source tarfile, and the build step will be skipped for that
1913         library.
1914         If a proper tarfile does not exist, then the normal source-based
1915         build is done for that library and a proper binary tarfile is created
1916         for the next time.]),
1919 AC_ARG_ENABLE(dconf,
1920     AS_HELP_STRING([--disable-dconf],
1921         [Disable the dconf configuration backend (enabled by default where
1922          available).]))
1924 libo_FUZZ_ARG_ENABLE(formula-logger,
1925     AS_HELP_STRING(
1926         [--enable-formula-logger],
1927         [Enable formula logger for logging formula calculation flow in Calc.]
1928     )
1931 AC_ARG_ENABLE(ldap,
1932     AS_HELP_STRING([--disable-ldap],
1933         [Disable LDAP support.]),
1934 ,enable_ldap=yes)
1936 AC_ARG_ENABLE(opencl,
1937     AS_HELP_STRING([--disable-opencl],
1938         [Disable OpenCL support.]),
1939 ,enable_opencl=yes)
1941 libo_FUZZ_ARG_ENABLE(librelogo,
1942     AS_HELP_STRING([--disable-librelogo],
1943         [Do not build LibreLogo.]),
1944 ,enable_librelogo=yes)
1946 AC_ARG_ENABLE(cmis,
1947     AS_HELP_STRING([--disable-cmis],
1948         [Disable CMIS support.]),
1949 ,enable_cmis=yes)
1951 AC_ARG_ENABLE(curl,
1952     AS_HELP_STRING([--disable-curl],
1953         [Disable CURL support.]),
1954 ,enable_curl=yes)
1956 AC_ARG_ENABLE(wasm-strip,
1957     AS_HELP_STRING([--enable-wasm-strip],
1958         [Strip the static build like for WASM/emscripten platform.]),
1959 ,enable_wasm_strip=yes)
1961 AC_ARG_ENABLE(xmlhelp,
1962     AS_HELP_STRING([--disable-xmlhelp],
1963         [Disable XML help support]),
1964 ,enable_xmlhelp=yes)
1967 dnl ===================================================================
1968 dnl Optional Packages (--with/without-)
1969 dnl ===================================================================
1971 AC_ARG_WITH(gcc-home,
1972     AS_HELP_STRING([--with-gcc-home],
1973         [Specify the location of gcc/g++ manually. This can be used in conjunction
1974          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1975          non-default path.]),
1978 AC_ARG_WITH(gnu-patch,
1979     AS_HELP_STRING([--with-gnu-patch],
1980         [Specify location of GNU patch on Solaris or FreeBSD.]),
1983 AC_ARG_WITH(build-platform-configure-options,
1984     AS_HELP_STRING([--with-build-platform-configure-options],
1985         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1988 AC_ARG_WITH(gnu-cp,
1989     AS_HELP_STRING([--with-gnu-cp],
1990         [Specify location of GNU cp on Solaris or FreeBSD.]),
1993 AC_ARG_WITH(external-tar,
1994     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1995         [Specify an absolute path of where to find (and store) tarfiles.]),
1996     TARFILE_LOCATION=$withval ,
1999 AC_ARG_WITH(referenced-git,
2000     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2001         [Specify another checkout directory to reference. This makes use of
2002                  git submodule update --reference, and saves a lot of diskspace
2003                  when having multiple trees side-by-side.]),
2004     GIT_REFERENCE_SRC=$withval ,
2007 AC_ARG_WITH(linked-git,
2008     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2009         [Specify a directory where the repositories of submodules are located.
2010          This uses a method similar to git-new-workdir to get submodules.]),
2011     GIT_LINK_SRC=$withval ,
2014 AC_ARG_WITH(galleries,
2015     AS_HELP_STRING([--with-galleries],
2016         [Specify how galleries should be built. It is possible either to
2017          build these internally from source ("build"),
2018          or to disable them ("no")]),
2021 AC_ARG_WITH(theme,
2022     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2023         [Choose which themes to include. By default those themes with an '*' are included.
2024          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2025          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2028 libo_FUZZ_ARG_WITH(helppack-integration,
2029     AS_HELP_STRING([--without-helppack-integration],
2030         [It will not integrate the helppacks to the installer
2031          of the product. Please use this switch to use the online help
2032          or separate help packages.]),
2035 libo_FUZZ_ARG_WITH(fonts,
2036     AS_HELP_STRING([--without-fonts],
2037         [LibreOffice includes some third-party fonts to provide a reliable basis for
2038          help content, templates, samples, etc. When these fonts are already
2039          known to be available on the system then you should use this option.]),
2042 AC_ARG_WITH(epm,
2043     AS_HELP_STRING([--with-epm],
2044         [Decides which epm to use. Default is to use the one from the system if
2045          one is built. When either this is not there or you say =internal epm
2046          will be built.]),
2049 AC_ARG_WITH(package-format,
2050     AS_HELP_STRING([--with-package-format],
2051         [Specify package format(s) for LibreOffice installation sets. The
2052          implicit --without-package-format leads to no installation sets being
2053          generated. Possible values: aix, archive, bsd, deb, dmg,
2054          installed, msi, pkg, and rpm.
2055          Example: --with-package-format='deb rpm']),
2058 AC_ARG_WITH(tls,
2059     AS_HELP_STRING([--with-tls],
2060         [Decides which TLS/SSL and cryptographic implementations to use for
2061          LibreOffice's code. Notice that this doesn't apply for depending
2062          libraries like "neon", for example. Default is to use NSS
2063          although OpenSSL is also possible. Notice that selecting NSS restricts
2064          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2065          restrict by now the usage of NSS in LO's code. Possible values:
2066          openssl, nss. Example: --with-tls="nss"]),
2069 AC_ARG_WITH(system-libs,
2070     AS_HELP_STRING([--with-system-libs],
2071         [Use libraries already on system -- enables all --with-system-* flags.]),
2074 AC_ARG_WITH(system-bzip2,
2075     AS_HELP_STRING([--with-system-bzip2],
2076         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2077     [with_system_bzip2="$with_system_libs"])
2079 AC_ARG_WITH(system-headers,
2080     AS_HELP_STRING([--with-system-headers],
2081         [Use headers already on system -- enables all --with-system-* flags for
2082          external packages whose headers are the only entities used i.e.
2083          boost/odbc/sane-header(s).]),,
2084     [with_system_headers="$with_system_libs"])
2086 AC_ARG_WITH(system-jars,
2087     AS_HELP_STRING([--without-system-jars],
2088         [When building with --with-system-libs, also the needed jars are expected
2089          on the system. Use this to disable that]),,
2090     [with_system_jars="$with_system_libs"])
2092 AC_ARG_WITH(system-cairo,
2093     AS_HELP_STRING([--with-system-cairo],
2094         [Use cairo libraries already on system.  Happens automatically for
2095          (implicit) --enable-gtk3.]))
2097 AC_ARG_WITH(system-epoxy,
2098     AS_HELP_STRING([--with-system-epoxy],
2099         [Use epoxy libraries already on system.  Happens automatically for
2100          (implicit) --enable-gtk3.]),,
2101        [with_system_epoxy="$with_system_libs"])
2103 AC_ARG_WITH(myspell-dicts,
2104     AS_HELP_STRING([--with-myspell-dicts],
2105         [Adds myspell dictionaries to the LibreOffice installation set]),
2108 AC_ARG_WITH(system-dicts,
2109     AS_HELP_STRING([--without-system-dicts],
2110         [Do not use dictionaries from system paths.]),
2113 AC_ARG_WITH(external-dict-dir,
2114     AS_HELP_STRING([--with-external-dict-dir],
2115         [Specify external dictionary dir.]),
2118 AC_ARG_WITH(external-hyph-dir,
2119     AS_HELP_STRING([--with-external-hyph-dir],
2120         [Specify external hyphenation pattern dir.]),
2123 AC_ARG_WITH(external-thes-dir,
2124     AS_HELP_STRING([--with-external-thes-dir],
2125         [Specify external thesaurus dir.]),
2128 AC_ARG_WITH(system-zlib,
2129     AS_HELP_STRING([--with-system-zlib],
2130         [Use zlib already on system.]),,
2131     [with_system_zlib=auto])
2133 AC_ARG_WITH(system-jpeg,
2134     AS_HELP_STRING([--with-system-jpeg],
2135         [Use jpeg already on system.]),,
2136     [with_system_jpeg="$with_system_libs"])
2138 AC_ARG_WITH(system-clucene,
2139     AS_HELP_STRING([--with-system-clucene],
2140         [Use clucene already on system.]),,
2141     [with_system_clucene="$with_system_libs"])
2143 AC_ARG_WITH(system-expat,
2144     AS_HELP_STRING([--with-system-expat],
2145         [Use expat already on system.]),,
2146     [with_system_expat="$with_system_libs"])
2148 AC_ARG_WITH(system-libxml,
2149     AS_HELP_STRING([--with-system-libxml],
2150         [Use libxml/libxslt already on system.]),,
2151     [with_system_libxml=auto])
2153 AC_ARG_WITH(system-icu,
2154     AS_HELP_STRING([--with-system-icu],
2155         [Use icu already on system.]),,
2156     [with_system_icu="$with_system_libs"])
2158 AC_ARG_WITH(system-ucpp,
2159     AS_HELP_STRING([--with-system-ucpp],
2160         [Use ucpp already on system.]),,
2161     [])
2163 AC_ARG_WITH(system-openldap,
2164     AS_HELP_STRING([--with-system-openldap],
2165         [Use the OpenLDAP LDAP SDK already on system.]),,
2166     [with_system_openldap="$with_system_libs"])
2168 libo_FUZZ_ARG_ENABLE(poppler,
2169     AS_HELP_STRING([--disable-poppler],
2170         [Disable building Poppler.])
2173 AC_ARG_WITH(system-poppler,
2174     AS_HELP_STRING([--with-system-poppler],
2175         [Use system poppler (only needed for PDF import).]),,
2176     [with_system_poppler="$with_system_libs"])
2178 AC_ARG_WITH(system-abseil,
2179     AS_HELP_STRING([--with-system-abseil],
2180         [Use the abseil libraries already on system.]),,
2181     [with_system_abseil="$with_system_libs"])
2183 AC_ARG_WITH(system-openjpeg,
2184     AS_HELP_STRING([--with-system-openjpeg],
2185         [Use the OpenJPEG library already on system.]),,
2186     [with_system_openjpeg="$with_system_libs"])
2188 libo_FUZZ_ARG_ENABLE(gpgmepp,
2189     AS_HELP_STRING([--disable-gpgmepp],
2190         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2193 AC_ARG_WITH(system-gpgmepp,
2194     AS_HELP_STRING([--with-system-gpgmepp],
2195         [Use gpgmepp already on system]),,
2196     [with_system_gpgmepp="$with_system_libs"])
2198 AC_ARG_WITH(system-mariadb,
2199     AS_HELP_STRING([--with-system-mariadb],
2200         [Use MariaDB/MySQL libraries already on system.]),,
2201     [with_system_mariadb="$with_system_libs"])
2203 AC_ARG_ENABLE(bundle-mariadb,
2204     AS_HELP_STRING([--enable-bundle-mariadb],
2205         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2208 AC_ARG_WITH(system-postgresql,
2209     AS_HELP_STRING([--with-system-postgresql],
2210         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2211          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2212     [with_system_postgresql="$with_system_libs"])
2214 AC_ARG_WITH(libpq-path,
2215     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2216         [Use this PostgreSQL C interface (libpq) installation for building
2217          the PostgreSQL-SDBC extension.]),
2220 AC_ARG_WITH(system-firebird,
2221     AS_HELP_STRING([--with-system-firebird],
2222         [Use Firebird libraries already on system, for building the Firebird-SDBC
2223          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2224     [with_system_firebird="$with_system_libs"])
2226 AC_ARG_WITH(system-libtommath,
2227             AS_HELP_STRING([--with-system-libtommath],
2228                            [Use libtommath already on system]),,
2229             [with_system_libtommath="$with_system_libs"])
2231 AC_ARG_WITH(system-hsqldb,
2232     AS_HELP_STRING([--with-system-hsqldb],
2233         [Use hsqldb already on system.]))
2235 AC_ARG_WITH(hsqldb-jar,
2236     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2237         [Specify path to jarfile manually.]),
2238     HSQLDB_JAR=$withval)
2240 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2241     AS_HELP_STRING([--disable-scripting-beanshell],
2242         [Disable support for scripts in BeanShell.]),
2246 AC_ARG_WITH(system-beanshell,
2247     AS_HELP_STRING([--with-system-beanshell],
2248         [Use beanshell already on system.]),,
2249     [with_system_beanshell="$with_system_jars"])
2251 AC_ARG_WITH(beanshell-jar,
2252     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2253         [Specify path to jarfile manually.]),
2254     BSH_JAR=$withval)
2256 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2257     AS_HELP_STRING([--disable-scripting-javascript],
2258         [Disable support for scripts in JavaScript.]),
2262 AC_ARG_WITH(system-rhino,
2263     AS_HELP_STRING([--with-system-rhino],
2264         [Use rhino already on system.]),,)
2265 #    [with_system_rhino="$with_system_jars"])
2266 # Above is not used as we have different debug interface
2267 # patched into internal rhino. This code needs to be fixed
2268 # before we can enable it by default.
2270 AC_ARG_WITH(rhino-jar,
2271     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2272         [Specify path to jarfile manually.]),
2273     RHINO_JAR=$withval)
2275 AC_ARG_WITH(system-jfreereport,
2276     AS_HELP_STRING([--with-system-jfreereport],
2277         [Use JFreeReport already on system.]),,
2278     [with_system_jfreereport="$with_system_jars"])
2280 AC_ARG_WITH(sac-jar,
2281     AS_HELP_STRING([--with-sac-jar=JARFILE],
2282         [Specify path to jarfile manually.]),
2283     SAC_JAR=$withval)
2285 AC_ARG_WITH(libxml-jar,
2286     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2287         [Specify path to jarfile manually.]),
2288     LIBXML_JAR=$withval)
2290 AC_ARG_WITH(flute-jar,
2291     AS_HELP_STRING([--with-flute-jar=JARFILE],
2292         [Specify path to jarfile manually.]),
2293     FLUTE_JAR=$withval)
2295 AC_ARG_WITH(jfreereport-jar,
2296     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2297         [Specify path to jarfile manually.]),
2298     JFREEREPORT_JAR=$withval)
2300 AC_ARG_WITH(liblayout-jar,
2301     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2302         [Specify path to jarfile manually.]),
2303     LIBLAYOUT_JAR=$withval)
2305 AC_ARG_WITH(libloader-jar,
2306     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2307         [Specify path to jarfile manually.]),
2308     LIBLOADER_JAR=$withval)
2310 AC_ARG_WITH(libformula-jar,
2311     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2312         [Specify path to jarfile manually.]),
2313     LIBFORMULA_JAR=$withval)
2315 AC_ARG_WITH(librepository-jar,
2316     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2317         [Specify path to jarfile manually.]),
2318     LIBREPOSITORY_JAR=$withval)
2320 AC_ARG_WITH(libfonts-jar,
2321     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2322         [Specify path to jarfile manually.]),
2323     LIBFONTS_JAR=$withval)
2325 AC_ARG_WITH(libserializer-jar,
2326     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2327         [Specify path to jarfile manually.]),
2328     LIBSERIALIZER_JAR=$withval)
2330 AC_ARG_WITH(libbase-jar,
2331     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2332         [Specify path to jarfile manually.]),
2333     LIBBASE_JAR=$withval)
2335 AC_ARG_WITH(system-odbc,
2336     AS_HELP_STRING([--with-system-odbc],
2337         [Use the odbc headers already on system.]),,
2338     [with_system_odbc="auto"])
2340 AC_ARG_WITH(system-sane,
2341     AS_HELP_STRING([--with-system-sane],
2342         [Use sane.h already on system.]),,
2343     [with_system_sane="$with_system_headers"])
2345 AC_ARG_WITH(system-bluez,
2346     AS_HELP_STRING([--with-system-bluez],
2347         [Use bluetooth.h already on system.]),,
2348     [with_system_bluez="$with_system_headers"])
2350 AC_ARG_WITH(system-curl,
2351     AS_HELP_STRING([--with-system-curl],
2352         [Use curl already on system.]),,
2353     [with_system_curl=auto])
2355 AC_ARG_WITH(system-boost,
2356     AS_HELP_STRING([--with-system-boost],
2357         [Use boost already on system.]),,
2358     [with_system_boost="$with_system_headers"])
2360 AC_ARG_WITH(system-cuckoo,
2361     AS_HELP_STRING([--with-system-cuckoo],
2362         [Use libcuckoo already on system.]),,
2363     [with_system_cuckoo="$with_system_headers"])
2365 AC_ARG_WITH(system-glm,
2366     AS_HELP_STRING([--with-system-glm],
2367         [Use glm already on system.]),,
2368     [with_system_glm="$with_system_headers"])
2370 AC_ARG_WITH(system-hunspell,
2371     AS_HELP_STRING([--with-system-hunspell],
2372         [Use libhunspell already on system.]),,
2373     [with_system_hunspell="$with_system_libs"])
2375 libo_FUZZ_ARG_ENABLE(zxing,
2376     AS_HELP_STRING([--disable-zxing],
2377        [Disable use of zxing external library.]))
2379 AC_ARG_WITH(system-zxing,
2380     AS_HELP_STRING([--with-system-zxing],
2381         [Use libzxing already on system.]),,
2382     [with_system_zxing="$with_system_libs"])
2384 AC_ARG_WITH(system-box2d,
2385     AS_HELP_STRING([--with-system-box2d],
2386         [Use box2d already on system.]),,
2387     [with_system_box2d="$with_system_libs"])
2389 AC_ARG_WITH(system-mythes,
2390     AS_HELP_STRING([--with-system-mythes],
2391         [Use mythes already on system.]),,
2392     [with_system_mythes="$with_system_libs"])
2394 AC_ARG_WITH(system-altlinuxhyph,
2395     AS_HELP_STRING([--with-system-altlinuxhyph],
2396         [Use ALTLinuxhyph already on system.]),,
2397     [with_system_altlinuxhyph="$with_system_libs"])
2399 AC_ARG_WITH(system-lpsolve,
2400     AS_HELP_STRING([--with-system-lpsolve],
2401         [Use lpsolve already on system.]),,
2402     [with_system_lpsolve="$with_system_libs"])
2404 AC_ARG_WITH(system-coinmp,
2405     AS_HELP_STRING([--with-system-coinmp],
2406         [Use CoinMP already on system.]),,
2407     [with_system_coinmp="$with_system_libs"])
2409 AC_ARG_WITH(system-liblangtag,
2410     AS_HELP_STRING([--with-system-liblangtag],
2411         [Use liblangtag library already on system.]),,
2412     [with_system_liblangtag="$with_system_libs"])
2414 AC_ARG_WITH(webdav,
2415     AS_HELP_STRING([--with-webdav],
2416         [Specify which library to use for webdav implementation.
2417          Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2418          Example: --with-webdav="serf"]))
2420 AC_ARG_WITH(linker-hash-style,
2421     AS_HELP_STRING([--with-linker-hash-style],
2422         [Use linker with --hash-style=<style> when linking shared objects.
2423          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2424          if supported on the build system, and "sysv" otherwise.]))
2426 AC_ARG_WITH(jdk-home,
2427     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2428         [If you have installed JDK 9 or later on your system please supply the
2429          path here. Note that this is not the location of the java command but the
2430          location of the entire distribution. In case of cross-compiling, this
2431          is the JDK of the host os. Use --with-build-platform-configure-options
2432          to point to a different build platform JDK.]),
2435 AC_ARG_WITH(help,
2436     AS_HELP_STRING([--with-help],
2437         [Enable the build of help. There is a special parameter "common" that
2438          can be used to bundle only the common part, .e.g help-specific icons.
2439          This is useful when you build the helpcontent separately.])
2440     [
2441                           Usage:     --with-help    build the old local help
2442                                  --without-help     no local help (default)
2443                                  --with-help=html   build the new HTML local help
2444                                  --with-help=online build the new HTML online help
2445     ],
2448 AC_ARG_WITH(omindex,
2449    AS_HELP_STRING([--with-omindex],
2450         [Enable the support of xapian-omega index for online help.])
2451    [
2452                          Usage: --with-omindex=server prepare the pages for omindex
2453                                 but let xapian-omega be built in server.
2454                                 --with-omindex=noxap do not prepare online pages
2455                                 for xapian-omega
2456   ],
2459 libo_FUZZ_ARG_WITH(java,
2460     AS_HELP_STRING([--with-java=<java command>],
2461         [Specify the name of the Java interpreter command. Typically "java"
2462          which is the default.
2464          To build without support for Java components, applets, accessibility
2465          or the XML filters written in Java, use --without-java or --with-java=no.]),
2466     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2467     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2470 AC_ARG_WITH(jvm-path,
2471     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2472         [Use a specific JVM search path at runtime.
2473          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2476 AC_ARG_WITH(ant-home,
2477     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2478         [If you have installed Apache Ant on your system, please supply the path here.
2479          Note that this is not the location of the Ant binary but the location
2480          of the entire distribution.]),
2483 AC_ARG_WITH(symbol-config,
2484     AS_HELP_STRING([--with-symbol-config],
2485         [Configuration for the crashreport symbol upload]),
2486         [],
2487         [with_symbol_config=no])
2489 AC_ARG_WITH(export-validation,
2490     AS_HELP_STRING([--without-export-validation],
2491         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2492 ,with_export_validation=auto)
2494 AC_ARG_WITH(bffvalidator,
2495     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2496         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2497          Requires installed Microsoft Office Binary File Format Validator.
2498          Note: export-validation (--with-export-validation) is required to be turned on.
2499          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2500 ,with_bffvalidator=no)
2502 libo_FUZZ_ARG_WITH(junit,
2503     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2504         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2505          --without-junit disables those tests. Not relevant in the --without-java case.]),
2506 ,with_junit=yes)
2508 AC_ARG_WITH(hamcrest,
2509     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2510         [Specifies the hamcrest jar file to use for JUnit-based tests.
2511          --without-junit disables those tests. Not relevant in the --without-java case.]),
2512 ,with_hamcrest=yes)
2514 AC_ARG_WITH(perl-home,
2515     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2516         [If you have installed Perl 5 Distribution, on your system, please
2517          supply the path here. Note that this is not the location of the Perl
2518          binary but the location of the entire distribution.]),
2521 libo_FUZZ_ARG_WITH(doxygen,
2522     AS_HELP_STRING(
2523         [--with-doxygen=<absolute path to doxygen executable>],
2524         [Specifies the doxygen executable to use when generating ODK C/C++
2525          documentation. --without-doxygen disables generation of ODK C/C++
2526          documentation. Not relevant in the --disable-odk case.]),
2527 ,with_doxygen=yes)
2529 AC_ARG_WITH(visual-studio,
2530     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2531         [Specify which Visual Studio version to use in case several are
2532          installed. Currently 2019 (default) and 2022 are supported.]),
2535 AC_ARG_WITH(windows-sdk,
2536     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2537         [Specify which Windows SDK, or "Windows Kit", version to use
2538          in case the one that came with the selected Visual Studio
2539          is not what you want for some reason. Note that not all compiler/SDK
2540          combinations are supported. The intent is that this option should not
2541          be needed.]),
2544 AC_ARG_WITH(lang,
2545     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2546         [Use this option to build LibreOffice with additional UI language support.
2547          English (US) is always included by default.
2548          Separate multiple languages with space.
2549          For all languages, use --with-lang=ALL.]),
2552 AC_ARG_WITH(locales,
2553     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2554         [Use this option to limit the locale information built in.
2555          Separate multiple locales with space.
2556          Very experimental and might well break stuff.
2557          Just a desperate measure to shrink code and data size.
2558          By default all the locales available is included.
2559          This option is completely unrelated to --with-lang.])
2560     [
2561                           Affects also our character encoding conversion
2562                           tables for encodings mainly targeted for a
2563                           particular locale, like EUC-CN and EUC-TW for
2564                           zh, ISO-2022-JP for ja.
2566                           Affects also our add-on break iterator data for
2567                           some languages.
2569                           For the default, all locales, don't use this switch at all.
2570                           Specifying just the language part of a locale means all matching
2571                           locales will be included.
2572     ],
2575 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2576 libo_FUZZ_ARG_WITH(krb5,
2577     AS_HELP_STRING([--with-krb5],
2578         [Enable MIT Kerberos 5 support in modules that support it.
2579          By default automatically enabled on platforms
2580          where a good system Kerberos 5 is available.]),
2583 libo_FUZZ_ARG_WITH(gssapi,
2584     AS_HELP_STRING([--with-gssapi],
2585         [Enable GSSAPI support in modules that support it.
2586          By default automatically enabled on platforms
2587          where a good system GSSAPI is available.]),
2590 AC_ARG_WITH(iwyu,
2591     AS_HELP_STRING([--with-iwyu],
2592         [Use given IWYU binary path to check unneeded includes instead of building.
2593          Use only if you are hacking on it.]),
2596 libo_FUZZ_ARG_WITH(lxml,
2597     AS_HELP_STRING([--without-lxml],
2598         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2599          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2600          report widget classes and ids.]),
2603 libo_FUZZ_ARG_WITH(latest-c++,
2604     AS_HELP_STRING([--with-latest-c++],
2605         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2606          published standard.]),,
2607         [with_latest_c__=no])
2609 dnl ===================================================================
2610 dnl Branding
2611 dnl ===================================================================
2613 AC_ARG_WITH(branding,
2614     AS_HELP_STRING([--with-branding=/path/to/images],
2615         [Use given path to retrieve branding images set.])
2616     [
2617                           Search for intro.png about.svg and logo.svg.
2618                           If any is missing, default ones will be used instead.
2620                           Search also progress.conf for progress
2621                           settings on intro screen :
2623                           PROGRESSBARCOLOR="255,255,255" Set color of
2624                           progress bar. Comma separated RGB decimal values.
2625                           PROGRESSSIZE="407,6" Set size of progress bar.
2626                           Comma separated decimal values (width, height).
2627                           PROGRESSPOSITION="61,317" Set position of progress
2628                           bar from left,top. Comma separated decimal values.
2629                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2630                           bar frame. Comma separated RGB decimal values.
2631                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2632                           bar text. Comma separated RGB decimal values.
2633                           PROGRESSTEXTBASELINE="287" Set vertical position of
2634                           progress bar text from top. Decimal value.
2636                           Default values will be used if not found.
2637     ],
2641 AC_ARG_WITH(extra-buildid,
2642     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2643         [Show addition build identification in about dialog.]),
2647 AC_ARG_WITH(vendor,
2648     AS_HELP_STRING([--with-vendor="John the Builder"],
2649         [Set vendor of the build.]),
2652 AC_ARG_WITH(privacy-policy-url,
2653     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2654         [The URL to your privacy policy (needed when
2655          enabling online-update or crashreporting via breakpad)]),
2656         [if test "x$with_privacy_policy_url" = "xyes"; then
2657             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2658          elif test "x$with_privacy_policy_url" = "xno"; then
2659             with_privacy_policy_url="undefined"
2660          fi]
2661 ,[with_privacy_policy_url="undefined"])
2663 AC_ARG_WITH(android-package-name,
2664     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2665         [Set Android package name of the build.]),
2668 AC_ARG_WITH(compat-oowrappers,
2669     AS_HELP_STRING([--with-compat-oowrappers],
2670         [Install oo* wrappers in parallel with
2671          lo* ones to keep backward compatibility.
2672          Has effect only with make distro-pack-install]),
2675 AC_ARG_WITH(os-version,
2676     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2677         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2680 AC_ARG_WITH(idlc-cpp,
2681     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2682         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2685 AC_ARG_WITH(parallelism,
2686     AS_HELP_STRING([--with-parallelism],
2687         [Number of jobs to run simultaneously during build. Parallel builds can
2688         save a lot of time on multi-cpu machines. Defaults to the number of
2689         CPUs on the machine, unless you configure --enable-icecream - then to
2690         40.]),
2693 AC_ARG_WITH(all-tarballs,
2694     AS_HELP_STRING([--with-all-tarballs],
2695         [Download all external tarballs unconditionally]))
2697 AC_ARG_WITH(gdrive-client-id,
2698     AS_HELP_STRING([--with-gdrive-client-id],
2699         [Provides the client id of the application for OAuth2 authentication
2700         on Google Drive. If either this or --with-gdrive-client-secret is
2701         empty, the feature will be disabled]),
2704 AC_ARG_WITH(gdrive-client-secret,
2705     AS_HELP_STRING([--with-gdrive-client-secret],
2706         [Provides the client secret of the application for OAuth2
2707         authentication on Google Drive. If either this or
2708         --with-gdrive-client-id is empty, the feature will be disabled]),
2711 AC_ARG_WITH(alfresco-cloud-client-id,
2712     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2713         [Provides the client id of the application for OAuth2 authentication
2714         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2715         empty, the feature will be disabled]),
2718 AC_ARG_WITH(alfresco-cloud-client-secret,
2719     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2720         [Provides the client secret of the application for OAuth2
2721         authentication on Alfresco Cloud. If either this or
2722         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2725 AC_ARG_WITH(onedrive-client-id,
2726     AS_HELP_STRING([--with-onedrive-client-id],
2727         [Provides the client id of the application for OAuth2 authentication
2728         on OneDrive. If either this or --with-onedrive-client-secret is
2729         empty, the feature will be disabled]),
2732 AC_ARG_WITH(onedrive-client-secret,
2733     AS_HELP_STRING([--with-onedrive-client-secret],
2734         [Provides the client secret of the application for OAuth2
2735         authentication on OneDrive. If either this or
2736         --with-onedrive-client-id is empty, the feature will be disabled]),
2738 dnl ===================================================================
2739 dnl Do we want to use pre-build binary tarball for recompile
2740 dnl ===================================================================
2742 if test "$enable_library_bin_tar" = "yes" ; then
2743     USE_LIBRARY_BIN_TAR=TRUE
2744 else
2745     USE_LIBRARY_BIN_TAR=
2747 AC_SUBST(USE_LIBRARY_BIN_TAR)
2749 dnl ===================================================================
2750 dnl Test whether build target is Release Build
2751 dnl ===================================================================
2752 AC_MSG_CHECKING([whether build target is Release Build])
2753 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2754     AC_MSG_RESULT([no])
2755     ENABLE_RELEASE_BUILD=
2756     GET_TASK_ALLOW_ENTITLEMENT='
2757         <!-- We want to be able to debug a hardened process when not building for release -->
2758         <key>com.apple.security.get-task-allow</key>
2759         <true/>'
2760 else
2761     AC_MSG_RESULT([yes])
2762     ENABLE_RELEASE_BUILD=TRUE
2763     GET_TASK_ALLOW_ENTITLEMENT=''
2765 AC_SUBST(ENABLE_RELEASE_BUILD)
2766 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2768 AC_MSG_CHECKING([whether to build a Community flavor])
2769 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2770     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2771     AC_MSG_RESULT([yes])
2772 else
2773     AC_MSG_RESULT([no])
2776 dnl ===================================================================
2777 dnl Test whether to sign Windows Build
2778 dnl ===================================================================
2779 AC_MSG_CHECKING([whether to sign windows build])
2780 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2781     AC_MSG_RESULT([yes])
2782     WINDOWS_BUILD_SIGNING="TRUE"
2783 else
2784     AC_MSG_RESULT([no])
2785     WINDOWS_BUILD_SIGNING="FALSE"
2787 AC_SUBST(WINDOWS_BUILD_SIGNING)
2789 dnl ===================================================================
2790 dnl MacOSX build and runtime environment options
2791 dnl ===================================================================
2793 AC_ARG_WITH(macosx-version-min-required,
2794     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2795         [set the minimum OS version needed to run the built LibreOffice])
2796     [
2797                           e. g.: --with-macosx-version-min-required=10.12
2798     ],
2801 AC_ARG_WITH(macosx-version-max-allowed,
2802     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2803         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2804     [
2805                           e. g.: --with-macosx-version-max-allowed=11.0
2806     ],
2810 dnl ===================================================================
2811 dnl options for stuff used during cross-compilation build
2812 dnl Not quite superseded by --with-build-platform-configure-options.
2813 dnl TODO: check, if the "force" option is still needed anywhere.
2814 dnl ===================================================================
2816 AC_ARG_WITH(system-icu-for-build,
2817     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2818         [Use icu already on system for build tools (cross-compilation only).]))
2821 dnl ===================================================================
2822 dnl Check for incompatible options set by fuzzing, and reset those
2823 dnl automatically to working combinations
2824 dnl ===================================================================
2826 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2827         "$enable_dbus" != "$enable_avahi"; then
2828     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2829     enable_avahi=$enable_dbus
2832 add_lopath_after ()
2834     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2835         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2836     fi
2839 add_lopath_before ()
2841     local IFS=${P_SEP}
2842     local path_cleanup
2843     local dir
2844     for dir in $LO_PATH ; do
2845         if test "$dir" != "$1" ; then
2846             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2847         fi
2848     done
2849     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2852 dnl ===================================================================
2853 dnl check for required programs (grep, awk, sed, bash)
2854 dnl ===================================================================
2856 pathmunge ()
2858     local new_path
2859     if test -n "$1"; then
2860         if test "$build_os" = "cygwin"; then
2861             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2862                 PathFormat "$1"
2863                 new_path=`cygpath -sm "$formatted_path"`
2864             else
2865                 PathFormat "$1"
2866                 new_path=`cygpath -u "$formatted_path"`
2867             fi
2868         else
2869             new_path="$1"
2870         fi
2871         if test "$2" = "after"; then
2872             add_lopath_after "$new_path"
2873         else
2874             add_lopath_before "$new_path"
2875         fi
2876     fi
2879 AC_PROG_AWK
2880 AC_PATH_PROG( AWK, $AWK)
2881 if test -z "$AWK"; then
2882     AC_MSG_ERROR([install awk to run this script])
2885 AC_PATH_PROG(BASH, bash)
2886 if test -z "$BASH"; then
2887     AC_MSG_ERROR([bash not found in \$PATH])
2889 AC_SUBST(BASH)
2891 AC_MSG_CHECKING([for GNU or BSD tar])
2892 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2893     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2894     if test $? -eq 0;  then
2895         GNUTAR=$a
2896         break
2897     fi
2898 done
2899 AC_MSG_RESULT($GNUTAR)
2900 if test -z "$GNUTAR"; then
2901     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2903 AC_SUBST(GNUTAR)
2905 AC_MSG_CHECKING([for tar's option to strip components])
2906 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2907 if test $? -eq 0; then
2908     STRIP_COMPONENTS="--strip-components"
2909 else
2910     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2911     if test $? -eq 0; then
2912         STRIP_COMPONENTS="--strip-path"
2913     else
2914         STRIP_COMPONENTS="unsupported"
2915     fi
2917 AC_MSG_RESULT($STRIP_COMPONENTS)
2918 if test x$STRIP_COMPONENTS = xunsupported; then
2919     AC_MSG_ERROR([you need a tar that is able to strip components.])
2921 AC_SUBST(STRIP_COMPONENTS)
2923 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2924 dnl desktop OSes from "mobile" ones.
2926 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2927 dnl In other words, that when building for an OS that is not a
2928 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2930 dnl Note the direction of the implication; there is no assumption that
2931 dnl cross-compiling would imply a non-desktop OS.
2933 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2934     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2935     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2936     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2939 # Whether to build "avmedia" functionality or not.
2941 if test -z "$enable_avmedia"; then
2942     enable_avmedia=yes
2945 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2946 if test "$enable_avmedia" = yes; then
2947     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2948 else
2949     USE_AVMEDIA_DUMMY='TRUE'
2951 AC_SUBST(USE_AVMEDIA_DUMMY)
2953 # Decide whether to build database connectivity stuff (including Base) or not.
2954 if test "$enable_database_connectivity" != no; then
2955     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2956     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2957 else
2958     if test "$_os" = iOS; then
2959         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2960     fi
2961     disable_database_connectivity_dependencies
2964 if test -z "$enable_extensions"; then
2965     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2966     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2967         enable_extensions=yes
2968     fi
2971 if test "$enable_extensions" = yes; then
2972     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2973     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2974 else
2975     enable_extension_integration=no
2976     enable_extension_update=no
2979 if test -z "$enable_scripting"; then
2980     # Disable scripting for iOS unless specifically overridden
2981     # with --enable-scripting.
2982     if test $_os != iOS -o $_os = Emscripten; then
2983         enable_scripting=yes
2984     fi
2987 DISABLE_SCRIPTING=''
2988 if test "$enable_scripting" = yes; then
2989     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2990     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2991 else
2992     DISABLE_SCRIPTING='TRUE'
2993     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2996 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2997     # Disable dynamic_loading always for iOS and Android
2998     enable_dynamic_loading=no
2999 elif test -z "$enable_dynamic_loading"; then
3000     # Otherwise enable it unless specifically disabled
3001     enable_dynamic_loading=yes
3004 DISABLE_DYNLOADING=''
3005 if test "$enable_dynamic_loading" = yes; then
3006     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3007 else
3008     DISABLE_DYNLOADING='TRUE'
3010 AC_SUBST(DISABLE_DYNLOADING)
3012 # remember SYSBASE value
3013 AC_SUBST(SYSBASE)
3015 dnl ===================================================================
3016 dnl  Sort out various gallery compilation options
3017 dnl ===================================================================
3018 WITH_GALLERY_BUILD=TRUE
3019 AC_MSG_CHECKING([how to build and package galleries])
3020 if test -n "${with_galleries}"; then
3021     if test "$with_galleries" = "build"; then
3022         if test "$enable_database_connectivity" = no; then
3023             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3024         fi
3025         AC_MSG_RESULT([build from source images internally])
3026     elif test "$with_galleries" = "no"; then
3027         WITH_GALLERY_BUILD=
3028         AC_MSG_RESULT([disable non-internal gallery build])
3029     else
3030         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3031     fi
3032 else
3033     if test $_os != iOS -a $_os != Android; then
3034         AC_MSG_RESULT([internal src images for desktop])
3035     else
3036         WITH_GALLERY_BUILD=
3037         AC_MSG_RESULT([disable src image build])
3038     fi
3040 AC_SUBST(WITH_GALLERY_BUILD)
3042 dnl ===================================================================
3043 dnl  Checks if ccache is available
3044 dnl ===================================================================
3045 CCACHE_DEPEND_MODE=
3046 if test "$enable_ccache" = "no"; then
3047     CCACHE=""
3048 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3049     case "%$CC%$CXX%" in
3050     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3051     # assume that's good then
3052     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3053         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3054         CCACHE_DEPEND_MODE=1
3055         ;;
3056     *)
3057         # try to use our own ccache if it is available and CCACHE was not already defined
3058         if test -z "$CCACHE"; then
3059             if test "$_os" = "WINNT"; then
3060                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3061             fi
3062             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3063                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3064             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3065                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3066             fi
3067         fi
3068         AC_PATH_PROG([CCACHE],[ccache],[not found])
3069         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3070             CCACHE=`win_short_path_for_make "$CCACHE"`
3071             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3072             rm -f conftest.txt
3073             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3074             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3075             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3076                 AC_MSG_RESULT(yes)
3077             else
3078                 AC_MSG_RESULT(no)
3079                 CCACHE="not found"
3080             fi
3081             rm -f conftest.txt
3082         fi
3083         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3084             # on windows/VC perhaps sccache is around?
3085             case "%$CC%$CXX%" in
3086             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3087             # assume that's good then
3088             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3089                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3090                 CCACHE_DEPEND_MODE=1
3091                 SCCACHE=1
3092                 ;;
3093             *)
3094                 # for sharing code below, reuse CCACHE env var
3095                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3096                 if test "$CCACHE" != "not found"; then
3097                     CCACHE=`win_short_path_for_make "$CCACHE"`
3098                     SCCACHE=1
3099                     CCACHE_DEPEND_MODE=1
3100                 fi
3101                 ;;
3102             esac
3103         fi
3104         if test "$CCACHE" = "not found"; then
3105             CCACHE=""
3106         fi
3107         if test -n "$CCACHE" -a -z "$SCCACHE"; then
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 # sccache defaults are good enough
3136 if test "$CCACHE" != "" -a -z "$SCCACHE"; 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 ENABLE_Z7_DEBUG=
3166 if test "$enable_z7_debug" != no; then
3167     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3168         ENABLE_Z7_DEBUG=TRUE
3169     fi
3170 else
3171     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3172     add_warning "ccache will not work with --disable-z7-debug"
3174 AC_SUBST(ENABLE_Z7_DEBUG)
3176 dnl ===================================================================
3177 dnl  Checks for C compiler,
3178 dnl  The check for the C++ compiler is later on.
3179 dnl ===================================================================
3180 if test "$_os" != "WINNT"; then
3181     GCC_HOME_SET="true"
3182     AC_MSG_CHECKING([gcc home])
3183     if test -z "$with_gcc_home"; then
3184         if test "$enable_icecream" = "yes"; then
3185             if test -d "/usr/lib/icecc/bin"; then
3186                 GCC_HOME="/usr/lib/icecc/"
3187             elif test -d "/usr/libexec/icecc/bin"; then
3188                 GCC_HOME="/usr/libexec/icecc/"
3189             elif test -d "/opt/icecream/bin"; then
3190                 GCC_HOME="/opt/icecream/"
3191             else
3192                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3194             fi
3195         else
3196             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3197             GCC_HOME_SET="false"
3198         fi
3199     else
3200         GCC_HOME="$with_gcc_home"
3201     fi
3202     AC_MSG_RESULT($GCC_HOME)
3203     AC_SUBST(GCC_HOME)
3205     if test "$GCC_HOME_SET" = "true"; then
3206         if test -z "$CC"; then
3207             CC="$GCC_HOME/bin/gcc"
3208             CC_BASE="gcc"
3209         fi
3210         if test -z "$CXX"; then
3211             CXX="$GCC_HOME/bin/g++"
3212             CXX_BASE="g++"
3213         fi
3214     fi
3217 COMPATH=`dirname "$CC"`
3218 if test "$COMPATH" = "."; then
3219     AC_PATH_PROGS(COMPATH, $CC)
3220     dnl double square bracket to get single because of M4 quote...
3221     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3223 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3225 dnl ===================================================================
3226 dnl Java support
3227 dnl ===================================================================
3228 AC_MSG_CHECKING([whether to build with Java support])
3229 if test "$with_java" != "no"; then
3230     if test "$DISABLE_SCRIPTING" = TRUE; then
3231         AC_MSG_RESULT([no, overridden by --disable-scripting])
3232         ENABLE_JAVA=""
3233         with_java=no
3234     else
3235         AC_MSG_RESULT([yes])
3236         ENABLE_JAVA="TRUE"
3237         AC_DEFINE(HAVE_FEATURE_JAVA)
3238     fi
3239 else
3240     AC_MSG_RESULT([no])
3241     ENABLE_JAVA=""
3244 AC_SUBST(ENABLE_JAVA)
3246 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3248 dnl ENABLE_JAVA="" indicate no Java support at all
3250 dnl ===================================================================
3251 dnl Check macOS SDK and compiler
3252 dnl ===================================================================
3254 if test $_os = Darwin; then
3256     # The SDK in the currently selected Xcode should be found.
3258     AC_MSG_CHECKING([what macOS SDK to use])
3259     for macosx_sdk in 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3260         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3261         if test -d "$MACOSX_SDK_PATH"; then
3262             break
3263         else
3264             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3265             if test -d "$MACOSX_SDK_PATH"; then
3266                 break
3267             fi
3268         fi
3269     done
3270     if test ! -d "$MACOSX_SDK_PATH"; then
3271         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3272     fi
3274     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3276     case $macosx_sdk in
3277     10.13)
3278         MACOSX_SDK_VERSION=101300
3279         ;;
3280     10.14)
3281         MACOSX_SDK_VERSION=101400
3282         ;;
3283     10.15)
3284         MACOSX_SDK_VERSION=101500
3285         ;;
3286     11.0)
3287         MACOSX_SDK_VERSION=110000
3288         ;;
3289     11.1)
3290         MACOSX_SDK_VERSION=110100
3291         ;;
3292     11.3)
3293         MACOSX_SDK_VERSION=110300
3294         ;;
3295     12.0)
3296         MACOSX_SDK_VERSION=120000
3297         ;;
3298     *)
3299         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3300         ;;
3301     esac
3303     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3304         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3305     fi
3307     if test "$with_macosx_version_min_required" = "" ; then
3308         if test "$host_cpu" = x86_64; then
3309             with_macosx_version_min_required="10.12";
3310         else
3311             with_macosx_version_min_required="11.0";
3312         fi
3313     fi
3315     if test "$with_macosx_version_max_allowed" = "" ; then
3316         with_macosx_version_max_allowed="$macosx_sdk"
3317     fi
3319     # export this so that "xcrun" invocations later return matching values
3320     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3321     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3322     export DEVELOPER_DIR
3323     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3324     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3326     AC_MSG_CHECKING([whether Xcode is new enough])
3327     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3328     my_xcode_ver2=${my_xcode_ver1#Xcode }
3329     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3330     if test "$my_xcode_ver3" -ge 1103; then
3331         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3332     else
3333         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3334     fi
3336     case "$with_macosx_version_min_required" in
3337     10.12)
3338         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3339         ;;
3340     10.13)
3341         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3342         ;;
3343     10.14)
3344         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3345         ;;
3346     10.15)
3347         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3348         ;;
3349     10.16)
3350         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3351         ;;
3352     11.0)
3353         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3354         ;;
3355     11.1)
3356         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3357         ;;
3358     11.3)
3359         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3360         ;;
3361     12.0)
3362         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3363         ;;
3364     *)
3365         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.12--12.0])
3366         ;;
3367     esac
3369     LIBTOOL=/usr/bin/libtool
3370     INSTALL_NAME_TOOL=install_name_tool
3371     if test -z "$save_CC"; then
3372         stdlib=-stdlib=libc++
3374         AC_MSG_CHECKING([what C compiler to use])
3375         CC="`xcrun -find clang`"
3376         CC_BASE=`first_arg_basename "$CC"`
3377         if test "$host_cpu" = x86_64; then
3378             CC+=" -target x86_64-apple-macos"
3379         else
3380             CC+=" -target arm64-apple-macos"
3381         fi
3382         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3383         AC_MSG_RESULT([$CC])
3385         AC_MSG_CHECKING([what C++ compiler to use])
3386         CXX="`xcrun -find clang++`"
3387         CXX_BASE=`first_arg_basename "$CXX"`
3388         if test "$host_cpu" = x86_64; then
3389             CXX+=" -target x86_64-apple-macos"
3390         else
3391             CXX+=" -target arm64-apple-macos"
3392         fi
3393         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3394         AC_MSG_RESULT([$CXX])
3396         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3397         AR=`xcrun -find ar`
3398         NM=`xcrun -find nm`
3399         STRIP=`xcrun -find strip`
3400         LIBTOOL=`xcrun -find libtool`
3401         RANLIB=`xcrun -find ranlib`
3402     fi
3404     case "$with_macosx_version_max_allowed" in
3405     10.12)
3406         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3407         ;;
3408     10.13)
3409         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3410         ;;
3411     10.14)
3412         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3413         ;;
3414     10.15)
3415         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3416         ;;
3417     11.0)
3418         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3419         ;;
3420     11.1)
3421         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3422         ;;
3423     11.3)
3424         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3425         ;;
3426     12.0)
3427         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3428         ;;
3429     *)
3430         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.12--12.0])
3431         ;;
3432     esac
3434     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3435     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3436         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])
3437     else
3438         AC_MSG_RESULT([ok])
3439     fi
3441     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3442     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3443         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3444     else
3445         AC_MSG_RESULT([ok])
3446     fi
3447     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3448     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3450     AC_MSG_CHECKING([whether to do code signing])
3452     if test "$enable_macosx_code_signing" = yes; then
3453         # By default use the first suitable certificate (?).
3455         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3456         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3457         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3458         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3459         # "Developer ID Application" one.
3461         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3462         if test -n "$identity"; then
3463             MACOSX_CODESIGNING_IDENTITY=$identity
3464             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3465             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3466         else
3467             AC_MSG_ERROR([cannot determine identity to use])
3468         fi
3469     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3470         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3471         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3472         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3473     else
3474         AC_MSG_RESULT([no])
3475     fi
3477     AC_MSG_CHECKING([whether to create a Mac App Store package])
3479     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3480         AC_MSG_RESULT([no])
3481     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3482         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3483     elif test "$enable_macosx_package_signing" = yes; then
3484         # By default use the first suitable certificate.
3485         # It should be a "3rd Party Mac Developer Installer" one
3487         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3488         if test -n "$identity"; then
3489             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3490             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3491             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3492         else
3493             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3494         fi
3495     else
3496         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3497         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3498         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3499     fi
3501     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3502         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3503     fi
3505     AC_MSG_CHECKING([whether to sandbox the application])
3507     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3508         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3509     elif test "$enable_macosx_sandbox" = yes; then
3510         ENABLE_MACOSX_SANDBOX=TRUE
3511         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3512         AC_MSG_RESULT([yes])
3513     else
3514         AC_MSG_RESULT([no])
3515     fi
3517     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3518     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3519     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3521 AC_SUBST(MACOSX_SDK_PATH)
3522 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3523 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3524 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3525 AC_SUBST(INSTALL_NAME_TOOL)
3526 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3527 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3528 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3529 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3530 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3532 dnl ===================================================================
3533 dnl Check iOS SDK and compiler
3534 dnl ===================================================================
3536 if test $_os = iOS; then
3537     AC_MSG_CHECKING([what iOS SDK to use])
3538     current_sdk_ver=15.0
3539     older_sdk_vers="14.5"
3540     if test "$enable_ios_simulator" = "yes"; then
3541         platform=iPhoneSimulator
3542         versionmin=-mios-simulator-version-min=13.6
3543     else
3544         platform=iPhoneOS
3545         versionmin=-miphoneos-version-min=13.6
3546     fi
3547     xcode_developer=`xcode-select -print-path`
3549     for sdkver in $current_sdk_ver $older_sdk_vers; do
3550         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3551         if test -d $t; then
3552             sysroot=$t
3553             break
3554         fi
3555     done
3557     if test -z "$sysroot"; then
3558         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3559     fi
3561     AC_MSG_RESULT($sysroot)
3563     stdlib="-stdlib=libc++"
3565     AC_MSG_CHECKING([what C compiler to use])
3566     CC="`xcrun -find clang`"
3567     CC_BASE=`first_arg_basename "$CC"`
3568     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3569     AC_MSG_RESULT([$CC])
3571     AC_MSG_CHECKING([what C++ compiler to use])
3572     CXX="`xcrun -find clang++`"
3573     CXX_BASE=`first_arg_basename "$CXX"`
3574     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3575     AC_MSG_RESULT([$CXX])
3577     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3578     AR=`xcrun -find ar`
3579     NM=`xcrun -find nm`
3580     STRIP=`xcrun -find strip`
3581     LIBTOOL=`xcrun -find libtool`
3582     RANLIB=`xcrun -find ranlib`
3585 AC_MSG_CHECKING([whether to treat the installation as read-only])
3587 if test $_os = Darwin; then
3588     enable_readonly_installset=yes
3589 elif test "$enable_extensions" != yes; then
3590     enable_readonly_installset=yes
3592 if test "$enable_readonly_installset" = yes; then
3593     AC_MSG_RESULT([yes])
3594     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3595 else
3596     AC_MSG_RESULT([no])
3599 dnl ===================================================================
3600 dnl Structure of install set
3601 dnl ===================================================================
3603 if test $_os = Darwin; then
3604     LIBO_BIN_FOLDER=MacOS
3605     LIBO_ETC_FOLDER=Resources
3606     LIBO_LIBEXEC_FOLDER=MacOS
3607     LIBO_LIB_FOLDER=Frameworks
3608     LIBO_LIB_PYUNO_FOLDER=Resources
3609     LIBO_SHARE_FOLDER=Resources
3610     LIBO_SHARE_HELP_FOLDER=Resources/help
3611     LIBO_SHARE_JAVA_FOLDER=Resources/java
3612     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3613     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3614     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3615     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3616     LIBO_URE_BIN_FOLDER=MacOS
3617     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3618     LIBO_URE_LIB_FOLDER=Frameworks
3619     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3620     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3621 elif test $_os = WINNT; then
3622     LIBO_BIN_FOLDER=program
3623     LIBO_ETC_FOLDER=program
3624     LIBO_LIBEXEC_FOLDER=program
3625     LIBO_LIB_FOLDER=program
3626     LIBO_LIB_PYUNO_FOLDER=program
3627     LIBO_SHARE_FOLDER=share
3628     LIBO_SHARE_HELP_FOLDER=help
3629     LIBO_SHARE_JAVA_FOLDER=program/classes
3630     LIBO_SHARE_PRESETS_FOLDER=presets
3631     LIBO_SHARE_READMES_FOLDER=readmes
3632     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3633     LIBO_SHARE_SHELL_FOLDER=program/shell
3634     LIBO_URE_BIN_FOLDER=program
3635     LIBO_URE_ETC_FOLDER=program
3636     LIBO_URE_LIB_FOLDER=program
3637     LIBO_URE_MISC_FOLDER=program
3638     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3639 else
3640     LIBO_BIN_FOLDER=program
3641     LIBO_ETC_FOLDER=program
3642     LIBO_LIBEXEC_FOLDER=program
3643     LIBO_LIB_FOLDER=program
3644     LIBO_LIB_PYUNO_FOLDER=program
3645     LIBO_SHARE_FOLDER=share
3646     LIBO_SHARE_HELP_FOLDER=help
3647     LIBO_SHARE_JAVA_FOLDER=program/classes
3648     LIBO_SHARE_PRESETS_FOLDER=presets
3649     LIBO_SHARE_READMES_FOLDER=readmes
3650     if test "$enable_fuzzers" != yes; then
3651         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3652     else
3653         LIBO_SHARE_RESOURCE_FOLDER=resource
3654     fi
3655     LIBO_SHARE_SHELL_FOLDER=program/shell
3656     LIBO_URE_BIN_FOLDER=program
3657     LIBO_URE_ETC_FOLDER=program
3658     LIBO_URE_LIB_FOLDER=program
3659     LIBO_URE_MISC_FOLDER=program
3660     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3662 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3663 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3664 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3665 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3666 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3667 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3668 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3669 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3670 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3671 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3672 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3673 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3674 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3675 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3676 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3677 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3679 # Not all of them needed in config_host.mk, add more if need arises
3680 AC_SUBST(LIBO_BIN_FOLDER)
3681 AC_SUBST(LIBO_ETC_FOLDER)
3682 AC_SUBST(LIBO_LIB_FOLDER)
3683 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3684 AC_SUBST(LIBO_SHARE_FOLDER)
3685 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3686 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3687 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3688 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3689 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3690 AC_SUBST(LIBO_URE_BIN_FOLDER)
3691 AC_SUBST(LIBO_URE_ETC_FOLDER)
3692 AC_SUBST(LIBO_URE_LIB_FOLDER)
3693 AC_SUBST(LIBO_URE_MISC_FOLDER)
3694 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3696 dnl ===================================================================
3697 dnl Windows specific tests and stuff
3698 dnl ===================================================================
3700 reg_get_value()
3702     # Return value: $regvalue
3703     unset regvalue
3705     if test "$build_os" = "wsl"; then
3706         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3707         return
3708     fi
3710     local _regentry="/proc/registry${1}/${2}"
3711     if test -f "$_regentry"; then
3712         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3713         # Registry keys read via /proc/registry* are always \0 terminated!
3714         local _regvalue=$(tr -d '\0' < "$_regentry")
3715         if test $? -eq 0; then
3716             regvalue=$_regvalue
3717         fi
3718     fi
3721 # Get a value from the 32-bit side of the Registry
3722 reg_get_value_32()
3724     reg_get_value "32" "$1"
3727 # Get a value from the 64-bit side of the Registry
3728 reg_get_value_64()
3730     reg_get_value "64" "$1"
3733 case "$host_os" in
3734 cygwin*|wsl*)
3735     COM=MSC
3736     OS=WNT
3737     RTL_OS=Windows
3738     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3739         P_SEP=";"
3740     else
3741         P_SEP=:
3742     fi
3743     case "$host_cpu" in
3744     x86_64)
3745         CPUNAME=X86_64
3746         RTL_ARCH=X86_64
3747         PLATFORMID=windows_x86_64
3748         WINDOWS_X64=1
3749         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3750         WIN_HOST_ARCH="x64"
3751         WIN_MULTI_ARCH="x86"
3752         WIN_HOST_BITS=64
3753         ;;
3754     i*86)
3755         CPUNAME=INTEL
3756         RTL_ARCH=x86
3757         PLATFORMID=windows_x86
3758         WIN_HOST_ARCH="x86"
3759         WIN_HOST_BITS=32
3760         WIN_OTHER_ARCH="x64"
3761         ;;
3762     aarch64)
3763         CPUNAME=AARCH64
3764         RTL_ARCH=AARCH64
3765         PLATFORMID=windows_aarch64
3766         WINDOWS_X64=1
3767         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3768         WIN_HOST_ARCH="arm64"
3769         WIN_HOST_BITS=64
3770         with_ucrt_dir=no
3771         ;;
3772     *)
3773         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3774         ;;
3775     esac
3777     case "$build_cpu" in
3778     x86_64) WIN_BUILD_ARCH="x64" ;;
3779     i*86) WIN_BUILD_ARCH="x86" ;;
3780     aarch64) WIN_BUILD_ARCH="arm64" ;;
3781     *)
3782         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3783         ;;
3784     esac
3786     SCPDEFS="$SCPDEFS -D_MSC_VER"
3787     ;;
3788 esac
3790 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3791 # other-arch won't, but wouldn't break the build (x64 on x86).
3792 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3793     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3797 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3798     # To allow building Windows multi-arch releases without cross-tooling
3799     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3800         cross_compiling="yes"
3801     fi
3804 ENABLE_WASM_STRIP=''
3805 if test "$cross_compiling" = "yes"; then
3806     export CROSS_COMPILING=TRUE
3807     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3808         ENABLE_WASM_STRIP=TRUE
3809     fi
3810 else
3811     CROSS_COMPILING=
3812     BUILD_TYPE="$BUILD_TYPE NATIVE"
3814 AC_SUBST(CROSS_COMPILING)
3815 AC_SUBST(ENABLE_WASM_STRIP)
3817 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3818 # NOTE: must _not_ be used for bundled external libraries!
3819 ISYSTEM=
3820 if test "$GCC" = "yes"; then
3821     AC_MSG_CHECKING( for -isystem )
3822     save_CFLAGS=$CFLAGS
3823     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3824     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3825     CFLAGS=$save_CFLAGS
3826     if test -n "$ISYSTEM"; then
3827         AC_MSG_RESULT(yes)
3828     else
3829         AC_MSG_RESULT(no)
3830     fi
3832 if test -z "$ISYSTEM"; then
3833     # fall back to using -I
3834     ISYSTEM=-I
3836 AC_SUBST(ISYSTEM)
3838 dnl ===================================================================
3839 dnl  Check which Visual Studio compiler is used
3840 dnl ===================================================================
3842 map_vs_year_to_version()
3844     # Return value: $vsversion
3846     unset vsversion
3848     case $1 in
3849     2019)
3850         vsversion=16;;
3851     2022)
3852         vsversion=17;;
3853     *)
3854         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3855     esac
3858 vs_versions_to_check()
3860     # Args: $1 (optional) : versions to check, in the order of preference
3861     # Return value: $vsversions
3863     unset vsversions
3865     if test -n "$1"; then
3866         map_vs_year_to_version "$1"
3867         vsversions=$vsversion
3868     else
3869         # Default version is 2019
3870         vsversions="16"
3871     fi
3874 win_get_env_from_vsvars32bat()
3876     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3877     # Also seems to be located in another directory under the same name: vsvars32.bat
3878     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3879     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3880     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3881     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3882     local result
3883     if test "$build_os" = "wsl"; then
3884         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3885     else
3886         chmod +x $WRAPPERBATCHFILEPATH
3887         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3888     fi
3889     rm -f $WRAPPERBATCHFILEPATH
3890     printf '%s' "$result"
3893 find_ucrt()
3895     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3896     if test -n "$regvalue"; then
3897         PathFormat "$regvalue"
3898         UCRTSDKDIR=$formatted_path_unix
3899         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3900         UCRTVERSION=$regvalue
3901         # Rest if not exist
3902         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3903           UCRTSDKDIR=
3904         fi
3905     fi
3906     if test -z "$UCRTSDKDIR"; then
3907         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3908         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3909         if test -f "$ide_env_file"; then
3910             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3911             UCRTSDKDIR=$formatted_path
3912             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3913             dnl Hack needed at least by tml:
3914             if test "$UCRTVERSION" = 10.0.15063.0 \
3915                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3916                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3917             then
3918                 UCRTVERSION=10.0.14393.0
3919             fi
3920         else
3921           AC_MSG_ERROR([No UCRT found])
3922         fi
3923     fi
3926 find_msvc()
3928     # Find Visual C++
3929     # Args: $1 (optional) : The VS version year
3930     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3932     unset vctest vctoolset vcnumwithdot vcbuildnumber
3934     vs_versions_to_check "$1"
3935     if test "$build_os" = wsl; then
3936         vswhere="$PROGRAMFILESX86"
3937     else
3938         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3939     fi
3940     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3941     PathFormat "$vswhere"
3942     vswhere=$formatted_path_unix
3943     for ver in $vsversions; do
3944         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3945         if test -z "$vswhereoutput"; then
3946             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3947         fi
3948         # Fall back to all MS products (this includes VC++ Build Tools)
3949         if ! test -n "$vswhereoutput"; then
3950             AC_MSG_CHECKING([VC++ Build Tools and similar])
3951             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3952         fi
3953         if test -n "$vswhereoutput"; then
3954             PathFormat "$vswhereoutput"
3955             vctest=$formatted_path_unix
3956             break
3957         fi
3958     done
3960     if test -n "$vctest"; then
3961         vcnumwithdot="$ver.0"
3962         case "$vcnumwithdot" in
3963         16.0)
3964             vcyear=2019
3965             vctoolset=v142
3966             ;;
3967         17.0)
3968             vcyear=2022
3969             vctoolset=v143
3970             ;;
3971         esac
3972         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3974     fi
3977 test_cl_exe()
3979     AC_MSG_CHECKING([$1 compiler])
3981     CL_EXE_PATH="$2/cl.exe"
3983     if test ! -f "$CL_EXE_PATH"; then
3984         if test "$1" = "multi-arch"; then
3985             AC_MSG_WARN([no compiler (cl.exe) in $2])
3986             return 1
3987         else
3988             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3989         fi
3990     fi
3992     dnl ===========================================================
3993     dnl  Check for the corresponding mspdb*.dll
3994     dnl ===========================================================
3996     # MSVC 15.0 has libraries from 14.0?
3997     mspdbnum="140"
3999     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4000         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4001     fi
4003     # The compiles has to find its shared libraries
4004     OLD_PATH="$PATH"
4005     TEMP_PATH=`cygpath -d "$2"`
4006     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4008     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4009         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4010     fi
4012     PATH="$OLD_PATH"
4014     AC_MSG_RESULT([$CL_EXE_PATH])
4017 SOLARINC=
4018 MSBUILD_PATH=
4019 DEVENV=
4020 if test "$_os" = "WINNT"; then
4021     AC_MSG_CHECKING([Visual C++])
4022     find_msvc "$with_visual_studio"
4023     if test -z "$vctest"; then
4024         if test -n "$with_visual_studio"; then
4025             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4026         else
4027             AC_MSG_ERROR([no Visual Studio installation found])
4028         fi
4029     fi
4030     AC_MSG_RESULT([])
4032     VC_PRODUCT_DIR="$vctest/VC"
4033     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4035     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4036     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4037         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4038         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4039         if test $? -ne 0; then
4040             WIN_MULTI_ARCH=""
4041             WIN_OTHER_ARCH=""
4042         fi
4043     fi
4045     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4046         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4047         test_cl_exe "build" "$MSVC_BUILD_PATH"
4048     fi
4050     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4051         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4052         test_cl_exe "host" "$MSVC_HOST_PATH"
4053     else
4054         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4055     fi
4057     AC_MSG_CHECKING([for short pathname of VC product directory])
4058     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4059     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4061     UCRTSDKDIR=
4062     UCRTVERSION=
4064     AC_MSG_CHECKING([for UCRT location])
4065     find_ucrt
4066     # find_ucrt errors out if it doesn't find it
4067     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4068     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4069     ucrtincpath_formatted=$formatted_path
4070     # SOLARINC is used for external modules and must be set too.
4071     # And no, it's not sufficient to set SOLARINC only, as configure
4072     # itself doesn't honour it.
4073     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4074     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4075     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4076     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4078     AC_SUBST(UCRTSDKDIR)
4079     AC_SUBST(UCRTVERSION)
4081     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4082     # Find the proper version of MSBuild.exe to use based on the VS version
4083     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4084     if test -z "$regvalue" ; then
4085         if test "$WIN_BUILD_ARCH" != "x64"; then
4086             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4087         else
4088             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4089         fi
4090     fi
4091     if test -d "$regvalue" ; then
4092         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4093         AC_MSG_RESULT([$regvalue])
4094     else
4095         AC_MSG_ERROR([MSBuild.exe location not found])
4096     fi
4098     # Find the version of devenv.exe
4099     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4100     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4101     DEVENV_unix=$(cygpath -u "$DEVENV")
4102     if test ! -e "$DEVENV_unix"; then
4103         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4104     fi
4106     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4107     dnl needed when building CLR code:
4108     if test -z "$MSVC_CXX"; then
4109         # This gives us a posix path with 8.3 filename restrictions
4110         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4111     fi
4113     if test -z "$CC"; then
4114         CC=$MSVC_CXX
4115         CC_BASE=`first_arg_basename "$CC"`
4116     fi
4117     if test -z "$CXX"; then
4118         CXX=$MSVC_CXX
4119         CXX_BASE=`first_arg_basename "$CXX"`
4120     fi
4122     if test -n "$CC"; then
4123         # Remove /cl.exe from CC case insensitive
4124         AC_MSG_NOTICE([found Visual C++ $vcyear])
4126         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4127         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4129         PathFormat "$COMPATH"
4130         COMPATH=`win_short_path_for_make "$formatted_path"`
4132         VCVER=$vcnumwithdot
4133         VCTOOLSET=$vctoolset
4135         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4136         # are always "better", we list them in reverse chronological order.
4138         case "$vcnumwithdot" in
4139         16.0 | 17.0)
4140             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4141             ;;
4142         esac
4144         # The expectation is that --with-windows-sdk should not need to be used
4145         if test -n "$with_windows_sdk"; then
4146             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4147             *" "$with_windows_sdk" "*)
4148                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4149                 ;;
4150             *)
4151                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4152                 ;;
4153             esac
4154         fi
4156         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4157         ac_objext=obj
4158         ac_exeext=exe
4160     else
4161         AC_MSG_ERROR([Visual C++ not found after all, huh])
4162     fi
4164     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4165     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4166         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4167         // between Visual Studio versions and _MSC_VER:
4168         #if _MSC_VER < 1925
4169         #error
4170         #endif
4171     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4173     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4174     # version of the Explorer extension (and maybe other small
4175     # bits, too) needed when installing a 32-bit LibreOffice on a
4176     # 64-bit OS. The 64-bit Explorer extension is a feature that
4177     # has been present since long in OOo. Don't confuse it with
4178     # building LibreOffice itself as 64-bit code.
4180     BUILD_X64=
4181     CXX_X64_BINARY=
4183     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4184         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4185         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4186              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4187         then
4188             BUILD_X64=TRUE
4189             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4190             AC_MSG_RESULT([found])
4191         else
4192             AC_MSG_RESULT([not found])
4193             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4194         fi
4195     elif test "$WIN_HOST_ARCH" = "x64"; then
4196         CXX_X64_BINARY=$CXX
4197     fi
4198     AC_SUBST(BUILD_X64)
4200     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4201     AC_SUBST(CXX_X64_BINARY)
4203     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4204     # needed to support TWAIN scan on both 32- and 64-bit systems
4206     case "$WIN_HOST_ARCH" in
4207     x64)
4208         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4209         if test -n "$CXX_X86_BINARY"; then
4210             BUILD_X86=TRUE
4211             AC_MSG_RESULT([preset])
4212         elif test -n "$WIN_MULTI_ARCH"; then
4213             BUILD_X86=TRUE
4214             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4215             CXX_X86_BINARY+=" /arch:SSE"
4216             AC_MSG_RESULT([found])
4217         else
4218             AC_MSG_RESULT([not found])
4219             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4220         fi
4221         ;;
4222     x86)
4223         BUILD_X86=TRUE
4224         CXX_X86_BINARY=$MSVC_CXX
4225         ;;
4226     esac
4227     AC_SUBST(BUILD_X86)
4228     AC_SUBST(CXX_X86_BINARY)
4230 AC_SUBST(VCVER)
4231 AC_SUBST(VCTOOLSET)
4232 AC_SUBST(DEVENV)
4233 AC_SUBST(MSVC_CXX)
4235 COM_IS_CLANG=
4236 AC_MSG_CHECKING([whether the compiler is actually Clang])
4237 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4238     #ifndef __clang__
4239     you lose
4240     #endif
4241     int foo=42;
4242     ]])],
4243     [AC_MSG_RESULT([yes])
4244      COM_IS_CLANG=TRUE],
4245     [AC_MSG_RESULT([no])])
4246 AC_SUBST(COM_IS_CLANG)
4248 CC_PLAIN=$CC
4249 CLANGVER=
4250 if test "$COM_IS_CLANG" = TRUE; then
4251     AC_MSG_CHECKING([whether Clang is new enough])
4252     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4253         #if !defined __apple_build_version__
4254         #error
4255         #endif
4256         ]])],
4257         [my_apple_clang=yes],[my_apple_clang=])
4258     if test "$my_apple_clang" = yes; then
4259         AC_MSG_RESULT([assumed yes (Apple Clang)])
4260     elif test "$_os" = Emscripten; then
4261         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4262     else
4263         if test "$_os" = WINNT; then
4264             dnl In which case, assume clang-cl:
4265             my_args="/EP /TC"
4266             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4267             dnl clang-cl:
4268             CC_PLAIN=
4269             for i in $CC; do
4270                 case $i in
4271                 -FIIntrin.h)
4272                     ;;
4273                 *)
4274                     CC_PLAIN="$CC_PLAIN $i"
4275                     ;;
4276                 esac
4277             done
4278         else
4279             my_args="-E -P"
4280         fi
4281         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4282         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4283         CLANGVER=`echo $clang_version \
4284             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4285         if test "$CLANGVER" -ge 50002; then
4286             AC_MSG_RESULT([yes ($clang_version)])
4287         else
4288             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4289         fi
4290         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4291         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4292     fi
4295 SHOWINCLUDES_PREFIX=
4296 if test "$_os" = WINNT; then
4297     dnl We need to guess the prefix of the -showIncludes output, it can be
4298     dnl localized
4299     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4300     echo "#include <stdlib.h>" > conftest.c
4301     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4302         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4303     rm -f conftest.c conftest.obj
4304     if test -z "$SHOWINCLUDES_PREFIX"; then
4305         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4306     else
4307         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4308     fi
4310 AC_SUBST(SHOWINCLUDES_PREFIX)
4313 # prefix C with ccache if needed
4315 if test "$CCACHE" != ""; then
4316     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4318     AC_LANG_PUSH([C])
4319     save_CFLAGS=$CFLAGS
4320     CFLAGS="$CFLAGS --ccache-skip -O2"
4321     # msvc does not fail on unknown options, check stdout
4322     if test "$COM" = MSC; then
4323         CFLAGS="$CFLAGS -nologo"
4324     fi
4325     save_ac_c_werror_flag=$ac_c_werror_flag
4326     ac_c_werror_flag=yes
4327     dnl an empty program will do, we're checking the compiler flags
4328     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4329                       [use_ccache=yes], [use_ccache=no])
4330     CFLAGS=$save_CFLAGS
4331     ac_c_werror_flag=$save_ac_c_werror_flag
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     use_split_debug=
4622     if test -n "$ENABLE_LTO"; then
4623         true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4624     elif test "$enable_split_debug" = yes; then
4625         use_split_debug=1
4626     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4627     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4628         use_split_debug=1
4629     fi
4630     if test -n "$use_split_debug"; then
4631         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4632         save_CFLAGS=$CFLAGS
4633         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4634         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4635         CFLAGS=$save_CFLAGS
4636         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4637             AC_MSG_RESULT([yes])
4638         else
4639             if test "$enable_split_debug" = yes; then
4640                 AC_MSG_ERROR([no])
4641             else
4642                 AC_MSG_RESULT([no])
4643             fi
4644         fi
4645     fi
4646     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4647         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4648         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4649     fi
4651 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4653 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4654 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4655 save_CFLAGS=$CFLAGS
4656 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4657 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4658 CFLAGS=$save_CFLAGS
4659 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4660     AC_MSG_RESULT([yes])
4661 else
4662     AC_MSG_RESULT([no])
4664 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4666 ENABLE_GDB_INDEX=
4667 if test "$enable_gdb_index" != "no"; then
4668     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4669     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4670         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4671         save_CFLAGS=$CFLAGS
4672         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4673         have_ggnu_pubnames=
4674         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4675         if test "$have_ggnu_pubnames" != "TRUE"; then
4676             if test "$enable_gdb_index" = "yes"; then
4677                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4678             else
4679                 AC_MSG_RESULT( no )
4680             fi
4681         else
4682             AC_MSG_RESULT( yes )
4683             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4684             ldflags_save=$LDFLAGS
4685             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4686             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4687 #include <stdio.h>
4688                 ],[
4689 printf ("hello world\n");
4690                 ])], ENABLE_GDB_INDEX=TRUE, [])
4691             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4692                 AC_MSG_RESULT( yes )
4693             else
4694                 if test "$enable_gdb_index" = "yes"; then
4695                     AC_MSG_ERROR( no )
4696                 else
4697                     AC_MSG_RESULT( no )
4698                 fi
4699             fi
4700             LDFLAGS=$ldflags_save
4701         fi
4702         CFLAGS=$save_CFLAGS
4703         fi
4704     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4705         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4706         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4707     fi
4709 AC_SUBST(ENABLE_GDB_INDEX)
4711 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4712     enable_sal_log=yes
4714 if test "$enable_sal_log" = yes; then
4715     ENABLE_SAL_LOG=TRUE
4717 AC_SUBST(ENABLE_SAL_LOG)
4719 dnl Check for enable symbols option
4720 dnl ===================================================================
4721 AC_MSG_CHECKING([whether to generate debug information])
4722 if test -z "$enable_symbols"; then
4723     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4724         enable_symbols=yes
4725     else
4726         enable_symbols=no
4727     fi
4729 if test "$enable_symbols" = yes; then
4730     ENABLE_SYMBOLS_FOR=all
4731     AC_MSG_RESULT([yes])
4732 elif test "$enable_symbols" = no; then
4733     ENABLE_SYMBOLS_FOR=
4734     AC_MSG_RESULT([no])
4735 else
4736     # Selective debuginfo.
4737     ENABLE_SYMBOLS_FOR="$enable_symbols"
4738     AC_MSG_RESULT([for "$enable_symbols"])
4740 AC_SUBST(ENABLE_SYMBOLS_FOR)
4742 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4743     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4744     AC_MSG_CHECKING([whether enough memory is available for linking])
4745     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4746     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4747     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4748         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4749     else
4750         AC_MSG_RESULT([yes])
4751     fi
4754 ENABLE_OPTIMIZED=
4755 ENABLE_OPTIMIZED_DEBUG=
4756 AC_MSG_CHECKING([whether to compile with optimization flags])
4757 if test -z "$enable_optimized"; then
4758     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4759         enable_optimized=no
4760     else
4761         enable_optimized=yes
4762     fi
4764 if test "$enable_optimized" = yes; then
4765     ENABLE_OPTIMIZED=TRUE
4766     AC_MSG_RESULT([yes])
4767 elif test "$enable_optimized" = debug; then
4768     ENABLE_OPTIMIZED_DEBUG=TRUE
4769     AC_MSG_RESULT([yes (debug)])
4770     HAVE_GCC_OG=
4771     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4772         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4773         save_CFLAGS=$CFLAGS
4774         CFLAGS="$CFLAGS -Werror -Og"
4775         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4776         CFLAGS=$save_CFLAGS
4777         if test "$HAVE_GCC_OG" = "TRUE"; then
4778             AC_MSG_RESULT([yes])
4779         else
4780             AC_MSG_RESULT([no])
4781         fi
4782     fi
4783     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4784         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4785     fi
4786 else
4787     AC_MSG_RESULT([no])
4789 AC_SUBST(ENABLE_OPTIMIZED)
4790 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4793 # determine CPUNAME, OS, ...
4795 case "$host_os" in
4797 aix*)
4798     COM=GCC
4799     CPUNAME=POWERPC
4800     OS=AIX
4801     RTL_OS=AIX
4802     RTL_ARCH=PowerPC
4803     PLATFORMID=aix_powerpc
4804     P_SEP=:
4805     ;;
4807 cygwin*|wsl*)
4808     # Already handled
4809     ;;
4811 darwin*|macos*)
4812     COM=GCC
4813     OS=MACOSX
4814     RTL_OS=MacOSX
4815     P_SEP=:
4817     case "$host_cpu" in
4818     aarch64|arm64)
4819         if test "$enable_ios_simulator" = "yes"; then
4820             OS=iOS
4821         else
4822             CPUNAME=AARCH64
4823             RTL_ARCH=AARCH64
4824             PLATFORMID=macosx_aarch64
4825         fi
4826         ;;
4827     x86_64)
4828         if test "$enable_ios_simulator" = "yes"; then
4829             OS=iOS
4830         fi
4831         CPUNAME=X86_64
4832         RTL_ARCH=X86_64
4833         PLATFORMID=macosx_x86_64
4834         ;;
4835     *)
4836         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4837         ;;
4838     esac
4839     ;;
4841 ios*)
4842     COM=GCC
4843     OS=iOS
4844     RTL_OS=iOS
4845     P_SEP=:
4847     case "$host_cpu" in
4848     aarch64|arm64)
4849         if test "$enable_ios_simulator" = "yes"; then
4850             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4851         fi
4852         ;;
4853     *)
4854         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4855         ;;
4856     esac
4857     CPUNAME=AARCH64
4858     RTL_ARCH=AARCH64
4859     PLATFORMID=ios_arm64
4860     ;;
4862 dragonfly*)
4863     COM=GCC
4864     OS=DRAGONFLY
4865     RTL_OS=DragonFly
4866     P_SEP=:
4868     case "$host_cpu" in
4869     i*86)
4870         CPUNAME=INTEL
4871         RTL_ARCH=x86
4872         PLATFORMID=dragonfly_x86
4873         ;;
4874     x86_64)
4875         CPUNAME=X86_64
4876         RTL_ARCH=X86_64
4877         PLATFORMID=dragonfly_x86_64
4878         ;;
4879     *)
4880         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4881         ;;
4882     esac
4883     ;;
4885 freebsd*)
4886     COM=GCC
4887     RTL_OS=FreeBSD
4888     OS=FREEBSD
4889     P_SEP=:
4891     case "$host_cpu" in
4892     aarch64)
4893         CPUNAME=AARCH64
4894         PLATFORMID=freebsd_aarch64
4895         RTL_ARCH=AARCH64
4896         ;;
4897     i*86)
4898         CPUNAME=INTEL
4899         RTL_ARCH=x86
4900         PLATFORMID=freebsd_x86
4901         ;;
4902     x86_64|amd64)
4903         CPUNAME=X86_64
4904         RTL_ARCH=X86_64
4905         PLATFORMID=freebsd_x86_64
4906         ;;
4907     powerpc64)
4908         CPUNAME=POWERPC64
4909         RTL_ARCH=PowerPC_64
4910         PLATFORMID=freebsd_powerpc64
4911         ;;
4912     powerpc|powerpcspe)
4913         CPUNAME=POWERPC
4914         RTL_ARCH=PowerPC
4915         PLATFORMID=freebsd_powerpc
4916         ;;
4917     *)
4918         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4919         ;;
4920     esac
4921     ;;
4923 haiku*)
4924     COM=GCC
4925     GUIBASE=haiku
4926     RTL_OS=Haiku
4927     OS=HAIKU
4928     P_SEP=:
4930     case "$host_cpu" in
4931     i*86)
4932         CPUNAME=INTEL
4933         RTL_ARCH=x86
4934         PLATFORMID=haiku_x86
4935         ;;
4936     x86_64|amd64)
4937         CPUNAME=X86_64
4938         RTL_ARCH=X86_64
4939         PLATFORMID=haiku_x86_64
4940         ;;
4941     *)
4942         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4943         ;;
4944     esac
4945     ;;
4947 kfreebsd*)
4948     COM=GCC
4949     OS=LINUX
4950     RTL_OS=kFreeBSD
4951     P_SEP=:
4953     case "$host_cpu" in
4955     i*86)
4956         CPUNAME=INTEL
4957         RTL_ARCH=x86
4958         PLATFORMID=kfreebsd_x86
4959         ;;
4960     x86_64)
4961         CPUNAME=X86_64
4962         RTL_ARCH=X86_64
4963         PLATFORMID=kfreebsd_x86_64
4964         ;;
4965     *)
4966         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4967         ;;
4968     esac
4969     ;;
4971 linux-gnu*|linux-musl*)
4972     COM=GCC
4973     OS=LINUX
4974     RTL_OS=Linux
4975     P_SEP=:
4977     case "$host_cpu" in
4979     aarch64)
4980         CPUNAME=AARCH64
4981         PLATFORMID=linux_aarch64
4982         RTL_ARCH=AARCH64
4983         EPM_FLAGS="-a arm64"
4984         ;;
4985     alpha)
4986         CPUNAME=AXP
4987         RTL_ARCH=ALPHA
4988         PLATFORMID=linux_alpha
4989         ;;
4990     arm*)
4991         CPUNAME=ARM
4992         EPM_FLAGS="-a arm"
4993         RTL_ARCH=ARM_EABI
4994         PLATFORMID=linux_arm_eabi
4995         case "$host_cpu" in
4996         arm*-linux)
4997             RTL_ARCH=ARM_OABI
4998             PLATFORMID=linux_arm_oabi
4999             ;;
5000         esac
5001         ;;
5002     hppa)
5003         CPUNAME=HPPA
5004         RTL_ARCH=HPPA
5005         EPM_FLAGS="-a hppa"
5006         PLATFORMID=linux_hppa
5007         ;;
5008     i*86)
5009         CPUNAME=INTEL
5010         RTL_ARCH=x86
5011         PLATFORMID=linux_x86
5012         ;;
5013     ia64)
5014         CPUNAME=IA64
5015         RTL_ARCH=IA64
5016         PLATFORMID=linux_ia64
5017         ;;
5018     mips)
5019         CPUNAME=GODSON
5020         RTL_ARCH=MIPS_EB
5021         EPM_FLAGS="-a mips"
5022         PLATFORMID=linux_mips_eb
5023         ;;
5024     mips64)
5025         CPUNAME=GODSON64
5026         RTL_ARCH=MIPS64_EB
5027         EPM_FLAGS="-a mips64"
5028         PLATFORMID=linux_mips64_eb
5029         ;;
5030     mips64el)
5031         CPUNAME=GODSON64
5032         RTL_ARCH=MIPS64_EL
5033         EPM_FLAGS="-a mips64el"
5034         PLATFORMID=linux_mips64_el
5035         ;;
5036     mipsel)
5037         CPUNAME=GODSON
5038         RTL_ARCH=MIPS_EL
5039         EPM_FLAGS="-a mipsel"
5040         PLATFORMID=linux_mips_el
5041         ;;
5042     m68k)
5043         CPUNAME=M68K
5044         RTL_ARCH=M68K
5045         PLATFORMID=linux_m68k
5046         ;;
5047     powerpc)
5048         CPUNAME=POWERPC
5049         RTL_ARCH=PowerPC
5050         PLATFORMID=linux_powerpc
5051         ;;
5052     powerpc64)
5053         CPUNAME=POWERPC64
5054         RTL_ARCH=PowerPC_64
5055         PLATFORMID=linux_powerpc64
5056         ;;
5057     powerpc64le)
5058         CPUNAME=POWERPC64
5059         RTL_ARCH=PowerPC_64_LE
5060         PLATFORMID=linux_powerpc64_le
5061         ;;
5062     sparc)
5063         CPUNAME=SPARC
5064         RTL_ARCH=SPARC
5065         PLATFORMID=linux_sparc
5066         ;;
5067     sparc64)
5068         CPUNAME=SPARC64
5069         RTL_ARCH=SPARC64
5070         PLATFORMID=linux_sparc64
5071         ;;
5072     s390)
5073         CPUNAME=S390
5074         RTL_ARCH=S390
5075         PLATFORMID=linux_s390
5076         ;;
5077     s390x)
5078         CPUNAME=S390X
5079         RTL_ARCH=S390x
5080         PLATFORMID=linux_s390x
5081         ;;
5082     x86_64)
5083         CPUNAME=X86_64
5084         RTL_ARCH=X86_64
5085         PLATFORMID=linux_x86_64
5086         ;;
5087     *)
5088         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5089         ;;
5090     esac
5091     ;;
5093 linux-android*)
5094     COM=GCC
5095     OS=ANDROID
5096     RTL_OS=Android
5097     P_SEP=:
5099     case "$host_cpu" in
5101     arm|armel)
5102         CPUNAME=ARM
5103         RTL_ARCH=ARM_EABI
5104         PLATFORMID=android_arm_eabi
5105         ;;
5106     aarch64)
5107         CPUNAME=AARCH64
5108         RTL_ARCH=AARCH64
5109         PLATFORMID=android_aarch64
5110         ;;
5111     i*86)
5112         CPUNAME=INTEL
5113         RTL_ARCH=x86
5114         PLATFORMID=android_x86
5115         ;;
5116     x86_64)
5117         CPUNAME=X86_64
5118         RTL_ARCH=X86_64
5119         PLATFORMID=android_x86_64
5120         ;;
5121     *)
5122         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5123         ;;
5124     esac
5125     ;;
5127 *netbsd*)
5128     COM=GCC
5129     OS=NETBSD
5130     RTL_OS=NetBSD
5131     P_SEP=:
5133     case "$host_cpu" in
5134     i*86)
5135         CPUNAME=INTEL
5136         RTL_ARCH=x86
5137         PLATFORMID=netbsd_x86
5138         ;;
5139     powerpc)
5140         CPUNAME=POWERPC
5141         RTL_ARCH=PowerPC
5142         PLATFORMID=netbsd_powerpc
5143         ;;
5144     sparc)
5145         CPUNAME=SPARC
5146         RTL_ARCH=SPARC
5147         PLATFORMID=netbsd_sparc
5148         ;;
5149     x86_64)
5150         CPUNAME=X86_64
5151         RTL_ARCH=X86_64
5152         PLATFORMID=netbsd_x86_64
5153         ;;
5154     *)
5155         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5156         ;;
5157     esac
5158     ;;
5160 openbsd*)
5161     COM=GCC
5162     OS=OPENBSD
5163     RTL_OS=OpenBSD
5164     P_SEP=:
5166     case "$host_cpu" in
5167     i*86)
5168         CPUNAME=INTEL
5169         RTL_ARCH=x86
5170         PLATFORMID=openbsd_x86
5171         ;;
5172     x86_64)
5173         CPUNAME=X86_64
5174         RTL_ARCH=X86_64
5175         PLATFORMID=openbsd_x86_64
5176         ;;
5177     *)
5178         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5179         ;;
5180     esac
5181     SOLARINC="$SOLARINC -I/usr/local/include"
5182     ;;
5184 solaris*)
5185     COM=GCC
5186     OS=SOLARIS
5187     RTL_OS=Solaris
5188     P_SEP=:
5190     case "$host_cpu" in
5191     i*86)
5192         CPUNAME=INTEL
5193         RTL_ARCH=x86
5194         PLATFORMID=solaris_x86
5195         ;;
5196     sparc)
5197         CPUNAME=SPARC
5198         RTL_ARCH=SPARC
5199         PLATFORMID=solaris_sparc
5200         ;;
5201     sparc64)
5202         CPUNAME=SPARC64
5203         RTL_ARCH=SPARC64
5204         PLATFORMID=solaris_sparc64
5205         ;;
5206     *)
5207         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5208         ;;
5209     esac
5210     SOLARINC="$SOLARINC -I/usr/local/include"
5211     ;;
5213 emscripten*)
5214     COM=GCC
5215     OS=EMSCRIPTEN
5216     RTL_OS=Emscripten
5217     P_SEP=:
5219     case "$host_cpu" in
5220     wasm32|wasm64)
5221         ;;
5222     *)
5223         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5224         ;;
5225     esac
5226     CPUNAME=INTEL
5227     RTL_ARCH=x86
5228     PLATFORMID=linux_x86
5229     ;;
5232     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5233     ;;
5234 esac
5236 if test "$with_x" = "no"; then
5237     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5240 DISABLE_GUI=""
5241 if test "$enable_gui" = "no"; then
5242     if test "$using_x11" != yes; then
5243         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5244     fi
5245     USING_X11=
5246     DISABLE_GUI=TRUE
5247 else
5248     AC_DEFINE(HAVE_FEATURE_UI)
5250 AC_SUBST(DISABLE_GUI)
5252 if test "$using_x11" = yes; then
5253     if test "$USING_X11" = TRUE; then
5254         AC_DEFINE(USING_X11)
5255     else
5256         disable_x11_tests
5257     fi
5258 else
5259     if test "$USING_X11" = TRUE; then
5260         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5261     fi
5264 WORKDIR="${BUILDDIR}/workdir"
5265 INSTDIR="${BUILDDIR}/instdir"
5266 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5267 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5268 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5269 AC_SUBST(COM)
5270 AC_SUBST(CPUNAME)
5271 AC_SUBST(RTL_OS)
5272 AC_SUBST(RTL_ARCH)
5273 AC_SUBST(EPM_FLAGS)
5274 AC_SUBST(USING_X11)
5275 AC_SUBST([INSTDIR])
5276 AC_SUBST([INSTROOT])
5277 AC_SUBST([INSTROOTBASE])
5278 AC_SUBST(OS)
5279 AC_SUBST(P_SEP)
5280 AC_SUBST(WORKDIR)
5281 AC_SUBST(PLATFORMID)
5282 AC_SUBST(WINDOWS_X64)
5283 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5285 if test "$OS" = WNT -a "$COM" = MSC; then
5286     case "$CPUNAME" in
5287     INTEL) CPPU_ENV=msci ;;
5288     X86_64) CPPU_ENV=mscx ;;
5289     AARCH64) CPPU_ENV=msca ;;
5290     *)
5291         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5292         ;;
5293     esac
5294 else
5295     CPPU_ENV=gcc3
5297 AC_SUBST(CPPU_ENV)
5299 dnl ===================================================================
5300 dnl Test which package format to use
5301 dnl ===================================================================
5302 AC_MSG_CHECKING([which package format to use])
5303 if test -n "$with_package_format" -a "$with_package_format" != no; then
5304     for i in $with_package_format; do
5305         case "$i" in
5306         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5307             ;;
5308         *)
5309             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5310 aix - AIX software distribution
5311 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5312 deb - Debian software distribution
5313 pkg - Solaris software distribution
5314 rpm - RedHat software distribution
5316 LibreOffice additionally supports:
5317 archive - .tar.gz or .zip
5318 dmg - macOS .dmg
5319 installed - installation tree
5320 msi - Windows .msi
5321         ])
5322             ;;
5323         esac
5324     done
5325     # fakeroot is needed to ensure correct file ownerships/permissions
5326     # inside deb packages and tar archives created on Linux and Solaris.
5327     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5328         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5329         if test "$FAKEROOT" = "no"; then
5330             AC_MSG_ERROR(
5331                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5332         fi
5333     fi
5334     PKGFORMAT="$with_package_format"
5335     AC_MSG_RESULT([$PKGFORMAT])
5336 else
5337     PKGFORMAT=
5338     AC_MSG_RESULT([none])
5340 AC_SUBST(PKGFORMAT)
5342 dnl ===================================================================
5343 dnl handle help related options
5345 dnl If you change help related options, please update README.help
5346 dnl ===================================================================
5348 ENABLE_HTMLHELP=
5349 HELP_OMINDEX_PAGE=
5350 HELP_ONLINE=
5351 WITH_HELPPACKS=
5353 AC_MSG_CHECKING([which help to build])
5354 if test -n "$with_help" -a "$with_help" != "no"; then
5355     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5356     BUILD_TYPE="$BUILD_TYPE HELP"
5357     case "$with_help" in
5358     "html")
5359         ENABLE_HTMLHELP=TRUE
5360         WITH_HELPPACKS=TRUE
5361         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5362         AC_MSG_RESULT([HTML (local)])
5363         ;;
5364     "online")
5365         ENABLE_HTMLHELP=TRUE
5366         HELP_ONLINE=TRUE
5367         AC_MSG_RESULT([HTML (online)])
5368         ;;
5369     yes)
5370         WITH_HELPPACKS=TRUE
5371         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5372         AC_MSG_RESULT([XML (local)])
5373         ;;
5374     *)
5375         AC_MSG_ERROR([Unknown --with-help=$with_help])
5376         ;;
5377     esac
5378 else
5379     AC_MSG_RESULT([no])
5382 AC_MSG_CHECKING([if we need to build the help index tooling])
5383 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5384     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5385     AC_MSG_RESULT([yes])
5386 else
5387     AC_MSG_RESULT([no])
5390 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5391 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5392     if test "$HELP_ONLINE" != TRUE; then
5393         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5394     fi
5395     case "$with_omindex" in
5396     "server")
5397         HELP_OMINDEX_PAGE=TRUE
5398         AC_MSG_RESULT([SERVER])
5399         ;;
5400     "noxap")
5401         AC_MSG_RESULT([NOXAP])
5402         ;;
5403     *)
5404         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5405         ;;
5406     esac
5407 else
5408     AC_MSG_RESULT([no])
5411 AC_MSG_CHECKING([whether to include the XML-help support])
5412 if test "$enable_xmlhelp" = yes; then
5413     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5414     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5415     AC_MSG_RESULT([yes])
5416 else
5417     if test "$with_help" = yes; then
5418         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5419     fi
5420     AC_MSG_RESULT([no])
5423 dnl Test whether to integrate helppacks into the product's installer
5424 AC_MSG_CHECKING([for helppack integration])
5425 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5426     AC_MSG_RESULT([no integration])
5427 else
5428     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5429     AC_MSG_RESULT([integration])
5432 AC_SUBST([ENABLE_HTMLHELP])
5433 AC_SUBST([HELP_OMINDEX_PAGE])
5434 AC_SUBST([HELP_ONLINE])
5435 # WITH_HELPPACKS is used only in configure
5437 dnl ===================================================================
5438 dnl Set up a different compiler to produce tools to run on the build
5439 dnl machine when doing cross-compilation
5440 dnl ===================================================================
5442 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5443 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5444 if test "$cross_compiling" = "yes"; then
5445     AC_MSG_CHECKING([for BUILD platform configuration])
5446     echo
5447     rm -rf CONF-FOR-BUILD config_build.mk
5448     mkdir CONF-FOR-BUILD
5449     # Here must be listed all files needed when running the configure script. In particular, also
5450     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5451     # keep them in the same order as there.
5452     (cd $SRC_ROOT && tar cf - \
5453         config.guess \
5454         bin/get_config_variables \
5455         solenv/bin/getcompver.awk \
5456         solenv/inc/langlist.mk \
5457         download.lst \
5458         config_host.mk.in \
5459         config_host_lang.mk.in \
5460         Makefile.in \
5461         bin/bffvalidator.sh.in \
5462         bin/odfvalidator.sh.in \
5463         bin/officeotron.sh.in \
5464         hardened_runtime.xcent.in \
5465         instsetoo_native/util/openoffice.lst.in \
5466         config_host/*.in \
5467         sysui/desktop/macosx/Info.plist.in \
5468         .vscode/vs-code-template.code-workspace.in \
5469         ) \
5470     | (cd CONF-FOR-BUILD && tar xf -)
5471     cp configure CONF-FOR-BUILD
5472     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5473     (
5474     unset COM USING_X11 OS CPUNAME
5475     unset CC CXX SYSBASE CFLAGS
5476     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5477     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5478     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5479     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5480     if test -n "$CC_FOR_BUILD"; then
5481         export CC="$CC_FOR_BUILD"
5482         CC_BASE=`first_arg_basename "$CC"`
5483     fi
5484     if test -n "$CXX_FOR_BUILD"; then
5485         export CXX="$CXX_FOR_BUILD"
5486         CXX_BASE=`first_arg_basename "$CXX"`
5487     fi
5488     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5489     cd CONF-FOR-BUILD
5491     # Handle host configuration, which affects the cross-toolset too
5492     sub_conf_opts=""
5493     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5494     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5495     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5496     if test -n "$ENABLE_JAVA"; then
5497         case "$_os" in
5498         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5499         Android)
5500             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5501             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5502             ;;
5503         *)
5504             if test -z "$with_jdk_home"; then
5505                 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.])
5506             fi
5507             ;;
5508         esac
5509     else
5510         sub_conf_opts="$sub_conf_opts --without-java"
5511     fi
5512     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5513     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5514     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5515     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5516     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5517     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5519     # Don't bother having configure look for stuff not needed for the build platform anyway
5520     sub_conf_defaults=" \
5521         --build="$build_alias" \
5522         --disable-cairo-canvas \
5523         --disable-cups \
5524         --disable-firebird-sdbc \
5525         --disable-gpgmepp \
5526         --disable-gstreamer-1-0 \
5527         --disable-gtk3 \
5528         --disable-gtk4 \
5529         --disable-mariadb-sdbc \
5530         --disable-nss \
5531         --disable-online-update \
5532         --disable-opencl \
5533         --disable-pdfimport \
5534         --disable-postgresql-sdbc \
5535         --disable-skia \
5536         --enable-icecream="$enable_icecream" \
5537         --without-doxygen \
5538         --without-webdav \
5539         --with-parallelism="$with_parallelism" \
5540         --with-theme="$with_theme" \
5541         --with-tls=openssl \
5543     echo "    Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5544     ./configure \
5545         $sub_conf_defaults \
5546         $sub_conf_opts \
5547         $with_build_platform_configure_options \
5548         --srcdir=$srcdir \
5549         2>&1 | sed -e 's/^/    /'
5550     if test [${PIPESTATUS[0]}] -ne 0; then
5551         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5552     fi
5554     # filter permitted build targets
5555     PERMITTED_BUILD_TARGETS="
5556         AVMEDIA
5557         BOOST
5558         CAIRO
5559         CLUCENE
5560         CUCKOO
5561         CURL
5562         DBCONNECTIVITY
5563         DESKTOP
5564         DYNLOADING
5565         EPOXY
5566         EXPAT
5567         GLM
5568         GRAPHITE
5569         HARFBUZZ
5570         HELPTOOLS
5571         ICU
5572         LCMS2
5573         LIBJPEG_TURBO
5574         LIBLANGTAG
5575         LibO
5576         LIBFFI
5577         LIBPN
5578         LIBXML2
5579         LIBXSLT
5580         MDDS
5581         NATIVE
5582         OPENSSL
5583         ORCUS
5584         PYTHON
5585         SCRIPTING
5586         ZLIB
5588     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5589     # newlined lists, to use grep as a filter
5590     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5591     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5592     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5593     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5595     cp config_host.mk ../config_build.mk
5596     cp config_host_lang.mk ../config_build_lang.mk
5597     mv config.log ../config.Build.log
5598     mkdir -p ../config_build
5599     mv config_host/*.h ../config_build
5600     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5602     # all these will get a _FOR_BUILD postfix
5603     DIRECT_FOR_BUILD_SETTINGS="
5604         CC
5605         CPPU_ENV
5606         CXX
5607         ILIB
5608         JAVA_HOME
5609         JAVAIFLAGS
5610         JDK
5611         LIBO_BIN_FOLDER
5612         LIBO_LIB_FOLDER
5613         LIBO_URE_LIB_FOLDER
5614         LIBO_URE_MISC_FOLDER
5615         OS
5616         SDKDIRNAME
5617         SYSTEM_LIBXML
5618         SYSTEM_LIBXSLT
5620     # these overwrite host config with build config
5621     OVERWRITING_SETTINGS="
5622         ANT
5623         ANT_HOME
5624         ANT_LIB
5625         HSQLDB_USE_JDBC_4_1
5626         JAVA_CLASSPATH_NOT_SET
5627         JAVA_SOURCE_VER
5628         JAVA_TARGET_VER
5629         JAVACFLAGS
5630         JAVACOMPILER
5631         JAVADOC
5632         JAVADOCISGJDOC
5634     # these need some special handling
5635     EXTRA_HANDLED_SETTINGS="
5636         INSTDIR
5637         INSTROOT
5638         PATH
5639         WORKDIR
5641     OLD_PATH=$PATH
5642     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5643     BUILD_PATH=$PATH
5644     PATH=$OLD_PATH
5646     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5647     echo "$line" >>build-config
5649     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5650         VV='$'$V
5651         VV=`eval "echo $VV"`
5652         if test -n "$VV"; then
5653             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5654             echo "$line" >>build-config
5655         fi
5656     done
5658     for V in $OVERWRITING_SETTINGS; do
5659         VV='$'$V
5660         VV=`eval "echo $VV"`
5661         if test -n "$VV"; then
5662             line=${V}='${'${V}:-$VV'}'
5663             echo "$line" >>build-config
5664         fi
5665     done
5667     for V in INSTDIR INSTROOT WORKDIR; do
5668         VV='$'$V
5669         VV=`eval "echo $VV"`
5670         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5671         if test -n "$VV"; then
5672             line="${V}_FOR_BUILD='$VV'"
5673             echo "$line" >>build-config
5674         fi
5675     done
5677     )
5678     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5679     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])
5680     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5681              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5683     eval `cat CONF-FOR-BUILD/build-config`
5685     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5687     rm -rf CONF-FOR-BUILD
5688 else
5689     OS_FOR_BUILD="$OS"
5690     CC_FOR_BUILD="$CC"
5691     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5692     CXX_FOR_BUILD="$CXX"
5693     INSTDIR_FOR_BUILD="$INSTDIR"
5694     INSTROOT_FOR_BUILD="$INSTROOT"
5695     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5696     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5697     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5698     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5699     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5700     WORKDIR_FOR_BUILD="$WORKDIR"
5702 AC_SUBST(OS_FOR_BUILD)
5703 AC_SUBST(INSTDIR_FOR_BUILD)
5704 AC_SUBST(INSTROOT_FOR_BUILD)
5705 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5706 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5707 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5708 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5709 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5710 AC_SUBST(WORKDIR_FOR_BUILD)
5711 AC_SUBST(CC_FOR_BUILD)
5712 AC_SUBST(CXX_FOR_BUILD)
5713 AC_SUBST(CPPU_ENV_FOR_BUILD)
5715 dnl ===================================================================
5716 dnl Check for syslog header
5717 dnl ===================================================================
5718 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5720 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5721 dnl ===================================================================
5722 AC_MSG_CHECKING([whether to turn warnings to errors])
5723 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5724     ENABLE_WERROR="TRUE"
5725     PYTHONWARNINGS="error"
5726     AC_MSG_RESULT([yes])
5727 else
5728     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5729         ENABLE_WERROR="TRUE"
5730         PYTHONWARNINGS="error"
5731         AC_MSG_RESULT([yes])
5732     else
5733         AC_MSG_RESULT([no])
5734     fi
5736 AC_SUBST(ENABLE_WERROR)
5737 AC_SUBST(PYTHONWARNINGS)
5739 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5740 dnl ===================================================================
5741 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5742 if test -z "$enable_assert_always_abort"; then
5743    if test "$ENABLE_DEBUG" = TRUE; then
5744        enable_assert_always_abort=yes
5745    else
5746        enable_assert_always_abort=no
5747    fi
5749 if test "$enable_assert_always_abort" = "yes"; then
5750     ASSERT_ALWAYS_ABORT="TRUE"
5751     AC_MSG_RESULT([yes])
5752 else
5753     ASSERT_ALWAYS_ABORT="FALSE"
5754     AC_MSG_RESULT([no])
5756 AC_SUBST(ASSERT_ALWAYS_ABORT)
5758 # Determine whether to use ooenv for the instdir installation
5759 # ===================================================================
5760 if test $_os != "WINNT" -a $_os != "Darwin"; then
5761     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5762     if test -z "$enable_ooenv"; then
5763         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5764             enable_ooenv=yes
5765         else
5766             enable_ooenv=no
5767         fi
5768     fi
5769     if test "$enable_ooenv" = "no"; then
5770         AC_MSG_RESULT([no])
5771     else
5772         ENABLE_OOENV="TRUE"
5773         AC_MSG_RESULT([yes])
5774     fi
5776 AC_SUBST(ENABLE_OOENV)
5778 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5779     if test "$enable_qt5" = "no"; then
5780         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5781     else
5782         enable_qt5=yes
5783     fi
5786 dnl ===================================================================
5787 dnl check for cups support
5788 dnl ===================================================================
5790 AC_MSG_CHECKING([whether to enable CUPS support])
5791 if test "$test_cups" = yes -a "$enable_cups" != no; then
5792     ENABLE_CUPS=TRUE
5793     AC_MSG_RESULT([yes])
5795     AC_MSG_CHECKING([whether cups support is present])
5796     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5797     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5798     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5799         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5800     fi
5801 else
5802     AC_MSG_RESULT([no])
5805 AC_SUBST(ENABLE_CUPS)
5807 # fontconfig checks
5808 if test "$using_freetype_fontconfig" = yes; then
5809     AC_MSG_CHECKING([which fontconfig to use])
5811 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5812     AC_MSG_RESULT([external])
5813     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5814     SYSTEM_FONTCONFIG=TRUE
5815     FilterLibs "${FONTCONFIG_LIBS}"
5816     FONTCONFIG_LIBS="${filteredlibs}"
5817 elif test "$using_freetype_fontconfig" = yes; then
5818     AC_MSG_RESULT([internal])
5819     BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5821 AC_SUBST(FONTCONFIG_CFLAGS)
5822 AC_SUBST(FONTCONFIG_LIBS)
5823 AC_SUBST([SYSTEM_FONTCONFIG])
5825 dnl whether to find & fetch external tarballs?
5826 dnl ===================================================================
5827 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5828    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5829        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5830    else
5831        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5832    fi
5834 if test -z "$TARFILE_LOCATION"; then
5835     if test -d "$SRC_ROOT/src" ; then
5836         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5837         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5838     fi
5839     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5840 else
5841     AbsolutePath "$TARFILE_LOCATION"
5842     PathFormat "${absolute_path}"
5843     TARFILE_LOCATION="${formatted_path}"
5845 AC_SUBST(TARFILE_LOCATION)
5847 AC_MSG_CHECKING([whether we want to fetch tarballs])
5848 if test "$enable_fetch_external" != "no"; then
5849     if test "$with_all_tarballs" = "yes"; then
5850         AC_MSG_RESULT([yes, all of them])
5851         DO_FETCH_TARBALLS="ALL"
5852     else
5853         AC_MSG_RESULT([yes, if we use them])
5854         DO_FETCH_TARBALLS="TRUE"
5855     fi
5856 else
5857     AC_MSG_RESULT([no])
5858     DO_FETCH_TARBALLS=
5860 AC_SUBST(DO_FETCH_TARBALLS)
5862 dnl Test whether to include MySpell dictionaries
5863 dnl ===================================================================
5864 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5865 if test "$with_myspell_dicts" = "yes"; then
5866     AC_MSG_RESULT([yes])
5867     WITH_MYSPELL_DICTS=TRUE
5868     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5869     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5870 else
5871     AC_MSG_RESULT([no])
5872     WITH_MYSPELL_DICTS=
5874 AC_SUBST(WITH_MYSPELL_DICTS)
5876 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5877 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5878     if test "$with_system_dicts" = yes; then
5879         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5880     fi
5881     with_system_dicts=no
5884 AC_MSG_CHECKING([whether to use dicts from external paths])
5885 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5886     AC_MSG_RESULT([yes])
5887     SYSTEM_DICTS=TRUE
5888     AC_MSG_CHECKING([for spelling dictionary directory])
5889     if test -n "$with_external_dict_dir"; then
5890         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5891     else
5892         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5893         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5894             DICT_SYSTEM_DIR=file:///usr/share/myspell
5895         fi
5896     fi
5897     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5898     AC_MSG_CHECKING([for hyphenation patterns directory])
5899     if test -n "$with_external_hyph_dir"; then
5900         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5901     else
5902         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5903     fi
5904     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5905     AC_MSG_CHECKING([for thesaurus directory])
5906     if test -n "$with_external_thes_dir"; then
5907         THES_SYSTEM_DIR=file://$with_external_thes_dir
5908     else
5909         THES_SYSTEM_DIR=file:///usr/share/mythes
5910     fi
5911     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5912 else
5913     AC_MSG_RESULT([no])
5914     SYSTEM_DICTS=
5916 AC_SUBST(SYSTEM_DICTS)
5917 AC_SUBST(DICT_SYSTEM_DIR)
5918 AC_SUBST(HYPH_SYSTEM_DIR)
5919 AC_SUBST(THES_SYSTEM_DIR)
5921 dnl ===================================================================
5922 dnl Precompiled headers.
5923 ENABLE_PCH=""
5924 AC_MSG_CHECKING([whether to enable pch feature])
5925 if test -z "$enable_pch"; then
5926     if test "$_os" = "WINNT"; then
5927         # Enabled by default on Windows.
5928         enable_pch=yes
5929         # never use sccache on auto-enabled PCH builds, except if requested explicitely
5930         if test -z "$enable_ccache" -a "$SCCACHE"; then
5931             CCACHE=""
5932         fi
5933     else
5934         enable_pch=no
5935     fi
5937 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5938     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5940 if test "$enable_pch" = "system"; then
5941     ENABLE_PCH="1"
5942     AC_MSG_RESULT([yes (system headers)])
5943 elif test "$enable_pch" = "base"; then
5944     ENABLE_PCH="2"
5945     AC_MSG_RESULT([yes (system and base headers)])
5946 elif test "$enable_pch" = "normal"; then
5947     ENABLE_PCH="3"
5948     AC_MSG_RESULT([yes (normal)])
5949 elif test "$enable_pch" = "full"; then
5950     ENABLE_PCH="4"
5951     AC_MSG_RESULT([yes (full)])
5952 elif test "$enable_pch" = "yes"; then
5953     # Pick a suitable default.
5954     if test "$GCC" = "yes"; then
5955         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5956         # while making the PCHs larger and rebuilds more likely.
5957         ENABLE_PCH="2"
5958         AC_MSG_RESULT([yes (system and base headers)])
5959     else
5960         # With MSVC the highest level makes a significant difference,
5961         # and it was the default when there used to be no PCH levels.
5962         ENABLE_PCH="4"
5963         AC_MSG_RESULT([yes (full)])
5964     fi
5965 elif test "$enable_pch" = "no"; then
5966     AC_MSG_RESULT([no])
5967 else
5968     AC_MSG_ERROR([Unknown value for --enable-pch])
5970 AC_SUBST(ENABLE_PCH)
5971 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5972 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5973     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5974     if test "$CCACHE_BIN" != "not found"; then
5975         AC_MSG_CHECKING([ccache version])
5976         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5977         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5978         AC_MSG_RESULT([$CCACHE_VERSION])
5979         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5980         if test "$CCACHE_NUMVER" -gt "030701"; then
5981             AC_MSG_RESULT([yes])
5982         else
5983             AC_MSG_RESULT([no (not newer than 3.7.1)])
5984             CCACHE_DEPEND_MODE=
5985         fi
5986     fi
5989 PCH_INSTANTIATE_TEMPLATES=
5990 if test -n "$ENABLE_PCH"; then
5991     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5992     save_CFLAGS=$CFLAGS
5993     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5994     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5995     CFLAGS=$save_CFLAGS
5996     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5997         AC_MSG_RESULT(yes)
5998     else
5999         AC_MSG_RESULT(no)
6000     fi
6002 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6004 BUILDING_PCH_WITH_OBJ=
6005 if test -n "$ENABLE_PCH"; then
6006     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6007     save_CFLAGS=$CFLAGS
6008     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6009     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6010     CFLAGS=$save_CFLAGS
6011     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6012         AC_MSG_RESULT(yes)
6013     else
6014         AC_MSG_RESULT(no)
6015     fi
6017 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6019 PCH_CODEGEN=
6020 PCH_NO_CODEGEN=
6021 fpch_prefix=
6022 if test "$COM" = MSC; then
6023     fpch_prefix="-Xclang "
6025 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6026     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6027     save_CFLAGS=$CFLAGS
6028     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6029     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6030         [
6031         PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
6032         PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
6033         ],[])
6034     CFLAGS=$save_CFLAGS
6035     if test -n "$PCH_CODEGEN"; then
6036         AC_MSG_RESULT(yes)
6037     else
6038         AC_MSG_RESULT(no)
6039     fi
6041 AC_SUBST(PCH_CODEGEN)
6042 AC_SUBST(PCH_NO_CODEGEN)
6043 PCH_DEBUGINFO=
6044 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6045     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6046     save_CFLAGS=$CFLAGS
6047     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6048     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6049     CFLAGS=$save_CFLAGS
6050     if test -n "$PCH_DEBUGINFO"; then
6051         AC_MSG_RESULT(yes)
6052     else
6053         AC_MSG_RESULT(no)
6054     fi
6056 AC_SUBST(PCH_DEBUGINFO)
6058 TAB=`printf '\t'`
6060 AC_MSG_CHECKING([the GNU Make version])
6061 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6062 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6063 if test "$_make_longver" -ge "038200"; then
6064     AC_MSG_RESULT([$GNUMAKE $_make_version])
6066 elif test "$_make_longver" -ge "038100"; then
6067     if test "$build_os" = "cygwin"; then
6068         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6069     fi
6070     AC_MSG_RESULT([$GNUMAKE $_make_version])
6072     dnl ===================================================================
6073     dnl Search all the common names for sha1sum
6074     dnl ===================================================================
6075     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6076     if test -z "$SHA1SUM"; then
6077         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6078     elif test "$SHA1SUM" = "openssl"; then
6079         SHA1SUM="openssl sha1"
6080     fi
6081     AC_MSG_CHECKING([for GNU Make bug 20033])
6082     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6083     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6084 A := \$(wildcard *.a)
6086 .PHONY: all
6087 all: \$(A:.a=.b)
6088 <TAB>@echo survived bug20033.
6090 .PHONY: setup
6091 setup:
6092 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6094 define d1
6095 @echo lala \$(1)
6096 @sleep 1
6097 endef
6099 define d2
6100 @echo tyty \$(1)
6101 @sleep 1
6102 endef
6104 %.b : %.a
6105 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6106 <TAB>\$(call d1,\$(CHECKSUM)),\
6107 <TAB>\$(call d2,\$(CHECKSUM)))
6109     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6110         no_parallelism_make="YES"
6111         AC_MSG_RESULT([yes, disable parallelism])
6112     else
6113         AC_MSG_RESULT([no, keep parallelism enabled])
6114     fi
6115     rm -rf $TESTGMAKEBUG20033
6116 else
6117     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6120 # find if gnumake support file function
6121 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6122 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6123 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6124     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6126 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6127 \$(file >test.txt,Success )
6129 .PHONY: all
6130 all:
6131 <TAB>@cat test.txt
6134 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6135 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6136     HAVE_GNUMAKE_FILE_FUNC=TRUE
6137     AC_MSG_RESULT([yes])
6138 else
6139     AC_MSG_RESULT([no])
6141 rm -rf $TESTGMAKEFILEFUNC
6142 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6144 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6145 STALE_MAKE=
6146 if test "$_make_ver_check" = ""; then
6147    STALE_MAKE=TRUE
6150 HAVE_LD_HASH_STYLE=FALSE
6151 WITH_LINKER_HASH_STYLE=
6152 AC_MSG_CHECKING([for --hash-style gcc linker support])
6153 if test "$GCC" = "yes"; then
6154     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6155         hash_styles="gnu sysv"
6156     elif test "$with_linker_hash_style" = "no"; then
6157         hash_styles=
6158     else
6159         hash_styles="$with_linker_hash_style"
6160     fi
6162     for hash_style in $hash_styles; do
6163         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6164         hash_style_ldflags_save=$LDFLAGS
6165         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6167         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6168             [
6169 #include <stdio.h>
6170             ],[
6171 printf ("");
6172             ])],
6173             [
6174                   HAVE_LD_HASH_STYLE=TRUE
6175                   WITH_LINKER_HASH_STYLE=$hash_style
6176             ],
6177             [HAVE_LD_HASH_STYLE=FALSE],
6178             [HAVE_LD_HASH_STYLE=FALSE])
6179         LDFLAGS=$hash_style_ldflags_save
6180     done
6182     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6183         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6184     else
6185         AC_MSG_RESULT( no )
6186     fi
6187     LDFLAGS=$hash_style_ldflags_save
6188 else
6189     AC_MSG_RESULT( no )
6191 AC_SUBST(HAVE_LD_HASH_STYLE)
6192 AC_SUBST(WITH_LINKER_HASH_STYLE)
6194 dnl ===================================================================
6195 dnl Check whether there's a Perl version available.
6196 dnl ===================================================================
6197 if test -z "$with_perl_home"; then
6198     AC_PATH_PROG(PERL, perl)
6199 else
6200     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6201     _perl_path="$with_perl_home/bin/perl"
6202     if test -x "$_perl_path"; then
6203         PERL=$_perl_path
6204     else
6205         AC_MSG_ERROR([$_perl_path not found])
6206     fi
6209 dnl ===================================================================
6210 dnl Testing for Perl version 5 or greater.
6211 dnl $] is the Perl version variable, it is returned as an integer
6212 dnl ===================================================================
6213 if test "$PERL"; then
6214     AC_MSG_CHECKING([the Perl version])
6215     ${PERL} -e "exit($]);"
6216     _perl_version=$?
6217     if test "$_perl_version" -lt 5; then
6218         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6219     fi
6220     AC_MSG_RESULT([Perl $_perl_version])
6221 else
6222     AC_MSG_ERROR([Perl not found, install Perl 5])
6225 dnl ===================================================================
6226 dnl Testing for required Perl modules
6227 dnl ===================================================================
6229 AC_MSG_CHECKING([for required Perl modules])
6230 perl_use_string="use Cwd ; use Digest::MD5"
6231 if test "$_os" = "WINNT"; then
6232     if test -n "$PKGFORMAT"; then
6233         for i in $PKGFORMAT; do
6234             case "$i" in
6235             msi)
6236                 # for getting fonts versions to use in MSI
6237                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6238                 ;;
6239             esac
6240         done
6241     fi
6243 if test "$with_system_hsqldb" = "yes"; then
6244     perl_use_string="$perl_use_string ; use Archive::Zip"
6246 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6247     # OpenSSL needs that to build
6248     perl_use_string="$perl_use_string ; use FindBin"
6250 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6251     AC_MSG_RESULT([all modules found])
6252 else
6253     AC_MSG_RESULT([failed to find some modules])
6254     # Find out which modules are missing.
6255     for i in $perl_use_string; do
6256         if test "$i" != "use" -a "$i" != ";"; then
6257             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6258                 missing_perl_modules="$missing_perl_modules $i"
6259             fi
6260         fi
6261     done
6262     AC_MSG_ERROR([
6263     The missing Perl modules are: $missing_perl_modules
6264     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6267 dnl ===================================================================
6268 dnl Check for pkg-config
6269 dnl ===================================================================
6270 if test "$_os" != "WINNT"; then
6271     PKG_PROG_PKG_CONFIG
6274 if test "$_os" != "WINNT"; then
6276     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6277     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6278     # explicitly. Or put /path/to/compiler in PATH yourself.
6280     # Use wrappers for LTO
6281     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6282         AC_CHECK_TOOL(AR,gcc-ar)
6283         AC_CHECK_TOOL(NM,gcc-nm)
6284         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6285     else
6286         AC_CHECK_TOOL(AR,ar)
6287         AC_CHECK_TOOL(NM,nm)
6288         AC_CHECK_TOOL(RANLIB,ranlib)
6289     fi
6290     AC_CHECK_TOOL(OBJDUMP,objdump)
6291     AC_CHECK_TOOL(READELF,readelf)
6292     AC_CHECK_TOOL(STRIP,strip)
6294 AC_SUBST(AR)
6295 AC_SUBST(LD)
6296 AC_SUBST(NM)
6297 AC_SUBST(OBJDUMP)
6298 AC_SUBST(PKG_CONFIG)
6299 AC_SUBST(PKG_CONFIG_PATH)
6300 AC_SUBST(PKG_CONFIG_LIBDIR)
6301 AC_SUBST(RANLIB)
6302 AC_SUBST(READELF)
6303 AC_SUBST(STRIP)
6305 dnl ===================================================================
6306 dnl pkg-config checks on macOS
6307 dnl ===================================================================
6309 if test $_os = Darwin; then
6310     AC_MSG_CHECKING([for bogus pkg-config])
6311     if test -n "$PKG_CONFIG"; then
6312         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6313             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6314         else
6315             if test "$enable_bogus_pkg_config" = "yes"; then
6316                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6317             else
6318                 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.])
6319             fi
6320         fi
6321     else
6322         AC_MSG_RESULT([no, good])
6323     fi
6326 find_csc()
6328     # Return value: $csctest
6330     unset csctest
6332     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6333     if test -n "$regvalue"; then
6334         csctest=$regvalue
6335         return
6336     fi
6339 find_al()
6341     # Return value: $altest
6343     unset altest
6345     # We need this check to detect 4.6.1 or above.
6346     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6347         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6348         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6349             altest=$regvalue
6350             return
6351         fi
6352     done
6354     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6355         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6356         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6357             altest=$regvalue
6358             return
6359         fi
6360     done
6363 find_dotnetsdk46()
6365     unset frametest
6367     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6368         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6369         if test -n "$regvalue"; then
6370             frametest=$regvalue
6371             return
6372         fi
6373     done
6376 find_winsdk_version()
6378     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6379     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6381     unset winsdktest winsdkbinsubdir winsdklibsubdir
6383     case "$1" in
6384     8.0|8.0A)
6385         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6386         if test -n "$regvalue"; then
6387             winsdktest=$regvalue
6388             winsdklibsubdir=win8
6389             return
6390         fi
6391         ;;
6392     8.1|8.1A)
6393         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6394         if test -n "$regvalue"; then
6395             winsdktest=$regvalue
6396             winsdklibsubdir=winv6.3
6397             return
6398         fi
6399         ;;
6400     10.0)
6401         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6402         if test -n "$regvalue"; then
6403             winsdktest=$regvalue
6404             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6405             if test -n "$regvalue"; then
6406                 winsdkbinsubdir="$regvalue".0
6407                 winsdklibsubdir=$winsdkbinsubdir
6408                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6409                 local tmppath_unix=$(cygpath -u "$tmppath")
6410                 # test exist the SDK path
6411                 if test -d "$tmppath_unix"; then
6412                    # when path is convertible to a short path then path is okay
6413                    cygpath -d "$tmppath" >/dev/null 2>&1
6414                    if test $? -ne 0; then
6415                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6416                    fi
6417                 else
6418                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6419                 fi
6420             fi
6421             return
6422         fi
6423         ;;
6424     esac
6427 find_winsdk()
6429     # Return value: From find_winsdk_version
6431     unset winsdktest
6433     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6434         find_winsdk_version $ver
6435         if test -n "$winsdktest"; then
6436             return
6437         fi
6438     done
6441 find_msms()
6443     # Return value: $msmdir
6445     AC_MSG_CHECKING([for MSVC merge modules directory])
6446     local my_msm_files
6447     local my_msm_dir
6449     dnl Order my_msm_files in increasing order. Then check the directories returned
6450     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6451     dnl the result will be the highest MSM version found in the highest directory.
6453     case "$VCVER" in
6454         16.0 | 17.0)
6455         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6456         ;;
6457     esac
6458     for f in $my_msm_files; do
6459         echo "$as_me:$LINENO: searching for $f" >&5
6460     done
6462     msmdir=
6463     case "$VCVER" in
6464     16.0 | 17.0)
6465         for f in ${my_msm_files}; do
6466             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6467                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6468                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6469                 if test -e "$my_msm_dir${f}"; then
6470                     msmdir=$my_msm_dir
6471                 fi
6472             done
6473         done
6474         ;;
6475     esac
6477     if test -n "$msmdir"; then
6478         msmdir=`cygpath -m "$msmdir"`
6479         AC_MSG_RESULT([$msmdir])
6480     else
6481         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6482             AC_MSG_FAILURE([not found])
6483         else
6484             AC_MSG_WARN([not found (check config.log)])
6485             add_warning "MSM none of ${my_msm_files} found"
6486         fi
6487     fi
6490 find_msvc_x64_dlls()
6492     # Return value: $msvcdllpath, $msvcdlls
6494     AC_MSG_CHECKING([for MSVC x64 DLL path])
6496     dnl Order crtver in increasing order. Then check the directories returned by
6497     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6498     dnl the result will be the highest CRT version found in the highest directory.
6500     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6501     case "$VCVER" in
6502     16.0 | 17.0)
6503         for crtver in 141 142 143; do
6504             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6505                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6506                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6507                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6508                 fi
6509             done
6510         done
6511         ;;
6512     esac
6513     AC_MSG_RESULT([$msvcdllpath])
6514     AC_MSG_CHECKING([for MSVC x64 DLLs])
6515     msvcdlls="msvcp140.dll vcruntime140.dll"
6516     for dll in $msvcdlls; do
6517         if ! test -f "$msvcdllpath/$dll"; then
6518             AC_MSG_FAILURE([missing $dll])
6519         fi
6520     done
6521     AC_MSG_RESULT([found all ($msvcdlls)])
6524 dnl =========================================
6525 dnl Check for the Windows  SDK.
6526 dnl =========================================
6527 if test "$_os" = "WINNT"; then
6528     AC_MSG_CHECKING([for Windows SDK])
6529     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6530         find_winsdk
6531         WINDOWS_SDK_HOME=$winsdktest
6533         # normalize if found
6534         if test -n "$WINDOWS_SDK_HOME"; then
6535             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6536             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6537         fi
6539         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6540     fi
6542     if test -n "$WINDOWS_SDK_HOME"; then
6543         # Remove a possible trailing backslash
6544         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6546         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6547              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6548              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6549             have_windows_sdk_headers=yes
6550         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6551              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6552              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6553             have_windows_sdk_headers=yes
6554         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6555              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6556              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6557             have_windows_sdk_headers=yes
6558         else
6559             have_windows_sdk_headers=no
6560         fi
6562         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6563             have_windows_sdk_libs=yes
6564         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6565             have_windows_sdk_libs=yes
6566         else
6567             have_windows_sdk_libs=no
6568         fi
6570         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6571             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6572 the  Windows SDK are installed.])
6573         fi
6574     fi
6576     if test -z "$WINDOWS_SDK_HOME"; then
6577         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6578     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6579         WINDOWS_SDK_VERSION=80
6580         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6581     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6582         WINDOWS_SDK_VERSION=81
6583         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6584     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6585         WINDOWS_SDK_VERSION=10
6586         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6587     else
6588         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6589     fi
6590     PathFormat "$WINDOWS_SDK_HOME"
6591     WINDOWS_SDK_HOME="$formatted_path"
6592     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6593     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6594         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6595         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6596             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6597         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6598             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6599         fi
6600     fi
6602     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6603     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6604     dnl but not in v8.0), so allow this to be overridden with a
6605     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6606     dnl and configuration error if no WiLangId.vbs is found would arguably be
6607     dnl better, but I do not know under which conditions exactly it is needed by
6608     dnl msiglobal.pm:
6609     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6610         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6611         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6612         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6613             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6614             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6615         fi
6616         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6617             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6618             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6619         fi
6620         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6621             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6622             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6623         fi
6624     fi
6625     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6626         if test -n "$with_package_format" -a "$with_package_format" != no; then
6627             for i in "$with_package_format"; do
6628                 if test "$i" = "msi"; then
6629                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6630                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6631                     fi
6632                 fi
6633             done
6634         fi
6635     fi
6637 AC_SUBST(WINDOWS_SDK_HOME)
6638 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6639 AC_SUBST(WINDOWS_SDK_VERSION)
6640 AC_SUBST(WINDOWS_SDK_WILANGID)
6642 if test "$build_os" = "cygwin"; then
6643     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6644     dnl dir, it also determines that dir's path w/o an arch segment if any,
6645     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6646     AC_MSG_CHECKING([for midl.exe])
6648     find_winsdk
6649     if test -n "$winsdkbinsubdir" \
6650         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6651     then
6652         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6653         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6654     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6655         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6656         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6657     elif test -f "$winsdktest/Bin/midl.exe"; then
6658         MIDL_PATH=$winsdktest/Bin
6659         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6660     fi
6661     if test ! -f "$MIDL_PATH/midl.exe"; then
6662         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6663     else
6664         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6665     fi
6667     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6668     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6670     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6671          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6672          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6673          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6674     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6675          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6676          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6677          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6678     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6679          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6680          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6681          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6682     else
6683         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6684     fi
6686     dnl Check csc.exe
6687     AC_MSG_CHECKING([for csc.exe])
6688     find_csc
6689     if test -f "$csctest/csc.exe"; then
6690         CSC_PATH="$csctest"
6691     fi
6692     if test ! -f "$CSC_PATH/csc.exe"; then
6693         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6694     else
6695         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6696     fi
6698     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6700     dnl Check al.exe
6701     AC_MSG_CHECKING([for al.exe])
6702     find_winsdk
6703     if test -n "$winsdkbinsubdir" \
6704         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6705     then
6706         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6707     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6708         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6709     elif test -f "$winsdktest/Bin/al.exe"; then
6710         AL_PATH="$winsdktest/Bin"
6711     fi
6713     if test -z "$AL_PATH"; then
6714         find_al
6715         if test -f "$altest/bin/al.exe"; then
6716             AL_PATH="$altest/bin"
6717         elif test -f "$altest/al.exe"; then
6718             AL_PATH="$altest"
6719         fi
6720     fi
6721     if test ! -f "$AL_PATH/al.exe"; then
6722         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6723     else
6724         AC_MSG_RESULT([$AL_PATH/al.exe])
6725     fi
6727     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6729     dnl Check mscoree.lib / .NET Framework dir
6730     AC_MSG_CHECKING(.NET Framework)
6731     find_dotnetsdk46
6732     PathFormat "$frametest"
6733     frametest="$formatted_path"
6734     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6735         DOTNET_FRAMEWORK_HOME="$frametest"
6736     else
6737         find_winsdk
6738         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6739             DOTNET_FRAMEWORK_HOME="$winsdktest"
6740         fi
6741     fi
6742     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
6743         AC_MSG_ERROR([mscoree.lib not found])
6744     fi
6745     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6747     PathFormat "$MIDL_PATH"
6748     MIDL_PATH="$formatted_path"
6750     PathFormat "$AL_PATH"
6751     AL_PATH="$formatted_path"
6753     PathFormat "$DOTNET_FRAMEWORK_HOME"
6754     DOTNET_FRAMEWORK_HOME="$formatted_path"
6756     PathFormat "$CSC_PATH"
6757     CSC_PATH="$formatted_path"
6760 dnl ===================================================================
6761 dnl Testing for C++ compiler and version...
6762 dnl ===================================================================
6764 if test "$_os" != "WINNT"; then
6765     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6766     save_CXXFLAGS=$CXXFLAGS
6767     AC_PROG_CXX
6768     CXXFLAGS=$save_CXXFLAGS
6769     if test -z "$CXX_BASE"; then
6770         CXX_BASE=`first_arg_basename "$CXX"`
6771     fi
6774 dnl check for GNU C++ compiler version
6775 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6776     AC_MSG_CHECKING([the GNU C++ compiler version])
6778     _gpp_version=`$CXX -dumpversion`
6779     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6781     if test "$_gpp_majmin" -lt "700"; then
6782         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6783     else
6784         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6785     fi
6787     dnl see https://code.google.com/p/android/issues/detail?id=41770
6788         glibcxx_threads=no
6789         AC_LANG_PUSH([C++])
6790         AC_REQUIRE_CPP
6791         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6792         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6793             #include <bits/c++config.h>]],[[
6794             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6795             && !defined(_GLIBCXX__PTHREADS) \
6796             && !defined(_GLIBCXX_HAS_GTHREADS)
6797             choke me
6798             #endif
6799         ]])],[AC_MSG_RESULT([yes])
6800         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6801         AC_LANG_POP([C++])
6802         if test $glibcxx_threads = yes; then
6803             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6804         fi
6806 AC_SUBST(BOOST_CXXFLAGS)
6809 # prefx CXX with ccache if needed
6811 if test "$CCACHE" != ""; then
6812     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6813     AC_LANG_PUSH([C++])
6814     save_CXXFLAGS=$CXXFLAGS
6815     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6816     # msvc does not fail on unknown options, check stdout
6817     if test "$COM" = MSC; then
6818         CXXFLAGS="$CXXFLAGS -nologo"
6819     fi
6820     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6821     ac_cxx_werror_flag=yes
6822     dnl an empty program will do, we're checking the compiler flags
6823     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6824                       [use_ccache=yes], [use_ccache=no])
6825     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6826         AC_MSG_RESULT([yes])
6827     else
6828         CXX="$CCACHE $CXX"
6829         CXX_BASE="ccache $CXX_BASE"
6830         AC_MSG_RESULT([no])
6831     fi
6832     CXXFLAGS=$save_CXXFLAGS
6833     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6834     AC_LANG_POP([C++])
6837 dnl ===================================================================
6838 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6839 dnl ===================================================================
6841 if test "$_os" != "WINNT"; then
6842     AC_PROG_CXXCPP
6844     dnl Check whether there's a C pre-processor.
6845     AC_PROG_CPP
6849 dnl ===================================================================
6850 dnl Find integral type sizes and alignments
6851 dnl ===================================================================
6853 if test "$_os" != "WINNT"; then
6855     AC_CHECK_SIZEOF(long)
6856     AC_CHECK_SIZEOF(short)
6857     AC_CHECK_SIZEOF(int)
6858     AC_CHECK_SIZEOF(long long)
6859     AC_CHECK_SIZEOF(double)
6860     AC_CHECK_SIZEOF(void*)
6861     AC_CHECK_SIZEOF(size_t)
6863     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6864     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6865     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6866     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6867     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6868     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6870     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6871     m4_pattern_allow([AC_CHECK_ALIGNOF])
6872     m4_ifdef([AC_CHECK_ALIGNOF],
6873         [
6874             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6875             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6876             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6877             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6878         ],
6879         [
6880             case "$_os-$host_cpu" in
6881             Linux-i686)
6882                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6883                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6884                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6885                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6886                 ;;
6887             Linux-x86_64)
6888                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6889                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6890                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6891                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6892                 ;;
6893             *)
6894                 if test -z "$ac_cv_alignof_short" -o \
6895                         -z "$ac_cv_alignof_int" -o \
6896                         -z "$ac_cv_alignof_long" -o \
6897                         -z "$ac_cv_alignof_double"; then
6898                    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.])
6899                 fi
6900                 ;;
6901             esac
6902         ])
6904     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6905     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6906     if test $ac_cv_sizeof_long -eq 8; then
6907         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6908     elif test $ac_cv_sizeof_double -eq 8; then
6909         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6910     else
6911         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6912     fi
6914     dnl Check for large file support
6915     AC_SYS_LARGEFILE
6916     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6917         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6918     fi
6919     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6920         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6921     fi
6922 else
6923     # Hardcode for MSVC
6924     SAL_TYPES_SIZEOFSHORT=2
6925     SAL_TYPES_SIZEOFINT=4
6926     SAL_TYPES_SIZEOFLONG=4
6927     SAL_TYPES_SIZEOFLONGLONG=8
6928     if test $WIN_HOST_BITS -eq 32; then
6929         SAL_TYPES_SIZEOFPOINTER=4
6930         SIZEOF_SIZE_T=4
6931     else
6932         SAL_TYPES_SIZEOFPOINTER=8
6933         SIZEOF_SIZE_T=8
6934     fi
6935     SAL_TYPES_ALIGNMENT2=2
6936     SAL_TYPES_ALIGNMENT4=4
6937     SAL_TYPES_ALIGNMENT8=8
6938     LFS_CFLAGS=''
6940 AC_SUBST(LFS_CFLAGS)
6941 AC_SUBST(SIZEOF_SIZE_T)
6943 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6944 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6945 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6946 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6947 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6948 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6949 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6950 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6952 dnl ===================================================================
6953 dnl Check whether to enable runtime optimizations
6954 dnl ===================================================================
6955 ENABLE_RUNTIME_OPTIMIZATIONS=
6956 AC_MSG_CHECKING([whether to enable runtime optimizations])
6957 if test -z "$enable_runtime_optimizations"; then
6958     for i in $CC; do
6959         case $i in
6960         -fsanitize=*)
6961             enable_runtime_optimizations=no
6962             break
6963             ;;
6964         esac
6965     done
6967 if test "$enable_runtime_optimizations" != no; then
6968     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6969     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6970     AC_MSG_RESULT([yes])
6971 else
6972     AC_MSG_RESULT([no])
6974 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6976 dnl ===================================================================
6977 dnl Check if valgrind headers are available
6978 dnl ===================================================================
6979 ENABLE_VALGRIND=
6980 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6981     prev_cppflags=$CPPFLAGS
6982     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6983     # or where does it come from?
6984     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6985     AC_CHECK_HEADER([valgrind/valgrind.h],
6986         [ENABLE_VALGRIND=TRUE])
6987     CPPFLAGS=$prev_cppflags
6989 AC_SUBST([ENABLE_VALGRIND])
6990 if test -z "$ENABLE_VALGRIND"; then
6991     if test "$with_valgrind" = yes; then
6992         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6993     fi
6994     VALGRIND_CFLAGS=
6996 AC_SUBST([VALGRIND_CFLAGS])
6999 dnl ===================================================================
7000 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7001 dnl ===================================================================
7003 # We need at least the sys/sdt.h include header.
7004 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7005 if test "$SDT_H_FOUND" = "TRUE"; then
7006     # Found sys/sdt.h header, now make sure the c++ compiler works.
7007     # Old g++ versions had problems with probes in constructors/destructors.
7008     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7009     AC_LANG_PUSH([C++])
7010     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7011     #include <sys/sdt.h>
7012     class ProbeClass
7013     {
7014     private:
7015       int& ref;
7016       const char *name;
7018     public:
7019       ProbeClass(int& v, const char *n) : ref(v), name(n)
7020       {
7021         DTRACE_PROBE2(_test_, cons, name, ref);
7022       }
7024       void method(int min)
7025       {
7026         DTRACE_PROBE3(_test_, meth, name, ref, min);
7027         ref -= min;
7028       }
7030       ~ProbeClass()
7031       {
7032         DTRACE_PROBE2(_test_, dest, name, ref);
7033       }
7034     };
7035     ]],[[
7036     int i = 64;
7037     DTRACE_PROBE1(_test_, call, i);
7038     ProbeClass inst = ProbeClass(i, "call");
7039     inst.method(24);
7040     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7041           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7042     AC_LANG_POP([C++])
7044 AC_CONFIG_HEADERS([config_host/config_probes.h])
7046 dnl ===================================================================
7047 dnl GCC features
7048 dnl ===================================================================
7049 HAVE_GCC_STACK_CLASH_PROTECTION=
7050 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7051     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7052     save_CFLAGS=$CFLAGS
7053     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7054     AC_LINK_IFELSE(
7055         [AC_LANG_PROGRAM(, [[return 0;]])],
7056         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7057         [AC_MSG_RESULT([no])])
7058     CFLAGS=$save_CFLAGS
7060     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7061     save_CFLAGS=$CFLAGS
7062     CFLAGS="$CFLAGS -Werror -mno-avx"
7063     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7064     CFLAGS=$save_CFLAGS
7065     if test "$HAVE_GCC_AVX" = "TRUE"; then
7066         AC_MSG_RESULT([yes])
7067     else
7068         AC_MSG_RESULT([no])
7069     fi
7071     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7072     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7073     int v = 0;
7074     if (__sync_add_and_fetch(&v, 1) != 1 ||
7075         __sync_sub_and_fetch(&v, 1) != 0)
7076         return 1;
7077     __sync_synchronize();
7078     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7079         v != 1)
7080         return 1;
7081     return 0;
7082 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7083     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7084         AC_MSG_RESULT([yes])
7085         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7086     else
7087         AC_MSG_RESULT([no])
7088     fi
7090     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7091     AC_LANG_PUSH([C++])
7092     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7093             #include <cstddef>
7094             #include <cxxabi.h>
7095             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7096         ])], [
7097             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7098             AC_MSG_RESULT([yes])
7099         ], [AC_MSG_RESULT([no])])
7100     AC_LANG_POP([C++])
7102     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7103     AC_LANG_PUSH([C++])
7104     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7105             #include <cstddef>
7106             #include <cxxabi.h>
7107             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7108         ])], [
7109             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7110             AC_MSG_RESULT([yes])
7111         ], [AC_MSG_RESULT([no])])
7112     AC_LANG_POP([C++])
7114     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7115     AC_LANG_PUSH([C++])
7116     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7117             #include <cxxabi.h>
7118             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7119         ])], [
7120             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7121             AC_MSG_RESULT([yes])
7122         ], [AC_MSG_RESULT([no])])
7123     AC_LANG_POP([C++])
7125     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7126     AC_LANG_PUSH([C++])
7127     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7128             #include <cstddef>
7129             #include <cxxabi.h>
7130             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7131         ])], [
7132             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7133             AC_MSG_RESULT([yes])
7134         ], [AC_MSG_RESULT([no])])
7135     AC_LANG_POP([C++])
7137     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7138     AC_LANG_PUSH([C++])
7139     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7140             #include <cstddef>
7141             #include <cxxabi.h>
7142             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7143         ])], [
7144             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7145             AC_MSG_RESULT([yes])
7146         ], [AC_MSG_RESULT([no])])
7147     AC_LANG_POP([C++])
7149     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7150     AC_LANG_PUSH([C++])
7151     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7152             #include <cxxabi.h>
7153             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7154         ])], [
7155             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7156             AC_MSG_RESULT([yes])
7157         ], [AC_MSG_RESULT([no])])
7158     AC_LANG_POP([C++])
7160     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7161     AC_LANG_PUSH([C++])
7162     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7163             #include <cxxabi.h>
7164             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7165         ])], [
7166             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7167             AC_MSG_RESULT([yes])
7168         ], [AC_MSG_RESULT([no])])
7169     AC_LANG_POP([C++])
7171     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7172     AC_LANG_PUSH([C++])
7173     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7174             #include <cxxabi.h>
7175             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7176         ])], [
7177             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7178             AC_MSG_RESULT([yes])
7179         ], [AC_MSG_RESULT([no])])
7180     AC_LANG_POP([C++])
7182     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7183     AC_LANG_PUSH([C++])
7184     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7185             #include <cstddef>
7186             #include <cxxabi.h>
7187             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7188         ])], [
7189             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7190             AC_MSG_RESULT([yes])
7191         ], [AC_MSG_RESULT([no])])
7192     AC_LANG_POP([C++])
7194     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7195     AC_LANG_PUSH([C++])
7196     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7197             #include <cstddef>
7198             #include <cxxabi.h>
7199             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7200         ])], [
7201             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7202             AC_MSG_RESULT([yes])
7203         ], [AC_MSG_RESULT([no])])
7204     AC_LANG_POP([C++])
7207 AC_SUBST(HAVE_GCC_AVX)
7208 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7209 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7211 dnl ===================================================================
7212 dnl Identify the C++ library
7213 dnl ===================================================================
7215 AC_MSG_CHECKING([what the C++ library is])
7216 HAVE_LIBSTDCPP=
7217 AC_LANG_PUSH([C++])
7218 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7219 #include <utility>
7220 #ifndef __GLIBCXX__
7221 foo bar
7222 #endif
7223 ]])],
7224     [CPP_LIBRARY=GLIBCXX
7225      cpp_library_name="GNU libstdc++"
7226      HAVE_LIBSTDCPP=TRUE
7227     ],
7228     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7229 #include <utility>
7230 #ifndef _LIBCPP_VERSION
7231 foo bar
7232 #endif
7233 ]])],
7234     [CPP_LIBRARY=LIBCPP
7235      cpp_library_name="LLVM libc++"
7236      AC_DEFINE([HAVE_LIBCXX])
7237     ],
7238     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7239 #include <utility>
7240 #ifndef _MSC_VER
7241 foo bar
7242 #endif
7243 ]])],
7244     [CPP_LIBRARY=MSVCRT
7245      cpp_library_name="Microsoft"
7246     ],
7247     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7248 AC_MSG_RESULT([$cpp_library_name])
7249 AC_LANG_POP([C++])
7250 AC_SUBST([HAVE_LIBSTDCPP])
7252 dnl ===================================================================
7253 dnl Check for gperf
7254 dnl ===================================================================
7255 AC_PATH_PROG(GPERF, gperf)
7256 if test -z "$GPERF"; then
7257     AC_MSG_ERROR([gperf not found but needed. Install it.])
7259 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7260     GPERF=`cygpath -m $GPERF`
7262 AC_MSG_CHECKING([whether gperf is new enough])
7263 my_gperf_ver1=$($GPERF --version | head -n 1)
7264 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7265 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7266 if test "$my_gperf_ver3" -ge 301; then
7267     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7268 else
7269     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7271 AC_SUBST(GPERF)
7273 dnl ===================================================================
7274 dnl Check for system libcmis
7275 dnl ===================================================================
7276 # libcmis requires curl and we can't build curl for iOS
7277 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7278     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7279     ENABLE_LIBCMIS=TRUE
7280 else
7281     ENABLE_LIBCMIS=
7283 AC_SUBST(ENABLE_LIBCMIS)
7285 dnl ===================================================================
7286 dnl C++11
7287 dnl ===================================================================
7289 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7290 CXXFLAGS_CXX11=
7291 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7292     if test "$with_latest_c__" = yes; then
7293         CXXFLAGS_CXX11=-std:c++latest
7294     else
7295         CXXFLAGS_CXX11=-std:c++17
7296     fi
7297     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7298 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7299     my_flags='-std=c++17 -std=c++1z'
7300     if test "$with_latest_c__" = yes; then
7301         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7302     fi
7303     for flag in $my_flags; do
7304         if test "$COM" = MSC; then
7305             flag="-Xclang $flag"
7306         fi
7307         save_CXXFLAGS=$CXXFLAGS
7308         CXXFLAGS="$CXXFLAGS $flag -Werror"
7309         if test "$SYSTEM_LIBCMIS" = TRUE; then
7310             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7311         fi
7312         AC_LANG_PUSH([C++])
7313         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7314             #include <algorithm>
7315             #include <functional>
7316             #include <vector>
7318             #if defined SYSTEM_LIBCMIS
7319             // See ucb/source/ucp/cmis/auth_provider.hxx:
7320             #if !defined __clang__
7321             #pragma GCC diagnostic push
7322             #pragma GCC diagnostic ignored "-Wdeprecated"
7323             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7324             #endif
7325             #include <libcmis/libcmis.hxx>
7326             #if !defined __clang__
7327             #pragma GCC diagnostic pop
7328             #endif
7329             #endif
7331             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7332                 std::sort(v.begin(), v.end(), fn);
7333             }
7334             ]])],[CXXFLAGS_CXX11=$flag])
7335         AC_LANG_POP([C++])
7336         CXXFLAGS=$save_CXXFLAGS
7337         if test -n "$CXXFLAGS_CXX11"; then
7338             break
7339         fi
7340     done
7342 if test -n "$CXXFLAGS_CXX11"; then
7343     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7344 else
7345     AC_MSG_ERROR(no)
7347 AC_SUBST(CXXFLAGS_CXX11)
7349 if test "$GCC" = "yes"; then
7350     save_CXXFLAGS=$CXXFLAGS
7351     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7352     CHECK_L_ATOMIC
7353     CXXFLAGS=$save_CXXFLAGS
7354     AC_SUBST(ATOMIC_LIB)
7357 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7358 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7359 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7360 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7361 dnl again towards 4.7.2:
7362 if test $CPP_LIBRARY = GLIBCXX; then
7363     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7364     AC_LANG_PUSH([C++])
7365     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7366 #include <list>
7367 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7368     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7369     //   GCC 4.7.0: 20120322
7370     //   GCC 4.7.1: 20120614
7371     // and using a range check is not possible as the mapping between
7372     // __GLIBCXX__ values and GCC versions is not monotonic
7373 /* ok */
7374 #else
7375 abi broken
7376 #endif
7377         ]])], [AC_MSG_RESULT(no, ok)],
7378         [AC_MSG_ERROR(yes)])
7379     AC_LANG_POP([C++])
7382 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7383 save_CXXFLAGS=$CXXFLAGS
7384 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7385 AC_LANG_PUSH([C++])
7387 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7388 #include <stddef.h>
7390 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7392 namespace
7394         struct b
7395         {
7396                 int i;
7397                 int j;
7398         };
7400 ]], [[
7401 struct a
7403         int i;
7404         int j;
7406 a thinga[]={{0,0}, {1,1}};
7407 b thingb[]={{0,0}, {1,1}};
7408 size_t i = sizeof(sal_n_array_size(thinga));
7409 size_t j = sizeof(sal_n_array_size(thingb));
7410 return !(i != 0 && j != 0);
7412     ], [ AC_MSG_RESULT(yes) ],
7413     [ AC_MSG_ERROR(no)])
7414 AC_LANG_POP([C++])
7415 CXXFLAGS=$save_CXXFLAGS
7417 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7418 if test "$GCC" = yes; then
7419     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7420     AC_LANG_PUSH([C++])
7421     save_CXXFLAGS=$CXXFLAGS
7422     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7423     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7424     CXXFLAGS=$save_CXXFLAGS
7425     AC_LANG_POP([C++])
7426     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7427         AC_MSG_RESULT([yes])
7428     else
7429         AC_MSG_RESULT([no])
7430     fi
7432 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7434 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7435 AC_LANG_PUSH([C++])
7436 save_CXXFLAGS=$CXXFLAGS
7437 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7439         #include <algorithm>
7440         #include <initializer_list>
7441         #include <vector>
7442         template<typename T> class S {
7443         private:
7444             std::vector<T> v_;
7445         public:
7446             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7447         };
7448         constinit S<int> s{3, 2, 1};
7449     ])], [
7450         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7451         AC_MSG_RESULT([yes])
7452     ], [AC_MSG_RESULT([no])])
7453 CXXFLAGS=$save_CXXFLAGS
7454 AC_LANG_POP([C++])
7456 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7457 AC_LANG_PUSH([C++])
7458 save_CXXFLAGS=$CXXFLAGS
7459 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7460 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7461         #include <span>
7462         #include <type_traits>
7463         // Don't check size_type directly, as it was called index_type before P1872R0:
7464         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7465     ])], [
7466         AC_DEFINE([HAVE_CPP_SPAN],[1])
7467         AC_MSG_RESULT([yes])
7468     ], [AC_MSG_RESULT([no])])
7469 CXXFLAGS=$save_CXXFLAGS
7470 AC_LANG_POP([C++])
7472 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7473 AC_LANG_PUSH([C++])
7474 save_CXXFLAGS=$CXXFLAGS
7475 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7476 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7477         struct S1 { S1(S1 &&); };
7478         struct S2: S1 {};
7479         S1 f(S2 s) { return s; }
7480     ])], [
7481         AC_DEFINE([HAVE_P1155R3],[1])
7482         AC_MSG_RESULT([yes])
7483     ], [AC_MSG_RESULT([no])])
7484 CXXFLAGS=$save_CXXFLAGS
7485 AC_LANG_POP([C++])
7487 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7488 HAVE_CXX20_ATOMIC_REF=
7489 AC_LANG_PUSH([C++])
7490 save_CXXFLAGS=$CXXFLAGS
7491 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7492 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7493         #include <atomic>
7494         int x;
7495         std::atomic_ref<int> y(x);
7496     ])], [
7497         HAVE_CXX20_ATOMIC_REF=TRUE
7498         AC_MSG_RESULT([yes])
7499     ], [AC_MSG_RESULT([no])])
7500 CXXFLAGS=$save_CXXFLAGS
7501 AC_LANG_POP([C++])
7502 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7504 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7505 dnl which is included in -Wextra anyway):
7506 HAVE_WDEPRECATED_COPY_DTOR=
7507 if test "$GCC" = yes; then
7508     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7509     AC_LANG_PUSH([C++])
7510     save_CXXFLAGS=$CXXFLAGS
7511     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7512     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7513             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7514             AC_MSG_RESULT([yes])
7515         ], [AC_MSG_RESULT([no])])
7516     CXXFLAGS=$save_CXXFLAGS
7517     AC_LANG_POP([C++])
7519 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7521 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7522 dnl uninitialized warning for code like
7524 dnl   OString f();
7525 dnl   boost::optional<OString> * g(bool b) {
7526 dnl       boost::optional<OString> o;
7527 dnl       if (b) o = f();
7528 dnl       return new boost::optional<OString>(o);
7529 dnl   }
7531 dnl (as is e.g. present, in a slightly more elaborate form, in
7532 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7533 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7534 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7535 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7536     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7537     AC_LANG_PUSH([C++])
7538     save_CXXFLAGS=$CXXFLAGS
7539     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7540     if test "$ENABLE_OPTIMIZED" = TRUE; then
7541         CXXFLAGS="$CXXFLAGS -O2"
7542     else
7543         CXXFLAGS="$CXXFLAGS -O0"
7544     fi
7545     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7546             #include <new>
7547             void f1(int);
7548             struct S1 {
7549                 ~S1() { f1(n); }
7550                 int n = 0;
7551             };
7552             struct S2 {
7553                 S2() {}
7554                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7555                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7556                 void set(S1 s) {
7557                     new (stg) S1(s);
7558                     init = true;
7559                 }
7560                 bool init = false;
7561                 char stg[sizeof (S1)];
7562             } ;
7563             S1 f2();
7564             S2 * f3(bool b) {
7565                 S2 o;
7566                 if (b) o.set(f2());
7567                 return new S2(o);
7568             }
7569         ]])], [AC_MSG_RESULT([no])], [
7570             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7571             AC_MSG_RESULT([yes])
7572         ])
7573     CXXFLAGS=$save_CXXFLAGS
7574     AC_LANG_POP([C++])
7576 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7578 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7579 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7580 dnl hits us e.g. with GCC 10 and --enable-optimized at
7582 dnl   In file included from include/rtl/string.hxx:49,
7583 dnl                    from include/rtl/ustring.hxx:43,
7584 dnl                    from include/osl/file.hxx:35,
7585 dnl                    from include/codemaker/global.hxx:28,
7586 dnl                    from include/codemaker/options.hxx:23,
7587 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7588 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7589 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,
7590 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,
7591 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,
7592 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7593 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7594 dnl      78 |         memcpy( buffer, data, length );
7595 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7596 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7597 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7598     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7599     AC_LANG_PUSH([C++])
7600     save_CXXFLAGS=$CXXFLAGS
7601     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7602     if test "$ENABLE_OPTIMIZED" = TRUE; then
7603         CXXFLAGS="$CXXFLAGS -O2"
7604     else
7605         CXXFLAGS="$CXXFLAGS -O0"
7606     fi
7607     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7608     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7609             void fill(char const * begin, char const * end, char c);
7610             struct q {
7611                 char ids[4];
7612                 char username[6];
7613             };
7614             void test(q & c) {
7615                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7616                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7617             }
7618         ]])], [AC_MSG_RESULT([no])], [
7619             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7620             AC_MSG_RESULT([yes])
7621         ])
7622     CXXFLAGS=$save_CXXFLAGS
7623     AC_LANG_POP([C++])
7625 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7627 HAVE_DLLEXPORTINLINES=
7628 dnl At least for Clang 14 trunk, -Zc:dllexportInlines- would cause lots of unresolved symbols when
7629 dnl linking e.g. Library_cppuhelper, for whatever reason:
7630 if test "$_os" = "WINNT" && test "$COM_IS_CLANG" != TRUE; then
7631     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7632     AC_LANG_PUSH([C++])
7633     save_CXXFLAGS=$CXXFLAGS
7634     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7635     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7636             HAVE_DLLEXPORTINLINES=TRUE
7637             AC_MSG_RESULT([yes])
7638         ], [AC_MSG_RESULT([no])])
7639     CXXFLAGS=$save_CXXFLAGS
7640     AC_LANG_POP([C++])
7642 AC_SUBST([HAVE_DLLEXPORTINLINES])
7644 dnl ===================================================================
7645 dnl CPU Intrinsics support - SSE, AVX
7646 dnl ===================================================================
7648 CXXFLAGS_INTRINSICS_SSE2=
7649 CXXFLAGS_INTRINSICS_SSSE3=
7650 CXXFLAGS_INTRINSICS_SSE41=
7651 CXXFLAGS_INTRINSICS_SSE42=
7652 CXXFLAGS_INTRINSICS_AVX=
7653 CXXFLAGS_INTRINSICS_AVX2=
7654 CXXFLAGS_INTRINSICS_AVX512=
7655 CXXFLAGS_INTRINSICS_AVX512F=
7656 CXXFLAGS_INTRINSICS_F16C=
7657 CXXFLAGS_INTRINSICS_FMA=
7659 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7660     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7661     flag_sse2=-msse2
7662     flag_ssse3=-mssse3
7663     flag_sse41=-msse4.1
7664     flag_sse42=-msse4.2
7665     flag_avx=-mavx
7666     flag_avx2=-mavx2
7667     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7668     flag_avx512f=-mavx512f
7669     flag_f16c=-mf16c
7670     flag_fma=-mfma
7671 else
7672     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7673     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7674     # SSE2 seems to be SSE2+.
7675     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7676     # is not empty (and can be tested in gbuild).
7677     flag_sse2=-arch:SSE2
7678     flag_ssse3=-arch:SSE2
7679     flag_sse41=-arch:SSE2
7680     flag_sse42=-arch:SSE2
7681     flag_avx=-arch:AVX
7682     flag_avx2=-arch:AVX2
7683     flag_avx512=-arch:AVX512
7684     flag_avx512f=-arch:AVX512
7685     # These are part of -arch:AVX2
7686     flag_f16c=-arch:AVX2
7687     flag_fma=-arch:AVX2
7690 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7691 AC_LANG_PUSH([C++])
7692 save_CXXFLAGS=$CXXFLAGS
7693 CXXFLAGS="$CXXFLAGS $flag_sse2"
7694 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7695     #include <emmintrin.h>
7696     int main () {
7697         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7698         c = _mm_xor_si128 (a, b);
7699         return 0;
7700     }
7701     ])],
7702     [can_compile_sse2=yes],
7703     [can_compile_sse2=no])
7704 AC_LANG_POP([C++])
7705 CXXFLAGS=$save_CXXFLAGS
7706 AC_MSG_RESULT([${can_compile_sse2}])
7707 if test "${can_compile_sse2}" = "yes" ; then
7708     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7711 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7712 AC_LANG_PUSH([C++])
7713 save_CXXFLAGS=$CXXFLAGS
7714 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7715 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7716     #include <tmmintrin.h>
7717     int main () {
7718         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7719         c = _mm_maddubs_epi16 (a, b);
7720         return 0;
7721     }
7722     ])],
7723     [can_compile_ssse3=yes],
7724     [can_compile_ssse3=no])
7725 AC_LANG_POP([C++])
7726 CXXFLAGS=$save_CXXFLAGS
7727 AC_MSG_RESULT([${can_compile_ssse3}])
7728 if test "${can_compile_ssse3}" = "yes" ; then
7729     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7732 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7733 AC_LANG_PUSH([C++])
7734 save_CXXFLAGS=$CXXFLAGS
7735 CXXFLAGS="$CXXFLAGS $flag_sse41"
7736 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7737     #include <smmintrin.h>
7738     int main () {
7739         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7740         c = _mm_cmpeq_epi64 (a, b);
7741         return 0;
7742     }
7743     ])],
7744     [can_compile_sse41=yes],
7745     [can_compile_sse41=no])
7746 AC_LANG_POP([C++])
7747 CXXFLAGS=$save_CXXFLAGS
7748 AC_MSG_RESULT([${can_compile_sse41}])
7749 if test "${can_compile_sse41}" = "yes" ; then
7750     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7753 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7754 AC_LANG_PUSH([C++])
7755 save_CXXFLAGS=$CXXFLAGS
7756 CXXFLAGS="$CXXFLAGS $flag_sse42"
7757 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7758     #include <nmmintrin.h>
7759     int main () {
7760         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7761         c = _mm_cmpgt_epi64 (a, b);
7762         return 0;
7763     }
7764     ])],
7765     [can_compile_sse42=yes],
7766     [can_compile_sse42=no])
7767 AC_LANG_POP([C++])
7768 CXXFLAGS=$save_CXXFLAGS
7769 AC_MSG_RESULT([${can_compile_sse42}])
7770 if test "${can_compile_sse42}" = "yes" ; then
7771     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7774 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7775 AC_LANG_PUSH([C++])
7776 save_CXXFLAGS=$CXXFLAGS
7777 CXXFLAGS="$CXXFLAGS $flag_avx"
7778 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7779     #include <immintrin.h>
7780     int main () {
7781         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7782         c = _mm256_xor_ps(a, b);
7783         return 0;
7784     }
7785     ])],
7786     [can_compile_avx=yes],
7787     [can_compile_avx=no])
7788 AC_LANG_POP([C++])
7789 CXXFLAGS=$save_CXXFLAGS
7790 AC_MSG_RESULT([${can_compile_avx}])
7791 if test "${can_compile_avx}" = "yes" ; then
7792     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7795 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7796 AC_LANG_PUSH([C++])
7797 save_CXXFLAGS=$CXXFLAGS
7798 CXXFLAGS="$CXXFLAGS $flag_avx2"
7799 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7800     #include <immintrin.h>
7801     int main () {
7802         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7803         c = _mm256_maddubs_epi16(a, b);
7804         return 0;
7805     }
7806     ])],
7807     [can_compile_avx2=yes],
7808     [can_compile_avx2=no])
7809 AC_LANG_POP([C++])
7810 CXXFLAGS=$save_CXXFLAGS
7811 AC_MSG_RESULT([${can_compile_avx2}])
7812 if test "${can_compile_avx2}" = "yes" ; then
7813     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7816 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7817 AC_LANG_PUSH([C++])
7818 save_CXXFLAGS=$CXXFLAGS
7819 CXXFLAGS="$CXXFLAGS $flag_avx512"
7820 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7821     #include <immintrin.h>
7822     int main () {
7823         __m512i a = _mm512_loadu_si512(0);
7824         __m512d v1 = _mm512_load_pd(0);
7825         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7826         __m512d v2 = _mm512_abs_pd(v1);
7827         return 0;
7828     }
7829     ])],
7830     [can_compile_avx512=yes],
7831     [can_compile_avx512=no])
7832 AC_LANG_POP([C++])
7833 CXXFLAGS=$save_CXXFLAGS
7834 AC_MSG_RESULT([${can_compile_avx512}])
7835 if test "${can_compile_avx512}" = "yes" ; then
7836     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7837     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7840 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7841 AC_LANG_PUSH([C++])
7842 save_CXXFLAGS=$CXXFLAGS
7843 CXXFLAGS="$CXXFLAGS $flag_f16c"
7844 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7845     #include <immintrin.h>
7846     int main () {
7847         __m128i a = _mm_set1_epi32 (0);
7848         __m128 c;
7849         c = _mm_cvtph_ps(a);
7850         return 0;
7851     }
7852     ])],
7853     [can_compile_f16c=yes],
7854     [can_compile_f16c=no])
7855 AC_LANG_POP([C++])
7856 CXXFLAGS=$save_CXXFLAGS
7857 AC_MSG_RESULT([${can_compile_f16c}])
7858 if test "${can_compile_f16c}" = "yes" ; then
7859     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7862 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7863 AC_LANG_PUSH([C++])
7864 save_CXXFLAGS=$CXXFLAGS
7865 CXXFLAGS="$CXXFLAGS $flag_fma"
7866 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7867     #include <immintrin.h>
7868     int main () {
7869         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7870         d = _mm256_fmadd_ps(a, b, c);
7871         return 0;
7872     }
7873     ])],
7874     [can_compile_fma=yes],
7875     [can_compile_fma=no])
7876 AC_LANG_POP([C++])
7877 CXXFLAGS=$save_CXXFLAGS
7878 AC_MSG_RESULT([${can_compile_fma}])
7879 if test "${can_compile_fma}" = "yes" ; then
7880     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7883 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7884 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7885 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7886 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7887 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7888 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7889 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7890 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7891 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7892 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7894 dnl ===================================================================
7895 dnl system stl sanity tests
7896 dnl ===================================================================
7897 if test "$_os" != "WINNT"; then
7899     AC_LANG_PUSH([C++])
7901     save_CPPFLAGS="$CPPFLAGS"
7902     if test -n "$MACOSX_SDK_PATH"; then
7903         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7904     fi
7906     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7907     # only.
7908     if test "$CPP_LIBRARY" = GLIBCXX; then
7909         dnl gcc#19664, gcc#22482, rhbz#162935
7910         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7911         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7912         AC_MSG_RESULT([$stlvisok])
7913         if test "$stlvisok" = "no"; then
7914             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7915         fi
7916     fi
7918     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7919     # when we don't make any dynamic libraries?
7920     if test "$DISABLE_DYNLOADING" = ""; then
7921         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7922         cat > conftestlib1.cc <<_ACEOF
7923 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7924 struct S2: S1<int> { virtual ~S2(); };
7925 S2::~S2() {}
7926 _ACEOF
7927         cat > conftestlib2.cc <<_ACEOF
7928 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7929 struct S2: S1<int> { virtual ~S2(); };
7930 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7931 _ACEOF
7932         gccvisinlineshiddenok=yes
7933         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7934             gccvisinlineshiddenok=no
7935         else
7936             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7937             dnl known to not work with -z defs (unsetting which makes the test
7938             dnl moot, though):
7939             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7940             if test "$COM_IS_CLANG" = TRUE; then
7941                 for i in $CXX $CXXFLAGS; do
7942                     case $i in
7943                     -fsanitize=*)
7944                         my_linkflagsnoundefs=
7945                         break
7946                         ;;
7947                     esac
7948                 done
7949             fi
7950             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7951                 gccvisinlineshiddenok=no
7952             fi
7953         fi
7955         rm -fr libconftest*
7956         AC_MSG_RESULT([$gccvisinlineshiddenok])
7957         if test "$gccvisinlineshiddenok" = "no"; then
7958             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7959         fi
7960     fi
7962    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7963     cat >visibility.cxx <<_ACEOF
7964 #pragma GCC visibility push(hidden)
7965 struct __attribute__ ((visibility ("default"))) TestStruct {
7966   static void Init();
7968 __attribute__ ((visibility ("default"))) void TestFunc() {
7969   TestStruct::Init();
7971 _ACEOF
7972     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7973         gccvisbroken=yes
7974     else
7975         case "$host_cpu" in
7976         i?86|x86_64)
7977             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7978                 gccvisbroken=no
7979             else
7980                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7981                     gccvisbroken=no
7982                 else
7983                     gccvisbroken=yes
7984                 fi
7985             fi
7986             ;;
7987         *)
7988             gccvisbroken=no
7989             ;;
7990         esac
7991     fi
7992     rm -f visibility.s visibility.cxx
7994     AC_MSG_RESULT([$gccvisbroken])
7995     if test "$gccvisbroken" = "yes"; then
7996         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7997     fi
7999     CPPFLAGS="$save_CPPFLAGS"
8001     AC_LANG_POP([C++])
8004 dnl ===================================================================
8005 dnl  Clang++ tests
8006 dnl ===================================================================
8008 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8009 if test "$GCC" = "yes"; then
8010     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8011     AC_LANG_PUSH([C++])
8012     save_CXXFLAGS=$CXXFLAGS
8013     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8014     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8015     CXXFLAGS=$save_CXXFLAGS
8016     AC_LANG_POP([C++])
8017     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8018         AC_MSG_RESULT([yes])
8019     else
8020         AC_MSG_RESULT([no])
8021     fi
8023 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8025 dnl ===================================================================
8026 dnl Compiler plugins
8027 dnl ===================================================================
8029 COMPILER_PLUGINS=
8030 # currently only Clang
8032 if test "$COM_IS_CLANG" != "TRUE"; then
8033     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8034         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8035         enable_compiler_plugins=no
8036     fi
8039 COMPILER_PLUGINS_COM_IS_CLANG=
8040 if test "$COM_IS_CLANG" = "TRUE"; then
8041     if test -n "$enable_compiler_plugins"; then
8042         compiler_plugins="$enable_compiler_plugins"
8043     elif test -n "$ENABLE_DBGUTIL"; then
8044         compiler_plugins=test
8045     else
8046         compiler_plugins=no
8047     fi
8048     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8049         if test "$CLANGVER" -lt 50002; then
8050             if test "$compiler_plugins" = yes; then
8051                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8052             else
8053                 compiler_plugins=no
8054             fi
8055         fi
8056     fi
8057     if test "$compiler_plugins" != "no"; then
8058         dnl The prefix where Clang resides, override to where Clang resides if
8059         dnl using a source build:
8060         if test -z "$CLANGDIR"; then
8061             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8062         fi
8063         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8064         if test -z "$COMPILER_PLUGINS_CXX"; then
8065             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8066         fi
8067         clangbindir=$CLANGDIR/bin
8068         if test "$build_os" = "cygwin"; then
8069             clangbindir=$(cygpath -u "$clangbindir")
8070         fi
8071         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8072         if test -n "$LLVM_CONFIG"; then
8073             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8074             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8075             if test -z "$CLANGLIBDIR"; then
8076                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8077             fi
8078             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8079             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8080             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8081             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8082                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8083             fi
8084             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8085             clangobjdir=$($LLVM_CONFIG --obj-root)
8086             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8087                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8088             fi
8089         fi
8090         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8091         AC_LANG_PUSH([C++])
8092         save_CXX=$CXX
8093         save_CXXCPP=$CXXCPP
8094         save_CPPFLAGS=$CPPFLAGS
8095         save_CXXFLAGS=$CXXFLAGS
8096         save_LDFLAGS=$LDFLAGS
8097         save_LIBS=$LIBS
8098         CXX=$COMPILER_PLUGINS_CXX
8099         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8100         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8101         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8102         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8103             [COMPILER_PLUGINS=TRUE],
8104             [
8105             if test "$compiler_plugins" = "yes"; then
8106                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8107             else
8108                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8109                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8110             fi
8111             ])
8112         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8113         dnl comment in compilerplugins/Makefile-clang.mk:
8114         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8115             LDFLAGS=""
8116             AC_MSG_CHECKING([for clang libraries to use])
8117             if test -z "$CLANGTOOLLIBS"; then
8118                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8119  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8120                 AC_LINK_IFELSE([
8121                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8122                         [[ clang::FullSourceLoc().dump(); ]])
8123                 ],[CLANGTOOLLIBS="$LIBS"],[])
8124             fi
8125             if test -z "$CLANGTOOLLIBS"; then
8126                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8127                 AC_LINK_IFELSE([
8128                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8129                         [[ clang::FullSourceLoc().dump(); ]])
8130                 ],[CLANGTOOLLIBS="$LIBS"],[])
8131             fi
8132             AC_MSG_RESULT([$CLANGTOOLLIBS])
8133             if test -z "$CLANGTOOLLIBS"; then
8134                 if test "$compiler_plugins" = "yes"; then
8135                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8136                 else
8137                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8138                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8139                 fi
8140                 COMPILER_PLUGINS=
8141             fi
8142             if test -n "$COMPILER_PLUGINS"; then
8143                 if test -z "$CLANGSYSINCLUDE"; then
8144                     if test -n "$LLVM_CONFIG"; then
8145                         # Path to the clang system headers (no idea if there's a better way to get it).
8146                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8147                     fi
8148                 fi
8149             fi
8150         fi
8151         CXX=$save_CXX
8152         CXXCPP=$save_CXXCPP
8153         CPPFLAGS=$save_CPPFLAGS
8154         CXXFLAGS=$save_CXXFLAGS
8155         LDFLAGS=$save_LDFLAGS
8156         LIBS="$save_LIBS"
8157         AC_LANG_POP([C++])
8159         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8160         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8161             #ifndef __clang__
8162             you lose
8163             #endif
8164             int foo=42;
8165             ]])],
8166             [AC_MSG_RESULT([yes])
8167              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8168             [AC_MSG_RESULT([no])])
8169         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8170     fi
8171 else
8172     if test "$enable_compiler_plugins" = "yes"; then
8173         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8174     fi
8176 COMPILER_PLUGINS_ANALYZER_PCH=
8177 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8178     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8180 AC_SUBST(COMPILER_PLUGINS)
8181 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8182 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8183 AC_SUBST(COMPILER_PLUGINS_CXX)
8184 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8185 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8186 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8187 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8188 AC_SUBST(CLANGDIR)
8189 AC_SUBST(CLANGLIBDIR)
8190 AC_SUBST(CLANGTOOLLIBS)
8191 AC_SUBST(CLANGSYSINCLUDE)
8193 # Plugin to help linker.
8194 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8195 # This makes --enable-lto build with clang work.
8196 AC_SUBST(LD_PLUGIN)
8198 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8199 AC_SUBST(HAVE_POSIX_FALLOCATE)
8201 JITC_PROCESSOR_TYPE=""
8202 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8203     # IBMs JDK needs this...
8204     JITC_PROCESSOR_TYPE=6
8205     export JITC_PROCESSOR_TYPE
8207 AC_SUBST([JITC_PROCESSOR_TYPE])
8209 # Misc Windows Stuff
8210 AC_ARG_WITH(ucrt-dir,
8211     AS_HELP_STRING([--with-ucrt-dir],
8212         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8213         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8214         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8215             Windows6.1-KB2999226-x64.msu
8216             Windows6.1-KB2999226-x86.msu
8217             Windows8.1-KB2999226-x64.msu
8218             Windows8.1-KB2999226-x86.msu
8219             Windows8-RT-KB2999226-x64.msu
8220             Windows8-RT-KB2999226-x86.msu
8221         A zip archive including those files is available from Microsoft site:
8222         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8225 UCRT_REDISTDIR="$with_ucrt_dir"
8226 if test $_os = "WINNT"; then
8227     find_msvc_x64_dlls
8228     for i in $PKGFORMAT; do
8229         if test "$i" = msi; then
8230             find_msms
8231             break
8232         fi
8233     done
8234     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8235     MSVC_DLLS="$msvcdlls"
8236     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8237     # MSVC 15.3 changed it to VC141
8238     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8239         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8240     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8241         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8242     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8243         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8244     else
8245         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8246     fi
8248     if test "$UCRT_REDISTDIR" = "no"; then
8249         dnl explicitly disabled
8250         UCRT_REDISTDIR=""
8251     else
8252         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8253                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8254                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8255                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8256                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8257                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8258             UCRT_REDISTDIR=""
8259             if test -n "$PKGFORMAT"; then
8260                for i in $PKGFORMAT; do
8261                    case "$i" in
8262                    msi)
8263                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8264                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8265                        ;;
8266                    esac
8267                done
8268             fi
8269         fi
8270     fi
8273 AC_SUBST(UCRT_REDISTDIR)
8274 AC_SUBST(MSVC_DLL_PATH)
8275 AC_SUBST(MSVC_DLLS)
8276 AC_SUBST(MSM_PATH)
8279 dnl ===================================================================
8280 dnl Checks for Java
8281 dnl ===================================================================
8282 if test "$ENABLE_JAVA" != ""; then
8284     # Windows-specific tests
8285     if test "$build_os" = "cygwin"; then
8286         if test -z "$with_jdk_home"; then
8287             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8288             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8289             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8290             if test -n "$regvalue"; then
8291                 ver=$regvalue
8292                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8293                 with_jdk_home=$regvalue
8294             fi
8295             howfound="found automatically"
8296         else
8297             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8298             howfound="you passed"
8299         fi
8301         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8302             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])
8303         fi
8304     fi
8306     # 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.
8307     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8308     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8309         with_jdk_home=`/usr/libexec/java_home`
8310     fi
8312     JAVA_HOME=; export JAVA_HOME
8313     if test -z "$with_jdk_home"; then
8314         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8315     else
8316         _java_path="$with_jdk_home/bin/$with_java"
8317         dnl Check if there is a Java interpreter at all.
8318         if test -x "$_java_path"; then
8319             JAVAINTERPRETER=$_java_path
8320         else
8321             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8322         fi
8323     fi
8325     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8326     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8327     dnl loaded by java to run JunitTests:
8328     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8329         shortjdkhome=`cygpath -d "$with_jdk_home"`
8330         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
8331             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8332             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8333         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
8334             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8335             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8336         fi
8338         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8339             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8340         fi
8341         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8342     elif test "$cross_compiling" != "yes"; then
8343         case $CPUNAME in
8344             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8345                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8346                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8347                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8348                 fi
8349                 ;;
8350             *) # assumption: everything else 32-bit
8351                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8352                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8353                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8354                 fi
8355                 ;;
8356         esac
8357     fi
8360 dnl ===================================================================
8361 dnl Checks for JDK.
8362 dnl ===================================================================
8364 # Whether all the complexity here actually is needed any more or not, no idea.
8366 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8367     _gij_longver=0
8368     AC_MSG_CHECKING([the installed JDK])
8369     if test -n "$JAVAINTERPRETER"; then
8370         dnl java -version sends output to stderr!
8371         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8372             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8373         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8374             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8375         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8376             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8377         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8378             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8379         else
8380             JDK=sun
8382             dnl Sun JDK specific tests
8383             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8384             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8386             if test "$_jdk_ver" -lt 10900; then
8387                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8388             fi
8389             if test "$_jdk_ver" -gt 10900; then
8390                 JAVA_CLASSPATH_NOT_SET=TRUE
8391             fi
8393             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8394             if test "$_os" = "WINNT"; then
8395                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8396             fi
8397             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8399             # set to limit VM usage for JunitTests
8400             JAVAIFLAGS=-Xmx64M
8401             # set to limit VM usage for javac
8402             JAVACFLAGS=-J-Xmx128M
8403         fi
8404     else
8405         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8406     fi
8407 else
8408     if test -z "$ENABLE_JAVA"; then
8409         dnl Java disabled
8410         JAVA_HOME=
8411         export JAVA_HOME
8412     elif test "$cross_compiling" = "yes"; then
8413         # Just assume compatibility of build and host JDK
8414         JDK=$JDK_FOR_BUILD
8415         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8416     fi
8419 dnl ===================================================================
8420 dnl Checks for javac
8421 dnl ===================================================================
8422 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8423     javacompiler="javac"
8424     : ${JAVA_SOURCE_VER=8}
8425     : ${JAVA_TARGET_VER=8}
8426     if test -z "$with_jdk_home"; then
8427         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8428     else
8429         _javac_path="$with_jdk_home/bin/$javacompiler"
8430         dnl Check if there is a Java compiler at all.
8431         if test -x "$_javac_path"; then
8432             JAVACOMPILER=$_javac_path
8433         fi
8434     fi
8435     if test -z "$JAVACOMPILER"; then
8436         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8437     fi
8438     if test "$build_os" = "cygwin"; then
8439         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8440             JAVACOMPILER="${JAVACOMPILER}.exe"
8441         fi
8442         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8443     fi
8446 dnl ===================================================================
8447 dnl Checks for javadoc
8448 dnl ===================================================================
8449 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8450     if test -z "$with_jdk_home"; then
8451         AC_PATH_PROG(JAVADOC, javadoc)
8452     else
8453         _javadoc_path="$with_jdk_home/bin/javadoc"
8454         dnl Check if there is a javadoc at all.
8455         if test -x "$_javadoc_path"; then
8456             JAVADOC=$_javadoc_path
8457         else
8458             AC_PATH_PROG(JAVADOC, javadoc)
8459         fi
8460     fi
8461     if test -z "$JAVADOC"; then
8462         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8463     fi
8464     if test "$build_os" = "cygwin"; then
8465         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8466             JAVADOC="${JAVADOC}.exe"
8467         fi
8468         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8469     fi
8471     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8472     JAVADOCISGJDOC="yes"
8473     fi
8475 AC_SUBST(JAVADOC)
8476 AC_SUBST(JAVADOCISGJDOC)
8478 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8479     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8480     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8481         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8482            # try to recover first by looking whether we have an alternative
8483            # system as in Debian or newer SuSEs where following /usr/bin/javac
8484            # over /etc/alternatives/javac leads to the right bindir where we
8485            # just need to strip a bit away to get a valid JAVA_HOME
8486            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8487         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8488             # maybe only one level of symlink (e.g. on Mac)
8489             JAVA_HOME=$(readlink $JAVACOMPILER)
8490             if test "$(dirname $JAVA_HOME)" = "."; then
8491                 # we've got no path to trim back
8492                 JAVA_HOME=""
8493             fi
8494         else
8495             # else warn
8496             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8497             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8498             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8499             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8500         fi
8501         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8502         if test "$JAVA_HOME" != "/usr"; then
8503             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8504                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8505                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8506                 dnl Tiger already returns a JDK path...
8507                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8508             else
8509                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8510                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8511                 dnl that checks which version to run
8512                 if test -f "$JAVA_HOME"; then
8513                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8514                 fi
8515             fi
8516         fi
8517     fi
8518     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8520     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8521     if test -z "$JAVA_HOME"; then
8522         if test "x$with_jdk_home" = "x"; then
8523             cat > findhome.java <<_ACEOF
8524 [import java.io.File;
8526 class findhome
8528     public static void main(String args[])
8529     {
8530         String jrelocation = System.getProperty("java.home");
8531         File jre = new File(jrelocation);
8532         System.out.println(jre.getParent());
8533     }
8535 _ACEOF
8536             AC_MSG_CHECKING([if javac works])
8537             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8538             AC_TRY_EVAL(javac_cmd)
8539             if test $? = 0 -a -f ./findhome.class; then
8540                 AC_MSG_RESULT([javac works])
8541             else
8542                 echo "configure: javac test failed" >&5
8543                 cat findhome.java >&5
8544                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8545             fi
8546             AC_MSG_CHECKING([if gij knows its java.home])
8547             JAVA_HOME=`$JAVAINTERPRETER findhome`
8548             if test $? = 0 -a "$JAVA_HOME" != ""; then
8549                 AC_MSG_RESULT([$JAVA_HOME])
8550             else
8551                 echo "configure: java test failed" >&5
8552                 cat findhome.java >&5
8553                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8554             fi
8555             # clean-up after ourselves
8556             rm -f ./findhome.java ./findhome.class
8557         else
8558             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8559         fi
8560     fi
8562     # now check if $JAVA_HOME is really valid
8563     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8564         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8565             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8566             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8567             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8568             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8569             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8570             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8571         fi
8572     fi
8573     PathFormat "$JAVA_HOME"
8574     JAVA_HOME="$formatted_path"
8577 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8578     "$_os" != Darwin
8579 then
8580     AC_MSG_CHECKING([for JAWT lib])
8581     if test "$_os" = WINNT; then
8582         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8583         JAWTLIB=jawt.lib
8584     else
8585         case "$host_cpu" in
8586         arm*)
8587             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8588             JAVA_ARCH=$my_java_arch
8589             ;;
8590         i*86)
8591             my_java_arch=i386
8592             ;;
8593         m68k)
8594             my_java_arch=m68k
8595             ;;
8596         powerpc)
8597             my_java_arch=ppc
8598             ;;
8599         powerpc64)
8600             my_java_arch=ppc64
8601             ;;
8602         powerpc64le)
8603             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8604             JAVA_ARCH=$my_java_arch
8605             ;;
8606         sparc64)
8607             my_java_arch=sparcv9
8608             ;;
8609         x86_64)
8610             my_java_arch=amd64
8611             ;;
8612         *)
8613             my_java_arch=$host_cpu
8614             ;;
8615         esac
8616         # This is where JDK9 puts the library
8617         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8618             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8619         else
8620             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8621         fi
8622         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8623     fi
8624     AC_MSG_RESULT([$JAWTLIB])
8626 AC_SUBST(JAWTLIB)
8628 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8629     case "$host_os" in
8631     aix*)
8632         JAVAINC="-I$JAVA_HOME/include"
8633         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8634         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8635         ;;
8637     cygwin*|wsl*)
8638         JAVAINC="-I$JAVA_HOME/include/win32"
8639         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8640         ;;
8642     darwin*|macos*)
8643         if test -d "$JAVA_HOME/include/darwin"; then
8644             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8645         else
8646             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8647         fi
8648         ;;
8650     dragonfly*)
8651         JAVAINC="-I$JAVA_HOME/include"
8652         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8653         ;;
8655     freebsd*)
8656         JAVAINC="-I$JAVA_HOME/include"
8657         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8658         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8659         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8660         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8661         ;;
8663     k*bsd*-gnu*)
8664         JAVAINC="-I$JAVA_HOME/include"
8665         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8666         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8667         ;;
8669     linux-gnu*)
8670         JAVAINC="-I$JAVA_HOME/include"
8671         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8672         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8673         ;;
8675     *netbsd*)
8676         JAVAINC="-I$JAVA_HOME/include"
8677         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8678         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8679        ;;
8681     openbsd*)
8682         JAVAINC="-I$JAVA_HOME/include"
8683         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8684         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8685         ;;
8687     solaris*)
8688         JAVAINC="-I$JAVA_HOME/include"
8689         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8690         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8691         ;;
8692     esac
8694 SOLARINC="$SOLARINC $JAVAINC"
8696 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8697     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8698     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8699     JDK_FOR_BUILD=$JDK
8702 AC_SUBST(JAVACFLAGS)
8703 AC_SUBST(JAVACOMPILER)
8704 AC_SUBST(JAVAINTERPRETER)
8705 AC_SUBST(JAVAIFLAGS)
8706 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8707 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8708 AC_SUBST(JAVA_HOME)
8709 AC_SUBST(JAVA_HOME_FOR_BUILD)
8710 AC_SUBST(JDK)
8711 AC_SUBST(JDK_FOR_BUILD)
8712 AC_SUBST(JAVA_SOURCE_VER)
8713 AC_SUBST(JAVA_TARGET_VER)
8716 dnl ===================================================================
8717 dnl Export file validation
8718 dnl ===================================================================
8719 AC_MSG_CHECKING([whether to enable export file validation])
8720 if test "$with_export_validation" != "no"; then
8721     if test -z "$ENABLE_JAVA"; then
8722         if test "$with_export_validation" = "yes"; then
8723             AC_MSG_ERROR([requested, but Java is disabled])
8724         else
8725             AC_MSG_RESULT([no, as Java is disabled])
8726         fi
8727     elif ! test -d "${SRC_ROOT}/schema"; then
8728         if test "$with_export_validation" = "yes"; then
8729             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8730         else
8731             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8732         fi
8733     else
8734         AC_MSG_RESULT([yes])
8735         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8737         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8738         if test -z "$ODFVALIDATOR"; then
8739             # remember to download the ODF toolkit with validator later
8740             AC_MSG_NOTICE([no odfvalidator found, will download it])
8741             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8742             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8744             # and fetch name of odfvalidator jar name from download.lst
8745             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8746             AC_SUBST(ODFVALIDATOR_JAR)
8748             if test -z "$ODFVALIDATOR_JAR"; then
8749                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8750             fi
8751         fi
8752         if test "$build_os" = "cygwin"; then
8753             # In case of Cygwin it will be executed from Windows,
8754             # so we need to run bash and absolute path to validator
8755             # so instead of "odfvalidator" it will be
8756             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8757             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8758         else
8759             ODFVALIDATOR="sh $ODFVALIDATOR"
8760         fi
8761         AC_SUBST(ODFVALIDATOR)
8764         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8765         if test -z "$OFFICEOTRON"; then
8766             # remember to download the officeotron with validator later
8767             AC_MSG_NOTICE([no officeotron found, will download it])
8768             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8769             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8771             # and fetch name of officeotron jar name from download.lst
8772             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8773             AC_SUBST(OFFICEOTRON_JAR)
8775             if test -z "$OFFICEOTRON_JAR"; then
8776                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8777             fi
8778         else
8779             # check version of existing officeotron
8780             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8781             if test 0"$OFFICEOTRON_VER" -lt 704; then
8782                 AC_MSG_ERROR([officeotron too old])
8783             fi
8784         fi
8785         if test "$build_os" = "cygwin"; then
8786             # In case of Cygwin it will be executed from Windows,
8787             # so we need to run bash and absolute path to validator
8788             # so instead of "odfvalidator" it will be
8789             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8790             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8791         else
8792             OFFICEOTRON="sh $OFFICEOTRON"
8793         fi
8794     fi
8795     AC_SUBST(OFFICEOTRON)
8796 else
8797     AC_MSG_RESULT([no])
8800 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8801 if test "$with_bffvalidator" != "no"; then
8802     AC_DEFINE(HAVE_BFFVALIDATOR)
8804     if test "$with_export_validation" = "no"; then
8805         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8806     fi
8808     if test "$with_bffvalidator" = "yes"; then
8809         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8810     else
8811         BFFVALIDATOR="$with_bffvalidator"
8812     fi
8814     if test "$build_os" = "cygwin"; then
8815         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8816             AC_MSG_RESULT($BFFVALIDATOR)
8817         else
8818             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8819         fi
8820     elif test -n "$BFFVALIDATOR"; then
8821         # We are not in Cygwin but need to run Windows binary with wine
8822         AC_PATH_PROGS(WINE, wine)
8824         # so swap in a shell wrapper that converts paths transparently
8825         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8826         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8827         AC_SUBST(BFFVALIDATOR_EXE)
8828         AC_MSG_RESULT($BFFVALIDATOR)
8829     else
8830         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8831     fi
8832     AC_SUBST(BFFVALIDATOR)
8833 else
8834     AC_MSG_RESULT([no])
8837 dnl ===================================================================
8838 dnl Check for C preprocessor to use
8839 dnl ===================================================================
8840 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8841 SYSTEM_UCPP_IS_GCC=
8842 if test -n "$with_idlc_cpp"; then
8843     AC_MSG_RESULT([$with_idlc_cpp])
8844     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8845     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8846     # ucpp will accept -v (to output version), warn about the others as unknown
8847     # and return 1 (due to -v)
8848     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8849     # and return 0 (due to --version ) if all options are supported
8850     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8851     if test $? -eq 0;  then
8852         SYSTEM_UCPP_IS_GCC=TRUE
8853         AC_MSG_RESULT([yes])
8854     else
8855         AC_MSG_RESULT([no])
8856     fi
8857 else
8858     AC_MSG_RESULT([ucpp])
8859     AC_MSG_CHECKING([which ucpp to use])
8860     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8861         AC_MSG_RESULT([external])
8862         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8863     else
8864         AC_MSG_RESULT([internal])
8865         BUILD_TYPE="$BUILD_TYPE UCPP"
8866     fi
8868 AC_SUBST(SYSTEM_UCPP)
8869 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8871 dnl ===================================================================
8872 dnl Check for epm (not needed for Windows)
8873 dnl ===================================================================
8874 AC_MSG_CHECKING([whether to enable EPM for packing])
8875 if test "$enable_epm" = "yes"; then
8876     AC_MSG_RESULT([yes])
8877     if test "$_os" != "WINNT"; then
8878         if test $_os = Darwin; then
8879             EPM=internal
8880         elif test -n "$with_epm"; then
8881             EPM=$with_epm
8882         else
8883             AC_PATH_PROG(EPM, epm, no)
8884         fi
8885         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8886             AC_MSG_NOTICE([EPM will be built.])
8887             BUILD_TYPE="$BUILD_TYPE EPM"
8888             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8889         else
8890             # Gentoo has some epm which is something different...
8891             AC_MSG_CHECKING([whether the found epm is the right epm])
8892             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8893                 AC_MSG_RESULT([yes])
8894             else
8895                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8896             fi
8897             AC_MSG_CHECKING([epm version])
8898             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8899             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8900                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8901                 AC_MSG_RESULT([OK, >= 3.7])
8902             else
8903                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8904                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8905             fi
8906         fi
8907     fi
8909     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8910         AC_MSG_CHECKING([for rpm])
8911         for a in "$RPM" rpmbuild rpm; do
8912             $a --usage >/dev/null 2> /dev/null
8913             if test $? -eq 0; then
8914                 RPM=$a
8915                 break
8916             else
8917                 $a --version >/dev/null 2> /dev/null
8918                 if test $? -eq 0; then
8919                     RPM=$a
8920                     break
8921                 fi
8922             fi
8923         done
8924         if test -z "$RPM"; then
8925             AC_MSG_ERROR([not found])
8926         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8927             RPM_PATH=`which $RPM`
8928             AC_MSG_RESULT([$RPM_PATH])
8929             SCPDEFS="$SCPDEFS -DWITH_RPM"
8930         else
8931             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8932         fi
8933     fi
8934     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8935         AC_PATH_PROG(DPKG, dpkg, no)
8936         if test "$DPKG" = "no"; then
8937             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8938         fi
8939     fi
8940     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8941        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8942         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8943             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8944                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8945                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8946                     AC_MSG_RESULT([yes])
8947                 else
8948                     AC_MSG_RESULT([no])
8949                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8950                         _pt="rpm"
8951                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8952                         add_warning "the rpms will need to be installed with --nodeps"
8953                     else
8954                         _pt="pkg"
8955                     fi
8956                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8957                     add_warning "the ${_pt}s will not be relocatable"
8958                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8959                                  relocation will work, you need to patch your epm with the
8960                                  patch in epm/epm-3.7.patch or build with
8961                                  --with-epm=internal which will build a suitable epm])
8962                 fi
8963             fi
8964         fi
8965     fi
8966     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8967         AC_PATH_PROG(PKGMK, pkgmk, no)
8968         if test "$PKGMK" = "no"; then
8969             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8970         fi
8971     fi
8972     AC_SUBST(RPM)
8973     AC_SUBST(DPKG)
8974     AC_SUBST(PKGMK)
8975 else
8976     for i in $PKGFORMAT; do
8977         case "$i" in
8978         aix | bsd | deb | pkg | rpm | native | portable)
8979             AC_MSG_ERROR(
8980                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8981             ;;
8982         esac
8983     done
8984     AC_MSG_RESULT([no])
8985     EPM=NO
8987 AC_SUBST(EPM)
8989 ENABLE_LWP=
8990 if test "$enable_lotuswordpro" = "yes"; then
8991     ENABLE_LWP="TRUE"
8993 AC_SUBST(ENABLE_LWP)
8995 dnl ===================================================================
8996 dnl Check for building ODK
8997 dnl ===================================================================
8998 if test "$enable_odk" != yes; then
8999     unset DOXYGEN
9000 else
9001     if test "$with_doxygen" = no; then
9002         AC_MSG_CHECKING([for doxygen])
9003         unset DOXYGEN
9004         AC_MSG_RESULT([no])
9005     else
9006         if test "$with_doxygen" = yes; then
9007             AC_PATH_PROG([DOXYGEN], [doxygen])
9008             if test -z "$DOXYGEN"; then
9009                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9010             fi
9011             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9012                 if ! dot -V 2>/dev/null; then
9013                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9014                 fi
9015             fi
9016         else
9017             AC_MSG_CHECKING([for doxygen])
9018             DOXYGEN=$with_doxygen
9019             AC_MSG_RESULT([$DOXYGEN])
9020         fi
9021         if test -n "$DOXYGEN"; then
9022             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9023             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9024             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9025                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9026             fi
9027         fi
9028     fi
9030 AC_SUBST([DOXYGEN])
9032 AC_MSG_CHECKING([whether to build the ODK])
9033 if test "$enable_odk" = yes; then
9034     AC_MSG_RESULT([yes])
9035     BUILD_TYPE="$BUILD_TYPE ODK"
9036 else
9037     AC_MSG_RESULT([no])
9040 dnl ===================================================================
9041 dnl Check for system zlib
9042 dnl ===================================================================
9043 if test "$with_system_zlib" = "auto"; then
9044     case "$_os" in
9045     WINNT)
9046         with_system_zlib="$with_system_libs"
9047         ;;
9048     *)
9049         if test "$enable_fuzzers" != "yes"; then
9050             with_system_zlib=yes
9051         else
9052             with_system_zlib=no
9053         fi
9054         ;;
9055     esac
9058 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9059 dnl and has no pkg-config for it at least on some tinderboxes,
9060 dnl so leaving that out for now
9061 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9062 AC_MSG_CHECKING([which zlib to use])
9063 if test "$with_system_zlib" = "yes"; then
9064     AC_MSG_RESULT([external])
9065     SYSTEM_ZLIB=TRUE
9066     AC_CHECK_HEADER(zlib.h, [],
9067         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9068     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9069         [AC_MSG_ERROR(zlib not found or functional)], [])
9070 else
9071     AC_MSG_RESULT([internal])
9072     SYSTEM_ZLIB=
9073     BUILD_TYPE="$BUILD_TYPE ZLIB"
9074     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9075     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9077 AC_SUBST(ZLIB_CFLAGS)
9078 AC_SUBST(ZLIB_LIBS)
9079 AC_SUBST(SYSTEM_ZLIB)
9081 dnl ===================================================================
9082 dnl Check for system jpeg
9083 dnl ===================================================================
9084 AC_MSG_CHECKING([which libjpeg to use])
9085 if test "$with_system_jpeg" = "yes"; then
9086     AC_MSG_RESULT([external])
9087     SYSTEM_LIBJPEG=TRUE
9088     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9089         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9090     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9091         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9092 else
9093     SYSTEM_LIBJPEG=
9094     AC_MSG_RESULT([internal, libjpeg-turbo])
9095     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9097     case "$host_cpu" in
9098     x86_64 | amd64 | i*86 | x86 | ia32)
9099         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9100         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9101             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9102                 NASM="$LODE_HOME/opt/bin/nasm"
9103             elif test -x "/opt/lo/bin/nasm"; then
9104                 NASM="/opt/lo/bin/nasm"
9105             fi
9106         fi
9108         if test -n "$NASM"; then
9109             AC_MSG_CHECKING([for object file format of host system])
9110             case "$host_os" in
9111               cygwin* | mingw* | pw32* | wsl*)
9112                 case "$host_cpu" in
9113                   x86_64)
9114                     objfmt='Win64-COFF'
9115                     ;;
9116                   *)
9117                     objfmt='Win32-COFF'
9118                     ;;
9119                 esac
9120               ;;
9121               msdosdjgpp* | go32*)
9122                 objfmt='COFF'
9123               ;;
9124               os2-emx*) # not tested
9125                 objfmt='MSOMF' # obj
9126               ;;
9127               linux*coff* | linux*oldld*)
9128                 objfmt='COFF' # ???
9129               ;;
9130               linux*aout*)
9131                 objfmt='a.out'
9132               ;;
9133               linux*)
9134                 case "$host_cpu" in
9135                   x86_64)
9136                     objfmt='ELF64'
9137                     ;;
9138                   *)
9139                     objfmt='ELF'
9140                     ;;
9141                 esac
9142               ;;
9143               kfreebsd* | freebsd* | netbsd* | openbsd*)
9144                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9145                   objfmt='BSD-a.out'
9146                 else
9147                   case "$host_cpu" in
9148                     x86_64 | amd64)
9149                       objfmt='ELF64'
9150                       ;;
9151                     *)
9152                       objfmt='ELF'
9153                       ;;
9154                   esac
9155                 fi
9156               ;;
9157               solaris* | sunos* | sysv* | sco*)
9158                 case "$host_cpu" in
9159                   x86_64)
9160                     objfmt='ELF64'
9161                     ;;
9162                   *)
9163                     objfmt='ELF'
9164                     ;;
9165                 esac
9166               ;;
9167               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9168                 case "$host_cpu" in
9169                   x86_64)
9170                     objfmt='Mach-O64'
9171                     ;;
9172                   *)
9173                     objfmt='Mach-O'
9174                     ;;
9175                 esac
9176               ;;
9177               *)
9178                 objfmt='ELF ?'
9179               ;;
9180             esac
9182             AC_MSG_RESULT([$objfmt])
9183             if test "$objfmt" = 'ELF ?'; then
9184               objfmt='ELF'
9185               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9186             fi
9188             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9189             case "$objfmt" in
9190               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9191               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9192               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9193               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9194               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9195               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9196               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9197               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9198               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9199               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9200               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9201             esac
9202             AC_MSG_RESULT([$NAFLAGS])
9204             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9205             cat > conftest.asm << EOF
9206             [%line __oline__ "configure"
9207                     section .text
9208                     global  _main,main
9209             _main:
9210             main:   xor     eax,eax
9211                     ret
9212             ]
9214             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9215             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9216               AC_MSG_RESULT(yes)
9217             else
9218               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9219               cat conftest.asm >&AS_MESSAGE_LOG_FD
9220               rm -rf conftest*
9221               AC_MSG_RESULT(no)
9222               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9223               NASM=""
9224             fi
9226         fi
9228         if test -z "$NASM"; then
9229 cat << _EOS
9230 ****************************************************************************
9231 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9232 To get one please:
9234 _EOS
9235             if test "$build_os" = "cygwin"; then
9236 cat << _EOS
9237 install a pre-compiled binary for Win32
9239 mkdir -p /opt/lo/bin
9240 cd /opt/lo/bin
9241 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9242 chmod +x nasm
9244 or get and install one from http://www.nasm.us/
9246 Then re-run autogen.sh
9248 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9249 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9251 _EOS
9252             else
9253 cat << _EOS
9254 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9256 _EOS
9257             fi
9258             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9259             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9260         fi
9261       ;;
9262     esac
9265 AC_SUBST(NASM)
9266 AC_SUBST(NAFLAGS)
9267 AC_SUBST(LIBJPEG_CFLAGS)
9268 AC_SUBST(LIBJPEG_LIBS)
9269 AC_SUBST(SYSTEM_LIBJPEG)
9271 dnl ===================================================================
9272 dnl Check for system clucene
9273 dnl ===================================================================
9274 dnl we should rather be using
9275 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9276 dnl but the contribs-lib check seems tricky
9277 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9278 AC_MSG_CHECKING([which clucene to use])
9279 if test "$with_system_clucene" = "yes"; then
9280     AC_MSG_RESULT([external])
9281     SYSTEM_CLUCENE=TRUE
9282     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9283     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9284     FilterLibs "${CLUCENE_LIBS}"
9285     CLUCENE_LIBS="${filteredlibs}"
9286     AC_LANG_PUSH([C++])
9287     save_CXXFLAGS=$CXXFLAGS
9288     save_CPPFLAGS=$CPPFLAGS
9289     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9290     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9291     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9292     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9293     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9294                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9295     CXXFLAGS=$save_CXXFLAGS
9296     CPPFLAGS=$save_CPPFLAGS
9297     AC_LANG_POP([C++])
9299     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9300 else
9301     AC_MSG_RESULT([internal])
9302     SYSTEM_CLUCENE=
9303     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9306 AC_SUBST(SYSTEM_CLUCENE)
9307 AC_SUBST(CLUCENE_CFLAGS)
9308 AC_SUBST(CLUCENE_LIBS)
9310 dnl ===================================================================
9311 dnl Check for system expat
9312 dnl ===================================================================
9313 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9315 dnl ===================================================================
9316 dnl Check for system xmlsec
9317 dnl ===================================================================
9318 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9320 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9321 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9322     ENABLE_EOT="TRUE"
9323     AC_DEFINE([ENABLE_EOT])
9324     AC_MSG_RESULT([yes])
9326     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9327 else
9328     ENABLE_EOT=
9329     AC_MSG_RESULT([no])
9331 AC_SUBST([ENABLE_EOT])
9333 dnl ===================================================================
9334 dnl Check for DLP libs
9335 dnl ===================================================================
9336 AS_IF([test "$COM" = "MSC"],
9337       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9338       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9340 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9342 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9344 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9346 AS_IF([test "$COM" = "MSC"],
9347       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9348       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9350 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9352 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9354 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9355 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9357 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9359 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9361 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9363 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9364 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9366 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9367 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9369 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9371 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9372 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9374 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9376 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9378 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9380 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9382 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9383 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9385 dnl ===================================================================
9386 dnl Check for system lcms2
9387 dnl ===================================================================
9388 if test "$with_system_lcms2" != "yes"; then
9389     SYSTEM_LCMS2=
9391 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9392 if test "$GCC" = "yes"; then
9393     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9395 if test "$COM" = "MSC"; then # override the above
9396     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9399 dnl ===================================================================
9400 dnl Check for system cppunit
9401 dnl ===================================================================
9402 if test "$_os" != "Android" ; then
9403     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9406 dnl ===================================================================
9407 dnl Check whether freetype is available
9408 dnl ===================================================================
9409 if test "$using_freetype_fontconfig" = yes; then
9410     AC_MSG_CHECKING([which freetype to use])
9412 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9413     AC_MSG_RESULT([external])
9414     # FreeType has 3 different kinds of versions
9415     # * release, like 2.4.10
9416     # * libtool, like 13.0.7 (this what pkg-config returns)
9417     # * soname
9418     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9419     #
9420     # 9.9.3 is 2.2.0
9421     # When the minimal version is at least 2.8.1, remove Skia's check down below.
9422     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9423     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9424     FilterLibs "${FREETYPE_LIBS}"
9425     FREETYPE_LIBS="${filteredlibs}"
9426     SYSTEM_FREETYPE=TRUE
9427 elif test "$using_freetype_fontconfig" = yes; then
9428     AC_MSG_RESULT([internal])
9429     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9430     if test "x$ac_config_site_64bit_host" = xYES; then
9431         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9432     else
9433         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9434     fi
9435     BUILD_TYPE="$BUILD_TYPE FREETYPE"
9437 AC_SUBST(FREETYPE_CFLAGS)
9438 AC_SUBST(FREETYPE_LIBS)
9439 AC_SUBST([SYSTEM_FREETYPE])
9441 # ===================================================================
9442 # Check for system libxslt
9443 # to prevent incompatibilities between internal libxml2 and external libxslt,
9444 # or vice versa, use with_system_libxml here
9445 # ===================================================================
9446 if test "$with_system_libxml" = "auto"; then
9447     case "$_os" in
9448     WINNT|iOS|Android)
9449         with_system_libxml="$with_system_libs"
9450         ;;
9451     Emscripten)
9452         with_system_libxml=no
9453         ;;
9454     *)
9455         if test "$enable_fuzzers" != "yes"; then
9456             with_system_libxml=yes
9457         else
9458             with_system_libxml=no
9459         fi
9460         ;;
9461     esac
9464 AC_MSG_CHECKING([which libxslt to use])
9465 if test "$with_system_libxml" = "yes"; then
9466     AC_MSG_RESULT([external])
9467     SYSTEM_LIBXSLT=TRUE
9468     if test "$_os" = "Darwin"; then
9469         dnl make sure to use SDK path
9470         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9471         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9472         dnl omit -L/usr/lib
9473         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9474         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9475     else
9476         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9477         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9478         FilterLibs "${LIBXSLT_LIBS}"
9479         LIBXSLT_LIBS="${filteredlibs}"
9480         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9481         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9482         FilterLibs "${LIBEXSLT_LIBS}"
9483         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9484     fi
9486     dnl Check for xsltproc
9487     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9488     if test "$XSLTPROC" = "no"; then
9489         AC_MSG_ERROR([xsltproc is required])
9490     fi
9491 else
9492     AC_MSG_RESULT([internal])
9493     SYSTEM_LIBXSLT=
9494     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9496 AC_SUBST(SYSTEM_LIBXSLT)
9497 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9498     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9500 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9502 AC_SUBST(LIBEXSLT_CFLAGS)
9503 AC_SUBST(LIBEXSLT_LIBS)
9504 AC_SUBST(LIBXSLT_CFLAGS)
9505 AC_SUBST(LIBXSLT_LIBS)
9506 AC_SUBST(XSLTPROC)
9508 # ===================================================================
9509 # Check for system libxml
9510 # ===================================================================
9511 AC_MSG_CHECKING([which libxml to use])
9512 if test "$with_system_libxml" = "yes"; then
9513     AC_MSG_RESULT([external])
9514     SYSTEM_LIBXML=TRUE
9515     if test "$_os" = "Darwin"; then
9516         dnl make sure to use SDK path
9517         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9518         dnl omit -L/usr/lib
9519         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9520     elif test $_os = iOS; then
9521         dnl make sure to use SDK path
9522         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9523         LIBXML_CFLAGS="-I$usr/include/libxml2"
9524         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9525     else
9526         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9527         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9528         FilterLibs "${LIBXML_LIBS}"
9529         LIBXML_LIBS="${filteredlibs}"
9530     fi
9532     dnl Check for xmllint
9533     AC_PATH_PROG(XMLLINT, xmllint, no)
9534     if test "$XMLLINT" = "no"; then
9535         AC_MSG_ERROR([xmllint is required])
9536     fi
9537 else
9538     AC_MSG_RESULT([internal])
9539     SYSTEM_LIBXML=
9540     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9541     if test "$COM" = "MSC"; then
9542         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9543     fi
9544     if test "$COM" = "MSC"; then
9545         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9546     else
9547         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9548         if test "$_os" = Android; then
9549             LIBXML_LIBS="$LIBXML_LIBS -lm"
9550         fi
9551     fi
9552     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9554 AC_SUBST(SYSTEM_LIBXML)
9555 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9556     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9558 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9559 AC_SUBST(LIBXML_CFLAGS)
9560 AC_SUBST(LIBXML_LIBS)
9561 AC_SUBST(XMLLINT)
9563 # =====================================================================
9564 # Checking for a Python interpreter with version >= 3.3.
9565 # Optionally user can pass an option to configure, i. e.
9566 # ./configure PYTHON=/usr/bin/python
9567 # =====================================================================
9568 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9569     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9570     # unless PYTHON is defined as above which allows 'system'
9571     enable_python=internal
9573 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9574     if test -n "$PYTHON"; then
9575         PYTHON_FOR_BUILD=$PYTHON
9576     else
9577         # This allows a lack of system python with no error, we use internal one in that case.
9578         AM_PATH_PYTHON([3.3],, [:])
9579         # Clean PYTHON_VERSION checked below if cross-compiling
9580         PYTHON_VERSION=""
9581         if test "$PYTHON" != ":"; then
9582             PYTHON_FOR_BUILD=$PYTHON
9583         fi
9584     fi
9586 AC_SUBST(PYTHON_FOR_BUILD)
9588 # Checks for Python to use for Pyuno
9589 AC_MSG_CHECKING([which Python to use for Pyuno])
9590 case "$enable_python" in
9591 no|disable)
9592     if test -z $PYTHON_FOR_BUILD; then
9593         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9594         # requirement from the choice whether to include Python stuff in the installer, but why
9595         # bother?
9596         if test "$cross_compiling" = yes; then
9597             enable_python=system
9598         else
9599             AC_MSG_ERROR([Python is required at build time.])
9600         fi
9601     fi
9602     enable_python=no
9603     AC_MSG_RESULT([none])
9604     ;;
9605 ""|yes|auto)
9606     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9607         AC_MSG_RESULT([no, overridden by --disable-scripting])
9608         enable_python=no
9609     elif test $build_os = cygwin; then
9610         dnl When building on Windows we don't attempt to use any installed
9611         dnl "system"  Python.
9612         AC_MSG_RESULT([fully internal])
9613         enable_python=internal
9614     elif test "$cross_compiling" = yes; then
9615         AC_MSG_RESULT([system])
9616         enable_python=system
9617     else
9618         # Unset variables set by the above AM_PATH_PYTHON so that
9619         # we actually do check anew.
9620         AC_MSG_RESULT([])
9621         unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir
9622         AM_PATH_PYTHON([3.3],, [:])
9623         AC_MSG_CHECKING([which Python to use for Pyuno])
9624         if test "$PYTHON" = ":"; then
9625             if test -z "$PYTHON_FOR_BUILD"; then
9626                 AC_MSG_RESULT([fully internal])
9627             else
9628                 AC_MSG_RESULT([internal])
9629             fi
9630             enable_python=internal
9631         else
9632             AC_MSG_RESULT([system])
9633             enable_python=system
9634         fi
9635     fi
9636     ;;
9637 internal)
9638     AC_MSG_RESULT([internal])
9639     ;;
9640 fully-internal)
9641     AC_MSG_RESULT([fully internal])
9642     enable_python=internal
9643     ;;
9644 system)
9645     AC_MSG_RESULT([system])
9646     if test "$_os" = Darwin -a -z "$PYTHON"; then
9647         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9648     fi
9649     ;;
9651     AC_MSG_ERROR([Incorrect --enable-python option])
9652     ;;
9653 esac
9655 if test $enable_python != no; then
9656     BUILD_TYPE="$BUILD_TYPE PYUNO"
9659 if test $enable_python = system; then
9660     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9661         # Fallback: Accept these in the environment, or as set above
9662         # for MacOSX.
9663         :
9664     elif test "$cross_compiling" != yes; then
9665         # Unset variables set by the above AM_PATH_PYTHON so that
9666         # we actually do check anew.
9667         unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir
9668         # This causes an error if no python command is found
9669         AM_PATH_PYTHON([3.3])
9670         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9671         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9672         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9673         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9674         if test -z "$PKG_CONFIG"; then
9675             PYTHON_CFLAGS="-I$python_include"
9676             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9677         elif $PKG_CONFIG --exists python-$python_version-embed; then
9678             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9679             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9680         elif $PKG_CONFIG --exists python-$python_version; then
9681             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9682             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9683         else
9684             PYTHON_CFLAGS="-I$python_include"
9685             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9686         fi
9687         FilterLibs "${PYTHON_LIBS}"
9688         PYTHON_LIBS="${filteredlibs}"
9689     else
9690         dnl How to find out the cross-compilation Python installation path?
9691         AC_MSG_CHECKING([for python version])
9692         AS_IF([test -n "$PYTHON_VERSION"],
9693               [AC_MSG_RESULT([$PYTHON_VERSION])],
9694               [AC_MSG_RESULT([not found])
9695                AC_MSG_ERROR([no usable python found])])
9696         test -n "$PYTHON_CFLAGS" && break
9697     fi
9699     dnl Check if the headers really work
9700     save_CPPFLAGS="$CPPFLAGS"
9701     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9702     AC_CHECK_HEADER(Python.h)
9703     CPPFLAGS="$save_CPPFLAGS"
9705     # let the PYTHON_FOR_BUILD match the same python installation that
9706     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9707     # better for PythonTests.
9708     PYTHON_FOR_BUILD=$PYTHON
9711 if test "$with_lxml" != no; then
9712     if test -z "$PYTHON_FOR_BUILD"; then
9713         case $build_os in
9714             cygwin)
9715                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9716                 ;;
9717             *)
9718                 if test "$cross_compiling" != yes ; then
9719                     BUILD_TYPE="$BUILD_TYPE LXML"
9720                 fi
9721                 ;;
9722         esac
9723     else
9724         AC_MSG_CHECKING([for python lxml])
9725         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9726             AC_MSG_RESULT([yes])
9727         else
9728             case $build_os in
9729                 cygwin)
9730                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9731                     ;;
9732                 *)
9733                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9734                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9735                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9736                         else
9737                             BUILD_TYPE="$BUILD_TYPE LXML"
9738                             AC_MSG_RESULT([no, using internal lxml])
9739                         fi
9740                     else
9741                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9742                     fi
9743                     ;;
9744             esac
9745         fi
9746     fi
9749 dnl By now enable_python should be "system", "internal" or "no"
9750 case $enable_python in
9751 system)
9752     SYSTEM_PYTHON=TRUE
9754     if test "x$ac_cv_header_Python_h" != "xyes"; then
9755        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9756     fi
9758     AC_LANG_PUSH(C)
9759     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9760     AC_MSG_CHECKING([for correct python library version])
9761        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9762 #include <Python.h>
9764 int main(int argc, char **argv) {
9765    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9766    else return 1;
9768        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9769     AC_LANG_POP(C)
9771     dnl FIXME Check if the Python library can be linked with, too?
9772     ;;
9774 internal)
9775     SYSTEM_PYTHON=
9776     PYTHON_VERSION_MAJOR=3
9777     PYTHON_VERSION_MINOR=8
9778     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9779     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9780         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9781     fi
9782     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9783     BUILD_TYPE="$BUILD_TYPE PYTHON"
9784     if test "$OS" = LINUX -o "$OS" = WNT ; then
9785         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9786     fi
9787     # Embedded Python dies without Home set
9788     if test "$HOME" = ""; then
9789         export HOME=""
9790     fi
9791     ;;
9793     DISABLE_PYTHON=TRUE
9794     SYSTEM_PYTHON=
9795     ;;
9797     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9798     ;;
9799 esac
9801 AC_SUBST(DISABLE_PYTHON)
9802 AC_SUBST(SYSTEM_PYTHON)
9803 AC_SUBST(PYTHON_CFLAGS)
9804 AC_SUBST(PYTHON_LIBS)
9805 AC_SUBST(PYTHON_VERSION)
9806 AC_SUBST(PYTHON_VERSION_MAJOR)
9807 AC_SUBST(PYTHON_VERSION_MINOR)
9809 AC_MSG_CHECKING([whether to build LibreLogo])
9810 case "$enable_python" in
9811 no|disable)
9812     AC_MSG_RESULT([no; Python disabled])
9813     ;;
9815     if test "${enable_librelogo}" = "no"; then
9816         AC_MSG_RESULT([no])
9817     else
9818         AC_MSG_RESULT([yes])
9819         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9820         AC_DEFINE([ENABLE_LIBRELOGO],1)
9821     fi
9822     ;;
9823 esac
9824 AC_SUBST(ENABLE_LIBRELOGO)
9826 ENABLE_MARIADBC=
9827 MARIADBC_MAJOR=1
9828 MARIADBC_MINOR=0
9829 MARIADBC_MICRO=2
9830 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9831 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9832     ENABLE_MARIADBC=TRUE
9833     AC_MSG_RESULT([yes])
9834     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9835 else
9836     AC_MSG_RESULT([no])
9838 AC_SUBST(ENABLE_MARIADBC)
9839 AC_SUBST(MARIADBC_MAJOR)
9840 AC_SUBST(MARIADBC_MINOR)
9841 AC_SUBST(MARIADBC_MICRO)
9843 if test "$ENABLE_MARIADBC" = "TRUE"; then
9844     dnl ===================================================================
9845     dnl Check for system MariaDB
9846     dnl ===================================================================
9847     AC_MSG_CHECKING([which MariaDB to use])
9848     if test "$with_system_mariadb" = "yes"; then
9849         AC_MSG_RESULT([external])
9850         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9851         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9852         if test -z "$MARIADBCONFIG"; then
9853             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9854             if test -z "$MARIADBCONFIG"; then
9855                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9856                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9857             fi
9858         fi
9859         AC_MSG_CHECKING([MariaDB version])
9860         MARIADB_VERSION=`$MARIADBCONFIG --version`
9861         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9862         if test "$MARIADB_MAJOR" -ge "5"; then
9863             AC_MSG_RESULT([OK])
9864         else
9865             AC_MSG_ERROR([too old, use 5.0.x or later])
9866         fi
9867         AC_MSG_CHECKING([for MariaDB Client library])
9868         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9869         if test "$COM_IS_CLANG" = TRUE; then
9870             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9871         fi
9872         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9873         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9874         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9875         dnl linux32:
9876         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9877             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9878             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9879                 | sed -e 's|/lib64/|/lib/|')
9880         fi
9881         FilterLibs "${MARIADB_LIBS}"
9882         MARIADB_LIBS="${filteredlibs}"
9883         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9884         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9885         if test "$enable_bundle_mariadb" = "yes"; then
9886             AC_MSG_RESULT([yes])
9887             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9888             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9890 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9892 /g' | grep -E '(mysqlclient|mariadb)')
9893             if test "$_os" = "Darwin"; then
9894                 LIBMARIADB=${LIBMARIADB}.dylib
9895             elif test "$_os" = "WINNT"; then
9896                 LIBMARIADB=${LIBMARIADB}.dll
9897             else
9898                 LIBMARIADB=${LIBMARIADB}.so
9899             fi
9900             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9901             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9902             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9903                 AC_MSG_RESULT([found.])
9904                 PathFormat "$LIBMARIADB_PATH"
9905                 LIBMARIADB_PATH="$formatted_path"
9906             else
9907                 AC_MSG_ERROR([not found.])
9908             fi
9909         else
9910             AC_MSG_RESULT([no])
9911             BUNDLE_MARIADB_CONNECTOR_C=
9912         fi
9913     else
9914         AC_MSG_RESULT([internal])
9915         SYSTEM_MARIADB_CONNECTOR_C=
9916         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9917         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9918         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9919     fi
9921     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9922     AC_SUBST(MARIADB_CFLAGS)
9923     AC_SUBST(MARIADB_LIBS)
9924     AC_SUBST(LIBMARIADB)
9925     AC_SUBST(LIBMARIADB_PATH)
9926     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9929 dnl ===================================================================
9930 dnl Check for system hsqldb
9931 dnl ===================================================================
9932 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9933     HSQLDB_USE_JDBC_4_1=
9934     AC_MSG_CHECKING([which hsqldb to use])
9935     if test "$with_system_hsqldb" = "yes"; then
9936         AC_MSG_RESULT([external])
9937         SYSTEM_HSQLDB=TRUE
9938         if test -z $HSQLDB_JAR; then
9939             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9940         fi
9941         if ! test -f $HSQLDB_JAR; then
9942                AC_MSG_ERROR(hsqldb.jar not found.)
9943         fi
9944         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9945         export HSQLDB_JAR
9946         if $PERL -e \
9947            'use Archive::Zip;
9948             my $file = "$ENV{'HSQLDB_JAR'}";
9949             my $zip = Archive::Zip->new( $file );
9950             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9951             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9952             {
9953                 push @l, split(/\n/, $mf);
9954                 foreach my $line (@l)
9955                 {
9956                     if ($line =~ m/Specification-Version:/)
9957                     {
9958                         ($t, $version) = split (/:/,$line);
9959                         $version =~ s/^\s//;
9960                         ($a, $b, $c, $d) = split (/\./,$version);
9961                         if ($c == "0" && $d > "8")
9962                         {
9963                             exit 0;
9964                         }
9965                         else
9966                         {
9967                             exit 1;
9968                         }
9969                     }
9970                 }
9971             }
9972             else
9973             {
9974                 exit 1;
9975             }'; then
9976             AC_MSG_RESULT([yes])
9977         else
9978             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9979         fi
9980     else
9981         AC_MSG_RESULT([internal])
9982         SYSTEM_HSQLDB=
9983         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9984         NEED_ANT=TRUE
9985         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9986         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9987         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9988             AC_MSG_RESULT([yes])
9989             HSQLDB_USE_JDBC_4_1=TRUE
9990         else
9991             AC_MSG_RESULT([no])
9992         fi
9993     fi
9994 else
9995     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9996         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9997     fi
9999 AC_SUBST(SYSTEM_HSQLDB)
10000 AC_SUBST(HSQLDB_JAR)
10001 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10003 dnl ===================================================================
10004 dnl Check for PostgreSQL stuff
10005 dnl ===================================================================
10006 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10007 if test "x$enable_postgresql_sdbc" != "xno"; then
10008     AC_MSG_RESULT([yes])
10009     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10011     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10012         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10013     fi
10014     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10015         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10016     fi
10018     postgres_interface=""
10019     if test "$with_system_postgresql" = "yes"; then
10020         postgres_interface="external PostgreSQL"
10021         SYSTEM_POSTGRESQL=TRUE
10022         if test "$_os" = Darwin; then
10023             supp_path=''
10024             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10025                 pg_supp_path="$P_SEP$d$pg_supp_path"
10026             done
10027         fi
10028         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10029         if test -n "$PGCONFIG"; then
10030             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10031             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10032         else
10033             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10034               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10035               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10036             ],[
10037               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10038             ])
10039         fi
10040         FilterLibs "${POSTGRESQL_LIB}"
10041         POSTGRESQL_LIB="${filteredlibs}"
10042     else
10043         # if/when anything else than PostgreSQL uses Kerberos,
10044         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10045         WITH_KRB5=
10046         WITH_GSSAPI=
10047         case "$_os" in
10048         Darwin)
10049             # macOS has system MIT Kerberos 5 since 10.4
10050             if test "$with_krb5" != "no"; then
10051                 WITH_KRB5=TRUE
10052                 save_LIBS=$LIBS
10053                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10054                 # that the libraries where these functions are located on macOS will change, is it?
10055                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10056                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10057                 KRB5_LIBS=$LIBS
10058                 LIBS=$save_LIBS
10059                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10060                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10061                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10062                 LIBS=$save_LIBS
10063             fi
10064             if test "$with_gssapi" != "no"; then
10065                 WITH_GSSAPI=TRUE
10066                 save_LIBS=$LIBS
10067                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10068                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10069                 GSSAPI_LIBS=$LIBS
10070                 LIBS=$save_LIBS
10071             fi
10072             ;;
10073         WINNT)
10074             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10075                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10076             fi
10077             ;;
10078         Linux|GNU|*BSD|DragonFly)
10079             if test "$with_krb5" != "no"; then
10080                 WITH_KRB5=TRUE
10081                 save_LIBS=$LIBS
10082                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10083                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10084                 KRB5_LIBS=$LIBS
10085                 LIBS=$save_LIBS
10086                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10087                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10088                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10089                 LIBS=$save_LIBS
10090             fi
10091             if test "$with_gssapi" != "no"; then
10092                 WITH_GSSAPI=TRUE
10093                 save_LIBS=$LIBS
10094                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10095                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10096                 GSSAPI_LIBS=$LIBS
10097                 LIBS=$save_LIBS
10098             fi
10099             ;;
10100         *)
10101             if test "$with_krb5" = "yes"; then
10102                 WITH_KRB5=TRUE
10103                 save_LIBS=$LIBS
10104                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10105                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10106                 KRB5_LIBS=$LIBS
10107                 LIBS=$save_LIBS
10108                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10109                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10110                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10111                 LIBS=$save_LIBS
10112             fi
10113             if test "$with_gssapi" = "yes"; then
10114                 WITH_GSSAPI=TRUE
10115                 save_LIBS=$LIBS
10116                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10117                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10118                 LIBS=$save_LIBS
10119                 GSSAPI_LIBS=$LIBS
10120             fi
10121         esac
10123         if test -n "$with_libpq_path"; then
10124             SYSTEM_POSTGRESQL=TRUE
10125             postgres_interface="external libpq"
10126             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10127             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10128         else
10129             SYSTEM_POSTGRESQL=
10130             postgres_interface="internal"
10131             POSTGRESQL_LIB=""
10132             POSTGRESQL_INC="%OVERRIDE_ME%"
10133             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10134         fi
10135     fi
10137     AC_MSG_CHECKING([PostgreSQL C interface])
10138     AC_MSG_RESULT([$postgres_interface])
10140     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10141         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10142         save_CFLAGS=$CFLAGS
10143         save_CPPFLAGS=$CPPFLAGS
10144         save_LIBS=$LIBS
10145         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10146         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10147         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10148         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10149             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10150         CFLAGS=$save_CFLAGS
10151         CPPFLAGS=$save_CPPFLAGS
10152         LIBS=$save_LIBS
10153     fi
10154     BUILD_POSTGRESQL_SDBC=TRUE
10155 else
10156     AC_MSG_RESULT([no])
10158 AC_SUBST(WITH_KRB5)
10159 AC_SUBST(WITH_GSSAPI)
10160 AC_SUBST(GSSAPI_LIBS)
10161 AC_SUBST(KRB5_LIBS)
10162 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10163 AC_SUBST(SYSTEM_POSTGRESQL)
10164 AC_SUBST(POSTGRESQL_INC)
10165 AC_SUBST(POSTGRESQL_LIB)
10167 dnl ===================================================================
10168 dnl Check for Firebird stuff
10169 dnl ===================================================================
10170 ENABLE_FIREBIRD_SDBC=
10171 if test "$enable_firebird_sdbc" = "yes" ; then
10172     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10174     dnl ===================================================================
10175     dnl Check for system Firebird
10176     dnl ===================================================================
10177     AC_MSG_CHECKING([which Firebird to use])
10178     if test "$with_system_firebird" = "yes"; then
10179         AC_MSG_RESULT([external])
10180         SYSTEM_FIREBIRD=TRUE
10181         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10182         if test -z "$FIREBIRDCONFIG"; then
10183             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10184             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10185                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10186             ])
10187             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10188         else
10189             AC_MSG_NOTICE([fb_config found])
10190             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10191             AC_MSG_CHECKING([for Firebird Client library])
10192             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10193             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10194             FilterLibs "${FIREBIRD_LIBS}"
10195             FIREBIRD_LIBS="${filteredlibs}"
10196         fi
10197         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10198         AC_MSG_CHECKING([Firebird version])
10199         if test -n "${FIREBIRD_VERSION}"; then
10200             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10201             if test "$FIREBIRD_MAJOR" -ge "3"; then
10202                 AC_MSG_RESULT([OK])
10203             else
10204                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10205             fi
10206         else
10207             save_CFLAGS="${CFLAGS}"
10208             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10209             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10210 #if defined(FB_API_VER) && FB_API_VER == 30
10211 int fb_api_is_30(void) { return 0; }
10212 #else
10213 #error "Wrong Firebird API version"
10214 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10215             CFLAGS="$save_CFLAGS"
10216         fi
10217         ENABLE_FIREBIRD_SDBC=TRUE
10218         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10219     elif test "$enable_database_connectivity" = no; then
10220         AC_MSG_RESULT([none])
10221     elif test "$cross_compiling" = "yes"; then
10222         AC_MSG_RESULT([none])
10223     else
10224         dnl Embedded Firebird has version 3.0
10225         dnl We need libatomic_ops for any non X86/X64 system
10226         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10227             dnl ===================================================================
10228             dnl Check for system libatomic_ops
10229             dnl ===================================================================
10230             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10231             if test "$with_system_libatomic_ops" = "yes"; then
10232                 SYSTEM_LIBATOMIC_OPS=TRUE
10233                 AC_CHECK_HEADERS(atomic_ops.h, [],
10234                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10235             else
10236                 SYSTEM_LIBATOMIC_OPS=
10237                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10238                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10239                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10240             fi
10241         fi
10243         AC_MSG_RESULT([internal])
10244         SYSTEM_FIREBIRD=
10245         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10246         FIREBIRD_LIBS="-lfbclient"
10248         if test "$with_system_libtommath" = "yes"; then
10249             SYSTEM_LIBTOMMATH=TRUE
10250             dnl check for tommath presence
10251             save_LIBS=$LIBS
10252             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10253             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10254             LIBS=$save_LIBS
10255         else
10256             SYSTEM_LIBTOMMATH=
10257             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10258             LIBTOMMATH_LIBS="-ltommath"
10259             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10260         fi
10262         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10263         ENABLE_FIREBIRD_SDBC=TRUE
10264         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10265     fi
10267 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10268 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10269 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10270 AC_SUBST(LIBATOMIC_OPS_LIBS)
10271 AC_SUBST(SYSTEM_FIREBIRD)
10272 AC_SUBST(FIREBIRD_CFLAGS)
10273 AC_SUBST(FIREBIRD_LIBS)
10274 AC_SUBST(SYSTEM_LIBTOMMATH)
10275 AC_SUBST(LIBTOMMATH_CFLAGS)
10276 AC_SUBST(LIBTOMMATH_LIBS)
10278 dnl ===================================================================
10279 dnl Check for system curl
10280 dnl ===================================================================
10281 AC_MSG_CHECKING([which libcurl to use])
10282 if test "$with_system_curl" = "auto"; then
10283     with_system_curl="$with_system_libs"
10286 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10287     AC_MSG_RESULT([external])
10288     SYSTEM_CURL=TRUE
10290     PKG_CHECK_MODULES(CURL, libcurl >= 7.68.0)
10292     ENABLE_CURL=TRUE
10293 elif test "$enable_curl" = "no"; then
10294     AC_MSG_RESULT([none])
10295 else
10296     AC_MSG_RESULT([internal])
10297     SYSTEM_CURL=
10298     BUILD_TYPE="$BUILD_TYPE CURL"
10299     ENABLE_CURL=TRUE
10301 AC_SUBST(SYSTEM_CURL)
10302 AC_SUBST(CURL_CFLAGS)
10303 AC_SUBST(CURL_LIBS)
10304 AC_SUBST(ENABLE_CURL)
10306 dnl ===================================================================
10307 dnl Check for system boost
10308 dnl ===================================================================
10309 AC_MSG_CHECKING([which boost to use])
10310 if test "$with_system_boost" = "yes"; then
10311     AC_MSG_RESULT([external])
10312     SYSTEM_BOOST=TRUE
10313     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10314     AX_BOOST_DATE_TIME
10315     AX_BOOST_FILESYSTEM
10316     AX_BOOST_IOSTREAMS
10317     AX_BOOST_LOCALE
10318     AC_LANG_PUSH([C++])
10319     save_CXXFLAGS=$CXXFLAGS
10320     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10321     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10322        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10323     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10324        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10325     CXXFLAGS=$save_CXXFLAGS
10326     AC_LANG_POP([C++])
10327     # this is in m4/ax_boost_base.m4
10328     FilterLibs "${BOOST_LDFLAGS}"
10329     BOOST_LDFLAGS="${filteredlibs}"
10330 else
10331     AC_MSG_RESULT([internal])
10332     BUILD_TYPE="$BUILD_TYPE BOOST"
10333     SYSTEM_BOOST=
10334     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10335         # use warning-suppressing wrapper headers
10336         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10337     else
10338         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10339     fi
10341 AC_SUBST(SYSTEM_BOOST)
10343 dnl ===================================================================
10344 dnl Check for system mdds
10345 dnl ===================================================================
10346 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10348 dnl ===================================================================
10349 dnl Check for system cuckoo
10350 dnl ===================================================================
10351 AC_MSG_CHECKING([which cuckoo to use])
10352 if test "$with_system_cuckoo" = "yes"; then
10353     AC_MSG_RESULT([external])
10354     SYSTEM_CUCKOO=TRUE
10355     AC_LANG_PUSH([C++])
10356     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10357        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10358     AC_LANG_POP([C++])
10359 else
10360     AC_MSG_RESULT([internal])
10361     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10362     SYSTEM_CUCKOO=
10363     CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10365 AC_SUBST([CUCKOO_CFLAGS])
10366 AC_SUBST([SYSTEM_CUCKOO])
10368 dnl ===================================================================
10369 dnl Check for system glm
10370 dnl ===================================================================
10371 AC_MSG_CHECKING([which glm to use])
10372 if test "$with_system_glm" = "yes"; then
10373     AC_MSG_RESULT([external])
10374     SYSTEM_GLM=TRUE
10375     AC_LANG_PUSH([C++])
10376     AC_CHECK_HEADER([glm/glm.hpp], [],
10377        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10378     AC_LANG_POP([C++])
10379 else
10380     AC_MSG_RESULT([internal])
10381     BUILD_TYPE="$BUILD_TYPE GLM"
10382     SYSTEM_GLM=
10383     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10385 AC_SUBST([GLM_CFLAGS])
10386 AC_SUBST([SYSTEM_GLM])
10388 dnl ===================================================================
10389 dnl Check for system odbc
10390 dnl ===================================================================
10391 AC_MSG_CHECKING([which odbc headers to use])
10392 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
10393     AC_MSG_RESULT([external])
10394     SYSTEM_ODBC_HEADERS=TRUE
10396     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10397         save_CPPFLAGS=$CPPFLAGS
10398         find_winsdk
10399         PathFormat "$winsdktest"
10400         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"
10401         AC_CHECK_HEADER(sqlext.h, [],
10402             [AC_MSG_ERROR(odbc not found. install odbc)],
10403             [#include <windows.h>])
10404         CPPFLAGS=$save_CPPFLAGS
10405     else
10406         AC_CHECK_HEADER(sqlext.h, [],
10407             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10408     fi
10409 elif test "$enable_database_connectivity" = no; then
10410     AC_MSG_RESULT([none])
10411 else
10412     AC_MSG_RESULT([internal])
10413     SYSTEM_ODBC_HEADERS=
10415 AC_SUBST(SYSTEM_ODBC_HEADERS)
10417 dnl ===================================================================
10418 dnl Check for system NSS
10419 dnl ===================================================================
10420 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10421     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10422     AC_DEFINE(HAVE_FEATURE_NSS)
10423     ENABLE_NSS=TRUE
10424 elif test $_os != iOS ; then
10425     with_tls=openssl
10427 AC_SUBST(ENABLE_NSS)
10429 dnl ===================================================================
10430 dnl Enable LDAP support
10431 dnl ===================================================================
10433 if test "$test_openldap" = yes; then
10434     AC_MSG_CHECKING([whether to enable LDAP support])
10435     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10436         AC_MSG_RESULT([yes])
10437         ENABLE_LDAP=TRUE
10438     else
10439         if test "$enable_ldap" != "yes"; then
10440             AC_MSG_RESULT([no])
10441         else
10442             AC_MSG_RESULT([no (needs NSS or system openldap)])
10443         fi
10444     fi
10446 dnl ===================================================================
10447 dnl Check for system openldap
10448 dnl ===================================================================
10450     if test "$ENABLE_LDAP" = TRUE; then
10451         AC_MSG_CHECKING([which openldap library to use])
10452         if test "$with_system_openldap" = yes; then
10453             AC_MSG_RESULT([external])
10454             SYSTEM_OPENLDAP=TRUE
10455             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10456             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10457             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10458         else
10459             AC_MSG_RESULT([internal])
10460             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10461         fi
10462     fi
10465 AC_SUBST(ENABLE_LDAP)
10466 AC_SUBST(SYSTEM_OPENLDAP)
10468 dnl ===================================================================
10469 dnl Check for TLS/SSL and cryptographic implementation to use
10470 dnl ===================================================================
10471 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10472 if test -n "$with_tls"; then
10473     case $with_tls in
10474     openssl)
10475         AC_DEFINE(USE_TLS_OPENSSL)
10476         TLS=OPENSSL
10477         AC_MSG_RESULT([$TLS])
10479         if test "$enable_openssl" != "yes"; then
10480             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10481         fi
10483         # warn that OpenSSL has been selected but not all TLS code has this option
10484         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10485         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10486         ;;
10487     nss)
10488         AC_DEFINE(USE_TLS_NSS)
10489         TLS=NSS
10490         AC_MSG_RESULT([$TLS])
10491         ;;
10492     no)
10493         AC_MSG_RESULT([none])
10494         AC_MSG_WARN([Skipping TLS/SSL])
10495         ;;
10496     *)
10497         AC_MSG_RESULT([])
10498         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10499 openssl - OpenSSL
10500 nss - Mozilla's Network Security Services (NSS)
10501     ])
10502         ;;
10503     esac
10504 else
10505     # default to using NSS, it results in smaller oox lib
10506     AC_DEFINE(USE_TLS_NSS)
10507     TLS=NSS
10508     AC_MSG_RESULT([$TLS])
10510 AC_SUBST(TLS)
10512 dnl ===================================================================
10513 dnl Check for system sane
10514 dnl ===================================================================
10515 AC_MSG_CHECKING([which sane header to use])
10516 if test "$with_system_sane" = "yes"; then
10517     AC_MSG_RESULT([external])
10518     AC_CHECK_HEADER(sane/sane.h, [],
10519       [AC_MSG_ERROR(sane not found. install sane)], [])
10520 else
10521     AC_MSG_RESULT([internal])
10522     BUILD_TYPE="$BUILD_TYPE SANE"
10525 dnl ===================================================================
10526 dnl Check for system icu
10527 dnl ===================================================================
10528 SYSTEM_GENBRK=
10529 SYSTEM_GENCCODE=
10530 SYSTEM_GENCMN=
10532 ICU_MAJOR=70
10533 ICU_MINOR=1
10534 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10535 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10536 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10537 AC_MSG_CHECKING([which icu to use])
10538 if test "$with_system_icu" = "yes"; then
10539     AC_MSG_RESULT([external])
10540     SYSTEM_ICU=TRUE
10541     AC_LANG_PUSH([C++])
10542     AC_MSG_CHECKING([for unicode/rbbi.h])
10543     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10544     AC_LANG_POP([C++])
10546     if test "$cross_compiling" != "yes"; then
10547         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10548         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10549         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10550         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10551     fi
10553     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10554         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10555         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10556         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10557         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10558         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10559             AC_MSG_RESULT([yes])
10560         else
10561             AC_MSG_RESULT([no])
10562             if test "$with_system_icu_for_build" != "force"; then
10563                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10564 You can use --with-system-icu-for-build=force to use it anyway.])
10565             fi
10566         fi
10567     fi
10569     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10570         # using the system icu tools can lead to version confusion, use the
10571         # ones from the build environment when cross-compiling
10572         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10573         if test -z "$SYSTEM_GENBRK"; then
10574             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10575         fi
10576         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10577         if test -z "$SYSTEM_GENCCODE"; then
10578             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10579         fi
10580         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10581         if test -z "$SYSTEM_GENCMN"; then
10582             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10583         fi
10584         if test "$ICU_MAJOR" -ge "49"; then
10585             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10586             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10587             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10588         else
10589             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10590             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10591             ICU_RECLASSIFIED_HEBREW_LETTER=
10592         fi
10593     fi
10595     if test "$cross_compiling" = "yes"; then
10596         if test "$ICU_MAJOR" -ge "50"; then
10597             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10598             ICU_MINOR=""
10599         fi
10600     fi
10601 else
10602     AC_MSG_RESULT([internal])
10603     SYSTEM_ICU=
10604     BUILD_TYPE="$BUILD_TYPE ICU"
10605     # surprisingly set these only for "internal" (to be used by various other
10606     # external libs): the system icu-config is quite unhelpful and spits out
10607     # dozens of weird flags and also default path -I/usr/include
10608     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10609     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10611 if test "$ICU_MAJOR" -ge "59"; then
10612     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10613     # with -std=c++11 but not all external libraries can be built with that,
10614     # for those use a bit-compatible typedef uint16_t UChar; see
10615     # icu/source/common/unicode/umachine.h
10616     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10617 else
10618     ICU_UCHAR_TYPE=""
10620 AC_SUBST(SYSTEM_ICU)
10621 AC_SUBST(SYSTEM_GENBRK)
10622 AC_SUBST(SYSTEM_GENCCODE)
10623 AC_SUBST(SYSTEM_GENCMN)
10624 AC_SUBST(ICU_MAJOR)
10625 AC_SUBST(ICU_MINOR)
10626 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10627 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10628 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10629 AC_SUBST(ICU_CFLAGS)
10630 AC_SUBST(ICU_LIBS)
10631 AC_SUBST(ICU_UCHAR_TYPE)
10633 dnl ==================================================================
10634 dnl Breakpad
10635 dnl ==================================================================
10636 DEFAULT_CRASHDUMP_VALUE="true"
10637 AC_MSG_CHECKING([whether to enable breakpad])
10638 if test "$enable_breakpad" != yes; then
10639     AC_MSG_RESULT([no])
10640 else
10641     AC_MSG_RESULT([yes])
10642     ENABLE_BREAKPAD="TRUE"
10643     AC_DEFINE(ENABLE_BREAKPAD)
10644     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10645     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10647     AC_MSG_CHECKING([for disable crash dump])
10648     if test "$enable_crashdump" = no; then
10649         DEFAULT_CRASHDUMP_VALUE="false"
10650         AC_MSG_RESULT([yes])
10651     else
10652        AC_MSG_RESULT([no])
10653     fi
10655     AC_MSG_CHECKING([for crashreport config])
10656     if test "$with_symbol_config" = "no"; then
10657         BREAKPAD_SYMBOL_CONFIG="invalid"
10658         AC_MSG_RESULT([no])
10659     else
10660         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10661         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10662         AC_MSG_RESULT([yes])
10663     fi
10664     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10666 AC_SUBST(ENABLE_BREAKPAD)
10667 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10669 dnl ==================================================================
10670 dnl libfuzzer
10671 dnl ==================================================================
10672 AC_MSG_CHECKING([whether to enable fuzzers])
10673 if test "$enable_fuzzers" != yes; then
10674     AC_MSG_RESULT([no])
10675 else
10676     if test -z $LIB_FUZZING_ENGINE; then
10677       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10678     fi
10679     AC_MSG_RESULT([yes])
10680     ENABLE_FUZZERS="TRUE"
10681     AC_DEFINE([ENABLE_FUZZERS],1)
10682     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10684 AC_SUBST(LIB_FUZZING_ENGINE)
10685 AC_SUBST(ENABLE_FUZZERS)
10687 dnl ===================================================================
10688 dnl Orcus
10689 dnl ===================================================================
10690 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
10691 if test "$with_system_orcus" != "yes"; then
10692     if test "$SYSTEM_BOOST" = "TRUE"; then
10693         dnl Link with Boost.System
10694         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10695         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10696         dnl in documentation has no effect.
10697         AX_BOOST_SYSTEM
10698     fi
10700 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10701 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10702 AC_SUBST([BOOST_SYSTEM_LIB])
10703 AC_SUBST(SYSTEM_LIBORCUS)
10705 dnl ===================================================================
10706 dnl HarfBuzz
10707 dnl ===================================================================
10708 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10709                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10710                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10712 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10713                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10714                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10716 if test "$COM" = "MSC"; then # override the above
10717     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10718     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10721 if test "$with_system_harfbuzz" = "yes"; then
10722     if test "$with_system_graphite" = "no"; then
10723         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10724     fi
10725     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10726     save_LIBS="$LIBS"
10727     save_CFLAGS="$CFLAGS"
10728     LIBS="$LIBS $HARFBUZZ_LIBS"
10729     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10730     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10731     LIBS="$save_LIBS"
10732     CFLAGS="$save_CFLAGS"
10733 else
10734     if test "$with_system_graphite" = "yes"; then
10735         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10736     fi
10739 if test "$USING_X11" = TRUE; then
10740     AC_PATH_X
10741     AC_PATH_XTRA
10742     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10744     if test -z "$x_includes"; then
10745         x_includes="default_x_includes"
10746     fi
10747     if test -z "$x_libraries"; then
10748         x_libraries="default_x_libraries"
10749     fi
10750     CFLAGS="$CFLAGS $X_CFLAGS"
10751     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10752     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10753 else
10754     x_includes="no_x_includes"
10755     x_libraries="no_x_libraries"
10758 if test "$USING_X11" = TRUE; then
10759     dnl ===================================================================
10760     dnl Check for extension headers
10761     dnl ===================================================================
10762     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10763      [#include <X11/extensions/shape.h>])
10765     # vcl needs ICE and SM
10766     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10767     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10768         [AC_MSG_ERROR(ICE library not found)])
10769     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10770     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10771         [AC_MSG_ERROR(SM library not found)])
10774 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10775     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10776     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10779 dnl ===================================================================
10780 dnl Check for system Xrender
10781 dnl ===================================================================
10782 AC_MSG_CHECKING([whether to use Xrender])
10783 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10784     AC_MSG_RESULT([yes])
10785     PKG_CHECK_MODULES(XRENDER, xrender)
10786     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10787     FilterLibs "${XRENDER_LIBS}"
10788     XRENDER_LIBS="${filteredlibs}"
10789     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10790       [AC_MSG_ERROR(libXrender not found or functional)], [])
10791     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10792       [AC_MSG_ERROR(Xrender not found. install X)], [])
10793 else
10794     AC_MSG_RESULT([no])
10796 AC_SUBST(XRENDER_CFLAGS)
10797 AC_SUBST(XRENDER_LIBS)
10799 dnl ===================================================================
10800 dnl Check for XRandr
10801 dnl ===================================================================
10802 AC_MSG_CHECKING([whether to enable RandR support])
10803 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10804     AC_MSG_RESULT([yes])
10805     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10806     if test "$ENABLE_RANDR" != "TRUE"; then
10807         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10808                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10809         XRANDR_CFLAGS=" "
10810         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10811           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10812         XRANDR_LIBS="-lXrandr "
10813         ENABLE_RANDR="TRUE"
10814     fi
10815     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10816     FilterLibs "${XRANDR_LIBS}"
10817     XRANDR_LIBS="${filteredlibs}"
10818 else
10819     ENABLE_RANDR=""
10820     AC_MSG_RESULT([no])
10822 AC_SUBST(XRANDR_CFLAGS)
10823 AC_SUBST(XRANDR_LIBS)
10824 AC_SUBST(ENABLE_RANDR)
10826 if test "$test_webdav" = yes; then
10827     if test -z "$with_webdav"; then
10828         WITH_WEBDAV=curl
10829     else
10830         WITH_WEBDAV="$with_webdav"
10831     fi
10834 AC_MSG_CHECKING([for webdav library])
10835 case "$WITH_WEBDAV" in
10836 curl)
10837     AC_MSG_RESULT([curl])
10838     # curl is already mandatory (almost) and checked elsewhere
10839     if test "$enable_curl" = "no"; then
10840         AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10841     fi
10842     ;;
10843 serf)
10844     AC_MSG_RESULT([serf])
10845     # Check for system apr-util
10846     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10847                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10848                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10849     if test "$COM" = "MSC"; then
10850         APR_LIB_DIR="LibR"
10851         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10852         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10853     fi
10855     # Check for system serf
10856     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10857     ;;
10858 neon)
10859     AC_MSG_RESULT([neon])
10860     # Check for system neon
10861     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10862     if test "$with_system_neon" = "yes"; then
10863         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10864     else
10865         NEON_VERSION=0312
10866     fi
10867     AC_SUBST(NEON_VERSION)
10868     ;;
10870     AC_MSG_RESULT([none, disabled])
10871     WITH_WEBDAV=""
10872     ;;
10873 esac
10874 AC_SUBST(WITH_WEBDAV)
10876 dnl ===================================================================
10877 dnl Check for disabling cve_tests
10878 dnl ===================================================================
10879 AC_MSG_CHECKING([whether to execute CVE tests])
10880 # If not explicitly enabled or disabled, default
10881 if test -z "$enable_cve_tests"; then
10882     case "$OS" in
10883     WNT)
10884         # Default cves off for Windows with its wild and wonderful
10885         # variety of AV software kicking in and panicking
10886         enable_cve_tests=no
10887         ;;
10888     *)
10889         # otherwise yes
10890         enable_cve_tests=yes
10891         ;;
10892     esac
10894 if test "$enable_cve_tests" = "no"; then
10895     AC_MSG_RESULT([no])
10896     DISABLE_CVE_TESTS=TRUE
10897     AC_SUBST(DISABLE_CVE_TESTS)
10898 else
10899     AC_MSG_RESULT([yes])
10902 dnl ===================================================================
10903 dnl Check for enabling chart XShape tests
10904 dnl ===================================================================
10905 AC_MSG_CHECKING([whether to execute chart XShape tests])
10906 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10907     AC_MSG_RESULT([yes])
10908     ENABLE_CHART_TESTS=TRUE
10909     AC_SUBST(ENABLE_CHART_TESTS)
10910 else
10911     AC_MSG_RESULT([no])
10914 dnl ===================================================================
10915 dnl Check for system openssl
10916 dnl ===================================================================
10917 ENABLE_OPENSSL=
10918 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10919 if test "$enable_openssl" = "yes"; then
10920     AC_MSG_RESULT([no])
10921     ENABLE_OPENSSL=TRUE
10922     if test "$_os" = Darwin ; then
10923         # OpenSSL is deprecated when building for 10.7 or later.
10924         #
10925         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10926         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10928         with_system_openssl=no
10929         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10930     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10931             && test "$with_system_openssl" != "no"; then
10932         with_system_openssl=yes
10933         SYSTEM_OPENSSL=TRUE
10934         OPENSSL_CFLAGS=
10935         OPENSSL_LIBS="-lssl -lcrypto"
10936     else
10937         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10938     fi
10939     if test "$with_system_openssl" = "yes"; then
10940         AC_MSG_CHECKING([whether openssl supports SHA512])
10941         AC_LANG_PUSH([C])
10942         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10943             SHA512_CTX context;
10944 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10945         AC_LANG_POP(C)
10946     fi
10947 else
10948     AC_MSG_RESULT([yes])
10950     # warn that although OpenSSL is disabled, system libraries may depend on it
10951     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10952     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10955 AC_SUBST([ENABLE_OPENSSL])
10957 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10958     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10959         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10960         enable_cipher_openssl_backend=no
10961     else
10962         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10963     fi
10965 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10966 ENABLE_CIPHER_OPENSSL_BACKEND=
10967 if test "$enable_cipher_openssl_backend" = yes; then
10968     AC_MSG_RESULT([yes])
10969     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10970 else
10971     AC_MSG_RESULT([no])
10973 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10975 dnl ===================================================================
10976 dnl Select the crypto backends used by LO
10977 dnl ===================================================================
10979 if test "$build_crypto" = yes; then
10980     if test "$OS" = WNT; then
10981         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10982         AC_DEFINE([USE_CRYPTO_MSCAPI])
10983     elif test "$ENABLE_NSS" = TRUE; then
10984         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10985         AC_DEFINE([USE_CRYPTO_NSS])
10986     fi
10989 dnl ===================================================================
10990 dnl Check for building gnutls
10991 dnl ===================================================================
10992 AC_MSG_CHECKING([whether to use gnutls])
10993 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10994     AC_MSG_RESULT([yes])
10995     AM_PATH_LIBGCRYPT()
10996     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10997         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10998                       available in the system to use as replacement.]]))
10999     FilterLibs "${LIBGCRYPT_LIBS}"
11000     LIBGCRYPT_LIBS="${filteredlibs}"
11001 else
11002     AC_MSG_RESULT([no])
11005 AC_SUBST([LIBGCRYPT_CFLAGS])
11006 AC_SUBST([LIBGCRYPT_LIBS])
11008 dnl ===================================================================
11009 dnl Check for system redland
11010 dnl ===================================================================
11011 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11012 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11013 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11014 if test "$with_system_redland" = "yes"; then
11015     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11016             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11017 else
11018     RAPTOR_MAJOR="0"
11019     RASQAL_MAJOR="3"
11020     REDLAND_MAJOR="0"
11022 AC_SUBST(RAPTOR_MAJOR)
11023 AC_SUBST(RASQAL_MAJOR)
11024 AC_SUBST(REDLAND_MAJOR)
11026 dnl ===================================================================
11027 dnl Check for system hunspell
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([which libhunspell to use])
11030 if test "$with_system_hunspell" = "yes"; then
11031     AC_MSG_RESULT([external])
11032     SYSTEM_HUNSPELL=TRUE
11033     AC_LANG_PUSH([C++])
11034     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11035     if test "$HUNSPELL_PC" != "TRUE"; then
11036         AC_CHECK_HEADER(hunspell.hxx, [],
11037             [
11038             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11039             [AC_MSG_ERROR(hunspell headers not found.)], [])
11040             ], [])
11041         AC_CHECK_LIB([hunspell], [main], [:],
11042            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11043         HUNSPELL_LIBS=-lhunspell
11044     fi
11045     AC_LANG_POP([C++])
11046     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11047     FilterLibs "${HUNSPELL_LIBS}"
11048     HUNSPELL_LIBS="${filteredlibs}"
11049 else
11050     AC_MSG_RESULT([internal])
11051     SYSTEM_HUNSPELL=
11052     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11053     if test "$COM" = "MSC"; then
11054         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11055     else
11056         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11057     fi
11058     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11060 AC_SUBST(SYSTEM_HUNSPELL)
11061 AC_SUBST(HUNSPELL_CFLAGS)
11062 AC_SUBST(HUNSPELL_LIBS)
11064 dnl ===================================================================
11065 dnl Check for system zxing
11066 dnl ===================================================================
11067 AC_MSG_CHECKING([whether to use zxing])
11068 if test "$enable_zxing" = "no"; then
11069     AC_MSG_RESULT([no])
11070     ENABLE_ZXING=
11071     SYSTEM_ZXING=
11072 else
11073     AC_MSG_RESULT([yes])
11074     ENABLE_ZXING=TRUE
11075     AC_MSG_CHECKING([which libzxing to use])
11076     if test "$with_system_zxing" = "yes"; then
11077         AC_MSG_RESULT([external])
11078         SYSTEM_ZXING=TRUE
11079         AC_LANG_PUSH([C++])
11080         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11081             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11082         ZXING_CFLAGS=-I/usr/include/ZXing
11083         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11084             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11085             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11086         AC_LANG_POP([C++])
11087         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11088         FilterLibs "${ZXING_LIBS}"
11089         ZXING_LIBS="${filteredlibs}"
11090     else
11091         AC_MSG_RESULT([internal])
11092         SYSTEM_ZXING=
11093         BUILD_TYPE="$BUILD_TYPE ZXING"
11094     fi
11095     if test "$ENABLE_ZXING" = TRUE; then
11096         AC_DEFINE(ENABLE_ZXING)
11097     fi
11099 AC_SUBST(SYSTEM_ZXING)
11100 AC_SUBST(ENABLE_ZXING)
11101 AC_SUBST(ZXING_CFLAGS)
11102 AC_SUBST(ZXING_LIBS)
11104 dnl ===================================================================
11105 dnl Check for system box2d
11106 dnl ===================================================================
11107 AC_MSG_CHECKING([which box2d to use])
11108 if test "$with_system_box2d" = "yes"; then
11109     AC_MSG_RESULT([external])
11110     SYSTEM_BOX2D=TRUE
11111     AC_LANG_PUSH([C++])
11112     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11113         [BOX2D_H_FOUND='FALSE'])
11114     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11115         _BOX2D_LIB=box2d
11116         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11117     else
11118         # fail this. there's no other alternative to check when we are here.
11119         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11120             [AC_MSG_ERROR(box2d headers not found.)])
11121         _BOX2D_LIB=Box2D
11122         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11123     fi
11124     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11125         [ AC_MSG_ERROR(box2d library not found.) ], [])
11126     BOX2D_LIBS=-l$_BOX2D_LIB
11127     AC_LANG_POP([C++])
11128     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11129     FilterLibs "${BOX2D_LIBS}"
11130     BOX2D_LIBS="${filteredlibs}"
11131 else
11132     AC_MSG_RESULT([internal])
11133     SYSTEM_BOX2D=
11134     BUILD_TYPE="$BUILD_TYPE BOX2D"
11136 AC_SUBST(SYSTEM_BOX2D)
11137 AC_SUBST(BOX2D_CFLAGS)
11138 AC_SUBST(BOX2D_LIBS)
11140 dnl ===================================================================
11141 dnl Checking for altlinuxhyph
11142 dnl ===================================================================
11143 AC_MSG_CHECKING([which altlinuxhyph to use])
11144 if test "$with_system_altlinuxhyph" = "yes"; then
11145     AC_MSG_RESULT([external])
11146     SYSTEM_HYPH=TRUE
11147     AC_CHECK_HEADER(hyphen.h, [],
11148        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11149     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11150        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11151        [#include <hyphen.h>])
11152     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11153         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11154     if test -z "$HYPHEN_LIB"; then
11155         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11156            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11157     fi
11158     if test -z "$HYPHEN_LIB"; then
11159         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11160            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11161     fi
11162 else
11163     AC_MSG_RESULT([internal])
11164     SYSTEM_HYPH=
11165     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11166     if test "$COM" = "MSC"; then
11167         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11168     else
11169         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11170     fi
11172 AC_SUBST(SYSTEM_HYPH)
11173 AC_SUBST(HYPHEN_LIB)
11175 dnl ===================================================================
11176 dnl Checking for mythes
11177 dnl ===================================================================
11178 AC_MSG_CHECKING([which mythes to use])
11179 if test "$with_system_mythes" = "yes"; then
11180     AC_MSG_RESULT([external])
11181     SYSTEM_MYTHES=TRUE
11182     AC_LANG_PUSH([C++])
11183     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11184     if test "$MYTHES_PKGCONFIG" = "no"; then
11185         AC_CHECK_HEADER(mythes.hxx, [],
11186             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11187         AC_CHECK_LIB([mythes-1.2], [main], [:],
11188             [ MYTHES_FOUND=no], [])
11189     if test "$MYTHES_FOUND" = "no"; then
11190         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11191                 [ MYTHES_FOUND=no], [])
11192     fi
11193     if test "$MYTHES_FOUND" = "no"; then
11194         AC_MSG_ERROR([mythes library not found!.])
11195     fi
11196     fi
11197     AC_LANG_POP([C++])
11198     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11199     FilterLibs "${MYTHES_LIBS}"
11200     MYTHES_LIBS="${filteredlibs}"
11201 else
11202     AC_MSG_RESULT([internal])
11203     SYSTEM_MYTHES=
11204     BUILD_TYPE="$BUILD_TYPE MYTHES"
11205     if test "$COM" = "MSC"; then
11206         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11207     else
11208         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11209     fi
11211 AC_SUBST(SYSTEM_MYTHES)
11212 AC_SUBST(MYTHES_CFLAGS)
11213 AC_SUBST(MYTHES_LIBS)
11215 dnl ===================================================================
11216 dnl How should we build the linear programming solver ?
11217 dnl ===================================================================
11219 ENABLE_COINMP=
11220 AC_MSG_CHECKING([whether to build with CoinMP])
11221 if test "$enable_coinmp" != "no"; then
11222     ENABLE_COINMP=TRUE
11223     AC_MSG_RESULT([yes])
11224     if test "$with_system_coinmp" = "yes"; then
11225         SYSTEM_COINMP=TRUE
11226         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11227         FilterLibs "${COINMP_LIBS}"
11228         COINMP_LIBS="${filteredlibs}"
11229     else
11230         BUILD_TYPE="$BUILD_TYPE COINMP"
11231     fi
11232 else
11233     AC_MSG_RESULT([no])
11235 AC_SUBST(ENABLE_COINMP)
11236 AC_SUBST(SYSTEM_COINMP)
11237 AC_SUBST(COINMP_CFLAGS)
11238 AC_SUBST(COINMP_LIBS)
11240 ENABLE_LPSOLVE=
11241 AC_MSG_CHECKING([whether to build with lpsolve])
11242 if test "$enable_lpsolve" != "no"; then
11243     ENABLE_LPSOLVE=TRUE
11244     AC_MSG_RESULT([yes])
11245 else
11246     AC_MSG_RESULT([no])
11248 AC_SUBST(ENABLE_LPSOLVE)
11250 if test "$ENABLE_LPSOLVE" = TRUE; then
11251     AC_MSG_CHECKING([which lpsolve to use])
11252     if test "$with_system_lpsolve" = "yes"; then
11253         AC_MSG_RESULT([external])
11254         SYSTEM_LPSOLVE=TRUE
11255         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11256            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11257         save_LIBS=$LIBS
11258         # some systems need this. Like Ubuntu...
11259         AC_CHECK_LIB(m, floor)
11260         AC_CHECK_LIB(dl, dlopen)
11261         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11262             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11263         LIBS=$save_LIBS
11264     else
11265         AC_MSG_RESULT([internal])
11266         SYSTEM_LPSOLVE=
11267         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11268     fi
11270 AC_SUBST(SYSTEM_LPSOLVE)
11272 dnl ===================================================================
11273 dnl Checking for libexttextcat
11274 dnl ===================================================================
11275 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11276 if test "$with_system_libexttextcat" = "yes"; then
11277     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11279 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11281 dnl ===================================================================
11282 dnl Checking for libnumbertext
11283 dnl ===================================================================
11284 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11285 if test "$with_system_libnumbertext" = "yes"; then
11286     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11287     SYSTEM_LIBNUMBERTEXT=YES
11288 else
11289     SYSTEM_LIBNUMBERTEXT=
11290     AC_LANG_PUSH([C++])
11291     save_CPPFLAGS=$CPPFLAGS
11292     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11293     AC_CHECK_HEADERS([codecvt regex])
11294     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11295             [ LIBNUMBERTEXT_CFLAGS=''
11296               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11297                            Enable libnumbertext fallback (missing number to number name conversion).])
11298             ])
11299     CPPFLAGS=$save_CPPFLAGS
11300     AC_LANG_POP([C++])
11302 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11303 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11304 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11306 dnl ***************************************
11307 dnl testing libc version for Linux...
11308 dnl ***************************************
11309 if test "$_os" = "Linux"; then
11310     AC_MSG_CHECKING([whether the libc is recent enough])
11311     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11312     #include <features.h>
11313     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11314     #error glibc >= 2.1 is required
11315     #endif
11316     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11319 dnl =========================================
11320 dnl Check for uuidgen
11321 dnl =========================================
11322 if test "$_os" = "WINNT"; then
11323     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11324     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11325     UUIDGEN=uuidgen.exe
11326     AC_SUBST(UUIDGEN)
11327 else
11328     AC_PATH_PROG([UUIDGEN], [uuidgen])
11329     if test -z "$UUIDGEN"; then
11330         AC_MSG_WARN([uuid is needed for building installation sets])
11331     fi
11334 dnl ***************************************
11335 dnl Checking for bison and flex
11336 dnl ***************************************
11337 AC_PATH_PROG(BISON, bison)
11338 if test -z "$BISON"; then
11339     AC_MSG_ERROR([no bison found in \$PATH, install it])
11340 else
11341     AC_MSG_CHECKING([the bison version])
11342     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11343     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11344     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11345     dnl cause
11346     dnl
11347     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]
11348     dnl   typedef union YYSTYPE
11349     dnl           ~~~~~~^~~~~~~
11350     dnl
11351     dnl while at least 3.4.1 is know to be good:
11352     if test "$COMPILER_PLUGINS" = TRUE; then
11353         if test "$_bison_longver" -lt 2004; then
11354             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11355         fi
11356     else
11357         if test "$_bison_longver" -lt 2000; then
11358             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11359         fi
11360     fi
11362 AC_SUBST([BISON])
11364 AC_PATH_PROG(FLEX, flex)
11365 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11366     FLEX=`cygpath -m $FLEX`
11368 if test -z "$FLEX"; then
11369     AC_MSG_ERROR([no flex found in \$PATH, install it])
11370 else
11371     AC_MSG_CHECKING([the flex version])
11372     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11373     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11374         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11375     fi
11377 AC_SUBST([FLEX])
11378 dnl ***************************************
11379 dnl Checking for patch
11380 dnl ***************************************
11381 AC_PATH_PROG(PATCH, patch)
11382 if test -z "$PATCH"; then
11383     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11386 dnl On Solaris or macOS, check if --with-gnu-patch was used
11387 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11388     if test -z "$with_gnu_patch"; then
11389         GNUPATCH=$PATCH
11390     else
11391         if test -x "$with_gnu_patch"; then
11392             GNUPATCH=$with_gnu_patch
11393         else
11394             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11395         fi
11396     fi
11398     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11399     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11400         AC_MSG_RESULT([yes])
11401     else
11402         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11403     fi
11404 else
11405     GNUPATCH=$PATCH
11408 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11409     GNUPATCH=`cygpath -m $GNUPATCH`
11412 dnl We also need to check for --with-gnu-cp
11414 if test -z "$with_gnu_cp"; then
11415     # check the place where the good stuff is hidden on Solaris...
11416     if test -x /usr/gnu/bin/cp; then
11417         GNUCP=/usr/gnu/bin/cp
11418     else
11419         AC_PATH_PROGS(GNUCP, gnucp cp)
11420     fi
11421     if test -z $GNUCP; then
11422         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11423     fi
11424 else
11425     if test -x "$with_gnu_cp"; then
11426         GNUCP=$with_gnu_cp
11427     else
11428         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11429     fi
11432 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11433     GNUCP=`cygpath -m $GNUCP`
11436 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11437 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11438     AC_MSG_RESULT([yes])
11439 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11440     AC_MSG_RESULT([yes])
11441 else
11442     case "$build_os" in
11443     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11444         x_GNUCP=[\#]
11445         GNUCP=''
11446         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11447         ;;
11448     *)
11449         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11450         ;;
11451     esac
11454 AC_SUBST(GNUPATCH)
11455 AC_SUBST(GNUCP)
11456 AC_SUBST(x_GNUCP)
11458 dnl ***************************************
11459 dnl testing assembler path
11460 dnl ***************************************
11461 ML_EXE=""
11462 if test "$_os" = "WINNT"; then
11463     case "$WIN_HOST_ARCH" in
11464     x86) assembler=ml.exe ;;
11465     x64) assembler=ml64.exe ;;
11466     arm64) assembler=armasm64.exe ;;
11467     esac
11469     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11470     if test -f "$MSVC_HOST_PATH/$assembler"; then
11471         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11472         AC_MSG_RESULT([$ML_EXE])
11473     else
11474         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11475     fi
11478 AC_SUBST(ML_EXE)
11480 dnl ===================================================================
11481 dnl We need zip and unzip
11482 dnl ===================================================================
11483 AC_PATH_PROG(ZIP, zip)
11484 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11485 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11486     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],,)
11489 AC_PATH_PROG(UNZIP, unzip)
11490 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11492 dnl ===================================================================
11493 dnl Zip must be a specific type for different build types.
11494 dnl ===================================================================
11495 if test $build_os = cygwin; then
11496     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11497         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11498     fi
11501 dnl ===================================================================
11502 dnl We need touch with -h option support.
11503 dnl ===================================================================
11504 AC_PATH_PROG(TOUCH, touch)
11505 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11506 touch "$WARNINGS_FILE"
11507 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11508     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],,)
11511 dnl ===================================================================
11512 dnl Check for system epoxy
11513 dnl ===================================================================
11514 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11516 dnl ===================================================================
11517 dnl Set vcl option: coordinate device in double or sal_Int32
11518 dnl ===================================================================
11520 dnl disabled for now, we don't want subtle differences between OSs
11521 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11522 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11523 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11524 dnl     AC_MSG_RESULT([double])
11525 dnl else
11526 dnl     AC_MSG_RESULT([sal_Int32])
11527 dnl fi
11529 dnl ===================================================================
11530 dnl Show which vclplugs will be built.
11531 dnl ===================================================================
11532 R=""
11533 if test "$USING_X11" != TRUE; then
11534     enable_gtk3=no
11537 ENABLE_GTK3=""
11538 if test "x$enable_gtk3" = "xyes"; then
11539     ENABLE_GTK3="TRUE"
11540     AC_DEFINE(ENABLE_GTK3)
11541     R="$R gtk3"
11543 AC_SUBST(ENABLE_GTK3)
11545 ENABLE_GTK3_KDE5=""
11546 if test "x$enable_gtk3_kde5" = "xyes"; then
11547     ENABLE_GTK3_KDE5="TRUE"
11548     AC_DEFINE(ENABLE_GTK3_KDE5)
11549     R="$R gtk3_kde5"
11551 AC_SUBST(ENABLE_GTK3_KDE5)
11553 ENABLE_GTK4=""
11554 if test "x$enable_gtk4" = "xyes"; then
11555     ENABLE_GTK4="TRUE"
11556     AC_DEFINE(ENABLE_GTK4)
11557     R="$R gtk4"
11559 AC_SUBST(ENABLE_GTK4)
11561 ENABLE_QT5=""
11562 if test "x$enable_qt5" = "xyes"; then
11563     ENABLE_QT5="TRUE"
11564     AC_DEFINE(ENABLE_QT5)
11565     R="$R qt5"
11567 AC_SUBST(ENABLE_QT5)
11569 ENABLE_QT6=""
11570 if test "x$enable_qt6" = "xyes"; then
11571     ENABLE_QT6="TRUE"
11572     AC_DEFINE(ENABLE_QT6)
11573     R="$R qt6"
11575 AC_SUBST(ENABLE_QT6)
11578 ENABLE_KF5=""
11579 if test "x$enable_kf5" = "xyes"; then
11580     ENABLE_KF5="TRUE"
11581     AC_DEFINE(ENABLE_KF5)
11582     R="$R kf5"
11584 AC_SUBST(ENABLE_KF5)
11586 if test "x$USING_X11" = "xyes"; then
11587     R="$R gen"
11590 if test "$_os" = "WINNT"; then
11591     R="$R win"
11592 elif test "$_os" = "Darwin"; then
11593     R="$R osx"
11594 elif test "$_os" = "iOS"; then
11595     R="ios"
11596 elif test "$_os" = Android; then
11597     R="android"
11600 build_vcl_plugins="$R"
11601 if test -z "$build_vcl_plugins"; then
11602     build_vcl_plugins=" none"
11604 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11605 VCL_PLUGIN_INFO=$R
11606 AC_SUBST([VCL_PLUGIN_INFO])
11608 dnl ===================================================================
11609 dnl Check for GTK libraries
11610 dnl ===================================================================
11612 GTK3_CFLAGS=""
11613 GTK3_LIBS=""
11614 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11615     if test "$with_system_cairo" = no; then
11616         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11617     fi
11618     : ${with_system_cairo:=yes}
11619     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)
11620     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11621     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11622     FilterLibs "${GTK3_LIBS}"
11623     GTK3_LIBS="${filteredlibs}"
11625     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11626     if test "$with_system_epoxy" != "yes"; then
11627         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11628         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11629                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11630     fi
11632 AC_SUBST(GTK3_LIBS)
11633 AC_SUBST(GTK3_CFLAGS)
11635 GTK4_CFLAGS=""
11636 GTK4_LIBS=""
11637 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11638     if test "$with_system_cairo" = no; then
11639         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11640     fi
11641     : ${with_system_cairo:=yes}
11642     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11643     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11644     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11645     FilterLibs "${GTK4_LIBS}"
11646     GTK4_LIBS="${filteredlibs}"
11648     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11649     if test "$with_system_epoxy" != "yes"; then
11650         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11651         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11652                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11653     fi
11655 AC_SUBST(GTK4_LIBS)
11656 AC_SUBST(GTK4_CFLAGS)
11658 if test "$enable_introspection" = yes; then
11659     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11660         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11661     else
11662         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11663     fi
11666 dnl ===================================================================
11667 dnl check for dbus support
11668 dnl ===================================================================
11669 ENABLE_DBUS=""
11670 DBUS_CFLAGS=""
11671 DBUS_LIBS=""
11672 DBUS_GLIB_CFLAGS=""
11673 DBUS_GLIB_LIBS=""
11674 DBUS_HAVE_GLIB=""
11676 if test "$enable_dbus" = "no"; then
11677     test_dbus=no
11680 AC_MSG_CHECKING([whether to enable DBUS support])
11681 if test "$test_dbus" = "yes"; then
11682     ENABLE_DBUS="TRUE"
11683     AC_MSG_RESULT([yes])
11684     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11685     AC_DEFINE(ENABLE_DBUS)
11686     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11687     FilterLibs "${DBUS_LIBS}"
11688     DBUS_LIBS="${filteredlibs}"
11690     # Glib is needed for BluetoothServer
11691     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11692     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11693         [
11694             DBUS_HAVE_GLIB="TRUE"
11695             AC_DEFINE(DBUS_HAVE_GLIB,1)
11696         ],
11697         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11698     )
11699 else
11700     AC_MSG_RESULT([no])
11703 AC_SUBST(ENABLE_DBUS)
11704 AC_SUBST(DBUS_CFLAGS)
11705 AC_SUBST(DBUS_LIBS)
11706 AC_SUBST(DBUS_GLIB_CFLAGS)
11707 AC_SUBST(DBUS_GLIB_LIBS)
11708 AC_SUBST(DBUS_HAVE_GLIB)
11710 AC_MSG_CHECKING([whether to enable Impress remote control])
11711 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11712     AC_MSG_RESULT([yes])
11713     ENABLE_SDREMOTE=TRUE
11714     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11716     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11717         # The Bluetooth code doesn't compile with macOS SDK 10.15
11718         if test "$enable_sdremote_bluetooth" = yes; then
11719             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11720         fi
11721         enable_sdremote_bluetooth=no
11722     fi
11723     # If not explicitly enabled or disabled, default
11724     if test -z "$enable_sdremote_bluetooth"; then
11725         case "$OS" in
11726         LINUX|MACOSX|WNT)
11727             # Default to yes for these
11728             enable_sdremote_bluetooth=yes
11729             ;;
11730         *)
11731             # otherwise no
11732             enable_sdremote_bluetooth=no
11733             ;;
11734         esac
11735     fi
11736     # $enable_sdremote_bluetooth is guaranteed non-empty now
11738     if test "$enable_sdremote_bluetooth" != "no"; then
11739         if test "$OS" = "LINUX"; then
11740             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11741                 AC_MSG_RESULT([yes])
11742                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11743                 dnl ===================================================================
11744                 dnl Check for system bluez
11745                 dnl ===================================================================
11746                 AC_MSG_CHECKING([which Bluetooth header to use])
11747                 if test "$with_system_bluez" = "yes"; then
11748                     AC_MSG_RESULT([external])
11749                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11750                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11751                     SYSTEM_BLUEZ=TRUE
11752                 else
11753                     AC_MSG_RESULT([internal])
11754                     SYSTEM_BLUEZ=
11755                 fi
11756             else
11757                 AC_MSG_RESULT([no, dbus disabled])
11758                 ENABLE_SDREMOTE_BLUETOOTH=
11759                 SYSTEM_BLUEZ=
11760             fi
11761         else
11762             AC_MSG_RESULT([yes])
11763             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11764             SYSTEM_BLUEZ=
11765         fi
11766     else
11767         AC_MSG_RESULT([no])
11768         ENABLE_SDREMOTE_BLUETOOTH=
11769         SYSTEM_BLUEZ=
11770     fi
11771 else
11772     ENABLE_SDREMOTE=
11773     SYSTEM_BLUEZ=
11774     AC_MSG_RESULT([no])
11776 AC_SUBST(ENABLE_SDREMOTE)
11777 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11778 AC_SUBST(SYSTEM_BLUEZ)
11780 dnl ===================================================================
11781 dnl Check whether to enable GIO support
11782 dnl ===================================================================
11783 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11784     AC_MSG_CHECKING([whether to enable GIO support])
11785     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11786         dnl Need at least 2.26 for the dbus support.
11787         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11788                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11789         if test "$ENABLE_GIO" = "TRUE"; then
11790             AC_DEFINE(ENABLE_GIO)
11791             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11792             FilterLibs "${GIO_LIBS}"
11793             GIO_LIBS="${filteredlibs}"
11794         fi
11795     else
11796         AC_MSG_RESULT([no])
11797     fi
11799 AC_SUBST(ENABLE_GIO)
11800 AC_SUBST(GIO_CFLAGS)
11801 AC_SUBST(GIO_LIBS)
11804 dnl ===================================================================
11806 SPLIT_APP_MODULES=""
11807 if test "$enable_split_app_modules" = "yes"; then
11808     SPLIT_APP_MODULES="TRUE"
11810 AC_SUBST(SPLIT_APP_MODULES)
11812 SPLIT_OPT_FEATURES=""
11813 if test "$enable_split_opt_features" = "yes"; then
11814     SPLIT_OPT_FEATURES="TRUE"
11816 AC_SUBST(SPLIT_OPT_FEATURES)
11818 dnl ===================================================================
11819 dnl Check whether the GStreamer libraries are available.
11820 dnl ===================================================================
11822 ENABLE_GSTREAMER_1_0=""
11824 if test "$test_gstreamer_1_0" = yes; then
11826     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11827     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11828         ENABLE_GSTREAMER_1_0="TRUE"
11829         AC_MSG_RESULT([yes])
11830         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11831         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11832         FilterLibs "${GSTREAMER_1_0_LIBS}"
11833         GSTREAMER_1_0_LIBS="${filteredlibs}"
11834         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11835     else
11836         AC_MSG_RESULT([no])
11837     fi
11839 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11840 AC_SUBST(GSTREAMER_1_0_LIBS)
11841 AC_SUBST(ENABLE_GSTREAMER_1_0)
11843 ENABLE_OPENGL_TRANSITIONS=
11844 ENABLE_OPENGL_CANVAS=
11845 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11846    : # disable
11847 elif test "$_os" = "Darwin"; then
11848     # We use frameworks on macOS, no need for detail checks
11849     ENABLE_OPENGL_TRANSITIONS=TRUE
11850     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11851     ENABLE_OPENGL_CANVAS=TRUE
11852 elif test $_os = WINNT; then
11853     ENABLE_OPENGL_TRANSITIONS=TRUE
11854     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11855     ENABLE_OPENGL_CANVAS=TRUE
11856 else
11857     if test "$USING_X11" = TRUE; then
11858         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11859         ENABLE_OPENGL_TRANSITIONS=TRUE
11860         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11861         ENABLE_OPENGL_CANVAS=TRUE
11862     fi
11865 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11866 AC_SUBST(ENABLE_OPENGL_CANVAS)
11868 dnl =================================================
11869 dnl Check whether to build with OpenCL support.
11870 dnl =================================================
11872 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11873     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11874     # platform (optional at run-time, used through clew).
11875     BUILD_TYPE="$BUILD_TYPE OPENCL"
11876     AC_DEFINE(HAVE_FEATURE_OPENCL)
11879 dnl =================================================
11880 dnl Check whether to build with dconf support.
11881 dnl =================================================
11883 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11884     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11885         if test "$enable_dconf" = yes; then
11886             AC_MSG_ERROR([dconf not found])
11887         else
11888             enable_dconf=no
11889         fi])
11891 AC_MSG_CHECKING([whether to enable dconf])
11892 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11893     DCONF_CFLAGS=
11894     DCONF_LIBS=
11895     ENABLE_DCONF=
11896     AC_MSG_RESULT([no])
11897 else
11898     ENABLE_DCONF=TRUE
11899     AC_DEFINE(ENABLE_DCONF)
11900     AC_MSG_RESULT([yes])
11902 AC_SUBST([DCONF_CFLAGS])
11903 AC_SUBST([DCONF_LIBS])
11904 AC_SUBST([ENABLE_DCONF])
11906 # pdf import?
11907 AC_MSG_CHECKING([whether to build the PDF import feature])
11908 ENABLE_PDFIMPORT=
11909 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11910     AC_MSG_RESULT([yes])
11911     ENABLE_PDFIMPORT=TRUE
11912     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11913 else
11914     AC_MSG_RESULT([no])
11917 # Pdfium?
11918 AC_MSG_CHECKING([whether to build PDFium])
11919 ENABLE_PDFIUM=
11920 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11921     AC_MSG_RESULT([yes])
11922     ENABLE_PDFIUM=TRUE
11923     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11924 else
11925     AC_MSG_RESULT([no])
11927 AC_SUBST(ENABLE_PDFIUM)
11929 if test "$ENABLE_PDFIUM" = "TRUE"; then
11930         AC_MSG_CHECKING([which OpenJPEG library to use])
11931         if test "$with_system_openjpeg" = "yes"; then
11932                 SYSTEM_OPENJPEG2=TRUE
11933                 AC_MSG_RESULT([external])
11934                 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11935                 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11936                 FilterLibs "${OPENJPEG2_LIBS}"
11937                 OPENJPEG2_LIBS="${filteredlibs}"
11938         else
11939                 SYSTEM_OPENJPEG2=FALSE
11940                 AC_MSG_RESULT([internal])
11941         fi
11942         AC_MSG_CHECKING([which Abseil library to use])
11943         if test "$with_system_abseil" = "yes"; then
11944                 AC_MSG_RESULT([external])
11945                 SYSTEM_ABSEIL=TRUE
11946                 AC_LANG_PUSH([C++])
11947                 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
11948                         [AC_MSG_ERROR(abseil headers not found.)], [])
11949                 #ABSEIL_CFLAGS=-I/usr/include
11950                 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
11951                         [ AC_MSG_ERROR([libabsl_bad_optional_access library not found.]) ])
11952                 AC_LANG_POP([C++])
11953                 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11954                 FilterLibs "${ABSEIL_LIBS}"
11955                 ABSEIL_LIBS="${filteredlibs}"
11956         else
11957                 AC_MSG_RESULT([internal])
11958         fi
11960 AC_SUBST(SYSTEM_OPENJPEG2)
11961 AC_SUBST(SYSTEM_ABSEIL)
11962 AC_SUBST(ABSEIL_CFLAGS)
11963 AC_SUBST(ABSEIL_LIBS)
11965 dnl ===================================================================
11966 dnl Check for poppler
11967 dnl ===================================================================
11968 ENABLE_POPPLER=
11969 AC_MSG_CHECKING([whether to build Poppler])
11970 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11971     AC_MSG_RESULT([yes])
11972     ENABLE_POPPLER=TRUE
11973     AC_DEFINE(HAVE_FEATURE_POPPLER)
11974 else
11975     AC_MSG_RESULT([no])
11977 AC_SUBST(ENABLE_POPPLER)
11979 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11980     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11983 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11984     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11987 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11988     dnl ===================================================================
11989     dnl Check for system poppler
11990     dnl ===================================================================
11991     AC_MSG_CHECKING([which PDF import poppler to use])
11992     if test "$with_system_poppler" = "yes"; then
11993         AC_MSG_RESULT([external])
11994         SYSTEM_POPPLER=TRUE
11995         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
11996         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11997         FilterLibs "${POPPLER_LIBS}"
11998         POPPLER_LIBS="${filteredlibs}"
11999     else
12000         AC_MSG_RESULT([internal])
12001         SYSTEM_POPPLER=
12002         BUILD_TYPE="$BUILD_TYPE POPPLER"
12003     fi
12004     AC_DEFINE([ENABLE_PDFIMPORT],1)
12006 AC_SUBST(ENABLE_PDFIMPORT)
12007 AC_SUBST(SYSTEM_POPPLER)
12008 AC_SUBST(POPPLER_CFLAGS)
12009 AC_SUBST(POPPLER_LIBS)
12011 # Skia?
12012 ENABLE_SKIA=
12013 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12014     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12015     if test "$SYSTEM_FREETYPE" = TRUE; then
12016         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12017             [skia_freetype_ok=yes],
12018             [skia_freetype_ok=no])
12019     else # internal is ok
12020         skia_freetype_ok=yes
12021     fi
12022     AC_MSG_CHECKING([whether to build Skia])
12023     if test "$skia_freetype_ok" = "yes"; then
12024         if test "$enable_skia" = "debug"; then
12025             AC_MSG_RESULT([yes (debug)])
12026             ENABLE_SKIA_DEBUG=TRUE
12027         else
12028             AC_MSG_RESULT([yes])
12029             ENABLE_SKIA_DEBUG=
12030         fi
12031         ENABLE_SKIA=TRUE
12032         AC_DEFINE(HAVE_FEATURE_SKIA)
12033         BUILD_TYPE="$BUILD_TYPE SKIA"
12035         if test "$OS" = "MACOSX"; then
12036             AC_DEFINE(SK_SUPPORT_GPU,1)
12037             AC_DEFINE(SK_METAL,1)
12038             SKIA_GPU=METAL
12039             AC_SUBST(SKIA_GPU)
12040         else
12041             AC_DEFINE(SK_SUPPORT_GPU,1)
12042             AC_DEFINE(SK_VULKAN,1)
12043             SKIA_GPU=VULKAN
12044             AC_SUBST(SKIA_GPU)
12045         fi
12047         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12048             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12049             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12050         fi
12051     else
12052         AC_MSG_RESULT([no (freetype too old)])
12053         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12054     fi
12056 else
12057     AC_MSG_CHECKING([whether to build Skia])
12058     AC_MSG_RESULT([no])
12060 AC_SUBST(ENABLE_SKIA)
12061 AC_SUBST(ENABLE_SKIA_DEBUG)
12063 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12064 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12065 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12066 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12067 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12068 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12069 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12070 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12071 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12072 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12073 HAVE_LO_CLANG_DLLEXPORTINLINES=
12075 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12076     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12077         AC_MSG_CHECKING([for Clang])
12078         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12079     else
12080         if test "$_os" = "WINNT"; then
12081             AC_MSG_CHECKING([for clang-cl])
12082             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12083                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12084                 dnl explicitly set -m32/-m64
12085                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12086                 LO_CLANG_CXX="$LO_CLANG_CC"
12087                 AC_MSG_RESULT([$LO_CLANG_CC])
12088             else
12089                 AC_MSG_RESULT([no])
12090             fi
12091         else
12092             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12093             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12094         fi
12095     fi
12096     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12097         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12098         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12099         if test "$clang2_ver" -lt 50002; then
12100             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12101             LO_CLANG_CC=
12102             LO_CLANG_CXX=
12103         fi
12104     fi
12105     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12106         save_CXX="$CXX"
12107         CXX="$LO_CLANG_CXX"
12108         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12109         AC_LANG_PUSH([C++])
12110         save_CXXFLAGS=$CXXFLAGS
12111         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12112         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12113                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12114                 AC_MSG_RESULT([yes])
12115             ], [AC_MSG_RESULT([no])])
12116         CXXFLAGS=$save_CXXFLAGS
12117         AC_LANG_POP([C++])
12118         CXX="$save_CXX"
12119         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12120             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.])
12121         fi
12122     fi
12123     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12124         # Skia is the default on Windows and Mac, so hard-require Clang.
12125         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12126         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12127             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12128         else
12129             AC_MSG_WARN([Clang compiler not found.])
12130         fi
12131     else
12133         save_CXX="$CXX"
12134         CXX="$LO_CLANG_CXX"
12135         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12136         flag_sse2=-msse2
12137         flag_ssse3=-mssse3
12138         flag_sse41=-msse4.1
12139         flag_sse42=-msse4.2
12140         flag_avx=-mavx
12141         flag_avx2=-mavx2
12142         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12143         flag_avx512f=-mavx512f
12144         flag_f16c=-mf16c
12145         flag_fma=-mfma
12147         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12148         AC_LANG_PUSH([C++])
12149         save_CXXFLAGS=$CXXFLAGS
12150         CXXFLAGS="$CXXFLAGS $flag_sse2"
12151         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12152             #include <emmintrin.h>
12153             int main () {
12154                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12155                 c = _mm_xor_si128 (a, b);
12156                 return 0;
12157             }
12158             ])],
12159             [can_compile_sse2=yes],
12160             [can_compile_sse2=no])
12161         AC_LANG_POP([C++])
12162         CXXFLAGS=$save_CXXFLAGS
12163         AC_MSG_RESULT([${can_compile_sse2}])
12164         if test "${can_compile_sse2}" = "yes" ; then
12165             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12166         fi
12168         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12169         AC_LANG_PUSH([C++])
12170         save_CXXFLAGS=$CXXFLAGS
12171         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12172         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12173             #include <tmmintrin.h>
12174             int main () {
12175                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12176                 c = _mm_maddubs_epi16 (a, b);
12177                 return 0;
12178             }
12179             ])],
12180             [can_compile_ssse3=yes],
12181             [can_compile_ssse3=no])
12182         AC_LANG_POP([C++])
12183         CXXFLAGS=$save_CXXFLAGS
12184         AC_MSG_RESULT([${can_compile_ssse3}])
12185         if test "${can_compile_ssse3}" = "yes" ; then
12186             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12187         fi
12189         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12190         AC_LANG_PUSH([C++])
12191         save_CXXFLAGS=$CXXFLAGS
12192         CXXFLAGS="$CXXFLAGS $flag_sse41"
12193         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12194             #include <smmintrin.h>
12195             int main () {
12196                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12197                 c = _mm_cmpeq_epi64 (a, b);
12198                 return 0;
12199             }
12200             ])],
12201             [can_compile_sse41=yes],
12202             [can_compile_sse41=no])
12203         AC_LANG_POP([C++])
12204         CXXFLAGS=$save_CXXFLAGS
12205         AC_MSG_RESULT([${can_compile_sse41}])
12206         if test "${can_compile_sse41}" = "yes" ; then
12207             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12208         fi
12210         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12211         AC_LANG_PUSH([C++])
12212         save_CXXFLAGS=$CXXFLAGS
12213         CXXFLAGS="$CXXFLAGS $flag_sse42"
12214         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12215             #include <nmmintrin.h>
12216             int main () {
12217                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12218                 c = _mm_cmpgt_epi64 (a, b);
12219                 return 0;
12220             }
12221             ])],
12222             [can_compile_sse42=yes],
12223             [can_compile_sse42=no])
12224         AC_LANG_POP([C++])
12225         CXXFLAGS=$save_CXXFLAGS
12226         AC_MSG_RESULT([${can_compile_sse42}])
12227         if test "${can_compile_sse42}" = "yes" ; then
12228             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12229         fi
12231         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12232         AC_LANG_PUSH([C++])
12233         save_CXXFLAGS=$CXXFLAGS
12234         CXXFLAGS="$CXXFLAGS $flag_avx"
12235         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12236             #include <immintrin.h>
12237             int main () {
12238                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12239                 c = _mm256_xor_ps(a, b);
12240                 return 0;
12241             }
12242             ])],
12243             [can_compile_avx=yes],
12244             [can_compile_avx=no])
12245         AC_LANG_POP([C++])
12246         CXXFLAGS=$save_CXXFLAGS
12247         AC_MSG_RESULT([${can_compile_avx}])
12248         if test "${can_compile_avx}" = "yes" ; then
12249             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12250         fi
12252         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12253         AC_LANG_PUSH([C++])
12254         save_CXXFLAGS=$CXXFLAGS
12255         CXXFLAGS="$CXXFLAGS $flag_avx2"
12256         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12257             #include <immintrin.h>
12258             int main () {
12259                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12260                 c = _mm256_maddubs_epi16(a, b);
12261                 return 0;
12262             }
12263             ])],
12264             [can_compile_avx2=yes],
12265             [can_compile_avx2=no])
12266         AC_LANG_POP([C++])
12267         CXXFLAGS=$save_CXXFLAGS
12268         AC_MSG_RESULT([${can_compile_avx2}])
12269         if test "${can_compile_avx2}" = "yes" ; then
12270             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12271         fi
12273         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12274         AC_LANG_PUSH([C++])
12275         save_CXXFLAGS=$CXXFLAGS
12276         CXXFLAGS="$CXXFLAGS $flag_avx512"
12277         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12278             #include <immintrin.h>
12279             int main () {
12280                 __m512i a = _mm512_loadu_si512(0);
12281                 __m512d v1 = _mm512_load_pd(0);
12282                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12283                 __m512d v2 = _mm512_abs_pd(v1);
12284                 return 0;
12285             }
12286             ])],
12287             [can_compile_avx512=yes],
12288             [can_compile_avx512=no])
12289         AC_LANG_POP([C++])
12290         CXXFLAGS=$save_CXXFLAGS
12291         AC_MSG_RESULT([${can_compile_avx512}])
12292         if test "${can_compile_avx512}" = "yes" ; then
12293             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12294             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12295         fi
12297         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12298         AC_LANG_PUSH([C++])
12299         save_CXXFLAGS=$CXXFLAGS
12300         CXXFLAGS="$CXXFLAGS $flag_f16c"
12301         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12302             #include <immintrin.h>
12303             int main () {
12304                 __m128i a = _mm_set1_epi32 (0);
12305                 __m128 c;
12306                 c = _mm_cvtph_ps(a);
12307                 return 0;
12308             }
12309             ])],
12310             [can_compile_f16c=yes],
12311             [can_compile_f16c=no])
12312         AC_LANG_POP([C++])
12313         CXXFLAGS=$save_CXXFLAGS
12314         AC_MSG_RESULT([${can_compile_f16c}])
12315         if test "${can_compile_f16c}" = "yes" ; then
12316             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12317         fi
12319         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12320         AC_LANG_PUSH([C++])
12321         save_CXXFLAGS=$CXXFLAGS
12322         CXXFLAGS="$CXXFLAGS $flag_fma"
12323         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12324             #include <immintrin.h>
12325             int main () {
12326                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12327                 d = _mm256_fmadd_ps(a, b, c);
12328                 return 0;
12329             }
12330             ])],
12331             [can_compile_fma=yes],
12332             [can_compile_fma=no])
12333         AC_LANG_POP([C++])
12334         CXXFLAGS=$save_CXXFLAGS
12335         AC_MSG_RESULT([${can_compile_fma}])
12336         if test "${can_compile_fma}" = "yes" ; then
12337             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12338         fi
12340         CXX="$save_CXX"
12341     fi
12344 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12346 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12347     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12348     AC_LANG_PUSH([C])
12349     save_CC="$CC"
12350     CC="$LO_CLANG_CC"
12351     save_CFLAGS=$CFLAGS
12352     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12353     dnl an empty program will do, we're checking the compiler flags
12354     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12355                       [use_ccache=yes], [use_ccache=no])
12356     CFLAGS=$save_CFLAGS
12357     CC=$save_CC
12358     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12359         AC_MSG_RESULT([yes])
12360     else
12361         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12362         AC_MSG_RESULT([no])
12363     fi
12364     AC_LANG_POP([C])
12366     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12367     AC_LANG_PUSH([C++])
12368     save_CXX="$CXX"
12369     CXX="$LO_CLANG_CXX"
12370     save_CXXFLAGS=$CXXFLAGS
12371     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12372     dnl an empty program will do, we're checking the compiler flags
12373     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12374                       [use_ccache=yes], [use_ccache=no])
12375     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12376         AC_MSG_RESULT([yes])
12377     else
12378         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12379         AC_MSG_RESULT([no])
12380     fi
12381     CXXFLAGS=$save_CXXFLAGS
12382     CXX=$save_CXX
12383     AC_LANG_POP([C++])
12386 AC_SUBST(LO_CLANG_CC)
12387 AC_SUBST(LO_CLANG_CXX)
12388 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12389 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12390 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12391 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12392 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12393 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12394 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12395 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12396 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12397 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12398 AC_SUBST(CLANG_USE_LD)
12399 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12401 SYSTEM_GPGMEPP=
12403 if test "$enable_gpgmepp" = no; then
12404     AC_MSG_CHECKING([whether to enable gpgmepp])
12405     AC_MSG_RESULT([no])
12406 elif test "$enable_mpl_subset" = "yes"; then
12407     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12408     AC_MSG_RESULT([yes])
12409 elif test "$enable_fuzzers" = "yes"; then
12410     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12411     AC_MSG_RESULT([yes])
12412 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12413     dnl ===================================================================
12414     dnl Check for system gpgme
12415     dnl ===================================================================
12416     AC_MSG_CHECKING([which gpgmepp to use])
12417     if test "$with_system_gpgmepp" = "yes"; then
12418         AC_MSG_RESULT([external])
12419         SYSTEM_GPGMEPP=TRUE
12421         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12422         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12423             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12424         # progress_callback is the only func with plain C linkage
12425         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12426         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12427             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12428         AC_CHECK_HEADER(gpgme.h, [],
12429             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12430     else
12431         AC_MSG_RESULT([internal])
12432         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12433         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12435         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12436         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12437         if test "$_os" != "WINNT"; then
12438             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12439             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12440         fi
12441     fi
12442     ENABLE_GPGMEPP=TRUE
12443     AC_DEFINE([HAVE_FEATURE_GPGME])
12444     AC_PATH_PROG(GPG, gpg)
12445     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12446     # so let's exclude that manually for the moment
12447     if test -n "$GPG" -a "$_os" != "WINNT"; then
12448         # make sure we not only have a working gpgme, but a full working
12449         # gpg installation to run OpenPGP signature verification
12450         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12451     fi
12452     if test "$_os" = "Linux"; then
12453       uid=`id -u`
12454       AC_MSG_CHECKING([for /run/user/$uid])
12455       if test -d /run/user/$uid; then
12456         AC_MSG_RESULT([yes])
12457         AC_PATH_PROG(GPGCONF, gpgconf)
12459         # Older versions of gpgconf are not working as expected, since
12460         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12461         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12462         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12463         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12464         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12465         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12466         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12467           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12468           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12469           if $GPGCONF --dump-options > /dev/null ; then
12470             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12471               AC_MSG_RESULT([yes])
12472               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12473               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12474             else
12475               AC_MSG_RESULT([no])
12476             fi
12477           else
12478             AC_MSG_RESULT([no. missing or broken gpgconf?])
12479           fi
12480         else
12481           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12482         fi
12483       else
12484         AC_MSG_RESULT([no])
12485      fi
12486    fi
12488 AC_SUBST(ENABLE_GPGMEPP)
12489 AC_SUBST(SYSTEM_GPGMEPP)
12490 AC_SUBST(GPG_ERROR_CFLAGS)
12491 AC_SUBST(GPG_ERROR_LIBS)
12492 AC_SUBST(LIBASSUAN_CFLAGS)
12493 AC_SUBST(LIBASSUAN_LIBS)
12494 AC_SUBST(GPGMEPP_CFLAGS)
12495 AC_SUBST(GPGMEPP_LIBS)
12497 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12498 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12499     AC_MSG_RESULT([yes])
12500     ENABLE_MEDIAWIKI=TRUE
12501     BUILD_TYPE="$BUILD_TYPE XSLTML"
12502     if test  "x$with_java" = "xno"; then
12503         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12504     fi
12505 else
12506     AC_MSG_RESULT([no])
12507     ENABLE_MEDIAWIKI=
12508     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12510 AC_SUBST(ENABLE_MEDIAWIKI)
12512 AC_MSG_CHECKING([whether to build the Report Builder])
12513 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12514     AC_MSG_RESULT([yes])
12515     ENABLE_REPORTBUILDER=TRUE
12516     AC_MSG_CHECKING([which jfreereport libs to use])
12517     if test "$with_system_jfreereport" = "yes"; then
12518         SYSTEM_JFREEREPORT=TRUE
12519         AC_MSG_RESULT([external])
12520         if test -z $SAC_JAR; then
12521             SAC_JAR=/usr/share/java/sac.jar
12522         fi
12523         if ! test -f $SAC_JAR; then
12524              AC_MSG_ERROR(sac.jar not found.)
12525         fi
12527         if test -z $LIBXML_JAR; then
12528             if test -f /usr/share/java/libxml-1.0.0.jar; then
12529                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12530             elif test -f /usr/share/java/libxml.jar; then
12531                 LIBXML_JAR=/usr/share/java/libxml.jar
12532             else
12533                 AC_MSG_ERROR(libxml.jar replacement not found.)
12534             fi
12535         elif ! test -f $LIBXML_JAR; then
12536             AC_MSG_ERROR(libxml.jar not found.)
12537         fi
12539         if test -z $FLUTE_JAR; then
12540             if test -f /usr/share/java/flute-1.3.0.jar; then
12541                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12542             elif test -f /usr/share/java/flute.jar; then
12543                 FLUTE_JAR=/usr/share/java/flute.jar
12544             else
12545                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12546             fi
12547         elif ! test -f $FLUTE_JAR; then
12548             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12549         fi
12551         if test -z $JFREEREPORT_JAR; then
12552             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12553                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12554             elif test -f /usr/share/java/flow-engine.jar; then
12555                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12556             else
12557                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12558             fi
12559         elif ! test -f  $JFREEREPORT_JAR; then
12560                 AC_MSG_ERROR(jfreereport.jar not found.)
12561         fi
12563         if test -z $LIBLAYOUT_JAR; then
12564             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12565                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12566             elif test -f /usr/share/java/liblayout.jar; then
12567                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12568             else
12569                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12570             fi
12571         elif ! test -f $LIBLAYOUT_JAR; then
12572                 AC_MSG_ERROR(liblayout.jar not found.)
12573         fi
12575         if test -z $LIBLOADER_JAR; then
12576             if test -f /usr/share/java/libloader-1.0.0.jar; then
12577                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12578             elif test -f /usr/share/java/libloader.jar; then
12579                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12580             else
12581                 AC_MSG_ERROR(libloader.jar replacement not found.)
12582             fi
12583         elif ! test -f  $LIBLOADER_JAR; then
12584             AC_MSG_ERROR(libloader.jar not found.)
12585         fi
12587         if test -z $LIBFORMULA_JAR; then
12588             if test -f /usr/share/java/libformula-0.2.0.jar; then
12589                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12590             elif test -f /usr/share/java/libformula.jar; then
12591                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12592             else
12593                 AC_MSG_ERROR(libformula.jar replacement not found.)
12594             fi
12595         elif ! test -f $LIBFORMULA_JAR; then
12596                 AC_MSG_ERROR(libformula.jar not found.)
12597         fi
12599         if test -z $LIBREPOSITORY_JAR; then
12600             if test -f /usr/share/java/librepository-1.0.0.jar; then
12601                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12602             elif test -f /usr/share/java/librepository.jar; then
12603                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12604             else
12605                 AC_MSG_ERROR(librepository.jar replacement not found.)
12606             fi
12607         elif ! test -f $LIBREPOSITORY_JAR; then
12608             AC_MSG_ERROR(librepository.jar not found.)
12609         fi
12611         if test -z $LIBFONTS_JAR; then
12612             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12613                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12614             elif test -f /usr/share/java/libfonts.jar; then
12615                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12616             else
12617                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12618             fi
12619         elif ! test -f $LIBFONTS_JAR; then
12620                 AC_MSG_ERROR(libfonts.jar not found.)
12621         fi
12623         if test -z $LIBSERIALIZER_JAR; then
12624             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12625                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12626             elif test -f /usr/share/java/libserializer.jar; then
12627                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12628             else
12629                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12630             fi
12631         elif ! test -f $LIBSERIALIZER_JAR; then
12632                 AC_MSG_ERROR(libserializer.jar not found.)
12633         fi
12635         if test -z $LIBBASE_JAR; then
12636             if test -f /usr/share/java/libbase-1.0.0.jar; then
12637                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12638             elif test -f /usr/share/java/libbase.jar; then
12639                 LIBBASE_JAR=/usr/share/java/libbase.jar
12640             else
12641                 AC_MSG_ERROR(libbase.jar replacement not found.)
12642             fi
12643         elif ! test -f $LIBBASE_JAR; then
12644             AC_MSG_ERROR(libbase.jar not found.)
12645         fi
12647     else
12648         AC_MSG_RESULT([internal])
12649         SYSTEM_JFREEREPORT=
12650         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12651         NEED_ANT=TRUE
12652     fi
12653 else
12654     AC_MSG_RESULT([no])
12655     ENABLE_REPORTBUILDER=
12656     SYSTEM_JFREEREPORT=
12658 AC_SUBST(ENABLE_REPORTBUILDER)
12659 AC_SUBST(SYSTEM_JFREEREPORT)
12660 AC_SUBST(SAC_JAR)
12661 AC_SUBST(LIBXML_JAR)
12662 AC_SUBST(FLUTE_JAR)
12663 AC_SUBST(JFREEREPORT_JAR)
12664 AC_SUBST(LIBBASE_JAR)
12665 AC_SUBST(LIBLAYOUT_JAR)
12666 AC_SUBST(LIBLOADER_JAR)
12667 AC_SUBST(LIBFORMULA_JAR)
12668 AC_SUBST(LIBREPOSITORY_JAR)
12669 AC_SUBST(LIBFONTS_JAR)
12670 AC_SUBST(LIBSERIALIZER_JAR)
12672 # scripting provider for BeanShell?
12673 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12674 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12675     AC_MSG_RESULT([yes])
12676     ENABLE_SCRIPTING_BEANSHELL=TRUE
12678     dnl ===================================================================
12679     dnl Check for system beanshell
12680     dnl ===================================================================
12681     AC_MSG_CHECKING([which beanshell to use])
12682     if test "$with_system_beanshell" = "yes"; then
12683         AC_MSG_RESULT([external])
12684         SYSTEM_BSH=TRUE
12685         if test -z $BSH_JAR; then
12686             BSH_JAR=/usr/share/java/bsh.jar
12687         fi
12688         if ! test -f $BSH_JAR; then
12689             AC_MSG_ERROR(bsh.jar not found.)
12690         fi
12691     else
12692         AC_MSG_RESULT([internal])
12693         SYSTEM_BSH=
12694         BUILD_TYPE="$BUILD_TYPE BSH"
12695     fi
12696 else
12697     AC_MSG_RESULT([no])
12698     ENABLE_SCRIPTING_BEANSHELL=
12699     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12701 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12702 AC_SUBST(SYSTEM_BSH)
12703 AC_SUBST(BSH_JAR)
12705 # scripting provider for JavaScript?
12706 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12707 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12708     AC_MSG_RESULT([yes])
12709     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12711     dnl ===================================================================
12712     dnl Check for system rhino
12713     dnl ===================================================================
12714     AC_MSG_CHECKING([which rhino to use])
12715     if test "$with_system_rhino" = "yes"; then
12716         AC_MSG_RESULT([external])
12717         SYSTEM_RHINO=TRUE
12718         if test -z $RHINO_JAR; then
12719             RHINO_JAR=/usr/share/java/js.jar
12720         fi
12721         if ! test -f $RHINO_JAR; then
12722             AC_MSG_ERROR(js.jar not found.)
12723         fi
12724     else
12725         AC_MSG_RESULT([internal])
12726         SYSTEM_RHINO=
12727         BUILD_TYPE="$BUILD_TYPE RHINO"
12728         NEED_ANT=TRUE
12729     fi
12730 else
12731     AC_MSG_RESULT([no])
12732     ENABLE_SCRIPTING_JAVASCRIPT=
12733     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12735 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12736 AC_SUBST(SYSTEM_RHINO)
12737 AC_SUBST(RHINO_JAR)
12739 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12740 # paths should be added to library search path. So lets put all 64-bit
12741 # platforms there.
12742 supports_multilib=
12743 case "$host_cpu" in
12744 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12745     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12746         supports_multilib="yes"
12747     fi
12748     ;;
12750     ;;
12751 esac
12753 dnl ===================================================================
12754 dnl QT5 Integration
12755 dnl ===================================================================
12757 QT5_CFLAGS=""
12758 QT5_LIBS=""
12759 QMAKE5="qmake"
12760 MOC5="moc"
12761 QT5_GOBJECT_CFLAGS=""
12762 QT5_GOBJECT_LIBS=""
12763 QT5_HAVE_GOBJECT=""
12764 QT5_PLATFORMS_SRCDIR=""
12765 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12766         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12767         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12768 then
12769     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12770     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12772     if test -n "$supports_multilib"; then
12773         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12774     fi
12776     qt5_test_include="QtWidgets/qapplication.h"
12777     if test "$_os" = "Emscripten"; then
12778         qt5_test_library="libQt5Widgets.a"
12779     else
12780         qt5_test_library="libQt5Widgets.so"
12781     fi
12783     dnl Check for qmake5
12784     if test -n "$QT5DIR"; then
12785         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12786     else
12787         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12788     fi
12789     if test "$QMAKE5" = "no"; then
12790         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12791     else
12792         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12793         if test -z "$qmake5_test_ver"; then
12794             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12795         fi
12796         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12797         qt5_minimal_minor="6"
12798         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12799             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12800         else
12801             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12802         fi
12803     fi
12805     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12806     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12807     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12808     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12810     AC_MSG_CHECKING([for Qt5 headers])
12811     qt5_incdir="no"
12812     for inc_dir in $qt5_incdirs; do
12813         if test -r "$inc_dir/$qt5_test_include"; then
12814             qt5_incdir="$inc_dir"
12815             break
12816         fi
12817     done
12818     AC_MSG_RESULT([$qt5_incdir])
12819     if test "x$qt5_incdir" = "xno"; then
12820         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12821     fi
12822     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12823     AC_LANG_PUSH([C++])
12824     save_CPPFLAGS=$CPPFLAGS
12825     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12826     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12827         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12828     CPPFLAGS=$save_CPPFLAGS
12829     AC_LANG_POP([C++])
12831     AC_MSG_CHECKING([for Qt5 libraries])
12832     qt5_libdir="no"
12833     for lib_dir in $qt5_libdirs; do
12834         if test -r "$lib_dir/$qt5_test_library"; then
12835             qt5_libdir="$lib_dir"
12836             break
12837         fi
12838     done
12839     AC_MSG_RESULT([$qt5_libdir])
12840     if test "x$qt5_libdir" = "xno"; then
12841         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12842     fi
12844     if test "$_os" = "Emscripten"; then
12845         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12846             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12847         fi
12848         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12849             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12850         fi
12851     fi
12853     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12854     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12855     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12856     if test "$_os" = "Emscripten"; then
12857         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12858     fi
12860     if test "$USING_X11" = TRUE; then
12861         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12862         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12863             QT5_HAVE_XCB_ICCCM=1
12864             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12865         ],[
12866             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)])
12867             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12868         ])
12869         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12870         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12871         QT5_USING_X11=1
12872         AC_DEFINE(QT5_USING_X11)
12873     fi
12875     dnl Check for Meta Object Compiler
12877     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12878     if test "$MOC5" = "no"; then
12879         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12880 the root of your Qt installation by exporting QT5DIR before running "configure".])
12881     fi
12883     if test "$test_gstreamer_1_0" = yes; then
12884         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12885                 QT5_HAVE_GOBJECT=1
12886                 AC_DEFINE(QT5_HAVE_GOBJECT)
12887             ],
12888             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12889         )
12890     fi
12892 AC_SUBST(QT5_CFLAGS)
12893 AC_SUBST(QT5_LIBS)
12894 AC_SUBST(MOC5)
12895 AC_SUBST(QT5_GOBJECT_CFLAGS)
12896 AC_SUBST(QT5_GOBJECT_LIBS)
12897 AC_SUBST(QT5_HAVE_GOBJECT)
12898 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12900 dnl ===================================================================
12901 dnl QT6 Integration
12902 dnl ===================================================================
12904 QT6_CFLAGS=""
12905 QT6_LIBS=""
12906 QMAKE6="qmake"
12907 MOC6="moc"
12908 QT6_PLATFORMS_SRCDIR=""
12909 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12910 then
12911     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12912     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12914     if test -n "$supports_multilib"; then
12915         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12916     fi
12918     qt6_test_include="QtWidgets/qapplication.h"
12919     if test "$_os" = "Emscripten"; then
12920         qt6_test_library="libQt6Widgets.a"
12921     else
12922         qt6_test_library="libQt6Widgets.so"
12923     fi
12925     dnl Check for qmake6
12926     if test -n "$QT6DIR"; then
12927         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12928     else
12929         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12930     fi
12931     if test "$QMAKE6" = "no"; then
12932         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12933     else
12934         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12935         if test -z "$qmake6_test_ver"; then
12936             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12937         fi
12938         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12939     fi
12941     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12942     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12943     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12944     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12946     AC_MSG_CHECKING([for Qt6 headers])
12947     qt6_incdir="no"
12948     for inc_dir in $qt6_incdirs; do
12949         if test -r "$inc_dir/$qt6_test_include"; then
12950             qt6_incdir="$inc_dir"
12951             break
12952         fi
12953     done
12954     AC_MSG_RESULT([$qt6_incdir])
12955     if test "x$qt6_incdir" = "xno"; then
12956         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12957     fi
12958     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12959     AC_LANG_PUSH([C++])
12960     save_CPPFLAGS=$CPPFLAGS
12961     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12962     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12963         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12964     CPPFLAGS=$save_CPPFLAGS
12965     AC_LANG_POP([C++])
12967     AC_MSG_CHECKING([for Qt6 libraries])
12968     qt6_libdir="no"
12969     for lib_dir in $qt6_libdirs; do
12970         if test -r "$lib_dir/$qt6_test_library"; then
12971             qt6_libdir="$lib_dir"
12972             break
12973         fi
12974     done
12975     AC_MSG_RESULT([$qt6_libdir])
12976     if test "x$qt6_libdir" = "xno"; then
12977         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12978     fi
12980     if test "$_os" = "Emscripten"; then
12981         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12982             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12983         fi
12984         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12985             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12986         fi
12987     fi
12989     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12990     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12991     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12992     if test "$_os" = "Emscripten"; then
12993         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12994     fi
12996     if test "$USING_X11" = TRUE; then
12997         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12998         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12999         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13000         QT6_USING_X11=1
13001         AC_DEFINE(QT6_USING_X11)
13002     fi
13004     dnl Check for Meta Object Compiler
13006     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13007     if test "$MOC6" = "no"; then
13008         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13009 the root of your Qt installation by exporting QT6DIR before running "configure".])
13010     fi
13012 AC_SUBST(QT6_CFLAGS)
13013 AC_SUBST(QT6_LIBS)
13014 AC_SUBST(MOC6)
13015 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13017 dnl ===================================================================
13018 dnl KF5 Integration
13019 dnl ===================================================================
13021 KF5_CFLAGS=""
13022 KF5_LIBS=""
13023 KF5_CONFIG="kf5-config"
13024 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13025         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13026 then
13027     if test "$OS" = "HAIKU"; then
13028         haiku_arch="`echo $RTL_ARCH | tr X x`"
13029         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13030         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13031     fi
13033     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13034     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13035     if test -n "$supports_multilib"; then
13036         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13037     fi
13039     kf5_test_include="KF5/kcoreaddons_version.h"
13040     kf5_test_library="libKF5CoreAddons.so"
13041     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13043     dnl kf5 KDE4 support compatibility installed
13044     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13045     if test "$KF5_CONFIG" != "no"; then
13046         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13047         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13048     fi
13050     dnl Check for KF5 headers
13051     AC_MSG_CHECKING([for KF5 headers])
13052     kf5_incdir="no"
13053     for kf5_check in $kf5_incdirs; do
13054         if test -r "$kf5_check/$kf5_test_include"; then
13055             kf5_incdir="$kf5_check/KF5"
13056             break
13057         fi
13058     done
13059     AC_MSG_RESULT([$kf5_incdir])
13060     if test "x$kf5_incdir" = "xno"; then
13061         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13062     fi
13064     dnl Check for KF5 libraries
13065     AC_MSG_CHECKING([for KF5 libraries])
13066     kf5_libdir="no"
13067     for kf5_check in $kf5_libdirs; do
13068         if test -r "$kf5_check/$kf5_test_library"; then
13069             kf5_libdir="$kf5_check"
13070             break
13071         fi
13072     done
13074     AC_MSG_RESULT([$kf5_libdir])
13075     if test "x$kf5_libdir" = "xno"; then
13076         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13077     fi
13079     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"
13080     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13081     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13083     if test "$USING_X11" = TRUE; then
13084         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13085     fi
13087     AC_LANG_PUSH([C++])
13088     save_CXXFLAGS=$CXXFLAGS
13089     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13090     AC_MSG_CHECKING([whether KDE is >= 5.0])
13091        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13092 #include <kcoreaddons_version.h>
13094 int main(int argc, char **argv) {
13095        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13096        else return 1;
13098        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13099     CXXFLAGS=$save_CXXFLAGS
13100     AC_LANG_POP([C++])
13102 AC_SUBST(KF5_CFLAGS)
13103 AC_SUBST(KF5_LIBS)
13105 dnl ===================================================================
13106 dnl Test whether to include Evolution 2 support
13107 dnl ===================================================================
13108 AC_MSG_CHECKING([whether to enable evolution 2 support])
13109 if test "$enable_evolution2" = yes; then
13110     AC_MSG_RESULT([yes])
13111     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13112     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13113     FilterLibs "${GOBJECT_LIBS}"
13114     GOBJECT_LIBS="${filteredlibs}"
13115     ENABLE_EVOAB2="TRUE"
13116 else
13117     AC_MSG_RESULT([no])
13119 AC_SUBST(ENABLE_EVOAB2)
13120 AC_SUBST(GOBJECT_CFLAGS)
13121 AC_SUBST(GOBJECT_LIBS)
13123 dnl ===================================================================
13124 dnl Test which themes to include
13125 dnl ===================================================================
13126 AC_MSG_CHECKING([which themes to include])
13127 # if none given use default subset of available themes
13128 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13129     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"
13132 WITH_THEMES=""
13133 if test "x$with_theme" != "xno"; then
13134     for theme in $with_theme; do
13135         case $theme in
13136         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" ;;
13137         default) real_theme=colibre ;;
13138         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13139         esac
13140         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13141     done
13143 AC_MSG_RESULT([$WITH_THEMES])
13144 AC_SUBST([WITH_THEMES])
13145 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13146 for theme in $with_theme; do
13147     case $theme in
13148     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13149     *) ;;
13150     esac
13151 done
13153 ###############################################################################
13154 # Extensions checking
13155 ###############################################################################
13156 AC_MSG_CHECKING([for extensions integration])
13157 if test "x$enable_extension_integration" != "xno"; then
13158     WITH_EXTENSION_INTEGRATION=TRUE
13159     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13160     AC_MSG_RESULT([yes, use integration])
13161 else
13162     WITH_EXTENSION_INTEGRATION=
13163     AC_MSG_RESULT([no, do not integrate])
13165 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13167 dnl Should any extra extensions be included?
13168 dnl There are standalone tests for each of these below.
13169 WITH_EXTRA_EXTENSIONS=
13170 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13172 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13173 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13174 if test "x$with_java" != "xno"; then
13175     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13176     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13179 AC_MSG_CHECKING([whether to build opens___.ttf])
13180 if test "$enable_build_opensymbol" = "yes"; then
13181     AC_MSG_RESULT([yes])
13182     AC_PATH_PROG(FONTFORGE, fontforge)
13183     if test -z "$FONTFORGE"; then
13184         AC_MSG_ERROR([fontforge not installed])
13185     fi
13186 else
13187     AC_MSG_RESULT([no])
13188     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13190 AC_SUBST(FONTFORGE)
13192 dnl ===================================================================
13193 dnl Test whether to include fonts
13194 dnl ===================================================================
13195 AC_MSG_CHECKING([whether to include third-party fonts])
13196 if test "$with_fonts" != "no"; then
13197     AC_MSG_RESULT([yes])
13198     WITH_FONTS=TRUE
13199     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13200     AC_DEFINE(HAVE_MORE_FONTS)
13201 else
13202     AC_MSG_RESULT([no])
13203     WITH_FONTS=
13204     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13206 AC_SUBST(WITH_FONTS)
13209 dnl ===================================================================
13210 dnl Test whether to enable online update service
13211 dnl ===================================================================
13212 AC_MSG_CHECKING([whether to enable online update])
13213 ENABLE_ONLINE_UPDATE=
13214 ENABLE_ONLINE_UPDATE_MAR=
13215 UPDATE_CONFIG=
13216 if test "$enable_online_update" = ""; then
13217     AC_MSG_RESULT([no])
13218 else
13219     if test "$enable_online_update" = "mar"; then
13220         AC_MSG_RESULT([yes - MAR-based online update])
13221         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13222         if test "$with_update_config" = ""; then
13223             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13224         fi
13225         UPDATE_CONFIG="$with_update_config"
13226         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13227     elif test "$enable_online_update" = "yes"; then
13228         AC_MSG_RESULT([yes])
13229         ENABLE_ONLINE_UPDATE="TRUE"
13230     else
13231         AC_MSG_RESULT([no])
13232     fi
13234 AC_SUBST(ENABLE_ONLINE_UPDATE)
13235 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13236 AC_SUBST(UPDATE_CONFIG)
13239 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13240 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13241     if test "x$with_privacy_policy_url" = "xundefined"; then
13242         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13243     fi
13245 AC_SUBST(PRIVACY_POLICY_URL)
13246 dnl ===================================================================
13247 dnl Test whether we need bzip2
13248 dnl ===================================================================
13249 SYSTEM_BZIP2=
13250 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13251     AC_MSG_CHECKING([whether to use system bzip2])
13252     if test "$with_system_bzip2" = yes; then
13253         SYSTEM_BZIP2=TRUE
13254         AC_MSG_RESULT([yes])
13255         PKG_CHECK_MODULES(BZIP2, bzip2)
13256         FilterLibs "${BZIP2_LIBS}"
13257         BZIP2_LIBS="${filteredlibs}"
13258     else
13259         AC_MSG_RESULT([no])
13260         BUILD_TYPE="$BUILD_TYPE BZIP2"
13261     fi
13263 AC_SUBST(SYSTEM_BZIP2)
13264 AC_SUBST(BZIP2_CFLAGS)
13265 AC_SUBST(BZIP2_LIBS)
13267 dnl ===================================================================
13268 dnl Test whether to enable extension update
13269 dnl ===================================================================
13270 AC_MSG_CHECKING([whether to enable extension update])
13271 ENABLE_EXTENSION_UPDATE=
13272 if test "x$enable_extension_update" = "xno"; then
13273     AC_MSG_RESULT([no])
13274 else
13275     AC_MSG_RESULT([yes])
13276     ENABLE_EXTENSION_UPDATE="TRUE"
13277     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13278     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13280 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13283 dnl ===================================================================
13284 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13285 dnl ===================================================================
13286 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13287 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13288     AC_MSG_RESULT([no])
13289     ENABLE_SILENT_MSI=
13290 else
13291     AC_MSG_RESULT([yes])
13292     ENABLE_SILENT_MSI=TRUE
13293     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13295 AC_SUBST(ENABLE_SILENT_MSI)
13297 AC_MSG_CHECKING([whether and how to use Xinerama])
13298 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13299     if test "$x_libraries" = "default_x_libraries"; then
13300         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13301         if test "x$XINERAMALIB" = x; then
13302            XINERAMALIB="/usr/lib"
13303         fi
13304     else
13305         XINERAMALIB="$x_libraries"
13306     fi
13307     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13308         # we have both versions, let the user decide but use the dynamic one
13309         # per default
13310         USE_XINERAMA=TRUE
13311         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13312             XINERAMA_LINK=dynamic
13313         else
13314             XINERAMA_LINK=static
13315         fi
13316     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13317         # we have only the dynamic version
13318         USE_XINERAMA=TRUE
13319         XINERAMA_LINK=dynamic
13320     elif test -e "$XINERAMALIB/libXinerama.a"; then
13321         # static version
13322         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13323             USE_XINERAMA=TRUE
13324             XINERAMA_LINK=static
13325         else
13326             USE_XINERAMA=
13327             XINERAMA_LINK=none
13328         fi
13329     else
13330         # no Xinerama
13331         USE_XINERAMA=
13332         XINERAMA_LINK=none
13333     fi
13334     if test "$USE_XINERAMA" = "TRUE"; then
13335         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13336         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13337             [AC_MSG_ERROR(Xinerama header not found.)], [])
13338         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13339         if test "x$XEXTLIB" = x; then
13340            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13341         fi
13342         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13343         if test "$_os" = "FreeBSD"; then
13344             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13345         fi
13346         if test "$_os" = "Linux"; then
13347             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13348         fi
13349         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13350             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13351     else
13352         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13353     fi
13354 else
13355     USE_XINERAMA=
13356     XINERAMA_LINK=none
13357     AC_MSG_RESULT([no])
13359 AC_SUBST(USE_XINERAMA)
13360 AC_SUBST(XINERAMA_LINK)
13362 dnl ===================================================================
13363 dnl Test whether to build cairo or rely on the system version
13364 dnl ===================================================================
13366 if test "$test_cairo" = "yes"; then
13367     AC_MSG_CHECKING([whether to use the system cairo])
13369     : ${with_system_cairo:=$with_system_libs}
13370     if test "$with_system_cairo" = "yes"; then
13371         SYSTEM_CAIRO=TRUE
13372         AC_MSG_RESULT([yes])
13374         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13375         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13376         FilterLibs "${CAIRO_LIBS}"
13377         CAIRO_LIBS="${filteredlibs}"
13379         if test "$test_xrender" = "yes"; then
13380             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13381             AC_LANG_PUSH([C])
13382             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13383 #ifdef PictStandardA8
13384 #else
13385       return fail;
13386 #endif
13387 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13389             AC_LANG_POP([C])
13390         fi
13391     else
13392         AC_MSG_RESULT([no])
13393         BUILD_TYPE="$BUILD_TYPE CAIRO"
13394     fi
13396     if test "$enable_cairo_canvas" != no; then
13397         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13398         ENABLE_CAIRO_CANVAS=TRUE
13399     fi
13402 AC_SUBST(CAIRO_CFLAGS)
13403 AC_SUBST(CAIRO_LIBS)
13404 AC_SUBST(ENABLE_CAIRO_CANVAS)
13405 AC_SUBST(SYSTEM_CAIRO)
13407 dnl ===================================================================
13408 dnl Test whether to use avahi
13409 dnl ===================================================================
13410 if test "$_os" = "WINNT"; then
13411     # Windows uses bundled mDNSResponder
13412     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13413 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13414     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13415                       [ENABLE_AVAHI="TRUE"])
13416     AC_DEFINE(HAVE_FEATURE_AVAHI)
13417     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13418     FilterLibs "${AVAHI_LIBS}"
13419     AVAHI_LIBS="${filteredlibs}"
13422 AC_SUBST(ENABLE_AVAHI)
13423 AC_SUBST(AVAHI_CFLAGS)
13424 AC_SUBST(AVAHI_LIBS)
13426 dnl ===================================================================
13427 dnl Test whether to use liblangtag
13428 dnl ===================================================================
13429 SYSTEM_LIBLANGTAG=
13430 AC_MSG_CHECKING([whether to use system liblangtag])
13431 if test "$with_system_liblangtag" = yes; then
13432     SYSTEM_LIBLANGTAG=TRUE
13433     AC_MSG_RESULT([yes])
13434     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13435     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13436     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13437     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13438     FilterLibs "${LIBLANGTAG_LIBS}"
13439     LIBLANGTAG_LIBS="${filteredlibs}"
13440 else
13441     SYSTEM_LIBLANGTAG=
13442     AC_MSG_RESULT([no])
13443     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13444     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13445     if test "$COM" = "MSC"; then
13446         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13447     else
13448         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13449     fi
13451 AC_SUBST(SYSTEM_LIBLANGTAG)
13452 AC_SUBST(LIBLANGTAG_CFLAGS)
13453 AC_SUBST(LIBLANGTAG_LIBS)
13455 dnl ===================================================================
13456 dnl Test whether to build libpng or rely on the system version
13457 dnl ===================================================================
13459 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13461 dnl ===================================================================
13462 dnl Check for runtime JVM search path
13463 dnl ===================================================================
13464 if test "$ENABLE_JAVA" != ""; then
13465     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13466     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13467         AC_MSG_RESULT([yes])
13468         if ! test -d "$with_jvm_path"; then
13469             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13470         fi
13471         if ! test -d "$with_jvm_path"jvm; then
13472             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13473         fi
13474         JVM_ONE_PATH_CHECK="$with_jvm_path"
13475         AC_SUBST(JVM_ONE_PATH_CHECK)
13476     else
13477         AC_MSG_RESULT([no])
13478     fi
13481 dnl ===================================================================
13482 dnl Test for the presence of Ant and that it works
13483 dnl ===================================================================
13485 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13486     ANT_HOME=; export ANT_HOME
13487     WITH_ANT_HOME=; export WITH_ANT_HOME
13488     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13489         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13490             if test "$_os" = "WINNT"; then
13491                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13492             else
13493                 with_ant_home="$LODE_HOME/opt/ant"
13494             fi
13495         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13496             with_ant_home="$LODE_HOME/opt/ant"
13497         fi
13498     fi
13499     if test -z "$with_ant_home"; then
13500         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13501     else
13502         if test "$_os" = "WINNT"; then
13503             # AC_PATH_PROGS needs unix path
13504             with_ant_home=`cygpath -u "$with_ant_home"`
13505         fi
13506         AbsolutePath "$with_ant_home"
13507         with_ant_home=$absolute_path
13508         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13509         WITH_ANT_HOME=$with_ant_home
13510         ANT_HOME=$with_ant_home
13511     fi
13513     if test -z "$ANT"; then
13514         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13515     else
13516         # resolve relative or absolute symlink
13517         while test -h "$ANT"; do
13518             a_cwd=`pwd`
13519             a_basename=`basename "$ANT"`
13520             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13521             cd "`dirname "$ANT"`"
13522             cd "`dirname "$a_script"`"
13523             ANT="`pwd`"/"`basename "$a_script"`"
13524             cd "$a_cwd"
13525         done
13527         AC_MSG_CHECKING([if $ANT works])
13528         mkdir -p conftest.dir
13529         a_cwd=$(pwd)
13530         cd conftest.dir
13531         cat > conftest.java << EOF
13532         public class conftest {
13533             int testmethod(int a, int b) {
13534                     return a + b;
13535             }
13536         }
13539         cat > conftest.xml << EOF
13540         <project name="conftest" default="conftest">
13541         <target name="conftest">
13542             <javac srcdir="." includes="conftest.java">
13543             </javac>
13544         </target>
13545         </project>
13548         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13549         if test $? = 0 -a -f ./conftest.class; then
13550             AC_MSG_RESULT([Ant works])
13551             if test -z "$WITH_ANT_HOME"; then
13552                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13553                 if test -z "$ANT_HOME"; then
13554                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13555                 fi
13556             else
13557                 ANT_HOME="$WITH_ANT_HOME"
13558             fi
13559         else
13560             echo "configure: Ant test failed" >&5
13561             cat conftest.java >&5
13562             cat conftest.xml >&5
13563             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13564         fi
13565         cd "$a_cwd"
13566         rm -fr conftest.dir
13567     fi
13568     if test -z "$ANT_HOME"; then
13569         ANT_HOME="NO_ANT_HOME"
13570     else
13571         PathFormat "$ANT_HOME"
13572         ANT_HOME="$formatted_path"
13573         PathFormat "$ANT"
13574         ANT="$formatted_path"
13575     fi
13577     dnl Checking for ant.jar
13578     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13579         AC_MSG_CHECKING([Ant lib directory])
13580         if test -f $ANT_HOME/lib/ant.jar; then
13581             ANT_LIB="$ANT_HOME/lib"
13582         else
13583             if test -f $ANT_HOME/ant.jar; then
13584                 ANT_LIB="$ANT_HOME"
13585             else
13586                 if test -f /usr/share/java/ant.jar; then
13587                     ANT_LIB=/usr/share/java
13588                 else
13589                     if test -f /usr/share/ant-core/lib/ant.jar; then
13590                         ANT_LIB=/usr/share/ant-core/lib
13591                     else
13592                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13593                             ANT_LIB="$ANT_HOME/lib/ant"
13594                         else
13595                             if test -f /usr/share/lib/ant/ant.jar; then
13596                                 ANT_LIB=/usr/share/lib/ant
13597                             else
13598                                 AC_MSG_ERROR([Ant libraries not found!])
13599                             fi
13600                         fi
13601                     fi
13602                 fi
13603             fi
13604         fi
13605         PathFormat "$ANT_LIB"
13606         ANT_LIB="$formatted_path"
13607         AC_MSG_RESULT([Ant lib directory found.])
13608     fi
13610     ant_minver=1.6.0
13611     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13613     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13614     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13615     ant_version_major=`echo $ant_version | cut -d. -f1`
13616     ant_version_minor=`echo $ant_version | cut -d. -f2`
13617     echo "configure: ant_version $ant_version " >&5
13618     echo "configure: ant_version_major $ant_version_major " >&5
13619     echo "configure: ant_version_minor $ant_version_minor " >&5
13620     if test "$ant_version_major" -ge "2"; then
13621         AC_MSG_RESULT([yes, $ant_version])
13622     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13623         AC_MSG_RESULT([yes, $ant_version])
13624     else
13625         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13626     fi
13628     rm -f conftest* core core.* *.core
13630 AC_SUBST(ANT)
13631 AC_SUBST(ANT_HOME)
13632 AC_SUBST(ANT_LIB)
13634 OOO_JUNIT_JAR=
13635 HAMCREST_JAR=
13636 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13637     AC_MSG_CHECKING([for JUnit 4])
13638     if test "$with_junit" = "yes"; then
13639         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13640             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13641         elif test -e /usr/share/java/junit4.jar; then
13642             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13643         else
13644            if test -e /usr/share/lib/java/junit.jar; then
13645               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13646            else
13647               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13648            fi
13649         fi
13650     else
13651         OOO_JUNIT_JAR=$with_junit
13652     fi
13653     if test "$_os" = "WINNT"; then
13654         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13655     fi
13656     printf 'import org.junit.Before;' > conftest.java
13657     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13658         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13659     else
13660         AC_MSG_ERROR(
13661 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13662  specify its pathname via --with-junit=..., or disable it via --without-junit])
13663     fi
13664     rm -f conftest.class conftest.java
13665     if test $OOO_JUNIT_JAR != ""; then
13666         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13667     fi
13669     AC_MSG_CHECKING([for included Hamcrest])
13670     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13671     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13672         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13673     else
13674         AC_MSG_RESULT([Not included])
13675         AC_MSG_CHECKING([for standalone hamcrest jar.])
13676         if test "$with_hamcrest" = "yes"; then
13677             if test -e /usr/share/lib/java/hamcrest.jar; then
13678                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13679             elif test -e /usr/share/java/hamcrest/core.jar; then
13680                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13681             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13682                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13683             else
13684                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13685             fi
13686         else
13687             HAMCREST_JAR=$with_hamcrest
13688         fi
13689         if test "$_os" = "WINNT"; then
13690             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13691         fi
13692         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13693             AC_MSG_RESULT([$HAMCREST_JAR])
13694         else
13695             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),
13696                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13697         fi
13698     fi
13699     rm -f conftest.class conftest.java
13701 AC_SUBST(OOO_JUNIT_JAR)
13702 AC_SUBST(HAMCREST_JAR)
13705 AC_SUBST(SCPDEFS)
13708 # check for wget and curl
13710 WGET=
13711 CURL=
13713 if test "$enable_fetch_external" != "no"; then
13715 CURL=`which curl 2>/dev/null`
13717 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13718     # wget new enough?
13719     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13720     if test $? -eq 0; then
13721         WGET=$i
13722         break
13723     fi
13724 done
13726 if test -z "$WGET" -a -z "$CURL"; then
13727     AC_MSG_ERROR([neither wget nor curl found!])
13732 AC_SUBST(WGET)
13733 AC_SUBST(CURL)
13736 # check for sha256sum
13738 SHA256SUM=
13740 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13741     eval "$i -a 256 --version" > /dev/null 2>&1
13742     ret=$?
13743     if test $ret -eq 0; then
13744         SHA256SUM="$i -a 256"
13745         break
13746     fi
13747 done
13749 if test -z "$SHA256SUM"; then
13750     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13751         eval "$i --version" > /dev/null 2>&1
13752         ret=$?
13753         if test $ret -eq 0; then
13754             SHA256SUM=$i
13755             break
13756         fi
13757     done
13760 if test -z "$SHA256SUM"; then
13761     AC_MSG_ERROR([no sha256sum found!])
13764 AC_SUBST(SHA256SUM)
13766 dnl ===================================================================
13767 dnl Dealing with l10n options
13768 dnl ===================================================================
13769 AC_MSG_CHECKING([which languages to be built])
13770 # get list of all languages
13771 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13772 # the sed command does the following:
13773 #   + if a line ends with a backslash, append the next line to it
13774 #   + adds " on the beginning of the value (after =)
13775 #   + adds " at the end of the value
13776 #   + removes en-US; we want to put it on the beginning
13777 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13778 [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)]
13779 ALL_LANGS="en-US $completelangiso"
13780 # check the configured localizations
13781 WITH_LANG="$with_lang"
13783 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13784 # (Norwegian is "nb" and "nn".)
13785 if test "$WITH_LANG" = "no"; then
13786     WITH_LANG=
13789 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13790     AC_MSG_RESULT([en-US])
13791 else
13792     AC_MSG_RESULT([$WITH_LANG])
13793     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13794     if test -z "$MSGFMT"; then
13795         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13796             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13797         elif test -x "/opt/lo/bin/msgfmt"; then
13798             MSGFMT="/opt/lo/bin/msgfmt"
13799         else
13800             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13801             if test -z "$MSGFMT"; then
13802                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13803             fi
13804         fi
13805     fi
13806     if test -z "$MSGUNIQ"; then
13807         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13808             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13809         elif test -x "/opt/lo/bin/msguniq"; then
13810             MSGUNIQ="/opt/lo/bin/msguniq"
13811         else
13812             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13813             if test -z "$MSGUNIQ"; then
13814                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13815             fi
13816         fi
13817     fi
13819 AC_SUBST(MSGFMT)
13820 AC_SUBST(MSGUNIQ)
13821 # check that the list is valid
13822 for lang in $WITH_LANG; do
13823     test "$lang" = "ALL" && continue
13824     # need to check for the exact string, so add space before and after the list of all languages
13825     for vl in $ALL_LANGS; do
13826         if test "$vl" = "$lang"; then
13827            break
13828         fi
13829     done
13830     if test "$vl" != "$lang"; then
13831         # if you're reading this - you prolly quoted your languages remove the quotes ...
13832         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13833     fi
13834 done
13835 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13836     echo $WITH_LANG | grep -q en-US
13837     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13839 # list with substituted ALL
13840 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13841 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13842 test "$WITH_LANG" = "en-US" && WITH_LANG=
13843 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13844     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13845     ALL_LANGS=`echo $ALL_LANGS qtz`
13847 AC_SUBST(ALL_LANGS)
13848 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13849 AC_SUBST(WITH_LANG)
13850 AC_SUBST(WITH_LANG_LIST)
13851 AC_SUBST(GIT_NEEDED_SUBMODULES)
13853 WITH_POOR_HELP_LOCALIZATIONS=
13854 if test -d "$SRC_ROOT/translations/source"; then
13855     for l in `ls -1 $SRC_ROOT/translations/source`; do
13856         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13857             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13858         fi
13859     done
13861 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13863 if test -n "$with_locales"; then
13864     WITH_LOCALES="$with_locales"
13866     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13867     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13868     # config_host/config_locales.h.in
13869     for locale in $WITH_LOCALES; do
13870         lang=${locale%_*}
13872         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13874         case $lang in
13875         hi|mr*ne)
13876             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13877             ;;
13878         bg|ru)
13879             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13880             ;;
13881         esac
13882     done
13883 else
13884     AC_DEFINE(WITH_LOCALE_ALL)
13886 AC_SUBST(WITH_LOCALES)
13888 dnl git submodule update --reference
13889 dnl ===================================================================
13890 if test -n "${GIT_REFERENCE_SRC}"; then
13891     for repo in ${GIT_NEEDED_SUBMODULES}; do
13892         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13893             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13894         fi
13895     done
13897 AC_SUBST(GIT_REFERENCE_SRC)
13899 dnl git submodules linked dirs
13900 dnl ===================================================================
13901 if test -n "${GIT_LINK_SRC}"; then
13902     for repo in ${GIT_NEEDED_SUBMODULES}; do
13903         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13904             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13905         fi
13906     done
13908 AC_SUBST(GIT_LINK_SRC)
13910 dnl branding
13911 dnl ===================================================================
13912 AC_MSG_CHECKING([for alternative branding images directory])
13913 # initialize mapped arrays
13914 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13915 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13917 if test -z "$with_branding" -o "$with_branding" = "no"; then
13918     AC_MSG_RESULT([none])
13919     DEFAULT_BRAND_IMAGES="$brand_files"
13920 else
13921     if ! test -d $with_branding ; then
13922         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13923     else
13924         AC_MSG_RESULT([$with_branding])
13925         CUSTOM_BRAND_DIR="$with_branding"
13926         for lfile in $brand_files
13927         do
13928             if ! test -f $with_branding/$lfile ; then
13929                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13930                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13931             else
13932                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13933             fi
13934         done
13935         check_for_progress="yes"
13936     fi
13938 AC_SUBST([BRAND_INTRO_IMAGES])
13939 AC_SUBST([CUSTOM_BRAND_DIR])
13940 AC_SUBST([CUSTOM_BRAND_IMAGES])
13941 AC_SUBST([DEFAULT_BRAND_IMAGES])
13944 AC_MSG_CHECKING([for 'intro' progress settings])
13945 PROGRESSBARCOLOR=
13946 PROGRESSSIZE=
13947 PROGRESSPOSITION=
13948 PROGRESSFRAMECOLOR=
13949 PROGRESSTEXTCOLOR=
13950 PROGRESSTEXTBASELINE=
13952 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13953     source "$with_branding/progress.conf"
13954     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13955 else
13956     AC_MSG_RESULT([none])
13959 AC_SUBST(PROGRESSBARCOLOR)
13960 AC_SUBST(PROGRESSSIZE)
13961 AC_SUBST(PROGRESSPOSITION)
13962 AC_SUBST(PROGRESSFRAMECOLOR)
13963 AC_SUBST(PROGRESSTEXTCOLOR)
13964 AC_SUBST(PROGRESSTEXTBASELINE)
13967 dnl ===================================================================
13968 dnl Custom build version
13969 dnl ===================================================================
13970 AC_MSG_CHECKING([for extra build ID])
13971 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13972     EXTRA_BUILDID="$with_extra_buildid"
13974 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13975 if test -n "$EXTRA_BUILDID" ; then
13976     AC_MSG_RESULT([$EXTRA_BUILDID])
13977 else
13978     AC_MSG_RESULT([not set])
13980 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13982 OOO_VENDOR=
13983 AC_MSG_CHECKING([for vendor])
13984 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13985     OOO_VENDOR="$USERNAME"
13987     if test -z "$OOO_VENDOR"; then
13988         OOO_VENDOR="$USER"
13989     fi
13991     if test -z "$OOO_VENDOR"; then
13992         OOO_VENDOR="`id -u -n`"
13993     fi
13995     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13996 else
13997     OOO_VENDOR="$with_vendor"
13998     AC_MSG_RESULT([$OOO_VENDOR])
14000 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14001 AC_SUBST(OOO_VENDOR)
14003 if test "$_os" = "Android" ; then
14004     ANDROID_PACKAGE_NAME=
14005     AC_MSG_CHECKING([for Android package name])
14006     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14007         if test -n "$ENABLE_DEBUG"; then
14008             # Default to the package name that makes ndk-gdb happy.
14009             ANDROID_PACKAGE_NAME="org.libreoffice"
14010         else
14011             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14012         fi
14014         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14015     else
14016         ANDROID_PACKAGE_NAME="$with_android_package_name"
14017         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14018     fi
14019     AC_SUBST(ANDROID_PACKAGE_NAME)
14022 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14023 if test "$with_compat_oowrappers" = "yes"; then
14024     WITH_COMPAT_OOWRAPPERS=TRUE
14025     AC_MSG_RESULT(yes)
14026 else
14027     WITH_COMPAT_OOWRAPPERS=
14028     AC_MSG_RESULT(no)
14030 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14032 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14033 AC_MSG_CHECKING([for install dirname])
14034 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14035     INSTALLDIRNAME="$with_install_dirname"
14037 AC_MSG_RESULT([$INSTALLDIRNAME])
14038 AC_SUBST(INSTALLDIRNAME)
14040 AC_MSG_CHECKING([for prefix])
14041 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14042 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14043 PREFIXDIR="$prefix"
14044 AC_MSG_RESULT([$PREFIXDIR])
14045 AC_SUBST(PREFIXDIR)
14047 LIBDIR=[$(eval echo $(eval echo $libdir))]
14048 AC_SUBST(LIBDIR)
14050 DATADIR=[$(eval echo $(eval echo $datadir))]
14051 AC_SUBST(DATADIR)
14053 MANDIR=[$(eval echo $(eval echo $mandir))]
14054 AC_SUBST(MANDIR)
14056 DOCDIR=[$(eval echo $(eval echo $docdir))]
14057 AC_SUBST(DOCDIR)
14059 BINDIR=[$(eval echo $(eval echo $bindir))]
14060 AC_SUBST(BINDIR)
14062 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14063 AC_SUBST(INSTALLDIR)
14065 TESTINSTALLDIR="${BUILDDIR}/test-install"
14066 AC_SUBST(TESTINSTALLDIR)
14069 # ===================================================================
14070 # OAuth2 id and secrets
14071 # ===================================================================
14073 AC_MSG_CHECKING([for Google Drive client id and secret])
14074 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14075     AC_MSG_RESULT([not set])
14076     GDRIVE_CLIENT_ID="\"\""
14077     GDRIVE_CLIENT_SECRET="\"\""
14078 else
14079     AC_MSG_RESULT([set])
14080     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14081     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14083 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14084 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14086 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14087 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14088     AC_MSG_RESULT([not set])
14089     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14090     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14091 else
14092     AC_MSG_RESULT([set])
14093     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14094     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14096 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14097 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14099 AC_MSG_CHECKING([for OneDrive client id and secret])
14100 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14101     AC_MSG_RESULT([not set])
14102     ONEDRIVE_CLIENT_ID="\"\""
14103     ONEDRIVE_CLIENT_SECRET="\"\""
14104 else
14105     AC_MSG_RESULT([set])
14106     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14107     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14109 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14110 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14113 dnl ===================================================================
14114 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14115 dnl --enable-dependency-tracking configure option
14116 dnl ===================================================================
14117 AC_MSG_CHECKING([whether to enable dependency tracking])
14118 if test "$enable_dependency_tracking" = "no"; then
14119     nodep=TRUE
14120     AC_MSG_RESULT([no])
14121 else
14122     AC_MSG_RESULT([yes])
14124 AC_SUBST(nodep)
14126 dnl ===================================================================
14127 dnl Number of CPUs to use during the build
14128 dnl ===================================================================
14129 AC_MSG_CHECKING([for number of processors to use])
14130 # plain --with-parallelism is just the default
14131 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14132     if test "$with_parallelism" = "no"; then
14133         PARALLELISM=0
14134     else
14135         PARALLELISM=$with_parallelism
14136     fi
14137 else
14138     if test "$enable_icecream" = "yes"; then
14139         PARALLELISM="40"
14140     else
14141         case `uname -s` in
14143         Darwin|FreeBSD|NetBSD|OpenBSD)
14144             PARALLELISM=`sysctl -n hw.ncpu`
14145             ;;
14147         Linux)
14148             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14149         ;;
14150         # what else than above does profit here *and* has /proc?
14151         *)
14152             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14153             ;;
14154         esac
14156         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14157         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14158     fi
14161 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14162     if test -z "$with_parallelism"; then
14163             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14164             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14165             PARALLELISM="1"
14166     else
14167         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."
14168     fi
14171 if test $PARALLELISM -eq 0; then
14172     AC_MSG_RESULT([explicit make -j option needed])
14173 else
14174     AC_MSG_RESULT([$PARALLELISM])
14176 AC_SUBST(PARALLELISM)
14178 IWYU_PATH="$with_iwyu"
14179 AC_SUBST(IWYU_PATH)
14180 if test ! -z "$IWYU_PATH"; then
14181     if test ! -f "$IWYU_PATH"; then
14182         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14183     fi
14187 # Set up ILIB for MSVC build
14189 ILIB1=
14190 if test "$build_os" = "cygwin"; then
14191     ILIB="."
14192     if test -n "$JAVA_HOME"; then
14193         ILIB="$ILIB;$JAVA_HOME/lib"
14194     fi
14195     ILIB1=-link
14196     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14197     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14198     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14199     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14200     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14201         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14202         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14203     fi
14204     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14205     ucrtlibpath_formatted=$formatted_path
14206     ILIB="$ILIB;$ucrtlibpath_formatted"
14207     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14208     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14209         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14210     else
14211         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14212     fi
14214     if test "$cross_compiling" != "yes"; then
14215         ILIB_FOR_BUILD="$ILIB"
14216     fi
14218 AC_SUBST(ILIB)
14219 AC_SUBST(ILIB_FOR_BUILD)
14221 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14222 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14223 dnl from consteval constructor initializing const variable",
14224 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14225 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14226 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14227 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14228 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14229 dnl constructor in ternary expression (/std:c++latest)":
14230 AC_LANG_PUSH([C++])
14231 save_CXX=$CXX
14232 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14233     CXX="env LIB=$ILIB $CXX"
14235 save_CXXFLAGS=$CXXFLAGS
14236 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14237 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14238         struct S {
14239             consteval S() { i = 1; }
14240             int i = 0;
14241         };
14242         S const s;
14244         struct S1 { consteval S1(int) {} };
14245         struct S2 {
14246             S1 x;
14247             S2(): x(0) {}
14248         };
14250         struct S3 {
14251             consteval S3() {}
14252             union {
14253                 int a;
14254                 unsigned b = 0;
14255             };
14256         };
14257         void f() { S3(); }
14259         struct S4 { consteval S4() = default; };
14260         void f4(bool b) { b ? S4() : S4(); }
14261     ], [
14262         return (s.i == 1) ? 0 : 1;
14263     ])], [
14264         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14265         AC_MSG_RESULT([yes])
14266     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14267 CXX=$save_CXX
14268 CXXFLAGS=$save_CXXFLAGS
14269 AC_LANG_POP([C++])
14271 # ===================================================================
14272 # Creating bigger shared library to link against
14273 # ===================================================================
14274 AC_MSG_CHECKING([whether to create huge library])
14275 MERGELIBS=
14277 if test $_os = iOS -o $_os = Android; then
14278     # Never any point in mergelibs for these as we build just static
14279     # libraries anyway...
14280     enable_mergelibs=no
14283 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14284     if test $_os != Linux -a $_os != WINNT; then
14285         add_warning "--enable-mergelibs is not tested for this platform"
14286     fi
14287     MERGELIBS="TRUE"
14288     AC_MSG_RESULT([yes])
14289     AC_DEFINE(ENABLE_MERGELIBS)
14290 else
14291     AC_MSG_RESULT([no])
14293 AC_SUBST([MERGELIBS])
14295 dnl ===================================================================
14296 dnl icerun is a wrapper that stops us spawning tens of processes
14297 dnl locally - for tools that can't be executed on the compile cluster
14298 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14299 dnl ===================================================================
14300 AC_MSG_CHECKING([whether to use icerun wrapper])
14301 ICECREAM_RUN=
14302 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14303     ICECREAM_RUN=icerun
14304     AC_MSG_RESULT([yes])
14305 else
14306     AC_MSG_RESULT([no])
14308 AC_SUBST(ICECREAM_RUN)
14310 dnl ===================================================================
14311 dnl Setup the ICECC_VERSION for the build the same way it was set for
14312 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14313 dnl ===================================================================
14314 x_ICECC_VERSION=[\#]
14315 if test -n "$ICECC_VERSION" ; then
14316     x_ICECC_VERSION=
14318 AC_SUBST(x_ICECC_VERSION)
14319 AC_SUBST(ICECC_VERSION)
14321 dnl ===================================================================
14323 AC_MSG_CHECKING([MPL subset])
14324 MPL_SUBSET=
14326 if test "$enable_mpl_subset" = "yes"; then
14327     warn_report=false
14328     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14329         warn_report=true
14330     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14331         warn_report=true
14332     fi
14333     if test "$warn_report" = "true"; then
14334         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14335     fi
14336     if test "x$enable_postgresql_sdbc" != "xno"; then
14337         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14338     fi
14339     if test "$enable_lotuswordpro" = "yes"; then
14340         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14341     fi
14342     if test "$WITH_WEBDAV" = "neon"; then
14343         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14344     fi
14345     if test -n "$ENABLE_POPPLER"; then
14346         if test "x$SYSTEM_POPPLER" = "x"; then
14347             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14348         fi
14349     fi
14350     # cf. m4/libo_check_extension.m4
14351     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14352         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14353     fi
14354     for theme in $WITH_THEMES; do
14355         case $theme in
14356         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14357             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14358         *) : ;;
14359         esac
14360     done
14362     ENABLE_OPENGL_TRANSITIONS=
14364     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14365         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14366     fi
14368     MPL_SUBSET="TRUE"
14369     AC_DEFINE(MPL_HAVE_SUBSET)
14370     AC_MSG_RESULT([only])
14371 else
14372     AC_MSG_RESULT([no restrictions])
14374 AC_SUBST(MPL_SUBSET)
14376 dnl ===================================================================
14378 AC_MSG_CHECKING([formula logger])
14379 ENABLE_FORMULA_LOGGER=
14381 if test "x$enable_formula_logger" = "xyes"; then
14382     AC_MSG_RESULT([yes])
14383     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14384     ENABLE_FORMULA_LOGGER=TRUE
14385 elif test -n "$ENABLE_DBGUTIL" ; then
14386     AC_MSG_RESULT([yes])
14387     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14388     ENABLE_FORMULA_LOGGER=TRUE
14389 else
14390     AC_MSG_RESULT([no])
14393 AC_SUBST(ENABLE_FORMULA_LOGGER)
14395 dnl ===================================================================
14396 dnl Checking for active Antivirus software.
14397 dnl ===================================================================
14399 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14400     AC_MSG_CHECKING([for active Antivirus software])
14401     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14402     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14403         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14404             AC_MSG_RESULT([found])
14405             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14406             echo $EICAR_STRING > $SRC_ROOT/eicar
14407             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14408             rm $SRC_ROOT/eicar
14409             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14410                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14411             fi
14412             echo $EICAR_STRING > $BUILDDIR/eicar
14413             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14414             rm $BUILDDIR/eicar
14415             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14416                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14417             fi
14418             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"
14419         else
14420             AC_MSG_RESULT([not found])
14421         fi
14422     else
14423         AC_MSG_RESULT([n/a])
14424     fi
14427 dnl ===================================================================
14428 dnl Setting up the environment.
14429 dnl ===================================================================
14430 AC_MSG_NOTICE([setting up the build environment variables...])
14432 AC_SUBST(COMPATH)
14434 if test "$build_os" = "cygwin"; then
14435     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14436         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14437         ATL_INCLUDE="$COMPATH/atlmfc/include"
14438     elif test -d "$COMPATH/atlmfc/lib"; then
14439         ATL_LIB="$COMPATH/atlmfc/lib"
14440         ATL_INCLUDE="$COMPATH/atlmfc/include"
14441     else
14442         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14443         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14444     fi
14445     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14446     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14447     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14449     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14450     PathFormat "/usr/bin/find.exe"
14451     FIND="$formatted_path"
14452     PathFormat "/usr/bin/sort.exe"
14453     SORT="$formatted_path"
14454     PathFormat "/usr/bin/grep.exe"
14455     WIN_GREP="$formatted_path"
14456     PathFormat "/usr/bin/ls.exe"
14457     WIN_LS="$formatted_path"
14458     PathFormat "/usr/bin/touch.exe"
14459     WIN_TOUCH="$formatted_path"
14460 else
14461     FIND=find
14462     SORT=sort
14465 AC_SUBST(ATL_INCLUDE)
14466 AC_SUBST(ATL_LIB)
14467 AC_SUBST(FIND)
14468 AC_SUBST(SORT)
14469 AC_SUBST(WIN_GREP)
14470 AC_SUBST(WIN_LS)
14471 AC_SUBST(WIN_TOUCH)
14473 AC_SUBST(BUILD_TYPE)
14475 AC_SUBST(SOLARINC)
14477 PathFormat "$PERL"
14478 PERL="$formatted_path"
14479 AC_SUBST(PERL)
14481 if test -n "$TMPDIR"; then
14482     TEMP_DIRECTORY="$TMPDIR"
14483 else
14484     TEMP_DIRECTORY="/tmp"
14486 if test "$build_os" = "cygwin"; then
14487     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14489 AC_SUBST(TEMP_DIRECTORY)
14491 # setup the PATH for the environment
14492 if test -n "$LO_PATH_FOR_BUILD"; then
14493     LO_PATH="$LO_PATH_FOR_BUILD"
14494     case "$host_os" in
14495     cygwin*|wsl*)
14496         pathmunge "$MSVC_HOST_PATH" "before"
14497         ;;
14498     esac
14499 else
14500     LO_PATH="$PATH"
14502     case "$host_os" in
14504     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14505         if test "$ENABLE_JAVA" != ""; then
14506             pathmunge "$JAVA_HOME/bin" "after"
14507         fi
14508         ;;
14510     cygwin*|wsl*)
14511         # Win32 make needs native paths
14512         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14513             LO_PATH=`cygpath -p -m "$PATH"`
14514         fi
14515         if test "$WIN_BUILD_ARCH" = "x64"; then
14516             # needed for msi packaging
14517             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14518         fi
14519         # .NET 4.6 and higher don't have bin directory
14520         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14521             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14522         fi
14523         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14524         pathmunge "$CSC_PATH" "before"
14525         pathmunge "$MIDL_PATH" "before"
14526         pathmunge "$AL_PATH" "before"
14527         pathmunge "$MSVC_MULTI_PATH" "before"
14528         pathmunge "$MSVC_BUILD_PATH" "before"
14529         if test -n "$MSBUILD_PATH" ; then
14530             pathmunge "$MSBUILD_PATH" "before"
14531         fi
14532         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14533         if test "$ENABLE_JAVA" != ""; then
14534             if test -d "$JAVA_HOME/jre/bin/client"; then
14535                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14536             fi
14537             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14538                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14539             fi
14540             pathmunge "$JAVA_HOME/bin" "before"
14541         fi
14542         pathmunge "$MSVC_HOST_PATH" "before"
14543         ;;
14545     solaris*)
14546         pathmunge "/usr/css/bin" "before"
14547         if test "$ENABLE_JAVA" != ""; then
14548             pathmunge "$JAVA_HOME/bin" "after"
14549         fi
14550         ;;
14551     esac
14554 AC_SUBST(LO_PATH)
14556 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14557 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14558     x_LO_ELFCHECK_ALLOWLIST=
14559 else
14560     x_LO_ELFCHECK_ALLOWLIST=[\#]
14562 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14563 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14565 libo_FUZZ_SUMMARY
14567 # Generate a configuration sha256 we can use for deps
14568 if test -f config_host.mk; then
14569     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14571 if test -f config_host_lang.mk; then
14572     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14575 CFLAGS=$my_original_CFLAGS
14576 CXXFLAGS=$my_original_CXXFLAGS
14577 CPPFLAGS=$my_original_CPPFLAGS
14579 AC_CONFIG_LINKS([include:include])
14581 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14582 # BUILD platform configuration] - otherwise breaks cross building
14583 AC_CONFIG_FILES([config_host.mk
14584                  config_host_lang.mk
14585                  Makefile
14586                  bin/bffvalidator.sh
14587                  bin/odfvalidator.sh
14588                  bin/officeotron.sh
14589                  hardened_runtime.xcent
14590                  instsetoo_native/util/openoffice.lst
14591                  sysui/desktop/macosx/Info.plist
14592                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14593 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14594 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14595 AC_CONFIG_HEADERS([config_host/config_clang.h])
14596 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14597 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14598 AC_CONFIG_HEADERS([config_host/config_eot.h])
14599 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14600 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14601 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14602 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14603 AC_CONFIG_HEADERS([config_host/config_features.h])
14604 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14605 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14606 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14607 AC_CONFIG_HEADERS([config_host/config_folders.h])
14608 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14609 AC_CONFIG_HEADERS([config_host/config_gio.h])
14610 AC_CONFIG_HEADERS([config_host/config_global.h])
14611 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14612 AC_CONFIG_HEADERS([config_host/config_java.h])
14613 AC_CONFIG_HEADERS([config_host/config_langs.h])
14614 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14615 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14616 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14617 AC_CONFIG_HEADERS([config_host/config_locales.h])
14618 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14619 AC_CONFIG_HEADERS([config_host/config_oox.h])
14620 AC_CONFIG_HEADERS([config_host/config_options.h])
14621 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14622 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14623 AC_CONFIG_HEADERS([config_host/config_skia.h])
14624 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14625 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14626 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14627 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14628 AC_CONFIG_HEADERS([config_host/config_version.h])
14629 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14630 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14631 AC_CONFIG_HEADERS([config_host/config_python.h])
14632 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14633 AC_OUTPUT
14635 if test "$CROSS_COMPILING" = TRUE; then
14636     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14639 # touch the config timestamp file
14640 if test ! -f config_host.mk.stamp; then
14641     echo > config_host.mk.stamp
14642 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14643     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14644 else
14645     echo > config_host.mk.stamp
14648 # touch the config lang timestamp file
14649 if test ! -f config_host_lang.mk.stamp; then
14650     echo > config_host_lang.mk.stamp
14651 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14652     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14653 else
14654     echo > config_host_lang.mk.stamp
14658 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14659         -a "$build_os" = "cygwin"; then
14661 cat << _EOS
14662 ****************************************************************************
14663 WARNING:
14664 Your make version is known to be horribly slow, and hard to debug
14665 problems with. To get a reasonably functional make please do:
14667 to install a pre-compiled binary make for Win32
14669  mkdir -p /opt/lo/bin
14670  cd /opt/lo/bin
14671  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14672  cp make-4.2.1-msvc.exe make
14673  chmod +x make
14675 to install from source:
14676 place yourself in a working directory of you choice.
14678  git clone git://git.savannah.gnu.org/make.git
14680  [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"]
14681  set PATH=%PATH%;C:\Cygwin\bin
14682  [or Cygwin64, if that is what you have]
14683  cd path-to-make-repo-you-cloned-above
14684  build_w32.bat --without-guile
14686 should result in a WinRel/gnumake.exe.
14687 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14689 Then re-run autogen.sh
14691 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14692 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14694 _EOS
14695 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14696     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14701 cat << _EOF
14702 ****************************************************************************
14704 To build, run:
14705 $GNUMAKE
14707 To view some help, run:
14708 $GNUMAKE help
14710 _EOF
14712 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14713     cat << _EOF
14714 After the build has finished successfully, you can immediately run what you built using the command:
14715 _EOF
14717     if test $_os = Darwin; then
14718         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14719     else
14720         echo instdir/program/soffice
14721     fi
14722     cat << _EOF
14724 If you want to run the smoketest, run:
14725 $GNUMAKE check
14727 _EOF
14730 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14731     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14732     cat "$WARNINGS_FILE_FOR_BUILD"
14733     echo
14736 if test -s "$WARNINGS_FILE"; then
14737     echo "HOST config ($WARNINGS_FILE)"
14738     cat "$WARNINGS_FILE"
14741 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: