Simplify oox::PropertyNameVector ctor
[LibreOffice.git] / configure.ac
blob6144dab8ba4807ab0d7ba5789b64c7ed7fd6c688
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.alpha1+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
208 have_WARNINGS="no"
209 add_warning()
211     if test "$have_WARNINGS" = "no"; then
212         echo "*************************************" > "$WARNINGS_FILE"
213         have_WARNINGS="yes"
214         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
217         else
218             COLORWARN="* WARNING :"
219         fi
220     fi
221     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
228 dnl from themselves
230 mac_sanitize_path()
232     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235     mac_git_path=`which git 2>/dev/null`
236     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237         mac_path="$mac_path:`dirname $mac_git_path`"
238     fi
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241     mac_gpg_path=`which gpg 2>/dev/null`
242     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243         mac_path="$mac_path:`dirname $mac_gpg_path`"
244     fi
245     PATH="$mac_path"
246     unset mac_path
247     unset mac_git_path
248     unset mac_gpg_path
251 echo "********************************************************************"
252 echo "*"
253 echo "*   Running ${PACKAGE_NAME} build configuration."
254 echo "*"
255 echo "********************************************************************"
256 echo ""
258 dnl ===================================================================
259 dnl checks build and host OSes
260 dnl do this before argument processing to allow for platform dependent defaults
261 dnl ===================================================================
263 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
264 # Linux on WSL) trust that.
265 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
266     ac_cv_host="x86_64-pc-wsl"
267     ac_cv_host_cpu="x86_64"
268     ac_cv_host_os="wsl"
269     ac_cv_build="$ac_cv_host"
270     ac_cv_build_cpu="$ac_cv_host_cpu"
271     ac_cv_build_os="$ac_cv_host_os"
273     # Emulation of Cygwin's cygpath command for WSL.
274     cygpath()
275     {
276         if test -n "$UNITTEST_WSL_CYGPATH"; then
277             echo -n cygpath "$@" "==> "
278         fi
280         # Cygwin's real cygpath has a plethora of options but we use only a few here.
281         local args="$@"
282         local opt
283         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
284         OPTIND=1
286         while getopts dmuwlsp opt; do
287             case "$opt" in
288                 \?)
289                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
290                     ;;
291                 ?)
292                     eval opt_$opt=yes
293                     ;;
294             esac
295         done
297         shift $((OPTIND-1))
299         if test $# -ne 1; then
300             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
301         fi
303         local input="$1"
305         local result
307         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
308             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
310             if test -n "$opt_u"; then
311                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
312             fi
314             case "$input" in
315                 /mnt/*)
316                     # A Windows file in WSL format
317                     input=$(wslpath -w "$input")
318                     ;;
319                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
320                     # Already in Windows format
321                     ;;
322                 /*)
323                     input=$(wslpath -w "$input")
324                     ;;
325                 *)
326                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
327                     ;;
328             esac
329             if test -n "$opt_d" -o -n "$opt_s"; then
330                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
331             fi
332             if test -n "$opt_m"; then
333                 input="${input//\\//}"
334             fi
335             echo "$input"
336         else
337             # Print Unix path
339             case "$input" in
340                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
341                     wslpath -u "$input"
342                     ;;
343                 /)
344                     echo "$input"
345                     ;;
346                 *)
347                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
348                     ;;
349             esac
350         fi
351     }
353     if test -n "$UNITTEST_WSL_CYGPATH"; then
354         BUILDDIR=.
356         # Nothing special with these file names, just arbitrary ones picked to test with
357         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
359         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
360         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
361         # At least on my machine for instance this file does have an 8.3 name
362         cygpath -d /mnt/c/windows/WindowsUpdate.log
363         # But for instance this one doesn't
364         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ws /mnt/c/windows/WindowsUpdate.log
366         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
367         cygpath -ms /mnt/c/windows/WindowsUpdate.log
369         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
370         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
372         exit 0
373     fi
376 AC_CANONICAL_HOST
377 AC_CANONICAL_BUILD
379 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
380     BUILDDIR=.
381     GREP=grep
383     # Use of PathFormat must be after AC_CANONICAL_BUILD above
384     PathFormat /
385     printf "$formatted_path , $formatted_path_unix\n"
387     PathFormat $PWD
388     printf "$formatted_path , $formatted_path_unix\n"
390     PathFormat "$PROGRAMFILESX86"
391     printf "$formatted_path , $formatted_path_unix\n"
393     exit 0
396 AC_MSG_CHECKING([for product name])
397 PRODUCTNAME="AC_PACKAGE_NAME"
398 if test -n "$with_product_name" -a "$with_product_name" != no; then
399     PRODUCTNAME="$with_product_name"
401 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
402     PRODUCTNAME="${PRODUCTNAME}Dev"
404 AC_MSG_RESULT([$PRODUCTNAME])
405 AC_SUBST(PRODUCTNAME)
406 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
407 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
409 dnl ===================================================================
410 dnl Our version is defined by the AC_INIT() at the top of this script.
411 dnl ===================================================================
413 AC_MSG_CHECKING([for package version])
414 if test -n "$with_package_version" -a "$with_package_version" != no; then
415     PACKAGE_VERSION="$with_package_version"
417 AC_MSG_RESULT([$PACKAGE_VERSION])
419 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
421 LIBO_VERSION_MAJOR=$1
422 LIBO_VERSION_MINOR=$2
423 LIBO_VERSION_MICRO=$3
424 LIBO_VERSION_PATCH=$4
426 LIBO_VERSION_SUFFIX=$5
428 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
429 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
430 # they get undoubled before actually passed to sed.
431 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
432 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
433 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
434 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
436 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
437 # three non-negative integers. Please find more information about CFBundleVersion at
438 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
440 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
441 # of at most three non-negative integers. Please find more information about
442 # CFBundleShortVersionString at
443 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
445 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
447 if test "$enable_macosx_sandbox" = yes; then
448     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
449     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
450 else
451     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
452     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
455 AC_SUBST(LIBO_VERSION_MAJOR)
456 AC_SUBST(LIBO_VERSION_MINOR)
457 AC_SUBST(LIBO_VERSION_MICRO)
458 AC_SUBST(LIBO_VERSION_PATCH)
459 AC_SUBST(LIBO_VERSION_SUFFIX)
460 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
461 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
462 AC_SUBST(MACOSX_BUNDLE_VERSION)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
466 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
467 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
469 LIBO_THIS_YEAR=`date +%Y`
470 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
472 dnl ===================================================================
473 dnl Product version
474 dnl ===================================================================
475 AC_MSG_CHECKING([for product version])
476 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
477 AC_MSG_RESULT([$PRODUCTVERSION])
478 AC_SUBST(PRODUCTVERSION)
480 AC_PROG_EGREP
481 # AC_PROG_EGREP doesn't set GREP on all systems as well
482 AC_PATH_PROG(GREP, grep)
484 BUILDDIR=`pwd`
485 cd $srcdir
486 SRC_ROOT=`pwd`
487 cd $BUILDDIR
488 x_Cygwin=[\#]
490 dnl ======================================
491 dnl Required GObject introspection version
492 dnl ======================================
493 INTROSPECTION_REQUIRED_VERSION=1.32.0
495 dnl ===================================================================
496 dnl Search all the common names for GNU Make
497 dnl ===================================================================
498 AC_MSG_CHECKING([for GNU Make])
500 # try to use our own make if it is available and GNUMAKE was not already defined
501 if test -z "$GNUMAKE"; then
502     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
503         GNUMAKE="$LODE_HOME/opt/bin/make"
504     elif test -x "/opt/lo/bin/make"; then
505         GNUMAKE="/opt/lo/bin/make"
506     fi
509 GNUMAKE_WIN_NATIVE=
510 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
511     if test -n "$a"; then
512         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
513         if test $? -eq 0;  then
514             if test "$build_os" = "cygwin"; then
515                 if test -n "$($a -v | grep 'Built for Windows')" ; then
516                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
517                     GNUMAKE_WIN_NATIVE="TRUE"
518                 else
519                     GNUMAKE=`which $a`
520                 fi
521             else
522                 GNUMAKE=`which $a`
523             fi
524             break
525         fi
526     fi
527 done
528 AC_MSG_RESULT($GNUMAKE)
529 if test -z "$GNUMAKE"; then
530     AC_MSG_ERROR([not found. install GNU Make.])
531 else
532     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
533         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
534     fi
537 win_short_path_for_make()
539     local short_path="$1"
540     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541         cygpath -sm "$short_path"
542     else
543         cygpath -u "$(cygpath -d "$short_path")"
544     fi
548 if test "$build_os" = "cygwin"; then
549     PathFormat "$SRC_ROOT"
550     SRC_ROOT="$formatted_path"
551     PathFormat "$BUILDDIR"
552     BUILDDIR="$formatted_path"
553     x_Cygwin=
554     AC_MSG_CHECKING(for explicit COMSPEC)
555     if test -z "$COMSPEC"; then
556         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
557     else
558         AC_MSG_RESULT([found: $COMSPEC])
559     fi
562 AC_SUBST(SRC_ROOT)
563 AC_SUBST(BUILDDIR)
564 AC_SUBST(x_Cygwin)
565 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
566 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
567 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
569 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
570     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
573 # need sed in os checks...
574 AC_PATH_PROGS(SED, sed)
575 if test -z "$SED"; then
576     AC_MSG_ERROR([install sed to run this script])
579 # Set the ENABLE_LTO variable
580 # ===================================================================
581 AC_MSG_CHECKING([whether to use link-time optimization])
582 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
583     ENABLE_LTO="TRUE"
584     AC_MSG_RESULT([yes])
585 else
586     ENABLE_LTO=""
587     AC_MSG_RESULT([no])
589 AC_SUBST(ENABLE_LTO)
591 AC_ARG_ENABLE(fuzz-options,
592     AS_HELP_STRING([--enable-fuzz-options],
593         [Randomly enable or disable each of those configurable options
594          that are supposed to be freely selectable without interdependencies,
595          or where bad interaction from interdependencies is automatically avoided.])
598 dnl ===================================================================
599 dnl When building for Android, --with-android-ndk,
600 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
601 dnl mandatory
602 dnl ===================================================================
604 AC_ARG_WITH(android-ndk,
605     AS_HELP_STRING([--with-android-ndk],
606         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
609 AC_ARG_WITH(android-ndk-toolchain-version,
610     AS_HELP_STRING([--with-android-ndk-toolchain-version],
611         [Specify which toolchain version to use, of those present in the
612         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
613         with_android_ndk_toolchain_version=clang5.0)
615 AC_ARG_WITH(android-sdk,
616     AS_HELP_STRING([--with-android-sdk],
617         [Specify location of the Android SDK. Mandatory when building for Android.]),
620 AC_ARG_WITH(android-api-level,
621     AS_HELP_STRING([--with-android-api-level],
622         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
625 ANDROID_NDK_HOME=
626 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
627     with_android_ndk="$SRC_ROOT/external/android-ndk"
629 if test -n "$with_android_ndk"; then
630     eval ANDROID_NDK_HOME=$with_android_ndk
632     # Set up a lot of pre-canned defaults
634     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
635         if test ! -f $ANDROID_NDK_HOME/source.properties; then
636             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
637         fi
638         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
639     else
640         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
641     fi
642     if test -z "$ANDROID_NDK_VERSION";  then
643         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
644     fi
645     case $ANDROID_NDK_VERSION in
646     r9*|r10*)
647         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
648         ;;
649     11.1.*|12.1.*|13.1.*|14.1.*)
650         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
651         ;;
652     16.*|17.*|18.*|19.*|20.*)
653         ;;
654     *)
655         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
656         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
657         ;;
658     esac
660     ANDROID_API_LEVEL=16
661     if test -n "$with_android_api_level" ; then
662         ANDROID_API_LEVEL="$with_android_api_level"
663     fi
665     android_cpu=$host_cpu
666     if test $host_cpu = arm; then
667         android_platform_prefix=arm-linux-androideabi
668         android_gnu_prefix=$android_platform_prefix
669         LLVM_TRIPLE=armv7a-linux-androideabi
670         ANDROID_APP_ABI=armeabi-v7a
671         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
672     elif test $host_cpu = aarch64; then
673         android_platform_prefix=aarch64-linux-android
674         android_gnu_prefix=$android_platform_prefix
675         LLVM_TRIPLE=$android_platform_prefix
676         # minimum android version that supports aarch64
677         if test "$ANDROID_API_LEVEL" -lt "21" ; then
678             ANDROID_API_LEVEL=21
679         fi
680         ANDROID_APP_ABI=arm64-v8a
681     elif test $host_cpu = x86_64; then
682         android_platform_prefix=x86_64-linux-android
683         android_gnu_prefix=$android_platform_prefix
684         LLVM_TRIPLE=$android_platform_prefix
685         # minimum android version that supports x86_64
686         ANDROID_API_LEVEL=21
687         ANDROID_APP_ABI=x86_64
688     else
689         # host_cpu is something like "i386" or "i686" I guess, NDK uses
690         # "x86" in some contexts
691         android_cpu=x86
692         android_platform_prefix=$android_cpu
693         android_gnu_prefix=i686-linux-android
694         LLVM_TRIPLE=$android_gnu_prefix
695         ANDROID_APP_ABI=x86
696     fi
698     case "$with_android_ndk_toolchain_version" in
699     clang5.0)
700         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
701         ;;
702     *)
703         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
704     esac
706     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
708     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
709     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
710     # manage to link the (app-specific) single huge .so that is built for the app in
711     # android/source/ if there is debug information in a significant part of the object files.
712     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
713     # all objects have been built with debug information.)
714     case $build_os in
715     linux-gnu*)
716         android_HOST_TAG=linux-x86_64
717         ;;
718     darwin*)
719         android_HOST_TAG=darwin-x86_64
720         ;;
721     *)
722         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
723         # ndk would also support windows and windows-x86_64
724         ;;
725     esac
726     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
727     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
728     dnl TODO: NSS build uses it...
729     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
730     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
732     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
733     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
734     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
735     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
736     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
738     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
739     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
740     if test "$ENABLE_LTO" = TRUE; then
741         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
742         # $CC and $CXX when building external libraries
743         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
744     fi
746     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
748     if test -z "$CC"; then
749         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
750         CC_BASE="clang"
751     fi
752     if test -z "$CXX"; then
753         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
754         CXX_BASE="clang++"
755     fi
757 AC_SUBST(ANDROID_NDK_HOME)
758 AC_SUBST(ANDROID_APP_ABI)
759 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
761 dnl ===================================================================
762 dnl --with-android-sdk
763 dnl ===================================================================
764 ANDROID_SDK_HOME=
765 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
766     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
768 if test -n "$with_android_sdk"; then
769     eval ANDROID_SDK_HOME=$with_android_sdk
770     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
772 AC_SUBST(ANDROID_SDK_HOME)
774 AC_ARG_ENABLE([android-lok],
775     AS_HELP_STRING([--enable-android-lok],
776         [The Android app from the android/ subdir needs several tweaks all
777          over the place that break the LOK when used in the Online-based
778          Android app.  This switch indicates that the intent of this build is
779          actually the Online-based, non-modified LOK.])
781 ENABLE_ANDROID_LOK=
782 if test -n "$ANDROID_NDK_HOME" ; then
783     if test "$enable_android_lok" = yes; then
784         ENABLE_ANDROID_LOK=TRUE
785         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
786         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
787     else
788         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
789     fi
791 AC_SUBST([ENABLE_ANDROID_LOK])
793 libo_FUZZ_ARG_ENABLE([android-editing],
794     AS_HELP_STRING([--enable-android-editing],
795         [Enable the experimental editing feature on Android.])
797 ENABLE_ANDROID_EDITING=
798 if test "$enable_android_editing" = yes; then
799     ENABLE_ANDROID_EDITING=TRUE
801 AC_SUBST([ENABLE_ANDROID_EDITING])
803 disable_database_connectivity_dependencies()
805     enable_evolution2=no
806     enable_firebird_sdbc=no
807     enable_mariadb_sdbc=no
808     enable_postgresql_sdbc=no
809     enable_report_builder=no
812 # ===================================================================
814 # Start initial platform setup
816 # The using_* variables reflect platform support and should not be
817 # changed after the "End initial platform setup" block.
818 # This is also true for most test_* variables.
819 # ===================================================================
820 build_crypto=yes
821 test_cmis=yes
822 test_gdb_index=no
823 test_openldap=yes
824 test_split_debug=no
825 test_webdav=yes
827 # There is currently just iOS not using salplug, so this explicitly enables it.
828 # must: using_freetype_fontconfig
829 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
830 using_vclplug=yes
831 # must: using_x11
833 # Default values, as such probably valid just for Linux, set
834 # differently below just for Mac OSX, but at least better than
835 # hardcoding these as we used to do. Much of this is duplicated also
836 # in solenv for old build system and for gbuild, ideally we should
837 # perhaps define stuff like this only here in configure.ac?
839 LINKFLAGSSHL="-shared"
840 PICSWITCH="-fpic"
841 DLLPOST=".so"
843 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
845 INSTROOTBASESUFFIX=
846 INSTROOTCONTENTSUFFIX=
847 SDKDIRNAME=sdk
849 HOST_PLATFORM="$host"
851 host_cpu_for_clang="$host_cpu"
853 case "$host_os" in
855 solaris*)
856     using_freetype_fontconfig=yes
857     using_x11=yes
858     build_skia=yes
859     _os=SunOS
861     dnl ===========================================================
862     dnl Check whether we're using Solaris 10 - SPARC or Intel.
863     dnl ===========================================================
864     AC_MSG_CHECKING([the Solaris operating system release])
865     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
866     if test "$_os_release" -lt "10"; then
867         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
868     else
869         AC_MSG_RESULT([ok ($_os_release)])
870     fi
872     dnl Check whether we're using a SPARC or i386 processor
873     AC_MSG_CHECKING([the processor type])
874     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
875         AC_MSG_RESULT([ok ($host_cpu)])
876     else
877         AC_MSG_ERROR([only SPARC and i386 processors are supported])
878     fi
879     ;;
881 linux-gnu*|k*bsd*-gnu*|linux-musl*)
882     using_freetype_fontconfig=yes
883     using_x11=yes
884     build_skia=yes
885     test_gdb_index=yes
886     test_split_debug=yes
887     if test "$enable_fuzzers" = yes; then
888         test_system_freetype=no
889     fi
890     _os=Linux
891     ;;
893 gnu)
894     using_freetype_fontconfig=yes
895     using_x11=no
896     _os=GNU
897      ;;
899 cygwin*|wsl*)
900     # When building on Windows normally with MSVC under Cygwin,
901     # configure thinks that the host platform (the platform the
902     # built code will run on) is Cygwin, even if it obviously is
903     # Windows, which in Autoconf terminology is called
904     # "mingw32". (Which is misleading as MinGW is the name of the
905     # tool-chain, not an operating system.)
907     # Somewhat confusing, yes. But this configure script doesn't
908     # look at $host etc that much, it mostly uses its own $_os
909     # variable, set here in this case statement.
911     using_freetype_fontconfig=no
912     using_x11=no
913     test_openldap=no
914     build_skia=yes
915     _os=WINNT
917     DLLPOST=".dll"
918     LINKFLAGSNOUNDEFS=
920     if test "$host_cpu" = "aarch64"; then
921         build_skia=no
922         enable_gpgmepp=no
923         enable_coinmp=no
924         enable_firebird_sdbc=no
925     fi
926     ;;
928 darwin*|macos*) # macOS
929     using_freetype_fontconfig=no
930     using_x11=no
931     build_skia=yes
932     if test -n "$LODE_HOME" ; then
933         mac_sanitize_path
934         AC_MSG_NOTICE([sanitized the PATH to $PATH])
935     fi
936     _os=Darwin
937     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
938     INSTROOTCONTENTSUFFIX=/Contents
939     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
940     # See comment above the case "$host_os"
941     LINKFLAGSSHL="-dynamiclib -single_module"
943     # -fPIC is default
944     PICSWITCH=""
946     DLLPOST=".dylib"
948     # -undefined error is the default
949     LINKFLAGSNOUNDEFS=""
950     case "$host_cpu" in
951     aarch64|arm64)
952         case "$host_os" in
953         macos*)
954             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
955             # the "macos" part so be sure to use aarch64-apple-darwin for now.
956             HOST_PLATFORM=aarch64-apple-darwin
957             ;;
958         esac
960         # Apple's Clang uses "arm64"
961         host_cpu_for_clang=arm64
962     esac
965 ios*) # iOS
966     using_freetype_fontconfig=no
967     using_vclplug=no
968     using_x11=no
969     build_crypto=no
970     test_cmis=no
971     test_openldap=no
972     test_webdav=no
973     if test -n "$LODE_HOME" ; then
974         mac_sanitize_path
975         AC_MSG_NOTICE([sanitized the PATH to $PATH])
976     fi
977     enable_gpgmepp=no
978     _os=iOS
979     enable_mpl_subset=yes
980     enable_lotuswordpro=no
981     disable_database_connectivity_dependencies
982     enable_coinmp=no
983     enable_lpsolve=no
984     enable_extension_integration=no
985     enable_xmlhelp=no
986     with_ppds=no
987     if test "$enable_ios_simulator" = "yes"; then
988         host=x86_64-apple-darwin
989     fi
990     # See comment above the case "$host_os"
991     LINKFLAGSSHL="-dynamiclib -single_module"
993     # -fPIC is default
994     PICSWITCH=""
996     DLLPOST=".dylib"
998     # -undefined error is the default
999     LINKFLAGSNOUNDEFS=""
1001     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1002     # part, so use aarch64-apple-darwin for now.
1003     HOST_PLATFORM=aarch64-apple-darwin
1005     # Apple's Clang uses "arm64"
1006     host_cpu_for_clang=arm64
1009 freebsd*)
1010     using_freetype_fontconfig=yes
1011     using_x11=yes
1012     build_skia=yes
1013     AC_MSG_CHECKING([the FreeBSD operating system release])
1014     if test -n "$with_os_version"; then
1015         OSVERSION="$with_os_version"
1016     else
1017         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1018     fi
1019     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1020     AC_MSG_CHECKING([which thread library to use])
1021     if test "$OSVERSION" -lt "500016"; then
1022         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1023         PTHREAD_LIBS="-pthread"
1024     elif test "$OSVERSION" -lt "502102"; then
1025         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1026         PTHREAD_LIBS="-lc_r"
1027     else
1028         PTHREAD_CFLAGS=""
1029         PTHREAD_LIBS="-pthread"
1030     fi
1031     AC_MSG_RESULT([$PTHREAD_LIBS])
1032     _os=FreeBSD
1033     ;;
1035 *netbsd*)
1036     using_freetype_fontconfig=yes
1037     using_x11=yes
1038     test_gtk3_kde5=no
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     using_freetype_fontconfig=yes
1046     using_x11=yes
1047     test_randr=no
1048     test_gstreamer_1_0=no
1049     PTHREAD_LIBS=-pthread
1050     _os=AIX
1051     ;;
1053 openbsd*)
1054     using_freetype_fontconfig=yes
1055     using_x11=yes
1056     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1057     PTHREAD_LIBS="-pthread"
1058     _os=OpenBSD
1059     ;;
1061 dragonfly*)
1062     using_freetype_fontconfig=yes
1063     using_x11=yes
1064     build_skia=yes
1065     PTHREAD_LIBS="-pthread"
1066     _os=DragonFly
1067     ;;
1069 linux-android*)
1070     using_freetype_fontconfig=yes
1071     using_headless_plugin=no
1072     using_x11=no
1073     build_crypto=no
1074     test_openldap=no
1075     test_system_freetype=no
1076     test_webdav=no
1077     disable_database_connectivity_dependencies
1078     enable_lotuswordpro=no
1079     enable_mpl_subset=yes
1080     enable_cairo_canvas=no
1081     enable_coinmp=yes
1082     enable_lpsolve=no
1083     enable_odk=no
1084     enable_python=no
1085     enable_xmlhelp=no
1086     _os=Android
1088     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1089     ;;
1091 haiku*)
1092     using_freetype_fontconfig=yes
1093     using_x11=no
1094     test_gtk3_kde5=no
1095     test_kf5=yes
1096     enable_odk=no
1097     enable_coinmp=no
1098     enable_pdfium=no
1099     enable_sdremote=no
1100     enable_postgresql_sdbc=no
1101     enable_firebird_sdbc=no
1102     _os=Haiku
1103     ;;
1105 emscripten)
1106     using_freetype_fontconfig=yes
1107     using_x11=no
1108     test_openldap=no
1109     enable_compiler_plugins=no
1110     test_cmis=no
1111     test_webdav=no
1112     enable_database_connectivity=no
1113     enable_lpsolve=no
1114     enable_xmlhelp=no
1115     with_system_zlib=no
1116     with_theme="breeze"
1117     _os=Emscripten
1118     ;;
1121     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1122     ;;
1123 esac
1125 AC_SUBST(HOST_PLATFORM)
1127 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1128     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1131 # Set defaults, if not set by platform
1132 test "${test_cups+set}" = set || test_cups="$using_x11"
1133 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1134 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1135 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1136 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1137 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1138 # don't handle test_qt5, so it can disable test_kf5 later
1139 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1140 test "${test_randr+set}" = set || test_randr="$using_x11"
1141 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1142 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1144 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1145 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1146 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1148 # convenience / platform overriding "fixes"
1149 # Don't sort!
1150 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1151 test "$test_kf5" = yes && test_qt5=yes
1152 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1153 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1154 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1156 # Keep in sync with the above $using_x11 depending test default list
1157 disable_x11_tests()
1159     test_cups=no
1160     test_dbus=no
1161     test_gstreamer_1_0=no
1162     test_gtk3_kde5=no
1163     test_gtk3=no
1164     test_gtk4=no
1165     test_kf5=no
1166     test_qt5=no
1167     test_qt6=no
1168     test_randr=no
1169     test_xrender=no
1172 test "$using_x11" = yes && USING_X11=TRUE
1174 if test "$using_freetype_fontconfig" = yes; then
1175     if test "$using_headless_plugin" = yes; then
1176         AC_DEFINE(ENABLE_HEADLESS)
1177         ENABLE_HEADLESS=TRUE
1178     fi
1181 AC_SUBST(ENABLE_HEADLESS)
1183 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1184 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1185 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1186 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1188 # ===================================================================
1190 # End initial platform setup
1192 # ===================================================================
1194 if test "$_os" = "Android" ; then
1195     # Verify that the NDK and SDK options are proper
1196     if test -z "$with_android_ndk"; then
1197         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1198     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1199         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1200     fi
1202     if test -z "$ANDROID_SDK_HOME"; then
1203         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1204     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1205         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1206     fi
1208     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1209     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1210         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1211                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1212                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1213         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1214         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1215         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1216     fi
1217     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1218         AC_MSG_WARN([android support repository not found - install with
1219                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1220                      to allow the build to download the specified version of the android support libraries])
1221         add_warning "android support repository not found - install with"
1222         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1223         add_warning "to allow the build to download the specified version of the android support libraries"
1224     fi
1227 if test "$_os" = "AIX"; then
1228     AC_PATH_PROG(GAWK, gawk)
1229     if test -z "$GAWK"; then
1230         AC_MSG_ERROR([gawk not found in \$PATH])
1231     fi
1234 AC_SUBST(SDKDIRNAME)
1236 AC_SUBST(PTHREAD_CFLAGS)
1237 AC_SUBST(PTHREAD_LIBS)
1239 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1240 # By default use the ones specified by our build system,
1241 # but explicit override is possible.
1242 AC_MSG_CHECKING(for explicit AFLAGS)
1243 if test -n "$AFLAGS"; then
1244     AC_MSG_RESULT([$AFLAGS])
1245     x_AFLAGS=
1246 else
1247     AC_MSG_RESULT(no)
1248     x_AFLAGS=[\#]
1250 AC_MSG_CHECKING(for explicit CFLAGS)
1251 if test -n "$CFLAGS"; then
1252     AC_MSG_RESULT([$CFLAGS])
1253     x_CFLAGS=
1254 else
1255     AC_MSG_RESULT(no)
1256     x_CFLAGS=[\#]
1258 AC_MSG_CHECKING(for explicit CXXFLAGS)
1259 if test -n "$CXXFLAGS"; then
1260     AC_MSG_RESULT([$CXXFLAGS])
1261     x_CXXFLAGS=
1262 else
1263     AC_MSG_RESULT(no)
1264     x_CXXFLAGS=[\#]
1266 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1267 if test -n "$OBJCFLAGS"; then
1268     AC_MSG_RESULT([$OBJCFLAGS])
1269     x_OBJCFLAGS=
1270 else
1271     AC_MSG_RESULT(no)
1272     x_OBJCFLAGS=[\#]
1274 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1275 if test -n "$OBJCXXFLAGS"; then
1276     AC_MSG_RESULT([$OBJCXXFLAGS])
1277     x_OBJCXXFLAGS=
1278 else
1279     AC_MSG_RESULT(no)
1280     x_OBJCXXFLAGS=[\#]
1282 AC_MSG_CHECKING(for explicit LDFLAGS)
1283 if test -n "$LDFLAGS"; then
1284     AC_MSG_RESULT([$LDFLAGS])
1285     x_LDFLAGS=
1286 else
1287     AC_MSG_RESULT(no)
1288     x_LDFLAGS=[\#]
1290 AC_SUBST(AFLAGS)
1291 AC_SUBST(CFLAGS)
1292 AC_SUBST(CXXFLAGS)
1293 AC_SUBST(OBJCFLAGS)
1294 AC_SUBST(OBJCXXFLAGS)
1295 AC_SUBST(LDFLAGS)
1296 AC_SUBST(x_AFLAGS)
1297 AC_SUBST(x_CFLAGS)
1298 AC_SUBST(x_CXXFLAGS)
1299 AC_SUBST(x_OBJCFLAGS)
1300 AC_SUBST(x_OBJCXXFLAGS)
1301 AC_SUBST(x_LDFLAGS)
1303 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1304 my_original_CFLAGS=$CFLAGS
1305 my_original_CXXFLAGS=$CXXFLAGS
1306 my_original_CPPFLAGS=$CPPFLAGS
1308 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1309 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1310 dnl AC_PROG_CC internally.
1311 if test "$_os" != "WINNT"; then
1312     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1313     save_CFLAGS=$CFLAGS
1314     AC_PROG_CC
1315     CFLAGS=$save_CFLAGS
1316     if test -z "$CC_BASE"; then
1317         CC_BASE=`first_arg_basename "$CC"`
1318     fi
1321 if test "$_os" != "WINNT"; then
1322     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1323 else
1324     ENDIANNESS=little
1326 AC_SUBST(ENDIANNESS)
1328 if test $_os != "WINNT"; then
1329     save_LIBS="$LIBS"
1330     AC_SEARCH_LIBS([dlsym], [dl],
1331         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1332         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1333     LIBS="$save_LIBS"
1335 AC_SUBST(DLOPEN_LIBS)
1337 dnl ===================================================================
1338 dnl Sanity checks for Emscripten SDK setup
1339 dnl ===================================================================
1341 if test "$_os" = "Emscripten"; then
1342     EMSCRIPTEN_ERROR=0
1343     if ! which emconfigure >/dev/null 2>&1; then
1344         AC_MSG_WARN([emconfigure must be in your \$PATH])
1345         EMSCRIPTEN_ERROR=1
1346     fi
1347     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1348         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1349         EMSCRIPTEN_ERROR=1
1350     fi
1351     if test $EMSCRIPTEN_ERROR -ne 0; then
1352         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1353     fi
1356 ###############################################################################
1357 # Extensions switches --enable/--disable
1358 ###############################################################################
1359 # By default these should be enabled unless having extra dependencies.
1360 # If there is extra dependency over configure options then the enable should
1361 # be automagic based on whether the requiring feature is enabled or not.
1362 # All this options change anything only with --enable-extension-integration.
1364 # The name of this option and its help string makes it sound as if
1365 # extensions are built anyway, just not integrated in the installer,
1366 # if you use --disable-extension-integration. Is that really the
1367 # case?
1369 AC_ARG_ENABLE(ios-simulator,
1370     AS_HELP_STRING([--enable-ios-simulator],
1371         [build for iOS simulator])
1374 libo_FUZZ_ARG_ENABLE(extension-integration,
1375     AS_HELP_STRING([--disable-extension-integration],
1376         [Disable integration of the built extensions in the installer of the
1377          product. Use this switch to disable the integration.])
1380 AC_ARG_ENABLE(avmedia,
1381     AS_HELP_STRING([--disable-avmedia],
1382         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1385 AC_ARG_ENABLE(database-connectivity,
1386     AS_HELP_STRING([--disable-database-connectivity],
1387         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1390 # This doesn't mean not building (or "integrating") extensions
1391 # (although it probably should; i.e. it should imply
1392 # --disable-extension-integration I guess), it means not supporting
1393 # any extension mechanism at all
1394 libo_FUZZ_ARG_ENABLE(extensions,
1395     AS_HELP_STRING([--disable-extensions],
1396         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1399 AC_ARG_ENABLE(scripting,
1400     AS_HELP_STRING([--disable-scripting],
1401         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1404 # This is mainly for Android and iOS, but could potentially be used in some
1405 # special case otherwise, too, so factored out as a separate setting
1407 AC_ARG_ENABLE(dynamic-loading,
1408     AS_HELP_STRING([--disable-dynamic-loading],
1409         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1412 libo_FUZZ_ARG_ENABLE(report-builder,
1413     AS_HELP_STRING([--disable-report-builder],
1414         [Disable the Report Builder.])
1417 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1418     AS_HELP_STRING([--enable-ext-wiki-publisher],
1419         [Enable the Wiki Publisher extension.])
1422 libo_FUZZ_ARG_ENABLE(lpsolve,
1423     AS_HELP_STRING([--disable-lpsolve],
1424         [Disable compilation of the lp solve solver ])
1426 libo_FUZZ_ARG_ENABLE(coinmp,
1427     AS_HELP_STRING([--disable-coinmp],
1428         [Disable compilation of the CoinMP solver ])
1431 libo_FUZZ_ARG_ENABLE(pdfimport,
1432     AS_HELP_STRING([--disable-pdfimport],
1433         [Disable building the PDF import feature.])
1436 libo_FUZZ_ARG_ENABLE(pdfium,
1437     AS_HELP_STRING([--disable-pdfium],
1438         [Disable building PDFium. Results in unsecure PDF signature verification.])
1441 libo_FUZZ_ARG_ENABLE(skia,
1442     AS_HELP_STRING([--disable-skia],
1443         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1446 ###############################################################################
1448 dnl ---------- *** ----------
1450 libo_FUZZ_ARG_ENABLE(mergelibs,
1451     AS_HELP_STRING([--enable-mergelibs],
1452         [Merge several of the smaller libraries into one big, "merged", one.])
1455 libo_FUZZ_ARG_ENABLE(breakpad,
1456     AS_HELP_STRING([--enable-breakpad],
1457         [Enables breakpad for crash reporting.])
1460 libo_FUZZ_ARG_ENABLE(crashdump,
1461     AS_HELP_STRING([--disable-crashdump],
1462         [Disable dump.ini and dump-file, when --enable-breakpad])
1465 AC_ARG_ENABLE(fetch-external,
1466     AS_HELP_STRING([--disable-fetch-external],
1467         [Disables fetching external tarballs from web sources.])
1470 AC_ARG_ENABLE(fuzzers,
1471     AS_HELP_STRING([--enable-fuzzers],
1472         [Enables building libfuzzer targets for fuzz testing.])
1475 libo_FUZZ_ARG_ENABLE(pch,
1476     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1477         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1478          Using 'system' will include only external headers, 'base' will add also headers
1479          from base modules, 'normal' will also add all headers except from the module built,
1480          'full' will use all suitable headers even from a module itself.])
1483 libo_FUZZ_ARG_ENABLE(epm,
1484     AS_HELP_STRING([--enable-epm],
1485         [LibreOffice includes self-packaging code, that requires epm, however epm is
1486          useless for large scale package building.])
1489 libo_FUZZ_ARG_ENABLE(odk,
1490     AS_HELP_STRING([--enable-odk],
1491         [Enable building the Office Development Kit, the part that extensions need to build against])
1494 AC_ARG_ENABLE(mpl-subset,
1495     AS_HELP_STRING([--enable-mpl-subset],
1496         [Don't compile any pieces which are not MPL or more liberally licensed])
1499 libo_FUZZ_ARG_ENABLE(evolution2,
1500     AS_HELP_STRING([--enable-evolution2],
1501         [Allows the built-in evolution 2 addressbook connectivity build to be
1502          enabled.])
1505 AC_ARG_ENABLE(avahi,
1506     AS_HELP_STRING([--enable-avahi],
1507         [Determines whether to use Avahi to advertise Impress to remote controls.])
1510 libo_FUZZ_ARG_ENABLE(werror,
1511     AS_HELP_STRING([--enable-werror],
1512         [Turn warnings to errors. (Has no effect in modules where the treating
1513          of warnings as errors is disabled explicitly.)]),
1516 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1517     AS_HELP_STRING([--enable-assert-always-abort],
1518         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1521 libo_FUZZ_ARG_ENABLE(dbgutil,
1522     AS_HELP_STRING([--enable-dbgutil],
1523         [Provide debugging support from --enable-debug and include additional debugging
1524          utilities such as object counting or more expensive checks.
1525          This is the recommended option for developers.
1526          Note that this makes the build ABI incompatible, it is not possible to mix object
1527          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1529 libo_FUZZ_ARG_ENABLE(debug,
1530     AS_HELP_STRING([--enable-debug],
1531         [Include debugging information, disable compiler optimization and inlining plus
1532          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1534 libo_FUZZ_ARG_ENABLE(split-debug,
1535     AS_HELP_STRING([--disable-split-debug],
1536         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1537          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1539 libo_FUZZ_ARG_ENABLE(gdb-index,
1540     AS_HELP_STRING([--disable-gdb-index],
1541         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1542          The feature requires the gold or lld linker.]))
1544 libo_FUZZ_ARG_ENABLE(sal-log,
1545     AS_HELP_STRING([--enable-sal-log],
1546         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1548 libo_FUZZ_ARG_ENABLE(symbols,
1549     AS_HELP_STRING([--enable-symbols],
1550         [Generate debug information.
1551          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1552          otherwise. It is possible to explicitly specify gbuild build targets
1553          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1554          everything in the directory; there is no ordering, more specific overrides
1555          more general, and disabling takes precedence).
1556          Example: --enable-symbols="all -sw/ -Library_sc".]))
1558 libo_FUZZ_ARG_ENABLE(optimized,
1559     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1560         [Whether to compile with optimization flags.
1561          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1562          otherwise. Using 'debug' will try to use only optimizations that should
1563          not interfere with debugging. For Emscripten we default to optimized (-O1)
1564          debug build, as otherwise binaries become too large.]))
1566 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1567     AS_HELP_STRING([--disable-runtime-optimizations],
1568         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1569          JVM JIT) that are known to interact badly with certain dynamic analysis
1570          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1571          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1572          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1574 AC_ARG_WITH(valgrind,
1575     AS_HELP_STRING([--with-valgrind],
1576         [Make availability of Valgrind headers a hard requirement.]))
1578 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1579     AS_HELP_STRING([--enable-compiler-plugins],
1580         [Enable compiler plugins that will perform additional checks during
1581          building. Enabled automatically by --enable-dbgutil.
1582          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1583 COMPILER_PLUGINS_DEBUG=
1584 if test "$enable_compiler_plugins" = debug; then
1585     enable_compiler_plugins=yes
1586     COMPILER_PLUGINS_DEBUG=TRUE
1589 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1590     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1591         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1592          relevant in the --disable-compiler-plugins case.]))
1594 libo_FUZZ_ARG_ENABLE(ooenv,
1595     AS_HELP_STRING([--enable-ooenv],
1596         [Enable ooenv for the instdir installation.]))
1598 AC_ARG_ENABLE(lto,
1599     AS_HELP_STRING([--enable-lto],
1600         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1601          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1602          linker.)]))
1604 AC_ARG_ENABLE(python,
1605     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1606         [Enables or disables Python support at run-time.
1607          Also specifies what Python to use at build-time.
1608          'fully-internal' even forces the internal version for uses of Python
1609          during the build.
1610          On macOS the only choices are
1611          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1612          ]))
1614 libo_FUZZ_ARG_ENABLE(gtk3,
1615     AS_HELP_STRING([--disable-gtk3],
1616         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1617 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1619 AC_ARG_ENABLE(gtk4,
1620     AS_HELP_STRING([--enable-gtk4],
1621         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1623 AC_ARG_ENABLE(introspection,
1624     AS_HELP_STRING([--enable-introspection],
1625         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1626          Linux distributions.)]))
1628 AC_ARG_ENABLE(split-app-modules,
1629     AS_HELP_STRING([--enable-split-app-modules],
1630         [Split file lists for app modules, e.g. base, calc.
1631          Has effect only with make distro-pack-install]),
1634 AC_ARG_ENABLE(split-opt-features,
1635     AS_HELP_STRING([--enable-split-opt-features],
1636         [Split file lists for some optional features, e.g. pyuno, testtool.
1637          Has effect only with make distro-pack-install]),
1640 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1641     AS_HELP_STRING([--disable-cairo-canvas],
1642         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1645 libo_FUZZ_ARG_ENABLE(dbus,
1646     AS_HELP_STRING([--disable-dbus],
1647         [Determines whether to enable features that depend on dbus.
1648          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1649 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1651 libo_FUZZ_ARG_ENABLE(sdremote,
1652     AS_HELP_STRING([--disable-sdremote],
1653         [Determines whether to enable Impress remote control (i.e. the server component).]),
1654 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1656 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1657     AS_HELP_STRING([--disable-sdremote-bluetooth],
1658         [Determines whether to build sdremote with bluetooth support.
1659          Requires dbus on Linux.]))
1661 libo_FUZZ_ARG_ENABLE(gio,
1662     AS_HELP_STRING([--disable-gio],
1663         [Determines whether to use the GIO support.]),
1664 ,test "${enable_gio+set}" = set || enable_gio=yes)
1666 AC_ARG_ENABLE(qt5,
1667     AS_HELP_STRING([--enable-qt5],
1668         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1669          available.]),
1672 AC_ARG_ENABLE(qt6,
1673     AS_HELP_STRING([--enable-qt6],
1674         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1675          available.]),
1678 AC_ARG_ENABLE(kf5,
1679     AS_HELP_STRING([--enable-kf5],
1680         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1681          KF5 are available.]),
1684 AC_ARG_ENABLE(gtk3_kde5,
1685     AS_HELP_STRING([--enable-gtk3-kde5],
1686         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1687          platforms where Gtk3, Qt5 and Plasma is available.]),
1690 AC_ARG_ENABLE(gui,
1691     AS_HELP_STRING([--disable-gui],
1692         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1693 ,enable_gui=yes)
1695 libo_FUZZ_ARG_ENABLE(randr,
1696     AS_HELP_STRING([--disable-randr],
1697         [Disable RandR support in the vcl project.]),
1698 ,test "${enable_randr+set}" = set || enable_randr=yes)
1700 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1701     AS_HELP_STRING([--disable-gstreamer-1-0],
1702         [Disable building with the gstreamer 1.0 avmedia backend.]),
1703 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1705 libo_FUZZ_ARG_ENABLE([eot],
1706     [AS_HELP_STRING([--enable-eot],
1707         [Enable support for Embedded OpenType fonts.])],
1708 ,test "${enable_eot+set}" = set || enable_eot=no)
1710 libo_FUZZ_ARG_ENABLE(cve-tests,
1711     AS_HELP_STRING([--disable-cve-tests],
1712         [Prevent CVE tests to be executed]),
1715 libo_FUZZ_ARG_ENABLE(chart-tests,
1716     AS_HELP_STRING([--enable-chart-tests],
1717         [Executes chart XShape tests. In a perfect world these tests would be
1718          stable and everyone could run them, in reality it is best to run them
1719          only on a few machines that are known to work and maintained by people
1720          who can judge if a test failure is a regression or not.]),
1723 AC_ARG_ENABLE(build-opensymbol,
1724     AS_HELP_STRING([--enable-build-opensymbol],
1725         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1726          fontforge installed.]),
1729 AC_ARG_ENABLE(dependency-tracking,
1730     AS_HELP_STRING([--enable-dependency-tracking],
1731         [Do not reject slow dependency extractors.])[
1732   --disable-dependency-tracking
1733                           Disables generation of dependency information.
1734                           Speed up one-time builds.],
1737 AC_ARG_ENABLE(icecream,
1738     AS_HELP_STRING([--enable-icecream],
1739         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1740          It defaults to /opt/icecream for the location of the icecream gcc/g++
1741          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1744 AC_ARG_ENABLE(ld,
1745     AS_HELP_STRING([--enable-ld=<linker>],
1746         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1747          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1748          If <linker> contains any ':', the part before the first ':' is used as the value of
1749          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1750          needed for Clang 12).]),
1753 libo_FUZZ_ARG_ENABLE(cups,
1754     AS_HELP_STRING([--disable-cups],
1755         [Do not build cups support.])
1758 AC_ARG_ENABLE(ccache,
1759     AS_HELP_STRING([--disable-ccache],
1760         [Do not try to use ccache automatically.
1761          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1762          CC/CXX are not yet set, and --enable-icecream is not given, we
1763          attempt to use ccache. --disable-ccache disables ccache completely.
1764          Additionally ccache's depend mode is enabled if possible,
1765          use --enable-ccache=nodepend to enable ccache without depend mode.
1769 libo_FUZZ_ARG_ENABLE(online-update,
1770     AS_HELP_STRING([--enable-online-update],
1771         [Enable the online update service that will check for new versions of
1772          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1773          If the value is "mar", the experimental Mozilla-like update will be
1774          enabled instead of the traditional update mechanism.]),
1777 AC_ARG_WITH(update-config,
1778     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1779                    [Path to the update config ini file]))
1781 libo_FUZZ_ARG_ENABLE(extension-update,
1782     AS_HELP_STRING([--disable-extension-update],
1783         [Disable possibility to update installed extensions.]),
1786 libo_FUZZ_ARG_ENABLE(release-build,
1787     AS_HELP_STRING([--enable-release-build],
1788         [Enable release build. Note that the "release build" choice is orthogonal to
1789          whether symbols are present, debug info is generated, or optimization
1790          is done.
1791          See http://wiki.documentfoundation.org/Development/DevBuild]),
1794 AC_ARG_ENABLE(windows-build-signing,
1795     AS_HELP_STRING([--enable-windows-build-signing],
1796         [Enable signing of windows binaries (*.exe, *.dll)]),
1799 AC_ARG_ENABLE(silent-msi,
1800     AS_HELP_STRING([--enable-silent-msi],
1801         [Enable MSI with LIMITUI=1 (silent install).]),
1804 AC_ARG_ENABLE(macosx-code-signing,
1805     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1806         [Sign executables, dylibs, frameworks and the app bundle. If you
1807          don't provide an identity the first suitable certificate
1808          in your keychain is used.]),
1811 AC_ARG_ENABLE(macosx-package-signing,
1812     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1813         [Create a .pkg suitable for uploading to the Mac App Store and sign
1814          it. If you don't provide an identity the first suitable certificate
1815          in your keychain is used.]),
1818 AC_ARG_ENABLE(macosx-sandbox,
1819     AS_HELP_STRING([--enable-macosx-sandbox],
1820         [Make the app bundle run in a sandbox. Requires code signing.
1821          Is required by apps distributed in the Mac App Store, and implies
1822          adherence to App Store rules.]),
1825 AC_ARG_WITH(macosx-bundle-identifier,
1826     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1827         [Define the macOS bundle identifier. Default is the somewhat weird
1828          org.libreoffice.script ("script", huh?).]),
1829 ,with_macosx_bundle_identifier=org.libreoffice.script)
1831 AC_ARG_WITH(product-name,
1832     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1833         [Define the product name. Default is AC_PACKAGE_NAME.]),
1834 ,with_product_name=$PRODUCTNAME)
1836 libo_FUZZ_ARG_ENABLE(community-flavor,
1837     AS_HELP_STRING([--disable-community-flavor],
1838         [Disable the Community branding.]),
1841 AC_ARG_WITH(package-version,
1842     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1843         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1846 libo_FUZZ_ARG_ENABLE(readonly-installset,
1847     AS_HELP_STRING([--enable-readonly-installset],
1848         [Prevents any attempts by LibreOffice to write into its installation. That means
1849          at least that no "system-wide" extensions can be added. Partly experimental work in
1850          progress, probably not fully implemented. Always enabled for macOS.]),
1853 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1854     AS_HELP_STRING([--disable-mariadb-sdbc],
1855         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1858 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1859     AS_HELP_STRING([--disable-postgresql-sdbc],
1860         [Disable the build of the PostgreSQL-SDBC driver.])
1863 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1864     AS_HELP_STRING([--disable-lotuswordpro],
1865         [Disable the build of the Lotus Word Pro filter.]),
1866 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1868 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1869     AS_HELP_STRING([--disable-firebird-sdbc],
1870         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1871 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1873 AC_ARG_ENABLE(bogus-pkg-config,
1874     AS_HELP_STRING([--enable-bogus-pkg-config],
1875         [MACOSX only: on MacOSX pkg-config can cause trouble. by default if one is found in the PATH, an error is issued. This flag turn that error into a warning.]),
1878 AC_ARG_ENABLE(openssl,
1879     AS_HELP_STRING([--disable-openssl],
1880         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1881          components will either use GNUTLS or NSS. Work in progress,
1882          use only if you are hacking on it.]),
1883 ,enable_openssl=yes)
1885 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1886     AS_HELP_STRING([--enable-cipher-openssl-backend],
1887         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1888          Requires --enable-openssl.]))
1890 AC_ARG_ENABLE(nss,
1891     AS_HELP_STRING([--disable-nss],
1892         [Disable using NSS. If disabled,
1893          components will either use GNUTLS or openssl. Work in progress,
1894          use only if you are hacking on it.]),
1895 ,enable_nss=yes)
1897 AC_ARG_ENABLE(library-bin-tar,
1898     AS_HELP_STRING([--enable-library-bin-tar],
1899         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1900         Some libraries can save their build result in a tarball
1901         stored in TARFILE_LOCATION. That binary tarball is
1902         uniquely identified by the source tarball,
1903         the content of the config_host.mk file and the content
1904         of the top-level directory in core for that library
1905         If this option is enabled, then if such a tarfile exist, it will be untarred
1906         instead of the source tarfile, and the build step will be skipped for that
1907         library.
1908         If a proper tarfile does not exist, then the normal source-based
1909         build is done for that library and a proper binary tarfile is created
1910         for the next time.]),
1913 AC_ARG_ENABLE(dconf,
1914     AS_HELP_STRING([--disable-dconf],
1915         [Disable the dconf configuration backend (enabled by default where
1916          available).]))
1918 libo_FUZZ_ARG_ENABLE(formula-logger,
1919     AS_HELP_STRING(
1920         [--enable-formula-logger],
1921         [Enable formula logger for logging formula calculation flow in Calc.]
1922     )
1925 AC_ARG_ENABLE(ldap,
1926     AS_HELP_STRING([--disable-ldap],
1927         [Disable LDAP support.]),
1928 ,enable_ldap=yes)
1930 AC_ARG_ENABLE(opencl,
1931     AS_HELP_STRING([--disable-opencl],
1932         [Disable OpenCL support.]),
1933 ,enable_opencl=yes)
1935 libo_FUZZ_ARG_ENABLE(librelogo,
1936     AS_HELP_STRING([--disable-librelogo],
1937         [Do not build LibreLogo.]),
1938 ,enable_librelogo=yes)
1940 AC_ARG_ENABLE(cmis,
1941     AS_HELP_STRING([--disable-cmis],
1942         [Disable CMIS support.]),
1943 ,enable_cmis=yes)
1945 AC_ARG_ENABLE(curl,
1946     AS_HELP_STRING([--disable-curl],
1947         [Disable CURL support.]),
1948 ,enable_curl=yes)
1950 AC_ARG_ENABLE(wasm-strip,
1951     AS_HELP_STRING([--enable-wasm-strip],
1952         [Strip the static build like for WASM/emscripten platform.]),
1953 ,enable_wasm_strip=yes)
1955 AC_ARG_ENABLE(xmlhelp,
1956     AS_HELP_STRING([--disable-xmlhelp],
1957         [Disable XML help support]),
1958 ,enable_xmlhelp=yes)
1961 dnl ===================================================================
1962 dnl Optional Packages (--with/without-)
1963 dnl ===================================================================
1965 AC_ARG_WITH(gcc-home,
1966     AS_HELP_STRING([--with-gcc-home],
1967         [Specify the location of gcc/g++ manually. This can be used in conjunction
1968          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1969          non-default path.]),
1972 AC_ARG_WITH(gnu-patch,
1973     AS_HELP_STRING([--with-gnu-patch],
1974         [Specify location of GNU patch on Solaris or FreeBSD.]),
1977 AC_ARG_WITH(build-platform-configure-options,
1978     AS_HELP_STRING([--with-build-platform-configure-options],
1979         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1982 AC_ARG_WITH(gnu-cp,
1983     AS_HELP_STRING([--with-gnu-cp],
1984         [Specify location of GNU cp on Solaris or FreeBSD.]),
1987 AC_ARG_WITH(external-tar,
1988     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1989         [Specify an absolute path of where to find (and store) tarfiles.]),
1990     TARFILE_LOCATION=$withval ,
1993 AC_ARG_WITH(referenced-git,
1994     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1995         [Specify another checkout directory to reference. This makes use of
1996                  git submodule update --reference, and saves a lot of diskspace
1997                  when having multiple trees side-by-side.]),
1998     GIT_REFERENCE_SRC=$withval ,
2001 AC_ARG_WITH(linked-git,
2002     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2003         [Specify a directory where the repositories of submodules are located.
2004          This uses a method similar to git-new-workdir to get submodules.]),
2005     GIT_LINK_SRC=$withval ,
2008 AC_ARG_WITH(galleries,
2009     AS_HELP_STRING([--with-galleries],
2010         [Specify how galleries should be built. It is possible either to
2011          build these internally from source ("build"),
2012          or to disable them ("no")]),
2015 AC_ARG_WITH(theme,
2016     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2017         [Choose which themes to include. By default those themes with an '*' are included.
2018          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2019          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2022 libo_FUZZ_ARG_WITH(helppack-integration,
2023     AS_HELP_STRING([--without-helppack-integration],
2024         [It will not integrate the helppacks to the installer
2025          of the product. Please use this switch to use the online help
2026          or separate help packages.]),
2029 libo_FUZZ_ARG_WITH(fonts,
2030     AS_HELP_STRING([--without-fonts],
2031         [LibreOffice includes some third-party fonts to provide a reliable basis for
2032          help content, templates, samples, etc. When these fonts are already
2033          known to be available on the system then you should use this option.]),
2036 AC_ARG_WITH(epm,
2037     AS_HELP_STRING([--with-epm],
2038         [Decides which epm to use. Default is to use the one from the system if
2039          one is built. When either this is not there or you say =internal epm
2040          will be built.]),
2043 AC_ARG_WITH(package-format,
2044     AS_HELP_STRING([--with-package-format],
2045         [Specify package format(s) for LibreOffice installation sets. The
2046          implicit --without-package-format leads to no installation sets being
2047          generated. Possible values: aix, archive, bsd, deb, dmg,
2048          installed, msi, pkg, and rpm.
2049          Example: --with-package-format='deb rpm']),
2052 AC_ARG_WITH(tls,
2053     AS_HELP_STRING([--with-tls],
2054         [Decides which TLS/SSL and cryptographic implementations to use for
2055          LibreOffice's code. Notice that this doesn't apply for depending
2056          libraries like "neon", for example. Default is to use NSS
2057          although OpenSSL is also possible. Notice that selecting NSS restricts
2058          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2059          restrict by now the usage of NSS in LO's code. Possible values:
2060          openssl, nss. Example: --with-tls="nss"]),
2063 AC_ARG_WITH(system-libs,
2064     AS_HELP_STRING([--with-system-libs],
2065         [Use libraries already on system -- enables all --with-system-* flags.]),
2068 AC_ARG_WITH(system-bzip2,
2069     AS_HELP_STRING([--with-system-bzip2],
2070         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2071     [with_system_bzip2="$with_system_libs"])
2073 AC_ARG_WITH(system-headers,
2074     AS_HELP_STRING([--with-system-headers],
2075         [Use headers already on system -- enables all --with-system-* flags for
2076          external packages whose headers are the only entities used i.e.
2077          boost/odbc/sane-header(s).]),,
2078     [with_system_headers="$with_system_libs"])
2080 AC_ARG_WITH(system-jars,
2081     AS_HELP_STRING([--without-system-jars],
2082         [When building with --with-system-libs, also the needed jars are expected
2083          on the system. Use this to disable that]),,
2084     [with_system_jars="$with_system_libs"])
2086 AC_ARG_WITH(system-cairo,
2087     AS_HELP_STRING([--with-system-cairo],
2088         [Use cairo libraries already on system.  Happens automatically for
2089          (implicit) --enable-gtk3.]))
2091 AC_ARG_WITH(system-epoxy,
2092     AS_HELP_STRING([--with-system-epoxy],
2093         [Use epoxy libraries already on system.  Happens automatically for
2094          (implicit) --enable-gtk3.]),,
2095        [with_system_epoxy="$with_system_libs"])
2097 AC_ARG_WITH(myspell-dicts,
2098     AS_HELP_STRING([--with-myspell-dicts],
2099         [Adds myspell dictionaries to the LibreOffice installation set]),
2102 AC_ARG_WITH(system-dicts,
2103     AS_HELP_STRING([--without-system-dicts],
2104         [Do not use dictionaries from system paths.]),
2107 AC_ARG_WITH(external-dict-dir,
2108     AS_HELP_STRING([--with-external-dict-dir],
2109         [Specify external dictionary dir.]),
2112 AC_ARG_WITH(external-hyph-dir,
2113     AS_HELP_STRING([--with-external-hyph-dir],
2114         [Specify external hyphenation pattern dir.]),
2117 AC_ARG_WITH(external-thes-dir,
2118     AS_HELP_STRING([--with-external-thes-dir],
2119         [Specify external thesaurus dir.]),
2122 AC_ARG_WITH(system-zlib,
2123     AS_HELP_STRING([--with-system-zlib],
2124         [Use zlib already on system.]),,
2125     [with_system_zlib=auto])
2127 AC_ARG_WITH(system-jpeg,
2128     AS_HELP_STRING([--with-system-jpeg],
2129         [Use jpeg already on system.]),,
2130     [with_system_jpeg="$with_system_libs"])
2132 AC_ARG_WITH(system-clucene,
2133     AS_HELP_STRING([--with-system-clucene],
2134         [Use clucene already on system.]),,
2135     [with_system_clucene="$with_system_libs"])
2137 AC_ARG_WITH(system-expat,
2138     AS_HELP_STRING([--with-system-expat],
2139         [Use expat already on system.]),,
2140     [with_system_expat="$with_system_libs"])
2142 AC_ARG_WITH(system-libxml,
2143     AS_HELP_STRING([--with-system-libxml],
2144         [Use libxml/libxslt already on system.]),,
2145     [with_system_libxml=auto])
2147 AC_ARG_WITH(system-icu,
2148     AS_HELP_STRING([--with-system-icu],
2149         [Use icu already on system.]),,
2150     [with_system_icu="$with_system_libs"])
2152 AC_ARG_WITH(system-ucpp,
2153     AS_HELP_STRING([--with-system-ucpp],
2154         [Use ucpp already on system.]),,
2155     [])
2157 AC_ARG_WITH(system-openldap,
2158     AS_HELP_STRING([--with-system-openldap],
2159         [Use the OpenLDAP LDAP SDK already on system.]),,
2160     [with_system_openldap="$with_system_libs"])
2162 libo_FUZZ_ARG_ENABLE(poppler,
2163     AS_HELP_STRING([--disable-poppler],
2164         [Disable building Poppler.])
2167 AC_ARG_WITH(system-poppler,
2168     AS_HELP_STRING([--with-system-poppler],
2169         [Use system poppler (only needed for PDF import).]),,
2170     [with_system_poppler="$with_system_libs"])
2172 libo_FUZZ_ARG_ENABLE(gpgmepp,
2173     AS_HELP_STRING([--disable-gpgmepp],
2174         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2177 AC_ARG_WITH(system-gpgmepp,
2178     AS_HELP_STRING([--with-system-gpgmepp],
2179         [Use gpgmepp already on system]),,
2180     [with_system_gpgmepp="$with_system_libs"])
2182 AC_ARG_WITH(system-mariadb,
2183     AS_HELP_STRING([--with-system-mariadb],
2184         [Use MariaDB/MySQL libraries already on system.]),,
2185     [with_system_mariadb="$with_system_libs"])
2187 AC_ARG_ENABLE(bundle-mariadb,
2188     AS_HELP_STRING([--enable-bundle-mariadb],
2189         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2192 AC_ARG_WITH(system-postgresql,
2193     AS_HELP_STRING([--with-system-postgresql],
2194         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2195          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2196     [with_system_postgresql="$with_system_libs"])
2198 AC_ARG_WITH(libpq-path,
2199     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2200         [Use this PostgreSQL C interface (libpq) installation for building
2201          the PostgreSQL-SDBC extension.]),
2204 AC_ARG_WITH(system-firebird,
2205     AS_HELP_STRING([--with-system-firebird],
2206         [Use Firebird libraries already on system, for building the Firebird-SDBC
2207          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2208     [with_system_firebird="$with_system_libs"])
2210 AC_ARG_WITH(system-libtommath,
2211             AS_HELP_STRING([--with-system-libtommath],
2212                            [Use libtommath already on system]),,
2213             [with_system_libtommath="$with_system_libs"])
2215 AC_ARG_WITH(system-hsqldb,
2216     AS_HELP_STRING([--with-system-hsqldb],
2217         [Use hsqldb already on system.]))
2219 AC_ARG_WITH(hsqldb-jar,
2220     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2221         [Specify path to jarfile manually.]),
2222     HSQLDB_JAR=$withval)
2224 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2225     AS_HELP_STRING([--disable-scripting-beanshell],
2226         [Disable support for scripts in BeanShell.]),
2230 AC_ARG_WITH(system-beanshell,
2231     AS_HELP_STRING([--with-system-beanshell],
2232         [Use beanshell already on system.]),,
2233     [with_system_beanshell="$with_system_jars"])
2235 AC_ARG_WITH(beanshell-jar,
2236     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2237         [Specify path to jarfile manually.]),
2238     BSH_JAR=$withval)
2240 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2241     AS_HELP_STRING([--disable-scripting-javascript],
2242         [Disable support for scripts in JavaScript.]),
2246 AC_ARG_WITH(system-rhino,
2247     AS_HELP_STRING([--with-system-rhino],
2248         [Use rhino already on system.]),,)
2249 #    [with_system_rhino="$with_system_jars"])
2250 # Above is not used as we have different debug interface
2251 # patched into internal rhino. This code needs to be fixed
2252 # before we can enable it by default.
2254 AC_ARG_WITH(rhino-jar,
2255     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2256         [Specify path to jarfile manually.]),
2257     RHINO_JAR=$withval)
2259 AC_ARG_WITH(system-jfreereport,
2260     AS_HELP_STRING([--with-system-jfreereport],
2261         [Use JFreeReport already on system.]),,
2262     [with_system_jfreereport="$with_system_jars"])
2264 AC_ARG_WITH(sac-jar,
2265     AS_HELP_STRING([--with-sac-jar=JARFILE],
2266         [Specify path to jarfile manually.]),
2267     SAC_JAR=$withval)
2269 AC_ARG_WITH(libxml-jar,
2270     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2271         [Specify path to jarfile manually.]),
2272     LIBXML_JAR=$withval)
2274 AC_ARG_WITH(flute-jar,
2275     AS_HELP_STRING([--with-flute-jar=JARFILE],
2276         [Specify path to jarfile manually.]),
2277     FLUTE_JAR=$withval)
2279 AC_ARG_WITH(jfreereport-jar,
2280     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2281         [Specify path to jarfile manually.]),
2282     JFREEREPORT_JAR=$withval)
2284 AC_ARG_WITH(liblayout-jar,
2285     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2286         [Specify path to jarfile manually.]),
2287     LIBLAYOUT_JAR=$withval)
2289 AC_ARG_WITH(libloader-jar,
2290     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2291         [Specify path to jarfile manually.]),
2292     LIBLOADER_JAR=$withval)
2294 AC_ARG_WITH(libformula-jar,
2295     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2296         [Specify path to jarfile manually.]),
2297     LIBFORMULA_JAR=$withval)
2299 AC_ARG_WITH(librepository-jar,
2300     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2301         [Specify path to jarfile manually.]),
2302     LIBREPOSITORY_JAR=$withval)
2304 AC_ARG_WITH(libfonts-jar,
2305     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2306         [Specify path to jarfile manually.]),
2307     LIBFONTS_JAR=$withval)
2309 AC_ARG_WITH(libserializer-jar,
2310     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2311         [Specify path to jarfile manually.]),
2312     LIBSERIALIZER_JAR=$withval)
2314 AC_ARG_WITH(libbase-jar,
2315     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2316         [Specify path to jarfile manually.]),
2317     LIBBASE_JAR=$withval)
2319 AC_ARG_WITH(system-odbc,
2320     AS_HELP_STRING([--with-system-odbc],
2321         [Use the odbc headers already on system.]),,
2322     [with_system_odbc="auto"])
2324 AC_ARG_WITH(system-sane,
2325     AS_HELP_STRING([--with-system-sane],
2326         [Use sane.h already on system.]),,
2327     [with_system_sane="$with_system_headers"])
2329 AC_ARG_WITH(system-bluez,
2330     AS_HELP_STRING([--with-system-bluez],
2331         [Use bluetooth.h already on system.]),,
2332     [with_system_bluez="$with_system_headers"])
2334 AC_ARG_WITH(system-curl,
2335     AS_HELP_STRING([--with-system-curl],
2336         [Use curl already on system.]),,
2337     [with_system_curl=auto])
2339 AC_ARG_WITH(system-boost,
2340     AS_HELP_STRING([--with-system-boost],
2341         [Use boost already on system.]),,
2342     [with_system_boost="$with_system_headers"])
2344 AC_ARG_WITH(system-cuckoo,
2345     AS_HELP_STRING([--with-system-cuckoo],
2346         [Use libcuckoo already on system.]),,
2347     [with_system_cuckoo="$with_system_headers"])
2349 AC_ARG_WITH(system-glm,
2350     AS_HELP_STRING([--with-system-glm],
2351         [Use glm already on system.]),,
2352     [with_system_glm="$with_system_headers"])
2354 AC_ARG_WITH(system-hunspell,
2355     AS_HELP_STRING([--with-system-hunspell],
2356         [Use libhunspell already on system.]),,
2357     [with_system_hunspell="$with_system_libs"])
2359 libo_FUZZ_ARG_ENABLE(zxing,
2360     AS_HELP_STRING([--disable-zxing],
2361        [Disable use of zxing external library.]))
2363 AC_ARG_WITH(system-zxing,
2364     AS_HELP_STRING([--with-system-zxing],
2365         [Use libzxing already on system.]),,
2366     [with_system_zxing="$with_system_libs"])
2368 AC_ARG_WITH(system-box2d,
2369     AS_HELP_STRING([--with-system-box2d],
2370         [Use box2d already on system.]),,
2371     [with_system_box2d="$with_system_libs"])
2373 AC_ARG_WITH(system-mythes,
2374     AS_HELP_STRING([--with-system-mythes],
2375         [Use mythes already on system.]),,
2376     [with_system_mythes="$with_system_libs"])
2378 AC_ARG_WITH(system-altlinuxhyph,
2379     AS_HELP_STRING([--with-system-altlinuxhyph],
2380         [Use ALTLinuxhyph already on system.]),,
2381     [with_system_altlinuxhyph="$with_system_libs"])
2383 AC_ARG_WITH(system-lpsolve,
2384     AS_HELP_STRING([--with-system-lpsolve],
2385         [Use lpsolve already on system.]),,
2386     [with_system_lpsolve="$with_system_libs"])
2388 AC_ARG_WITH(system-coinmp,
2389     AS_HELP_STRING([--with-system-coinmp],
2390         [Use CoinMP already on system.]),,
2391     [with_system_coinmp="$with_system_libs"])
2393 AC_ARG_WITH(system-liblangtag,
2394     AS_HELP_STRING([--with-system-liblangtag],
2395         [Use liblangtag library already on system.]),,
2396     [with_system_liblangtag="$with_system_libs"])
2398 AC_ARG_WITH(webdav,
2399     AS_HELP_STRING([--with-webdav],
2400         [Specify which library to use for webdav implementation.
2401          Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2402          Example: --with-webdav="serf"]))
2404 AC_ARG_WITH(linker-hash-style,
2405     AS_HELP_STRING([--with-linker-hash-style],
2406         [Use linker with --hash-style=<style> when linking shared objects.
2407          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2408          if supported on the build system, and "sysv" otherwise.]))
2410 AC_ARG_WITH(jdk-home,
2411     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2412         [If you have installed JDK 9 or later on your system please supply the
2413          path here. Note that this is not the location of the java command but the
2414          location of the entire distribution. In case of cross-compiling, this
2415          is the JDK of the host os. Use --with-build-platform-configure-options
2416          to point to a different build platform JDK.]),
2419 AC_ARG_WITH(help,
2420     AS_HELP_STRING([--with-help],
2421         [Enable the build of help. There is a special parameter "common" that
2422          can be used to bundle only the common part, .e.g help-specific icons.
2423          This is useful when you build the helpcontent separately.])
2424     [
2425                           Usage:     --with-help    build the old local help
2426                                  --without-help     no local help (default)
2427                                  --with-help=html   build the new HTML local help
2428                                  --with-help=online build the new HTML online help
2429     ],
2432 AC_ARG_WITH(omindex,
2433    AS_HELP_STRING([--with-omindex],
2434         [Enable the support of xapian-omega index for online help.])
2435    [
2436                          Usage: --with-omindex=server prepare the pages for omindex
2437                                 but let xapian-omega be built in server.
2438                                 --with-omindex=noxap do not prepare online pages
2439                                 for xapian-omega
2440   ],
2443 libo_FUZZ_ARG_WITH(java,
2444     AS_HELP_STRING([--with-java=<java command>],
2445         [Specify the name of the Java interpreter command. Typically "java"
2446          which is the default.
2448          To build without support for Java components, applets, accessibility
2449          or the XML filters written in Java, use --without-java or --with-java=no.]),
2450     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2451     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2454 AC_ARG_WITH(jvm-path,
2455     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2456         [Use a specific JVM search path at runtime.
2457          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2460 AC_ARG_WITH(ant-home,
2461     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2462         [If you have installed Apache Ant on your system, please supply the path here.
2463          Note that this is not the location of the Ant binary but the location
2464          of the entire distribution.]),
2467 AC_ARG_WITH(symbol-config,
2468     AS_HELP_STRING([--with-symbol-config],
2469         [Configuration for the crashreport symbol upload]),
2470         [],
2471         [with_symbol_config=no])
2473 AC_ARG_WITH(export-validation,
2474     AS_HELP_STRING([--without-export-validation],
2475         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2476 ,with_export_validation=auto)
2478 AC_ARG_WITH(bffvalidator,
2479     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2480         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2481          Requires installed Microsoft Office Binary File Format Validator.
2482          Note: export-validation (--with-export-validation) is required to be turned on.
2483          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2484 ,with_bffvalidator=no)
2486 libo_FUZZ_ARG_WITH(junit,
2487     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2488         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2489          --without-junit disables those tests. Not relevant in the --without-java case.]),
2490 ,with_junit=yes)
2492 AC_ARG_WITH(hamcrest,
2493     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2494         [Specifies the hamcrest jar file to use for JUnit-based tests.
2495          --without-junit disables those tests. Not relevant in the --without-java case.]),
2496 ,with_hamcrest=yes)
2498 AC_ARG_WITH(perl-home,
2499     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2500         [If you have installed Perl 5 Distribution, on your system, please
2501          supply the path here. Note that this is not the location of the Perl
2502          binary but the location of the entire distribution.]),
2505 libo_FUZZ_ARG_WITH(doxygen,
2506     AS_HELP_STRING(
2507         [--with-doxygen=<absolute path to doxygen executable>],
2508         [Specifies the doxygen executable to use when generating ODK C/C++
2509          documentation. --without-doxygen disables generation of ODK C/C++
2510          documentation. Not relevant in the --disable-odk case.]),
2511 ,with_doxygen=yes)
2513 AC_ARG_WITH(visual-studio,
2514     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2515         [Specify which Visual Studio version to use in case several are
2516          installed. Currently 2019 (default) and 2022 are supported.]),
2519 AC_ARG_WITH(windows-sdk,
2520     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2521         [Specify which Windows SDK, or "Windows Kit", version to use
2522          in case the one that came with the selected Visual Studio
2523          is not what you want for some reason. Note that not all compiler/SDK
2524          combinations are supported. The intent is that this option should not
2525          be needed.]),
2528 AC_ARG_WITH(lang,
2529     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2530         [Use this option to build LibreOffice with additional UI language support.
2531          English (US) is always included by default.
2532          Separate multiple languages with space.
2533          For all languages, use --with-lang=ALL.]),
2536 AC_ARG_WITH(locales,
2537     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2538         [Use this option to limit the locale information built in.
2539          Separate multiple locales with space.
2540          Very experimental and might well break stuff.
2541          Just a desperate measure to shrink code and data size.
2542          By default all the locales available is included.
2543          This option is completely unrelated to --with-lang.])
2544     [
2545                           Affects also our character encoding conversion
2546                           tables for encodings mainly targeted for a
2547                           particular locale, like EUC-CN and EUC-TW for
2548                           zh, ISO-2022-JP for ja.
2550                           Affects also our add-on break iterator data for
2551                           some languages.
2553                           For the default, all locales, don't use this switch at all.
2554                           Specifying just the language part of a locale means all matching
2555                           locales will be included.
2556     ],
2559 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2560 libo_FUZZ_ARG_WITH(krb5,
2561     AS_HELP_STRING([--with-krb5],
2562         [Enable MIT Kerberos 5 support in modules that support it.
2563          By default automatically enabled on platforms
2564          where a good system Kerberos 5 is available.]),
2567 libo_FUZZ_ARG_WITH(gssapi,
2568     AS_HELP_STRING([--with-gssapi],
2569         [Enable GSSAPI support in modules that support it.
2570          By default automatically enabled on platforms
2571          where a good system GSSAPI is available.]),
2574 AC_ARG_WITH(iwyu,
2575     AS_HELP_STRING([--with-iwyu],
2576         [Use given IWYU binary path to check unneeded includes instead of building.
2577          Use only if you are hacking on it.]),
2580 libo_FUZZ_ARG_WITH(lxml,
2581     AS_HELP_STRING([--without-lxml],
2582         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2583          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2584          report widget classes and ids.]),
2587 libo_FUZZ_ARG_WITH(latest-c++,
2588     AS_HELP_STRING([--with-latest-c++],
2589         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2590          published standard.]),,
2591         [with_latest_c__=no])
2593 dnl ===================================================================
2594 dnl Branding
2595 dnl ===================================================================
2597 AC_ARG_WITH(branding,
2598     AS_HELP_STRING([--with-branding=/path/to/images],
2599         [Use given path to retrieve branding images set.])
2600     [
2601                           Search for intro.png about.svg and logo.svg.
2602                           If any is missing, default ones will be used instead.
2604                           Search also progress.conf for progress
2605                           settings on intro screen :
2607                           PROGRESSBARCOLOR="255,255,255" Set color of
2608                           progress bar. Comma separated RGB decimal values.
2609                           PROGRESSSIZE="407,6" Set size of progress bar.
2610                           Comma separated decimal values (width, height).
2611                           PROGRESSPOSITION="61,317" Set position of progress
2612                           bar from left,top. Comma separated decimal values.
2613                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2614                           bar frame. Comma separated RGB decimal values.
2615                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2616                           bar text. Comma separated RGB decimal values.
2617                           PROGRESSTEXTBASELINE="287" Set vertical position of
2618                           progress bar text from top. Decimal value.
2620                           Default values will be used if not found.
2621     ],
2625 AC_ARG_WITH(extra-buildid,
2626     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2627         [Show addition build identification in about dialog.]),
2631 AC_ARG_WITH(vendor,
2632     AS_HELP_STRING([--with-vendor="John the Builder"],
2633         [Set vendor of the build.]),
2636 AC_ARG_WITH(privacy-policy-url,
2637     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2638         [The URL to your privacy policy (needed when
2639          enabling online-update or crashreporting via breakpad)]),
2640         [if test "x$with_privacy_policy_url" = "xyes"; then
2641             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2642          elif test "x$with_privacy_policy_url" = "xno"; then
2643             with_privacy_policy_url="undefined"
2644          fi]
2645 ,[with_privacy_policy_url="undefined"])
2647 AC_ARG_WITH(android-package-name,
2648     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2649         [Set Android package name of the build.]),
2652 AC_ARG_WITH(compat-oowrappers,
2653     AS_HELP_STRING([--with-compat-oowrappers],
2654         [Install oo* wrappers in parallel with
2655          lo* ones to keep backward compatibility.
2656          Has effect only with make distro-pack-install]),
2659 AC_ARG_WITH(os-version,
2660     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2661         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2664 AC_ARG_WITH(idlc-cpp,
2665     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2666         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2669 AC_ARG_WITH(parallelism,
2670     AS_HELP_STRING([--with-parallelism],
2671         [Number of jobs to run simultaneously during build. Parallel builds can
2672         save a lot of time on multi-cpu machines. Defaults to the number of
2673         CPUs on the machine, unless you configure --enable-icecream - then to
2674         40.]),
2677 AC_ARG_WITH(all-tarballs,
2678     AS_HELP_STRING([--with-all-tarballs],
2679         [Download all external tarballs unconditionally]))
2681 AC_ARG_WITH(gdrive-client-id,
2682     AS_HELP_STRING([--with-gdrive-client-id],
2683         [Provides the client id of the application for OAuth2 authentication
2684         on Google Drive. If either this or --with-gdrive-client-secret is
2685         empty, the feature will be disabled]),
2688 AC_ARG_WITH(gdrive-client-secret,
2689     AS_HELP_STRING([--with-gdrive-client-secret],
2690         [Provides the client secret of the application for OAuth2
2691         authentication on Google Drive. If either this or
2692         --with-gdrive-client-id is empty, the feature will be disabled]),
2695 AC_ARG_WITH(alfresco-cloud-client-id,
2696     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2697         [Provides the client id of the application for OAuth2 authentication
2698         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2699         empty, the feature will be disabled]),
2702 AC_ARG_WITH(alfresco-cloud-client-secret,
2703     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2704         [Provides the client secret of the application for OAuth2
2705         authentication on Alfresco Cloud. If either this or
2706         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2709 AC_ARG_WITH(onedrive-client-id,
2710     AS_HELP_STRING([--with-onedrive-client-id],
2711         [Provides the client id of the application for OAuth2 authentication
2712         on OneDrive. If either this or --with-onedrive-client-secret is
2713         empty, the feature will be disabled]),
2716 AC_ARG_WITH(onedrive-client-secret,
2717     AS_HELP_STRING([--with-onedrive-client-secret],
2718         [Provides the client secret of the application for OAuth2
2719         authentication on OneDrive. If either this or
2720         --with-onedrive-client-id is empty, the feature will be disabled]),
2722 dnl ===================================================================
2723 dnl Do we want to use pre-build binary tarball for recompile
2724 dnl ===================================================================
2726 if test "$enable_library_bin_tar" = "yes" ; then
2727     USE_LIBRARY_BIN_TAR=TRUE
2728 else
2729     USE_LIBRARY_BIN_TAR=
2731 AC_SUBST(USE_LIBRARY_BIN_TAR)
2733 dnl ===================================================================
2734 dnl Test whether build target is Release Build
2735 dnl ===================================================================
2736 AC_MSG_CHECKING([whether build target is Release Build])
2737 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2738     AC_MSG_RESULT([no])
2739     ENABLE_RELEASE_BUILD=
2740     GET_TASK_ALLOW_ENTITLEMENT='
2741         <!-- We want to be able to debug a hardened process when not building for release -->
2742         <key>com.apple.security.get-task-allow</key>
2743         <true/>'
2744 else
2745     AC_MSG_RESULT([yes])
2746     ENABLE_RELEASE_BUILD=TRUE
2747     GET_TASK_ALLOW_ENTITLEMENT=''
2749 AC_SUBST(ENABLE_RELEASE_BUILD)
2750 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2752 AC_MSG_CHECKING([whether to build a Community flavor])
2753 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2754     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2755     AC_MSG_RESULT([yes])
2756 else
2757     AC_MSG_RESULT([no])
2760 dnl ===================================================================
2761 dnl Test whether to sign Windows Build
2762 dnl ===================================================================
2763 AC_MSG_CHECKING([whether to sign windows build])
2764 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2765     AC_MSG_RESULT([yes])
2766     WINDOWS_BUILD_SIGNING="TRUE"
2767 else
2768     AC_MSG_RESULT([no])
2769     WINDOWS_BUILD_SIGNING="FALSE"
2771 AC_SUBST(WINDOWS_BUILD_SIGNING)
2773 dnl ===================================================================
2774 dnl MacOSX build and runtime environment options
2775 dnl ===================================================================
2777 AC_ARG_WITH(macosx-version-min-required,
2778     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2779         [set the minimum OS version needed to run the built LibreOffice])
2780     [
2781                           e. g.: --with-macosx-version-min-required=10.12
2782     ],
2785 AC_ARG_WITH(macosx-version-max-allowed,
2786     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2787         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2788     [
2789                           e. g.: --with-macosx-version-max-allowed=11.0
2790     ],
2794 dnl ===================================================================
2795 dnl options for stuff used during cross-compilation build
2796 dnl Not quite superseded by --with-build-platform-configure-options.
2797 dnl TODO: check, if the "force" option is still needed anywhere.
2798 dnl ===================================================================
2800 AC_ARG_WITH(system-icu-for-build,
2801     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2802         [Use icu already on system for build tools (cross-compilation only).]))
2805 dnl ===================================================================
2806 dnl Check for incompatible options set by fuzzing, and reset those
2807 dnl automatically to working combinations
2808 dnl ===================================================================
2810 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2811         "$enable_dbus" != "$enable_avahi"; then
2812     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2813     enable_avahi=$enable_dbus
2816 add_lopath_after ()
2818     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2819         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2820     fi
2823 add_lopath_before ()
2825     local IFS=${P_SEP}
2826     local path_cleanup
2827     local dir
2828     for dir in $LO_PATH ; do
2829         if test "$dir" != "$1" ; then
2830             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2831         fi
2832     done
2833     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2836 dnl ===================================================================
2837 dnl check for required programs (grep, awk, sed, bash)
2838 dnl ===================================================================
2840 pathmunge ()
2842     local new_path
2843     if test -n "$1"; then
2844         if test "$build_os" = "cygwin"; then
2845             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2846                 PathFormat "$1"
2847                 new_path=`cygpath -sm "$formatted_path"`
2848             else
2849                 PathFormat "$1"
2850                 new_path=`cygpath -u "$formatted_path"`
2851             fi
2852         else
2853             new_path="$1"
2854         fi
2855         if test "$2" = "after"; then
2856             add_lopath_after "$new_path"
2857         else
2858             add_lopath_before "$new_path"
2859         fi
2860     fi
2863 AC_PROG_AWK
2864 AC_PATH_PROG( AWK, $AWK)
2865 if test -z "$AWK"; then
2866     AC_MSG_ERROR([install awk to run this script])
2869 AC_PATH_PROG(BASH, bash)
2870 if test -z "$BASH"; then
2871     AC_MSG_ERROR([bash not found in \$PATH])
2873 AC_SUBST(BASH)
2875 AC_MSG_CHECKING([for GNU or BSD tar])
2876 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2877     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2878     if test $? -eq 0;  then
2879         GNUTAR=$a
2880         break
2881     fi
2882 done
2883 AC_MSG_RESULT($GNUTAR)
2884 if test -z "$GNUTAR"; then
2885     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2887 AC_SUBST(GNUTAR)
2889 AC_MSG_CHECKING([for tar's option to strip components])
2890 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2891 if test $? -eq 0; then
2892     STRIP_COMPONENTS="--strip-components"
2893 else
2894     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2895     if test $? -eq 0; then
2896         STRIP_COMPONENTS="--strip-path"
2897     else
2898         STRIP_COMPONENTS="unsupported"
2899     fi
2901 AC_MSG_RESULT($STRIP_COMPONENTS)
2902 if test x$STRIP_COMPONENTS = xunsupported; then
2903     AC_MSG_ERROR([you need a tar that is able to strip components.])
2905 AC_SUBST(STRIP_COMPONENTS)
2907 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2908 dnl desktop OSes from "mobile" ones.
2910 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2911 dnl In other words, that when building for an OS that is not a
2912 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2914 dnl Note the direction of the implication; there is no assumption that
2915 dnl cross-compiling would imply a non-desktop OS.
2917 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2918     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2919     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2920     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2923 # Whether to build "avmedia" functionality or not.
2925 if test -z "$enable_avmedia"; then
2926     enable_avmedia=yes
2929 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2930 if test "$enable_avmedia" = yes; then
2931     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2932 else
2933     USE_AVMEDIA_DUMMY='TRUE'
2935 AC_SUBST(USE_AVMEDIA_DUMMY)
2937 # Decide whether to build database connectivity stuff (including Base) or not.
2938 if test "$enable_database_connectivity" != no; then
2939     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2940     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2941 else
2942     if test "$_os" = iOS; then
2943         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
2944     fi
2945     disable_database_connectivity_dependencies
2948 if test -z "$enable_extensions"; then
2949     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2950     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2951         enable_extensions=yes
2952     fi
2955 if test "$enable_extensions" = yes; then
2956     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2957     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2958 else
2959     enable_extension_integration=no
2960     enable_extension_update=no
2963 if test -z "$enable_scripting"; then
2964     # Disable scripting for iOS unless specifically overridden
2965     # with --enable-scripting.
2966     if test $_os != iOS -o $_os = Emscripten; then
2967         enable_scripting=yes
2968     fi
2971 DISABLE_SCRIPTING=''
2972 if test "$enable_scripting" = yes; then
2973     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2974     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2975 else
2976     DISABLE_SCRIPTING='TRUE'
2977     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2980 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
2981     # Disable dynamic_loading always for iOS and Android
2982     enable_dynamic_loading=no
2983 elif test -z "$enable_dynamic_loading"; then
2984     # Otherwise enable it unless specifically disabled
2985     enable_dynamic_loading=yes
2988 DISABLE_DYNLOADING=''
2989 if test "$enable_dynamic_loading" = yes; then
2990     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2991 else
2992     DISABLE_DYNLOADING='TRUE'
2994 AC_SUBST(DISABLE_DYNLOADING)
2996 # remember SYSBASE value
2997 AC_SUBST(SYSBASE)
2999 dnl ===================================================================
3000 dnl  Sort out various gallery compilation options
3001 dnl ===================================================================
3002 WITH_GALLERY_BUILD=TRUE
3003 AC_MSG_CHECKING([how to build and package galleries])
3004 if test -n "${with_galleries}"; then
3005     if test "$with_galleries" = "build"; then
3006         if test "$enable_database_connectivity" = no; then
3007             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3008         fi
3009         AC_MSG_RESULT([build from source images internally])
3010     elif test "$with_galleries" = "no"; then
3011         WITH_GALLERY_BUILD=
3012         AC_MSG_RESULT([disable non-internal gallery build])
3013     else
3014         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3015     fi
3016 else
3017     if test $_os != iOS -a $_os != Android; then
3018         AC_MSG_RESULT([internal src images for desktop])
3019     else
3020         WITH_GALLERY_BUILD=
3021         AC_MSG_RESULT([disable src image build])
3022     fi
3024 AC_SUBST(WITH_GALLERY_BUILD)
3026 dnl ===================================================================
3027 dnl  Checks if ccache is available
3028 dnl ===================================================================
3029 CCACHE_DEPEND_MODE=
3030 if test "$enable_ccache" = "no"; then
3031     CCACHE=""
3032 elif test "$_os" = "WINNT"; then
3033     # on windows/VC build do not use ccache - but perhaps sccache is around?
3034     case "%$CC%$CXX%" in
3035     # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3036     # assume that's good then
3037     *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3038         AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3039         CCACHE_DEPEND_MODE=1
3040         ;;
3041     *)
3042         # for sharing code below, reuse CCACHE env var
3043         AC_PATH_PROG([CCACHE],[sccache],[not found])
3044         if test "$CCACHE" = "not found"; then
3045             CCACHE=""
3046         else
3047             CCACHE=`win_short_path_for_make "$CCACHE"`
3048             CCACHE_DEPEND_MODE=1
3049         fi
3050         ;;
3051     esac
3052 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3053     case "%$CC%$CXX%" in
3054     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3055     # assume that's good then
3056     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3057         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3058         CCACHE_DEPEND_MODE=1
3059         ;;
3060     *)
3061         AC_PATH_PROG([CCACHE],[ccache],[not found])
3062         if test "$CCACHE" = "not found"; then
3063             CCACHE=""
3064         else
3065             CCACHE_DEPEND_MODE=1
3066             # Need to check for ccache version: otherwise prevents
3067             # caching of the results (like "-x objective-c++" for Mac)
3068             if test $_os = Darwin -o $_os = iOS; then
3069                 # Check ccache version
3070                 AC_MSG_CHECKING([whether version of ccache is suitable])
3071                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3072                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3073                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3074                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3075                 else
3076                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3077                     CCACHE=""
3078                     CCACHE_DEPEND_MODE=
3079                 fi
3080             fi
3081         fi
3082         ;;
3083     esac
3084 else
3085     CCACHE=""
3087 if test "$enable_ccache" = "nodepend"; then
3088     CCACHE_DEPEND_MODE=""
3090 AC_SUBST(CCACHE_DEPEND_MODE)
3092 # skip on windows - sccache defaults are good enough
3093 if test "$CCACHE" != "" -a "$_os" != "WINNT"; then
3094     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3095     # -p works with both 4.2 and 4.4
3096     ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3097     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3098     if test "$ccache_size" = ""; then
3099         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3100         if test "$ccache_size" = ""; then
3101             ccache_size=0
3102         fi
3103         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3104         if test $ccache_size -lt 1024; then
3105             CCACHE=""
3106             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3107             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3108         else
3109             # warn that ccache may be too small for debug build
3110             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3111             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3112         fi
3113     else
3114         if test $ccache_size -lt 5; then
3115             #warn that ccache may be too small for debug build
3116             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3117             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3118         fi
3119     fi
3122 dnl ===================================================================
3123 dnl  Checks for C compiler,
3124 dnl  The check for the C++ compiler is later on.
3125 dnl ===================================================================
3126 if test "$_os" != "WINNT"; then
3127     GCC_HOME_SET="true"
3128     AC_MSG_CHECKING([gcc home])
3129     if test -z "$with_gcc_home"; then
3130         if test "$enable_icecream" = "yes"; then
3131             if test -d "/usr/lib/icecc/bin"; then
3132                 GCC_HOME="/usr/lib/icecc/"
3133             elif test -d "/usr/libexec/icecc/bin"; then
3134                 GCC_HOME="/usr/libexec/icecc/"
3135             elif test -d "/opt/icecream/bin"; then
3136                 GCC_HOME="/opt/icecream/"
3137             else
3138                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3140             fi
3141         else
3142             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3143             GCC_HOME_SET="false"
3144         fi
3145     else
3146         GCC_HOME="$with_gcc_home"
3147     fi
3148     AC_MSG_RESULT($GCC_HOME)
3149     AC_SUBST(GCC_HOME)
3151     if test "$GCC_HOME_SET" = "true"; then
3152         if test -z "$CC"; then
3153             CC="$GCC_HOME/bin/gcc"
3154             CC_BASE="gcc"
3155         fi
3156         if test -z "$CXX"; then
3157             CXX="$GCC_HOME/bin/g++"
3158             CXX_BASE="g++"
3159         fi
3160     fi
3163 COMPATH=`dirname "$CC"`
3164 if test "$COMPATH" = "."; then
3165     AC_PATH_PROGS(COMPATH, $CC)
3166     dnl double square bracket to get single because of M4 quote...
3167     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3169 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3171 dnl ===================================================================
3172 dnl Java support
3173 dnl ===================================================================
3174 AC_MSG_CHECKING([whether to build with Java support])
3175 if test "$with_java" != "no"; then
3176     if test "$DISABLE_SCRIPTING" = TRUE; then
3177         AC_MSG_RESULT([no, overridden by --disable-scripting])
3178         ENABLE_JAVA=""
3179         with_java=no
3180     else
3181         AC_MSG_RESULT([yes])
3182         ENABLE_JAVA="TRUE"
3183         AC_DEFINE(HAVE_FEATURE_JAVA)
3184     fi
3185 else
3186     AC_MSG_RESULT([no])
3187     ENABLE_JAVA=""
3190 AC_SUBST(ENABLE_JAVA)
3192 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3194 dnl ENABLE_JAVA="" indicate no Java support at all
3196 dnl ===================================================================
3197 dnl Check macOS SDK and compiler
3198 dnl ===================================================================
3200 if test $_os = Darwin; then
3202     # The SDK in the currently selected Xcode should be found.
3204     AC_MSG_CHECKING([what macOS SDK to use])
3205     for macosx_sdk in 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3206         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3207         if test -d "$MACOSX_SDK_PATH"; then
3208             break
3209         else
3210             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3211             if test -d "$MACOSX_SDK_PATH"; then
3212                 break
3213             fi
3214         fi
3215     done
3216     if test ! -d "$MACOSX_SDK_PATH"; then
3217         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3218     fi
3220     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3222     case $macosx_sdk in
3223     10.13)
3224         MACOSX_SDK_VERSION=101300
3225         ;;
3226     10.14)
3227         MACOSX_SDK_VERSION=101400
3228         ;;
3229     10.15)
3230         MACOSX_SDK_VERSION=101500
3231         ;;
3232     11.0)
3233         MACOSX_SDK_VERSION=110000
3234         ;;
3235     11.1)
3236         MACOSX_SDK_VERSION=110100
3237         ;;
3238     11.3)
3239         MACOSX_SDK_VERSION=110300
3240         ;;
3241     12.0)
3242         MACOSX_SDK_VERSION=120000
3243         ;;
3244     *)
3245         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3246         ;;
3247     esac
3249     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3250         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3251     fi
3253     if test "$with_macosx_version_min_required" = "" ; then
3254         if test "$host_cpu" = x86_64; then
3255             with_macosx_version_min_required="10.12";
3256         else
3257             with_macosx_version_min_required="11.0";
3258         fi
3259     fi
3261     if test "$with_macosx_version_max_allowed" = "" ; then
3262         with_macosx_version_max_allowed="$macosx_sdk"
3263     fi
3265     # export this so that "xcrun" invocations later return matching values
3266     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3267     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3268     export DEVELOPER_DIR
3269     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3270     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3272     AC_MSG_CHECKING([whether Xcode is new enough])
3273     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3274     my_xcode_ver2=${my_xcode_ver1#Xcode }
3275     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3276     if test "$my_xcode_ver3" -ge 1103; then
3277         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3278     else
3279         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3280     fi
3282     case "$with_macosx_version_min_required" in
3283     10.12)
3284         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3285         ;;
3286     10.13)
3287         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3288         ;;
3289     10.14)
3290         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3291         ;;
3292     10.15)
3293         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3294         ;;
3295     10.16)
3296         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3297         ;;
3298     11.0)
3299         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3300         ;;
3301     11.1)
3302         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3303         ;;
3304     11.3)
3305         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3306         ;;
3307     12.0)
3308         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3309         ;;
3310     *)
3311         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])
3312         ;;
3313     esac
3315     LIBTOOL=/usr/bin/libtool
3316     INSTALL_NAME_TOOL=install_name_tool
3317     if test -z "$save_CC"; then
3318         stdlib=-stdlib=libc++
3320         AC_MSG_CHECKING([what C compiler to use])
3321         CC="`xcrun -find clang`"
3322         CC_BASE=`first_arg_basename "$CC"`
3323         if test "$host_cpu" = x86_64; then
3324             CC+=" -target x86_64-apple-macos"
3325         else
3326             CC+=" -target arm64-apple-macos"
3327         fi
3328         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3329         AC_MSG_RESULT([$CC])
3331         AC_MSG_CHECKING([what C++ compiler to use])
3332         CXX="`xcrun -find clang++`"
3333         CXX_BASE=`first_arg_basename "$CXX"`
3334         if test "$host_cpu" = x86_64; then
3335             CXX+=" -target x86_64-apple-macos"
3336         else
3337             CXX+=" -target arm64-apple-macos"
3338         fi
3339         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3340         AC_MSG_RESULT([$CXX])
3342         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3343         AR=`xcrun -find ar`
3344         NM=`xcrun -find nm`
3345         STRIP=`xcrun -find strip`
3346         LIBTOOL=`xcrun -find libtool`
3347         RANLIB=`xcrun -find ranlib`
3348     fi
3350     case "$with_macosx_version_max_allowed" in
3351     10.12)
3352         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3353         ;;
3354     10.13)
3355         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3356         ;;
3357     10.14)
3358         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3359         ;;
3360     10.15)
3361         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3362         ;;
3363     11.0)
3364         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3365         ;;
3366     11.1)
3367         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3368         ;;
3369     11.3)
3370         MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3371         ;;
3372     12.0)
3373         MAC_OS_X_VERSION_MAX_ALLOWED="120000"
3374         ;;
3375     *)
3376         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])
3377         ;;
3378     esac
3380     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3381     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3382         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])
3383     else
3384         AC_MSG_RESULT([ok])
3385     fi
3387     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3388     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3389         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3390     else
3391         AC_MSG_RESULT([ok])
3392     fi
3393     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3394     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3396     AC_MSG_CHECKING([whether to do code signing])
3398     if test "$enable_macosx_code_signing" = yes; then
3399         # By default use the first suitable certificate (?).
3401         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3402         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3403         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3404         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3405         # "Developer ID Application" one.
3407         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3408         if test -n "$identity"; then
3409             MACOSX_CODESIGNING_IDENTITY=$identity
3410             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3411             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3412         else
3413             AC_MSG_ERROR([cannot determine identity to use])
3414         fi
3415     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3416         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3417         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3418         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3419     else
3420         AC_MSG_RESULT([no])
3421     fi
3423     AC_MSG_CHECKING([whether to create a Mac App Store package])
3425     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3426         AC_MSG_RESULT([no])
3427     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3428         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3429     elif test "$enable_macosx_package_signing" = yes; then
3430         # By default use the first suitable certificate.
3431         # It should be a "3rd Party Mac Developer Installer" one
3433         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3434         if test -n "$identity"; then
3435             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3436             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3437             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3438         else
3439             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3440         fi
3441     else
3442         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3443         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3444         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3445     fi
3447     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3448         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3449     fi
3451     AC_MSG_CHECKING([whether to sandbox the application])
3453     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3454         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3455     elif test "$enable_macosx_sandbox" = yes; then
3456         ENABLE_MACOSX_SANDBOX=TRUE
3457         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3458         AC_MSG_RESULT([yes])
3459     else
3460         AC_MSG_RESULT([no])
3461     fi
3463     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3464     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3465     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3467 AC_SUBST(MACOSX_SDK_PATH)
3468 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3469 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3470 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3471 AC_SUBST(INSTALL_NAME_TOOL)
3472 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3473 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3474 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3475 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3476 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3478 dnl ===================================================================
3479 dnl Check iOS SDK and compiler
3480 dnl ===================================================================
3482 if test $_os = iOS; then
3483     AC_MSG_CHECKING([what iOS SDK to use])
3484     current_sdk_ver=15.0
3485     older_sdk_vers="14.5"
3486     if test "$enable_ios_simulator" = "yes"; then
3487         platform=iPhoneSimulator
3488         versionmin=-mios-simulator-version-min=13.6
3489     else
3490         platform=iPhoneOS
3491         versionmin=-miphoneos-version-min=13.6
3492     fi
3493     xcode_developer=`xcode-select -print-path`
3495     for sdkver in $current_sdk_ver $older_sdk_vers; do
3496         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3497         if test -d $t; then
3498             sysroot=$t
3499             break
3500         fi
3501     done
3503     if test -z "$sysroot"; then
3504         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3505     fi
3507     AC_MSG_RESULT($sysroot)
3509     stdlib="-stdlib=libc++"
3511     AC_MSG_CHECKING([what C compiler to use])
3512     CC="`xcrun -find clang`"
3513     CC_BASE=`first_arg_basename "$CC"`
3514     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3515     AC_MSG_RESULT([$CC])
3517     AC_MSG_CHECKING([what C++ compiler to use])
3518     CXX="`xcrun -find clang++`"
3519     CXX_BASE=`first_arg_basename "$CXX"`
3520     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3521     AC_MSG_RESULT([$CXX])
3523     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3524     AR=`xcrun -find ar`
3525     NM=`xcrun -find nm`
3526     STRIP=`xcrun -find strip`
3527     LIBTOOL=`xcrun -find libtool`
3528     RANLIB=`xcrun -find ranlib`
3531 AC_MSG_CHECKING([whether to treat the installation as read-only])
3533 if test $_os = Darwin; then
3534     enable_readonly_installset=yes
3535 elif test "$enable_extensions" != yes; then
3536     enable_readonly_installset=yes
3538 if test "$enable_readonly_installset" = yes; then
3539     AC_MSG_RESULT([yes])
3540     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3541 else
3542     AC_MSG_RESULT([no])
3545 dnl ===================================================================
3546 dnl Structure of install set
3547 dnl ===================================================================
3549 if test $_os = Darwin; then
3550     LIBO_BIN_FOLDER=MacOS
3551     LIBO_ETC_FOLDER=Resources
3552     LIBO_LIBEXEC_FOLDER=MacOS
3553     LIBO_LIB_FOLDER=Frameworks
3554     LIBO_LIB_PYUNO_FOLDER=Resources
3555     LIBO_SHARE_FOLDER=Resources
3556     LIBO_SHARE_HELP_FOLDER=Resources/help
3557     LIBO_SHARE_JAVA_FOLDER=Resources/java
3558     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3559     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3560     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3561     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3562     LIBO_URE_BIN_FOLDER=MacOS
3563     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3564     LIBO_URE_LIB_FOLDER=Frameworks
3565     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3566     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3567 elif test $_os = WINNT; then
3568     LIBO_BIN_FOLDER=program
3569     LIBO_ETC_FOLDER=program
3570     LIBO_LIBEXEC_FOLDER=program
3571     LIBO_LIB_FOLDER=program
3572     LIBO_LIB_PYUNO_FOLDER=program
3573     LIBO_SHARE_FOLDER=share
3574     LIBO_SHARE_HELP_FOLDER=help
3575     LIBO_SHARE_JAVA_FOLDER=program/classes
3576     LIBO_SHARE_PRESETS_FOLDER=presets
3577     LIBO_SHARE_READMES_FOLDER=readmes
3578     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3579     LIBO_SHARE_SHELL_FOLDER=program/shell
3580     LIBO_URE_BIN_FOLDER=program
3581     LIBO_URE_ETC_FOLDER=program
3582     LIBO_URE_LIB_FOLDER=program
3583     LIBO_URE_MISC_FOLDER=program
3584     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3585 else
3586     LIBO_BIN_FOLDER=program
3587     LIBO_ETC_FOLDER=program
3588     LIBO_LIBEXEC_FOLDER=program
3589     LIBO_LIB_FOLDER=program
3590     LIBO_LIB_PYUNO_FOLDER=program
3591     LIBO_SHARE_FOLDER=share
3592     LIBO_SHARE_HELP_FOLDER=help
3593     LIBO_SHARE_JAVA_FOLDER=program/classes
3594     LIBO_SHARE_PRESETS_FOLDER=presets
3595     LIBO_SHARE_READMES_FOLDER=readmes
3596     if test "$enable_fuzzers" != yes; then
3597         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3598     else
3599         LIBO_SHARE_RESOURCE_FOLDER=resource
3600     fi
3601     LIBO_SHARE_SHELL_FOLDER=program/shell
3602     LIBO_URE_BIN_FOLDER=program
3603     LIBO_URE_ETC_FOLDER=program
3604     LIBO_URE_LIB_FOLDER=program
3605     LIBO_URE_MISC_FOLDER=program
3606     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3608 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3609 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3610 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3611 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3612 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3613 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3614 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3615 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3616 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3617 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3618 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3619 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3620 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3621 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3622 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3623 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3625 # Not all of them needed in config_host.mk, add more if need arises
3626 AC_SUBST(LIBO_BIN_FOLDER)
3627 AC_SUBST(LIBO_ETC_FOLDER)
3628 AC_SUBST(LIBO_LIB_FOLDER)
3629 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3630 AC_SUBST(LIBO_SHARE_FOLDER)
3631 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3632 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3633 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3634 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3635 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3636 AC_SUBST(LIBO_URE_BIN_FOLDER)
3637 AC_SUBST(LIBO_URE_ETC_FOLDER)
3638 AC_SUBST(LIBO_URE_LIB_FOLDER)
3639 AC_SUBST(LIBO_URE_MISC_FOLDER)
3640 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3642 dnl ===================================================================
3643 dnl Windows specific tests and stuff
3644 dnl ===================================================================
3646 reg_get_value()
3648     # Return value: $regvalue
3649     unset regvalue
3651     if test "$build_os" = "wsl"; then
3652         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3653         return
3654     fi
3656     local _regentry="/proc/registry${1}/${2}"
3657     if test -f "$_regentry"; then
3658         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3659         # Registry keys read via /proc/registry* are always \0 terminated!
3660         local _regvalue=$(tr -d '\0' < "$_regentry")
3661         if test $? -eq 0; then
3662             regvalue=$_regvalue
3663         fi
3664     fi
3667 # Get a value from the 32-bit side of the Registry
3668 reg_get_value_32()
3670     reg_get_value "32" "$1"
3673 # Get a value from the 64-bit side of the Registry
3674 reg_get_value_64()
3676     reg_get_value "64" "$1"
3679 case "$host_os" in
3680 cygwin*|wsl*)
3681     COM=MSC
3682     OS=WNT
3683     RTL_OS=Windows
3684     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3685         P_SEP=";"
3686     else
3687         P_SEP=:
3688     fi
3689     case "$host_cpu" in
3690     x86_64)
3691         CPUNAME=X86_64
3692         RTL_ARCH=X86_64
3693         PLATFORMID=windows_x86_64
3694         WINDOWS_X64=1
3695         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3696         WIN_HOST_ARCH="x64"
3697         WIN_MULTI_ARCH="x86"
3698         WIN_HOST_BITS=64
3699         ;;
3700     i*86)
3701         CPUNAME=INTEL
3702         RTL_ARCH=x86
3703         PLATFORMID=windows_x86
3704         WIN_HOST_ARCH="x86"
3705         WIN_HOST_BITS=32
3706         WIN_OTHER_ARCH="x64"
3707         ;;
3708     aarch64)
3709         CPUNAME=AARCH64
3710         RTL_ARCH=AARCH64
3711         PLATFORMID=windows_aarch64
3712         WINDOWS_X64=1
3713         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3714         WIN_HOST_ARCH="arm64"
3715         WIN_HOST_BITS=64
3716         with_ucrt_dir=no
3717         ;;
3718     *)
3719         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3720         ;;
3721     esac
3723     case "$build_cpu" in
3724     x86_64) WIN_BUILD_ARCH="x64" ;;
3725     i*86) WIN_BUILD_ARCH="x86" ;;
3726     aarch64) WIN_BUILD_ARCH="arm64" ;;
3727     *)
3728         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3729         ;;
3730     esac
3732     SCPDEFS="$SCPDEFS -D_MSC_VER"
3733     ;;
3734 esac
3736 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3737 # other-arch won't, but wouldn't break the build (x64 on x86).
3738 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3739     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3743 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3744     # To allow building Windows multi-arch releases without cross-tooling
3745     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3746         cross_compiling="yes"
3747     fi
3750 ENABLE_WASM_STRIP=''
3751 if test "$cross_compiling" = "yes"; then
3752     export CROSS_COMPILING=TRUE
3753     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3754         ENABLE_WASM_STRIP=TRUE
3755     fi
3756 else
3757     CROSS_COMPILING=
3758     BUILD_TYPE="$BUILD_TYPE NATIVE"
3760 AC_SUBST(CROSS_COMPILING)
3761 AC_SUBST(ENABLE_WASM_STRIP)
3763 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3764 # NOTE: must _not_ be used for bundled external libraries!
3765 ISYSTEM=
3766 if test "$GCC" = "yes"; then
3767     AC_MSG_CHECKING( for -isystem )
3768     save_CFLAGS=$CFLAGS
3769     CFLAGS="$CFLAGS -Werror"
3770     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3771     CFLAGS=$save_CFLAGS
3772     if test -n "$ISYSTEM"; then
3773         AC_MSG_RESULT(yes)
3774     else
3775         AC_MSG_RESULT(no)
3776     fi
3778 if test -z "$ISYSTEM"; then
3779     # fall back to using -I
3780     ISYSTEM=-I
3782 AC_SUBST(ISYSTEM)
3784 dnl ===================================================================
3785 dnl  Check which Visual Studio compiler is used
3786 dnl ===================================================================
3788 map_vs_year_to_version()
3790     # Return value: $vsversion
3792     unset vsversion
3794     case $1 in
3795     2019)
3796         vsversion=16;;
3797     2022)
3798         vsversion=17;;
3799     *)
3800         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3801     esac
3804 vs_versions_to_check()
3806     # Args: $1 (optional) : versions to check, in the order of preference
3807     # Return value: $vsversions
3809     unset vsversions
3811     if test -n "$1"; then
3812         map_vs_year_to_version "$1"
3813         vsversions=$vsversion
3814     else
3815         # Default version is 2019
3816         vsversions="16"
3817     fi
3820 win_get_env_from_vsvars32bat()
3822     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3823     # Also seems to be located in another directory under the same name: vsvars32.bat
3824     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3825     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3826     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3827     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3828     local result
3829     if test "$build_os" = "wsl"; then
3830         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3831     else
3832         chmod +x $WRAPPERBATCHFILEPATH
3833         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3834     fi
3835     rm -f $WRAPPERBATCHFILEPATH
3836     printf '%s' "$result"
3839 find_ucrt()
3841     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3842     if test -n "$regvalue"; then
3843         PathFormat "$regvalue"
3844         UCRTSDKDIR=$formatted_path_unix
3845         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3846         UCRTVERSION=$regvalue
3847         # Rest if not exist
3848         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3849           UCRTSDKDIR=
3850         fi
3851     fi
3852     if test -z "$UCRTSDKDIR"; then
3853         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3854         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3855         if test -f "$ide_env_file"; then
3856             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3857             UCRTSDKDIR=$formatted_path
3858             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3859             dnl Hack needed at least by tml:
3860             if test "$UCRTVERSION" = 10.0.15063.0 \
3861                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3862                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3863             then
3864                 UCRTVERSION=10.0.14393.0
3865             fi
3866         else
3867           AC_MSG_ERROR([No UCRT found])
3868         fi
3869     fi
3872 find_msvc()
3874     # Find Visual C++
3875     # Args: $1 (optional) : The VS version year
3876     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3878     unset vctest vctoolset vcnumwithdot vcbuildnumber
3880     vs_versions_to_check "$1"
3881     if test "$build_os" = wsl; then
3882         vswhere="$PROGRAMFILESX86"
3883     else
3884         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3885     fi
3886     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3887     PathFormat "$vswhere"
3888     vswhere=$formatted_path_unix
3889     for ver in $vsversions; do
3890         vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3891         # Fall back to all MS products (this includes VC++ Build Tools)
3892         if ! test -n "$vswhereoutput"; then
3893             AC_MSG_CHECKING([VC++ Build Tools and similar])
3894             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3895         fi
3896         if test -n "$vswhereoutput"; then
3897             PathFormat "$vswhereoutput"
3898             vctest=$formatted_path_unix
3899             break
3900         fi
3901     done
3903     if test -n "$vctest"; then
3904         vcnumwithdot="$ver.0"
3905         case "$vcnumwithdot" in
3906         16.0)
3907             vcyear=2019
3908             vctoolset=v142
3909             ;;
3910         17.0)
3911             vcyear=2022
3912             vctoolset=v143
3913             ;;
3914         esac
3915         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3917     fi
3920 test_cl_exe()
3922     AC_MSG_CHECKING([$1 compiler])
3924     CL_EXE_PATH="$2/cl.exe"
3926     if test ! -f "$CL_EXE_PATH"; then
3927         if test "$1" = "multi-arch"; then
3928             AC_MSG_WARN([no compiler (cl.exe) in $2])
3929             return 1
3930         else
3931             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3932         fi
3933     fi
3935     dnl ===========================================================
3936     dnl  Check for the corresponding mspdb*.dll
3937     dnl ===========================================================
3939     # MSVC 15.0 has libraries from 14.0?
3940     mspdbnum="140"
3942     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3943         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3944     fi
3946     # The compiles has to find its shared libraries
3947     OLD_PATH="$PATH"
3948     TEMP_PATH=`cygpath -d "$2"`
3949     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3951     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3952         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3953     fi
3955     PATH="$OLD_PATH"
3957     AC_MSG_RESULT([$CL_EXE_PATH])
3960 SOLARINC=
3961 MSBUILD_PATH=
3962 DEVENV=
3963 if test "$_os" = "WINNT"; then
3964     AC_MSG_CHECKING([Visual C++])
3965     find_msvc "$with_visual_studio"
3966     if test -z "$vctest"; then
3967         if test -n "$with_visual_studio"; then
3968             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3969         else
3970             AC_MSG_ERROR([no Visual Studio installation found])
3971         fi
3972     fi
3973     AC_MSG_RESULT([])
3975     VC_PRODUCT_DIR="$vctest/VC"
3976     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3978     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3979     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3980         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3981         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3982         if test $? -ne 0; then
3983             WIN_MULTI_ARCH=""
3984             WIN_OTHER_ARCH=""
3985         fi
3986     fi
3988     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3989         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3990         test_cl_exe "build" "$MSVC_BUILD_PATH"
3991     fi
3993     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3994         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3995         test_cl_exe "host" "$MSVC_HOST_PATH"
3996     else
3997         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3998     fi
4000     AC_MSG_CHECKING([for short pathname of VC product directory])
4001     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4002     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4004     UCRTSDKDIR=
4005     UCRTVERSION=
4007     AC_MSG_CHECKING([for UCRT location])
4008     find_ucrt
4009     # find_ucrt errors out if it doesn't find it
4010     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4011     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4012     ucrtincpath_formatted=$formatted_path
4013     # SOLARINC is used for external modules and must be set too.
4014     # And no, it's not sufficient to set SOLARINC only, as configure
4015     # itself doesn't honour it.
4016     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4017     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4018     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4019     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4021     AC_SUBST(UCRTSDKDIR)
4022     AC_SUBST(UCRTVERSION)
4024     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4025     # Find the proper version of MSBuild.exe to use based on the VS version
4026     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4027     if test -z "$regvalue" ; then
4028         if test "$WIN_BUILD_ARCH" != "x64"; then
4029             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4030         else
4031             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4032         fi
4033     fi
4034     if test -d "$regvalue" ; then
4035         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4036         AC_MSG_RESULT([$regvalue])
4037     else
4038         AC_MSG_ERROR([MSBuild.exe location not found])
4039     fi
4041     # Find the version of devenv.exe
4042     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4043     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4044     DEVENV_unix=$(cygpath -u "$DEVENV")
4045     if test ! -e "$DEVENV_unix"; then
4046         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4047     fi
4049     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4050     dnl needed when building CLR code:
4051     if test -z "$MSVC_CXX"; then
4052         # This gives us a posix path with 8.3 filename restrictions
4053         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4054     fi
4056     if test -z "$CC"; then
4057         CC=$MSVC_CXX
4058         CC_BASE=`first_arg_basename "$CC"`
4059     fi
4060     if test -z "$CXX"; then
4061         CXX=$MSVC_CXX
4062         CXX_BASE=`first_arg_basename "$CXX"`
4063     fi
4065     if test -n "$CC"; then
4066         # Remove /cl.exe from CC case insensitive
4067         AC_MSG_NOTICE([found Visual C++ $vcyear])
4069         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4070         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4072         PathFormat "$COMPATH"
4073         COMPATH=`win_short_path_for_make "$formatted_path"`
4075         VCVER=$vcnumwithdot
4076         VCTOOLSET=$vctoolset
4078         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4079         # are always "better", we list them in reverse chronological order.
4081         case "$vcnumwithdot" in
4082         16.0 | 17.0)
4083             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4084             ;;
4085         esac
4087         # The expectation is that --with-windows-sdk should not need to be used
4088         if test -n "$with_windows_sdk"; then
4089             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4090             *" "$with_windows_sdk" "*)
4091                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4092                 ;;
4093             *)
4094                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4095                 ;;
4096             esac
4097         fi
4099         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4100         ac_objext=obj
4101         ac_exeext=exe
4103     else
4104         AC_MSG_ERROR([Visual C++ not found after all, huh])
4105     fi
4107     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4108     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4109         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4110         // between Visual Studio versions and _MSC_VER:
4111         #if _MSC_VER < 1925
4112         #error
4113         #endif
4114     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4116     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4117     # version of the Explorer extension (and maybe other small
4118     # bits, too) needed when installing a 32-bit LibreOffice on a
4119     # 64-bit OS. The 64-bit Explorer extension is a feature that
4120     # has been present since long in OOo. Don't confuse it with
4121     # building LibreOffice itself as 64-bit code.
4123     BUILD_X64=
4124     CXX_X64_BINARY=
4126     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4127         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4128         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4129              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4130         then
4131             BUILD_X64=TRUE
4132             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4133             AC_MSG_RESULT([found])
4134         else
4135             AC_MSG_RESULT([not found])
4136             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4137         fi
4138     elif test "$WIN_HOST_ARCH" = "x64"; then
4139         CXX_X64_BINARY=$CXX
4140     fi
4141     AC_SUBST(BUILD_X64)
4143     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4144     AC_SUBST(CXX_X64_BINARY)
4146     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4147     # needed to support TWAIN scan on both 32- and 64-bit systems
4149     case "$WIN_HOST_ARCH" in
4150     x64)
4151         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4152         if test -n "$CXX_X86_BINARY"; then
4153             BUILD_X86=TRUE
4154             AC_MSG_RESULT([preset])
4155         elif test -n "$WIN_MULTI_ARCH"; then
4156             BUILD_X86=TRUE
4157             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4158             CXX_X86_BINARY+=" /arch:SSE"
4159             AC_MSG_RESULT([found])
4160         else
4161             AC_MSG_RESULT([not found])
4162             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4163         fi
4164         ;;
4165     x86)
4166         BUILD_X86=TRUE
4167         CXX_X86_BINARY=$MSVC_CXX
4168         ;;
4169     esac
4170     AC_SUBST(BUILD_X86)
4171     AC_SUBST(CXX_X86_BINARY)
4173 AC_SUBST(VCVER)
4174 AC_SUBST(VCTOOLSET)
4175 AC_SUBST(DEVENV)
4176 AC_SUBST(MSVC_CXX)
4178 COM_IS_CLANG=
4179 AC_MSG_CHECKING([whether the compiler is actually Clang])
4180 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4181     #ifndef __clang__
4182     you lose
4183     #endif
4184     int foo=42;
4185     ]])],
4186     [AC_MSG_RESULT([yes])
4187      COM_IS_CLANG=TRUE],
4188     [AC_MSG_RESULT([no])])
4189 AC_SUBST(COM_IS_CLANG)
4191 CC_PLAIN=$CC
4192 CLANGVER=
4193 if test "$COM_IS_CLANG" = TRUE; then
4194     AC_MSG_CHECKING([whether Clang is new enough])
4195     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4196         #if !defined __apple_build_version__
4197         #error
4198         #endif
4199         ]])],
4200         [my_apple_clang=yes],[my_apple_clang=])
4201     if test "$my_apple_clang" = yes; then
4202         AC_MSG_RESULT([assumed yes (Apple Clang)])
4203     elif test "$_os" = Emscripten; then
4204         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4205     else
4206         if test "$_os" = WINNT; then
4207             dnl In which case, assume clang-cl:
4208             my_args="/EP /TC"
4209             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4210             dnl clang-cl:
4211             CC_PLAIN=
4212             for i in $CC; do
4213                 case $i in
4214                 -FIIntrin.h)
4215                     ;;
4216                 *)
4217                     CC_PLAIN="$CC_PLAIN $i"
4218                     ;;
4219                 esac
4220             done
4221         else
4222             my_args="-E -P"
4223         fi
4224         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4225         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4226         CLANGVER=`echo $clang_version \
4227             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4228         if test "$CLANGVER" -ge 50002; then
4229             AC_MSG_RESULT([yes ($clang_version)])
4230         else
4231             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4232         fi
4233         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4234         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4235     fi
4238 SHOWINCLUDES_PREFIX=
4239 if test "$_os" = WINNT; then
4240     dnl We need to guess the prefix of the -showIncludes output, it can be
4241     dnl localized
4242     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4243     echo "#include <stdlib.h>" > conftest.c
4244     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4245         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4246     rm -f conftest.c conftest.obj
4247     if test -z "$SHOWINCLUDES_PREFIX"; then
4248         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4249     else
4250         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4251     fi
4253 AC_SUBST(SHOWINCLUDES_PREFIX)
4256 # prefix C with ccache if needed
4258 if test "$CCACHE" != ""; then
4259     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4261     AC_LANG_PUSH([C])
4262     save_CFLAGS=$CFLAGS
4263     CFLAGS="$CFLAGS --ccache-skip -O2"
4264     dnl an empty program will do, we're checking the compiler flags
4265     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4266                       [use_ccache=yes], [use_ccache=no])
4267     CFLAGS=$save_CFLAGS
4268     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4269         AC_MSG_RESULT([yes])
4270     else
4271         CC="$CCACHE $CC"
4272         CC_BASE="ccache $CC_BASE"
4273         AC_MSG_RESULT([no])
4274     fi
4275     AC_LANG_POP([C])
4278 # ===================================================================
4279 # check various GCC options that Clang does not support now but maybe
4280 # will somewhen in the future, check them even for GCC, so that the
4281 # flags are set
4282 # ===================================================================
4284 HAVE_GCC_GGDB2=
4285 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4286     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4287     save_CFLAGS=$CFLAGS
4288     CFLAGS="$CFLAGS -Werror -ggdb2"
4289     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4290     CFLAGS=$save_CFLAGS
4291     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4292         AC_MSG_RESULT([yes])
4293     else
4294         AC_MSG_RESULT([no])
4295     fi
4297     if test "$host_cpu" = "m68k"; then
4298         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4299         save_CFLAGS=$CFLAGS
4300         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4301         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4302         CFLAGS=$save_CFLAGS
4303         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4304             AC_MSG_RESULT([yes])
4305         else
4306             AC_MSG_ERROR([no])
4307         fi
4308     fi
4310 AC_SUBST(HAVE_GCC_GGDB2)
4312 dnl ===================================================================
4313 dnl  Test the gcc version
4314 dnl ===================================================================
4315 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4316     AC_MSG_CHECKING([the GCC version])
4317     _gcc_version=`$CC -dumpfullversion`
4318     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4319         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4320     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4322     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4324     if test "$gcc_full_version" -lt 70000; then
4325         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4326     fi
4327 else
4328     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4329     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4330     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4331     # (which reports itself as GCC 4.2.1).
4332     GCC_VERSION=
4334 AC_SUBST(GCC_VERSION)
4336 dnl Set the ENABLE_DBGUTIL variable
4337 dnl ===================================================================
4338 AC_MSG_CHECKING([whether to build with additional debug utilities])
4339 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4340     ENABLE_DBGUTIL="TRUE"
4341     # this is an extra var so it can have different default on different MSVC
4342     # versions (in case there are version specific problems with it)
4343     MSVC_USE_DEBUG_RUNTIME="TRUE"
4345     AC_MSG_RESULT([yes])
4346     # cppunit and graphite expose STL in public headers
4347     if test "$with_system_cppunit" = "yes"; then
4348         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4349     else
4350         with_system_cppunit=no
4351     fi
4352     if test "$with_system_graphite" = "yes"; then
4353         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4354     else
4355         with_system_graphite=no
4356     fi
4357     if test "$with_system_orcus" = "yes"; then
4358         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4359     else
4360         with_system_orcus=no
4361     fi
4362     if test "$with_system_libcmis" = "yes"; then
4363         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4364     else
4365         with_system_libcmis=no
4366     fi
4367     if test "$with_system_hunspell" = "yes"; then
4368         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4369     else
4370         with_system_hunspell=no
4371     fi
4372     if test "$with_system_gpgmepp" = "yes"; then
4373         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4374     else
4375         with_system_gpgmepp=no
4376     fi
4377     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4378     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4379     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4380     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4381     # of those two is using the system variant:
4382     if test "$with_system_libnumbertext" = "yes"; then
4383         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4384     else
4385         with_system_libnumbertext=no
4386     fi
4387     if test "$with_system_libwps" = "yes"; then
4388         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4389     else
4390         with_system_libwps=no
4391     fi
4392 else
4393     ENABLE_DBGUTIL=""
4394     MSVC_USE_DEBUG_RUNTIME=""
4395     AC_MSG_RESULT([no])
4397 AC_SUBST(ENABLE_DBGUTIL)
4398 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4400 dnl Set the ENABLE_DEBUG variable.
4401 dnl ===================================================================
4402 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4403     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4405 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4406     if test -z "$libo_fuzzed_enable_debug"; then
4407         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4408     else
4409         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4410         enable_debug=yes
4411     fi
4414 AC_MSG_CHECKING([whether to do a debug build])
4415 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4416     ENABLE_DEBUG="TRUE"
4417     if test -n "$ENABLE_DBGUTIL" ; then
4418         AC_MSG_RESULT([yes (dbgutil)])
4419     else
4420         AC_MSG_RESULT([yes])
4421     fi
4422 else
4423     ENABLE_DEBUG=""
4424     AC_MSG_RESULT([no])
4426 AC_SUBST(ENABLE_DEBUG)
4428 dnl ===================================================================
4429 dnl Select the linker to use (gold/lld/ld.bfd).
4430 dnl This is done only after compiler checks (need to know if Clang is
4431 dnl used, for different defaults) and after checking if a debug build
4432 dnl is wanted (non-debug builds get the default linker if not explicitly
4433 dnl specified otherwise).
4434 dnl All checks for linker features/options should come after this.
4435 dnl ===================================================================
4436 check_use_ld()
4438     use_ld=-fuse-ld=${1%%:*}
4439     use_ld_path=${1#*:}
4440     if test "$use_ld_path" != "$1"; then
4441         use_ld="$use_ld --ld-path=$use_ld_path"
4442     fi
4443     use_ld_fail_if_error=$2
4444     use_ld_ok=
4445     AC_MSG_CHECKING([for $use_ld linker support])
4446     use_ld_ldflags_save="$LDFLAGS"
4447     LDFLAGS="$LDFLAGS $use_ld"
4448     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4449 #include <stdio.h>
4450         ],[
4451 printf ("hello world\n");
4452         ])], USE_LD=$use_ld, [])
4453     if test -n "$USE_LD"; then
4454         AC_MSG_RESULT( yes )
4455         use_ld_ok=yes
4456     else
4457         if test -n "$use_ld_fail_if_error"; then
4458             AC_MSG_ERROR( no )
4459         else
4460             AC_MSG_RESULT( no )
4461         fi
4462     fi
4463     if test -n "$use_ld_ok"; then
4464         dnl keep the value of LDFLAGS
4465         return 0
4466     fi
4467     LDFLAGS="$use_ld_ldflags_save"
4468     return 1
4470 USE_LD=
4471 if test "$enable_ld" != "no"; then
4472     if test "$GCC" = "yes"; then
4473         if test -n "$enable_ld"; then
4474             check_use_ld "$enable_ld" fail_if_error
4475         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4476             dnl non-debug builds default to the default linker
4477             true
4478         elif test -n "$COM_IS_CLANG"; then
4479             check_use_ld lld
4480             if test $? -ne 0; then
4481                 check_use_ld gold
4482             fi
4483         else
4484             # For gcc first try gold, new versions also support lld.
4485             check_use_ld gold
4486             if test $? -ne 0; then
4487                 check_use_ld lld
4488             fi
4489         fi
4490         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4491         rm conftest.out
4492         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4493         if test -z "$ld_used"; then
4494             ld_used="unknown"
4495         fi
4496         AC_MSG_CHECKING([for linker that is used])
4497         AC_MSG_RESULT([$ld_used])
4498         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4499             if echo "$ld_used" | grep -q "^GNU ld"; then
4500                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4501                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4502             fi
4503         fi
4504     else
4505         if test "$enable_ld" = "yes"; then
4506             AC_MSG_ERROR([--enable-ld not supported])
4507         fi
4508     fi
4510 AC_SUBST(USE_LD)
4512 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4513 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4514     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4515     bsymbolic_functions_ldflags_save=$LDFLAGS
4516     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4517     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4518 #include <stdio.h>
4519         ],[
4520 printf ("hello world\n");
4521         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4522     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4523         AC_MSG_RESULT( found )
4524     else
4525         AC_MSG_RESULT( not found )
4526     fi
4527     LDFLAGS=$bsymbolic_functions_ldflags_save
4529 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4531 LD_GC_SECTIONS=
4532 if test "$GCC" = "yes"; then
4533     for flag in "--gc-sections" "-dead_strip"; do
4534         AC_MSG_CHECKING([for $flag linker support])
4535         ldflags_save=$LDFLAGS
4536         LDFLAGS="$LDFLAGS -Wl,$flag"
4537         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4538 #include <stdio.h>
4539             ],[
4540 printf ("hello world\n");
4541             ])],[
4542             LD_GC_SECTIONS="-Wl,$flag"
4543             AC_MSG_RESULT( found )
4544             ], [
4545             AC_MSG_RESULT( not found )
4546             ])
4547         LDFLAGS=$ldflags_save
4548         if test -n "$LD_GC_SECTIONS"; then
4549             break
4550         fi
4551     done
4553 AC_SUBST(LD_GC_SECTIONS)
4555 HAVE_GSPLIT_DWARF=
4556 if test "$enable_split_debug" != no; then
4557     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4558     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4559         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4560         save_CFLAGS=$CFLAGS
4561         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4562         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4563         CFLAGS=$save_CFLAGS
4564         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4565             AC_MSG_RESULT([yes])
4566         else
4567             if test "$enable_split_debug" = yes; then
4568                 AC_MSG_ERROR([no])
4569             else
4570                 AC_MSG_RESULT([no])
4571             fi
4572         fi
4573     fi
4574     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4575         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4576         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4577     fi
4579 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4581 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4582 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4583 save_CFLAGS=$CFLAGS
4584 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4585 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4586 CFLAGS=$save_CFLAGS
4587 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4588     AC_MSG_RESULT([yes])
4589 else
4590     AC_MSG_RESULT([no])
4592 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4594 ENABLE_GDB_INDEX=
4595 if test "$enable_gdb_index" != "no"; then
4596     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4597     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4598         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4599         save_CFLAGS=$CFLAGS
4600         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4601         have_ggnu_pubnames=
4602         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4603         if test "$have_ggnu_pubnames" != "TRUE"; then
4604             if test "$enable_gdb_index" = "yes"; then
4605                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4606             else
4607                 AC_MSG_RESULT( no )
4608             fi
4609         else
4610             AC_MSG_RESULT( yes )
4611             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4612             ldflags_save=$LDFLAGS
4613             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4614             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4615 #include <stdio.h>
4616                 ],[
4617 printf ("hello world\n");
4618                 ])], ENABLE_GDB_INDEX=TRUE, [])
4619             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4620                 AC_MSG_RESULT( yes )
4621             else
4622                 if test "$enable_gdb_index" = "yes"; then
4623                     AC_MSG_ERROR( no )
4624                 else
4625                     AC_MSG_RESULT( no )
4626                 fi
4627             fi
4628             LDFLAGS=$ldflags_save
4629         fi
4630         CFLAGS=$save_CFLAGS
4631         fi
4632     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4633         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4634         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4635     fi
4637 AC_SUBST(ENABLE_GDB_INDEX)
4639 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4640     enable_sal_log=yes
4642 if test "$enable_sal_log" = yes; then
4643     ENABLE_SAL_LOG=TRUE
4645 AC_SUBST(ENABLE_SAL_LOG)
4647 dnl Check for enable symbols option
4648 dnl ===================================================================
4649 AC_MSG_CHECKING([whether to generate debug information])
4650 if test -z "$enable_symbols"; then
4651     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4652         enable_symbols=yes
4653     else
4654         enable_symbols=no
4655     fi
4657 if test "$enable_symbols" = yes; then
4658     ENABLE_SYMBOLS_FOR=all
4659     AC_MSG_RESULT([yes])
4660 elif test "$enable_symbols" = no; then
4661     ENABLE_SYMBOLS_FOR=
4662     AC_MSG_RESULT([no])
4663 else
4664     # Selective debuginfo.
4665     ENABLE_SYMBOLS_FOR="$enable_symbols"
4666     AC_MSG_RESULT([for "$enable_symbols"])
4668 AC_SUBST(ENABLE_SYMBOLS_FOR)
4670 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4671     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4672     AC_MSG_CHECKING([whether enough memory is available for linking])
4673     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4674     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4675     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4676         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4677     else
4678         AC_MSG_RESULT([yes])
4679     fi
4682 ENABLE_OPTIMIZED=
4683 ENABLE_OPTIMIZED_DEBUG=
4684 AC_MSG_CHECKING([whether to compile with optimization flags])
4685 if test -z "$enable_optimized"; then
4686     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4687         enable_optimized=no
4688     else
4689         enable_optimized=yes
4690     fi
4692 if test "$enable_optimized" = yes; then
4693     ENABLE_OPTIMIZED=TRUE
4694     AC_MSG_RESULT([yes])
4695 elif test "$enable_optimized" = debug; then
4696     ENABLE_OPTIMIZED_DEBUG=TRUE
4697     AC_MSG_RESULT([yes (debug)])
4698     HAVE_GCC_OG=
4699     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4700         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4701         save_CFLAGS=$CFLAGS
4702         CFLAGS="$CFLAGS -Werror -Og"
4703         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4704         CFLAGS=$save_CFLAGS
4705         if test "$HAVE_GCC_OG" = "TRUE"; then
4706             AC_MSG_RESULT([yes])
4707         else
4708             AC_MSG_RESULT([no])
4709         fi
4710     fi
4711     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4712         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4713     fi
4714 else
4715     AC_MSG_RESULT([no])
4717 AC_SUBST(ENABLE_OPTIMIZED)
4718 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4721 # determine CPUNAME, OS, ...
4723 case "$host_os" in
4725 aix*)
4726     COM=GCC
4727     CPUNAME=POWERPC
4728     OS=AIX
4729     RTL_OS=AIX
4730     RTL_ARCH=PowerPC
4731     PLATFORMID=aix_powerpc
4732     P_SEP=:
4733     ;;
4735 cygwin*|wsl*)
4736     # Already handled
4737     ;;
4739 darwin*|macos*)
4740     COM=GCC
4741     OS=MACOSX
4742     RTL_OS=MacOSX
4743     P_SEP=:
4745     case "$host_cpu" in
4746     aarch64|arm64)
4747         if test "$enable_ios_simulator" = "yes"; then
4748             OS=iOS
4749         else
4750             CPUNAME=AARCH64
4751             RTL_ARCH=AARCH64
4752             PLATFORMID=macosx_aarch64
4753         fi
4754         ;;
4755     x86_64)
4756         if test "$enable_ios_simulator" = "yes"; then
4757             OS=iOS
4758         fi
4759         CPUNAME=X86_64
4760         RTL_ARCH=X86_64
4761         PLATFORMID=macosx_x86_64
4762         ;;
4763     *)
4764         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4765         ;;
4766     esac
4767     ;;
4769 ios*)
4770     COM=GCC
4771     OS=iOS
4772     RTL_OS=iOS
4773     P_SEP=:
4775     case "$host_cpu" in
4776     aarch64|arm64)
4777         if test "$enable_ios_simulator" = "yes"; then
4778             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4779         fi
4780         ;;
4781     *)
4782         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4783         ;;
4784     esac
4785     CPUNAME=AARCH64
4786     RTL_ARCH=AARCH64
4787     PLATFORMID=ios_arm64
4788     ;;
4790 dragonfly*)
4791     COM=GCC
4792     OS=DRAGONFLY
4793     RTL_OS=DragonFly
4794     P_SEP=:
4796     case "$host_cpu" in
4797     i*86)
4798         CPUNAME=INTEL
4799         RTL_ARCH=x86
4800         PLATFORMID=dragonfly_x86
4801         ;;
4802     x86_64)
4803         CPUNAME=X86_64
4804         RTL_ARCH=X86_64
4805         PLATFORMID=dragonfly_x86_64
4806         ;;
4807     *)
4808         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4809         ;;
4810     esac
4811     ;;
4813 freebsd*)
4814     COM=GCC
4815     RTL_OS=FreeBSD
4816     OS=FREEBSD
4817     P_SEP=:
4819     case "$host_cpu" in
4820     aarch64)
4821         CPUNAME=AARCH64
4822         PLATFORMID=freebsd_aarch64
4823         RTL_ARCH=AARCH64
4824         ;;
4825     i*86)
4826         CPUNAME=INTEL
4827         RTL_ARCH=x86
4828         PLATFORMID=freebsd_x86
4829         ;;
4830     x86_64|amd64)
4831         CPUNAME=X86_64
4832         RTL_ARCH=X86_64
4833         PLATFORMID=freebsd_x86_64
4834         ;;
4835     powerpc64)
4836         CPUNAME=POWERPC64
4837         RTL_ARCH=PowerPC_64
4838         PLATFORMID=freebsd_powerpc64
4839         ;;
4840     powerpc|powerpcspe)
4841         CPUNAME=POWERPC
4842         RTL_ARCH=PowerPC
4843         PLATFORMID=freebsd_powerpc
4844         ;;
4845     *)
4846         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4847         ;;
4848     esac
4849     ;;
4851 haiku*)
4852     COM=GCC
4853     GUIBASE=haiku
4854     RTL_OS=Haiku
4855     OS=HAIKU
4856     P_SEP=:
4858     case "$host_cpu" in
4859     i*86)
4860         CPUNAME=INTEL
4861         RTL_ARCH=x86
4862         PLATFORMID=haiku_x86
4863         ;;
4864     x86_64|amd64)
4865         CPUNAME=X86_64
4866         RTL_ARCH=X86_64
4867         PLATFORMID=haiku_x86_64
4868         ;;
4869     *)
4870         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4871         ;;
4872     esac
4873     ;;
4875 kfreebsd*)
4876     COM=GCC
4877     OS=LINUX
4878     RTL_OS=kFreeBSD
4879     P_SEP=:
4881     case "$host_cpu" in
4883     i*86)
4884         CPUNAME=INTEL
4885         RTL_ARCH=x86
4886         PLATFORMID=kfreebsd_x86
4887         ;;
4888     x86_64)
4889         CPUNAME=X86_64
4890         RTL_ARCH=X86_64
4891         PLATFORMID=kfreebsd_x86_64
4892         ;;
4893     *)
4894         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4895         ;;
4896     esac
4897     ;;
4899 linux-gnu*|linux-musl*)
4900     COM=GCC
4901     OS=LINUX
4902     RTL_OS=Linux
4903     P_SEP=:
4905     case "$host_cpu" in
4907     aarch64)
4908         CPUNAME=AARCH64
4909         PLATFORMID=linux_aarch64
4910         RTL_ARCH=AARCH64
4911         EPM_FLAGS="-a arm64"
4912         ;;
4913     alpha)
4914         CPUNAME=AXP
4915         RTL_ARCH=ALPHA
4916         PLATFORMID=linux_alpha
4917         ;;
4918     arm*)
4919         CPUNAME=ARM
4920         EPM_FLAGS="-a arm"
4921         RTL_ARCH=ARM_EABI
4922         PLATFORMID=linux_arm_eabi
4923         case "$host_cpu" in
4924         arm*-linux)
4925             RTL_ARCH=ARM_OABI
4926             PLATFORMID=linux_arm_oabi
4927             ;;
4928         esac
4929         ;;
4930     hppa)
4931         CPUNAME=HPPA
4932         RTL_ARCH=HPPA
4933         EPM_FLAGS="-a hppa"
4934         PLATFORMID=linux_hppa
4935         ;;
4936     i*86)
4937         CPUNAME=INTEL
4938         RTL_ARCH=x86
4939         PLATFORMID=linux_x86
4940         ;;
4941     ia64)
4942         CPUNAME=IA64
4943         RTL_ARCH=IA64
4944         PLATFORMID=linux_ia64
4945         ;;
4946     mips)
4947         CPUNAME=GODSON
4948         RTL_ARCH=MIPS_EB
4949         EPM_FLAGS="-a mips"
4950         PLATFORMID=linux_mips_eb
4951         ;;
4952     mips64)
4953         CPUNAME=GODSON64
4954         RTL_ARCH=MIPS64_EB
4955         EPM_FLAGS="-a mips64"
4956         PLATFORMID=linux_mips64_eb
4957         ;;
4958     mips64el)
4959         CPUNAME=GODSON64
4960         RTL_ARCH=MIPS64_EL
4961         EPM_FLAGS="-a mips64el"
4962         PLATFORMID=linux_mips64_el
4963         ;;
4964     mipsel)
4965         CPUNAME=GODSON
4966         RTL_ARCH=MIPS_EL
4967         EPM_FLAGS="-a mipsel"
4968         PLATFORMID=linux_mips_el
4969         ;;
4970     m68k)
4971         CPUNAME=M68K
4972         RTL_ARCH=M68K
4973         PLATFORMID=linux_m68k
4974         ;;
4975     powerpc)
4976         CPUNAME=POWERPC
4977         RTL_ARCH=PowerPC
4978         PLATFORMID=linux_powerpc
4979         ;;
4980     powerpc64)
4981         CPUNAME=POWERPC64
4982         RTL_ARCH=PowerPC_64
4983         PLATFORMID=linux_powerpc64
4984         ;;
4985     powerpc64le)
4986         CPUNAME=POWERPC64
4987         RTL_ARCH=PowerPC_64_LE
4988         PLATFORMID=linux_powerpc64_le
4989         ;;
4990     sparc)
4991         CPUNAME=SPARC
4992         RTL_ARCH=SPARC
4993         PLATFORMID=linux_sparc
4994         ;;
4995     sparc64)
4996         CPUNAME=SPARC64
4997         RTL_ARCH=SPARC64
4998         PLATFORMID=linux_sparc64
4999         ;;
5000     s390)
5001         CPUNAME=S390
5002         RTL_ARCH=S390
5003         PLATFORMID=linux_s390
5004         ;;
5005     s390x)
5006         CPUNAME=S390X
5007         RTL_ARCH=S390x
5008         PLATFORMID=linux_s390x
5009         ;;
5010     x86_64)
5011         CPUNAME=X86_64
5012         RTL_ARCH=X86_64
5013         PLATFORMID=linux_x86_64
5014         ;;
5015     *)
5016         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5017         ;;
5018     esac
5019     ;;
5021 linux-android*)
5022     COM=GCC
5023     OS=ANDROID
5024     RTL_OS=Android
5025     P_SEP=:
5027     case "$host_cpu" in
5029     arm|armel)
5030         CPUNAME=ARM
5031         RTL_ARCH=ARM_EABI
5032         PLATFORMID=android_arm_eabi
5033         ;;
5034     aarch64)
5035         CPUNAME=AARCH64
5036         RTL_ARCH=AARCH64
5037         PLATFORMID=android_aarch64
5038         ;;
5039     i*86)
5040         CPUNAME=INTEL
5041         RTL_ARCH=x86
5042         PLATFORMID=android_x86
5043         ;;
5044     x86_64)
5045         CPUNAME=X86_64
5046         RTL_ARCH=X86_64
5047         PLATFORMID=android_x86_64
5048         ;;
5049     *)
5050         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5051         ;;
5052     esac
5053     ;;
5055 *netbsd*)
5056     COM=GCC
5057     OS=NETBSD
5058     RTL_OS=NetBSD
5059     P_SEP=:
5061     case "$host_cpu" in
5062     i*86)
5063         CPUNAME=INTEL
5064         RTL_ARCH=x86
5065         PLATFORMID=netbsd_x86
5066         ;;
5067     powerpc)
5068         CPUNAME=POWERPC
5069         RTL_ARCH=PowerPC
5070         PLATFORMID=netbsd_powerpc
5071         ;;
5072     sparc)
5073         CPUNAME=SPARC
5074         RTL_ARCH=SPARC
5075         PLATFORMID=netbsd_sparc
5076         ;;
5077     x86_64)
5078         CPUNAME=X86_64
5079         RTL_ARCH=X86_64
5080         PLATFORMID=netbsd_x86_64
5081         ;;
5082     *)
5083         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5084         ;;
5085     esac
5086     ;;
5088 openbsd*)
5089     COM=GCC
5090     OS=OPENBSD
5091     RTL_OS=OpenBSD
5092     P_SEP=:
5094     case "$host_cpu" in
5095     i*86)
5096         CPUNAME=INTEL
5097         RTL_ARCH=x86
5098         PLATFORMID=openbsd_x86
5099         ;;
5100     x86_64)
5101         CPUNAME=X86_64
5102         RTL_ARCH=X86_64
5103         PLATFORMID=openbsd_x86_64
5104         ;;
5105     *)
5106         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5107         ;;
5108     esac
5109     SOLARINC="$SOLARINC -I/usr/local/include"
5110     ;;
5112 solaris*)
5113     COM=GCC
5114     OS=SOLARIS
5115     RTL_OS=Solaris
5116     P_SEP=:
5118     case "$host_cpu" in
5119     i*86)
5120         CPUNAME=INTEL
5121         RTL_ARCH=x86
5122         PLATFORMID=solaris_x86
5123         ;;
5124     sparc)
5125         CPUNAME=SPARC
5126         RTL_ARCH=SPARC
5127         PLATFORMID=solaris_sparc
5128         ;;
5129     sparc64)
5130         CPUNAME=SPARC64
5131         RTL_ARCH=SPARC64
5132         PLATFORMID=solaris_sparc64
5133         ;;
5134     *)
5135         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5136         ;;
5137     esac
5138     SOLARINC="$SOLARINC -I/usr/local/include"
5139     ;;
5141 emscripten*)
5142     COM=GCC
5143     OS=EMSCRIPTEN
5144     RTL_OS=Emscripten
5145     P_SEP=:
5147     case "$host_cpu" in
5148     wasm32|wasm64)
5149         ;;
5150     *)
5151         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5152         ;;
5153     esac
5154     CPUNAME=INTEL
5155     RTL_ARCH=x86
5156     PLATFORMID=linux_x86
5157     ;;
5160     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5161     ;;
5162 esac
5164 if test "$with_x" = "no"; then
5165     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5168 DISABLE_GUI=""
5169 if test "$enable_gui" = "no"; then
5170     if test "$using_x11" != yes; then
5171         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5172     fi
5173     USING_X11=
5174     DISABLE_GUI=TRUE
5175 else
5176     AC_DEFINE(HAVE_FEATURE_UI)
5178 AC_SUBST(DISABLE_GUI)
5180 if test "$using_x11" = yes; then
5181     if test "$USING_X11" = TRUE; then
5182         AC_DEFINE(USING_X11)
5183     else
5184         disable_x11_tests
5185     fi
5186 else
5187     if test "$USING_X11" = TRUE; then
5188         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5189     fi
5192 WORKDIR="${BUILDDIR}/workdir"
5193 INSTDIR="${BUILDDIR}/instdir"
5194 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5195 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5196 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5197 AC_SUBST(COM)
5198 AC_SUBST(CPUNAME)
5199 AC_SUBST(RTL_OS)
5200 AC_SUBST(RTL_ARCH)
5201 AC_SUBST(EPM_FLAGS)
5202 AC_SUBST(USING_X11)
5203 AC_SUBST([INSTDIR])
5204 AC_SUBST([INSTROOT])
5205 AC_SUBST([INSTROOTBASE])
5206 AC_SUBST(OS)
5207 AC_SUBST(P_SEP)
5208 AC_SUBST(WORKDIR)
5209 AC_SUBST(PLATFORMID)
5210 AC_SUBST(WINDOWS_X64)
5211 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5213 if test "$OS" = WNT -a "$COM" = MSC; then
5214     case "$CPUNAME" in
5215     INTEL) CPPU_ENV=msci ;;
5216     X86_64) CPPU_ENV=mscx ;;
5217     AARCH64) CPPU_ENV=msca ;;
5218     *)
5219         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5220         ;;
5221     esac
5222 else
5223     CPPU_ENV=gcc3
5225 AC_SUBST(CPPU_ENV)
5227 dnl ===================================================================
5228 dnl Test which package format to use
5229 dnl ===================================================================
5230 AC_MSG_CHECKING([which package format to use])
5231 if test -n "$with_package_format" -a "$with_package_format" != no; then
5232     for i in $with_package_format; do
5233         case "$i" in
5234         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5235             ;;
5236         *)
5237             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5238 aix - AIX software distribution
5239 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5240 deb - Debian software distribution
5241 pkg - Solaris software distribution
5242 rpm - RedHat software distribution
5244 LibreOffice additionally supports:
5245 archive - .tar.gz or .zip
5246 dmg - macOS .dmg
5247 installed - installation tree
5248 msi - Windows .msi
5249         ])
5250             ;;
5251         esac
5252     done
5253     # fakeroot is needed to ensure correct file ownerships/permissions
5254     # inside deb packages and tar archives created on Linux and Solaris.
5255     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5256         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5257         if test "$FAKEROOT" = "no"; then
5258             AC_MSG_ERROR(
5259                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5260         fi
5261     fi
5262     PKGFORMAT="$with_package_format"
5263     AC_MSG_RESULT([$PKGFORMAT])
5264 else
5265     PKGFORMAT=
5266     AC_MSG_RESULT([none])
5268 AC_SUBST(PKGFORMAT)
5270 dnl ===================================================================
5271 dnl handle help related options
5273 dnl If you change help related options, please update README.help
5274 dnl ===================================================================
5276 ENABLE_HTMLHELP=
5277 HELP_OMINDEX_PAGE=
5278 HELP_ONLINE=
5279 WITH_HELPPACKS=
5281 AC_MSG_CHECKING([which help to build])
5282 if test -n "$with_help" -a "$with_help" != "no"; then
5283     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5284     BUILD_TYPE="$BUILD_TYPE HELP"
5285     case "$with_help" in
5286     "html")
5287         ENABLE_HTMLHELP=TRUE
5288         WITH_HELPPACKS=TRUE
5289         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5290         AC_MSG_RESULT([HTML (local)])
5291         ;;
5292     "online")
5293         ENABLE_HTMLHELP=TRUE
5294         HELP_ONLINE=TRUE
5295         AC_MSG_RESULT([HTML (online)])
5296         ;;
5297     yes)
5298         WITH_HELPPACKS=TRUE
5299         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5300         AC_MSG_RESULT([XML (local)])
5301         ;;
5302     *)
5303         AC_MSG_ERROR([Unknown --with-help=$with_help])
5304         ;;
5305     esac
5306 else
5307     AC_MSG_RESULT([no])
5310 AC_MSG_CHECKING([if we need to build the help index tooling])
5311 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5312     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5313     AC_MSG_RESULT([yes])
5314 else
5315     AC_MSG_RESULT([no])
5318 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5319 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5320     if test "$HELP_ONLINE" != TRUE; then
5321         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5322     fi
5323     case "$with_omindex" in
5324     "server")
5325         HELP_OMINDEX_PAGE=TRUE
5326         AC_MSG_RESULT([SERVER])
5327         ;;
5328     "noxap")
5329         AC_MSG_RESULT([NOXAP])
5330         ;;
5331     *)
5332         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5333         ;;
5334     esac
5335 else
5336     AC_MSG_RESULT([no])
5339 AC_MSG_CHECKING([whether to include the XML-help support])
5340 if test "$enable_xmlhelp" = yes; then
5341     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5342     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5343     AC_MSG_RESULT([yes])
5344 else
5345     if test "$with_help" = yes; then
5346         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5347     fi
5348     AC_MSG_RESULT([no])
5351 dnl Test whether to integrate helppacks into the product's installer
5352 AC_MSG_CHECKING([for helppack integration])
5353 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5354     AC_MSG_RESULT([no integration])
5355 else
5356     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5357     AC_MSG_RESULT([integration])
5360 AC_SUBST([ENABLE_HTMLHELP])
5361 AC_SUBST([HELP_OMINDEX_PAGE])
5362 AC_SUBST([HELP_ONLINE])
5363 # WITH_HELPPACKS is used only in configure
5365 dnl ===================================================================
5366 dnl Set up a different compiler to produce tools to run on the build
5367 dnl machine when doing cross-compilation
5368 dnl ===================================================================
5370 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5371 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5372 if test "$cross_compiling" = "yes"; then
5373     AC_MSG_CHECKING([for BUILD platform configuration])
5374     echo
5375     rm -rf CONF-FOR-BUILD config_build.mk
5376     mkdir CONF-FOR-BUILD
5377     # Here must be listed all files needed when running the configure script. In particular, also
5378     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5379     # keep them in the same order as there.
5380     (cd $SRC_ROOT && tar cf - \
5381         config.guess \
5382         bin/get_config_variables \
5383         solenv/bin/getcompver.awk \
5384         solenv/inc/langlist.mk \
5385         download.lst \
5386         config_host.mk.in \
5387         config_host_lang.mk.in \
5388         Makefile.in \
5389         bin/bffvalidator.sh.in \
5390         bin/odfvalidator.sh.in \
5391         bin/officeotron.sh.in \
5392         hardened_runtime.xcent.in \
5393         instsetoo_native/util/openoffice.lst.in \
5394         config_host/*.in \
5395         sysui/desktop/macosx/Info.plist.in \
5396         .vscode/vs-code-template.code-workspace.in \
5397         ) \
5398     | (cd CONF-FOR-BUILD && tar xf -)
5399     cp configure CONF-FOR-BUILD
5400     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5401     (
5402     unset COM USING_X11 OS CPUNAME
5403     unset CC CXX SYSBASE CFLAGS
5404     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5405     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5406     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5407     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5408     if test -n "$CC_FOR_BUILD"; then
5409         export CC="$CC_FOR_BUILD"
5410         CC_BASE=`first_arg_basename "$CC"`
5411     fi
5412     if test -n "$CXX_FOR_BUILD"; then
5413         export CXX="$CXX_FOR_BUILD"
5414         CXX_BASE=`first_arg_basename "$CXX"`
5415     fi
5416     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5417     cd CONF-FOR-BUILD
5419     # Handle host configuration, which affects the cross-toolset too
5420     sub_conf_opts=""
5421     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5422     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5423     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5424     if test -n "$ENABLE_JAVA"; then
5425         case "$_os" in
5426         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5427         Android)
5428             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5429             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5430             ;;
5431         *)
5432             if test -z "$with_jdk_home"; then
5433                 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.])
5434             fi
5435             ;;
5436         esac
5437     else
5438         sub_conf_opts="$sub_conf_opts --without-java"
5439     fi
5440     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5441     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5442     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5443     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5444     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5445     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5447     # Don't bother having configure look for stuff not needed for the build platform anyway
5448     sub_conf_defaults=" \
5449         --build="$build_alias" \
5450         --disable-cairo-canvas \
5451         --disable-cups \
5452         --disable-firebird-sdbc \
5453         --disable-gpgmepp \
5454         --disable-gstreamer-1-0 \
5455         --disable-gtk3 \
5456         --disable-gtk4 \
5457         --disable-mariadb-sdbc \
5458         --disable-nss \
5459         --disable-online-update \
5460         --disable-opencl \
5461         --disable-pdfimport \
5462         --disable-postgresql-sdbc \
5463         --disable-skia \
5464         --enable-icecream="$enable_icecream" \
5465         --without-doxygen \
5466         --without-webdav \
5467         --with-parallelism="$with_parallelism" \
5468         --with-theme="$with_theme" \
5469         --with-tls=openssl \
5471     echo "    Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5472     ./configure \
5473         $sub_conf_defaults \
5474         $sub_conf_opts \
5475         $with_build_platform_configure_options \
5476         --srcdir=$srcdir \
5477         2>&1 | sed -e 's/^/    /'
5478     if test [${PIPESTATUS[0]}] -ne 0; then
5479         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5480     fi
5482     # filter permitted build targets
5483     PERMITTED_BUILD_TARGETS="
5484         AVMEDIA
5485         BOOST
5486         CAIRO
5487         CLUCENE
5488         CUCKOO
5489         CURL
5490         DBCONNECTIVITY
5491         DESKTOP
5492         DYNLOADING
5493         EPOXY
5494         EXPAT
5495         GLM
5496         GRAPHITE
5497         HARFBUZZ
5498         HELPTOOLS
5499         ICU
5500         LCMS2
5501         LIBJPEG_TURBO
5502         LIBLANGTAG
5503         LibO
5504         LIBFFI
5505         LIBPN
5506         LIBXML2
5507         LIBXSLT
5508         MDDS
5509         NATIVE
5510         OPENSSL
5511         ORCUS
5512         PYTHON
5513         SCRIPTING
5514         ZLIB
5516     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5517     # newlined lists, to use grep as a filter
5518     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5519     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5520     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5521     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5523     cp config_host.mk ../config_build.mk
5524     cp config_host_lang.mk ../config_build_lang.mk
5525     mv config.log ../config.Build.log
5526     mkdir -p ../config_build
5527     mv config_host/*.h ../config_build
5528     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5530     # all these will get a _FOR_BUILD postfix
5531     DIRECT_FOR_BUILD_SETTINGS="
5532         CC
5533         CPPU_ENV
5534         CXX
5535         ILIB
5536         JAVA_HOME
5537         JAVAIFLAGS
5538         JDK
5539         LIBO_BIN_FOLDER
5540         LIBO_LIB_FOLDER
5541         LIBO_URE_LIB_FOLDER
5542         LIBO_URE_MISC_FOLDER
5543         OS
5544         SDKDIRNAME
5545         SYSTEM_LIBXML
5546         SYSTEM_LIBXSLT
5548     # these overwrite host config with build config
5549     OVERWRITING_SETTINGS="
5550         ANT
5551         ANT_HOME
5552         ANT_LIB
5553         HSQLDB_USE_JDBC_4_1
5554         JAVA_CLASSPATH_NOT_SET
5555         JAVA_SOURCE_VER
5556         JAVA_TARGET_VER
5557         JAVACFLAGS
5558         JAVACOMPILER
5559         JAVADOC
5560         JAVADOCISGJDOC
5562     # these need some special handling
5563     EXTRA_HANDLED_SETTINGS="
5564         INSTDIR
5565         INSTROOT
5566         PATH
5567         WORKDIR
5569     OLD_PATH=$PATH
5570     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5571     BUILD_PATH=$PATH
5572     PATH=$OLD_PATH
5574     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5575     echo "$line" >>build-config
5577     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5578         VV='$'$V
5579         VV=`eval "echo $VV"`
5580         if test -n "$VV"; then
5581             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5582             echo "$line" >>build-config
5583         fi
5584     done
5586     for V in $OVERWRITING_SETTINGS; do
5587         VV='$'$V
5588         VV=`eval "echo $VV"`
5589         if test -n "$VV"; then
5590             line=${V}='${'${V}:-$VV'}'
5591             echo "$line" >>build-config
5592         fi
5593     done
5595     for V in INSTDIR INSTROOT WORKDIR; do
5596         VV='$'$V
5597         VV=`eval "echo $VV"`
5598         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5599         if test -n "$VV"; then
5600             line="${V}_FOR_BUILD='$VV'"
5601             echo "$line" >>build-config
5602         fi
5603     done
5605     )
5606     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5607     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])
5608     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5609              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5611     eval `cat CONF-FOR-BUILD/build-config`
5613     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5615     rm -rf CONF-FOR-BUILD
5616 else
5617     OS_FOR_BUILD="$OS"
5618     CC_FOR_BUILD="$CC"
5619     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5620     CXX_FOR_BUILD="$CXX"
5621     INSTDIR_FOR_BUILD="$INSTDIR"
5622     INSTROOT_FOR_BUILD="$INSTROOT"
5623     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5624     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5625     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5626     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5627     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5628     WORKDIR_FOR_BUILD="$WORKDIR"
5630 AC_SUBST(OS_FOR_BUILD)
5631 AC_SUBST(INSTDIR_FOR_BUILD)
5632 AC_SUBST(INSTROOT_FOR_BUILD)
5633 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5634 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5635 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5636 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5637 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5638 AC_SUBST(WORKDIR_FOR_BUILD)
5639 AC_SUBST(CC_FOR_BUILD)
5640 AC_SUBST(CXX_FOR_BUILD)
5641 AC_SUBST(CPPU_ENV_FOR_BUILD)
5643 dnl ===================================================================
5644 dnl Check for syslog header
5645 dnl ===================================================================
5646 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5648 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5649 dnl ===================================================================
5650 AC_MSG_CHECKING([whether to turn warnings to errors])
5651 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5652     ENABLE_WERROR="TRUE"
5653     PYTHONWARNINGS="error"
5654     AC_MSG_RESULT([yes])
5655 else
5656     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5657         ENABLE_WERROR="TRUE"
5658         PYTHONWARNINGS="error"
5659         AC_MSG_RESULT([yes])
5660     else
5661         AC_MSG_RESULT([no])
5662     fi
5664 AC_SUBST(ENABLE_WERROR)
5665 AC_SUBST(PYTHONWARNINGS)
5667 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5668 dnl ===================================================================
5669 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5670 if test -z "$enable_assert_always_abort"; then
5671    if test "$ENABLE_DEBUG" = TRUE; then
5672        enable_assert_always_abort=yes
5673    else
5674        enable_assert_always_abort=no
5675    fi
5677 if test "$enable_assert_always_abort" = "yes"; then
5678     ASSERT_ALWAYS_ABORT="TRUE"
5679     AC_MSG_RESULT([yes])
5680 else
5681     ASSERT_ALWAYS_ABORT="FALSE"
5682     AC_MSG_RESULT([no])
5684 AC_SUBST(ASSERT_ALWAYS_ABORT)
5686 # Determine whether to use ooenv for the instdir installation
5687 # ===================================================================
5688 if test $_os != "WINNT" -a $_os != "Darwin"; then
5689     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5690     if test -z "$enable_ooenv"; then
5691         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5692             enable_ooenv=yes
5693         else
5694             enable_ooenv=no
5695         fi
5696     fi
5697     if test "$enable_ooenv" = "no"; then
5698         AC_MSG_RESULT([no])
5699     else
5700         ENABLE_OOENV="TRUE"
5701         AC_MSG_RESULT([yes])
5702     fi
5704 AC_SUBST(ENABLE_OOENV)
5706 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5707     if test "$enable_qt5" = "no"; then
5708         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5709     else
5710         enable_qt5=yes
5711     fi
5714 dnl ===================================================================
5715 dnl check for cups support
5716 dnl ===================================================================
5718 AC_MSG_CHECKING([whether to enable CUPS support])
5719 if test "$test_cups" = yes -a "$enable_cups" != no; then
5720     ENABLE_CUPS=TRUE
5721     AC_MSG_RESULT([yes])
5723     AC_MSG_CHECKING([whether cups support is present])
5724     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5725     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5726     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5727         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5728     fi
5729 else
5730     AC_MSG_RESULT([no])
5733 AC_SUBST(ENABLE_CUPS)
5735 # fontconfig checks
5736 if test "$using_freetype_fontconfig" = yes; then
5737     AC_MSG_CHECKING([which fontconfig to use])
5739 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5740     AC_MSG_RESULT([external])
5741     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5742     SYSTEM_FONTCONFIG=TRUE
5743     FilterLibs "${FONTCONFIG_LIBS}"
5744     FONTCONFIG_LIBS="${filteredlibs}"
5745 elif test "$using_freetype_fontconfig" = yes; then
5746     AC_MSG_RESULT([internal])
5747     BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5749 AC_SUBST(FONTCONFIG_CFLAGS)
5750 AC_SUBST(FONTCONFIG_LIBS)
5751 AC_SUBST([SYSTEM_FONTCONFIG])
5753 dnl whether to find & fetch external tarballs?
5754 dnl ===================================================================
5755 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5756    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5757        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5758    else
5759        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5760    fi
5762 if test -z "$TARFILE_LOCATION"; then
5763     if test -d "$SRC_ROOT/src" ; then
5764         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5765         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5766     fi
5767     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5768 else
5769     AbsolutePath "$TARFILE_LOCATION"
5770     PathFormat "${absolute_path}"
5771     TARFILE_LOCATION="${formatted_path}"
5773 AC_SUBST(TARFILE_LOCATION)
5775 AC_MSG_CHECKING([whether we want to fetch tarballs])
5776 if test "$enable_fetch_external" != "no"; then
5777     if test "$with_all_tarballs" = "yes"; then
5778         AC_MSG_RESULT([yes, all of them])
5779         DO_FETCH_TARBALLS="ALL"
5780     else
5781         AC_MSG_RESULT([yes, if we use them])
5782         DO_FETCH_TARBALLS="TRUE"
5783     fi
5784 else
5785     AC_MSG_RESULT([no])
5786     DO_FETCH_TARBALLS=
5788 AC_SUBST(DO_FETCH_TARBALLS)
5790 dnl Test whether to include MySpell dictionaries
5791 dnl ===================================================================
5792 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5793 if test "$with_myspell_dicts" = "yes"; then
5794     AC_MSG_RESULT([yes])
5795     WITH_MYSPELL_DICTS=TRUE
5796     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5797     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5798 else
5799     AC_MSG_RESULT([no])
5800     WITH_MYSPELL_DICTS=
5802 AC_SUBST(WITH_MYSPELL_DICTS)
5804 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5805 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5806     if test "$with_system_dicts" = yes; then
5807         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5808     fi
5809     with_system_dicts=no
5812 AC_MSG_CHECKING([whether to use dicts from external paths])
5813 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5814     AC_MSG_RESULT([yes])
5815     SYSTEM_DICTS=TRUE
5816     AC_MSG_CHECKING([for spelling dictionary directory])
5817     if test -n "$with_external_dict_dir"; then
5818         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5819     else
5820         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5821         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5822             DICT_SYSTEM_DIR=file:///usr/share/myspell
5823         fi
5824     fi
5825     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5826     AC_MSG_CHECKING([for hyphenation patterns directory])
5827     if test -n "$with_external_hyph_dir"; then
5828         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5829     else
5830         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5831     fi
5832     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5833     AC_MSG_CHECKING([for thesaurus directory])
5834     if test -n "$with_external_thes_dir"; then
5835         THES_SYSTEM_DIR=file://$with_external_thes_dir
5836     else
5837         THES_SYSTEM_DIR=file:///usr/share/mythes
5838     fi
5839     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5840 else
5841     AC_MSG_RESULT([no])
5842     SYSTEM_DICTS=
5844 AC_SUBST(SYSTEM_DICTS)
5845 AC_SUBST(DICT_SYSTEM_DIR)
5846 AC_SUBST(HYPH_SYSTEM_DIR)
5847 AC_SUBST(THES_SYSTEM_DIR)
5849 dnl ===================================================================
5850 dnl Precompiled headers.
5851 ENABLE_PCH=""
5852 AC_MSG_CHECKING([whether to enable pch feature])
5853 if test -z "$enable_pch"; then
5854     if test "$_os" = "WINNT"; then
5855         # Enabled by default on Windows.
5856         enable_pch=yes
5857     else
5858         enable_pch=no
5859     fi
5861 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5862     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5864 if test "$enable_pch" = "system"; then
5865     ENABLE_PCH="1"
5866     AC_MSG_RESULT([yes (system headers)])
5867 elif test "$enable_pch" = "base"; then
5868     ENABLE_PCH="2"
5869     AC_MSG_RESULT([yes (system and base headers)])
5870 elif test "$enable_pch" = "normal"; then
5871     ENABLE_PCH="3"
5872     AC_MSG_RESULT([yes (normal)])
5873 elif test "$enable_pch" = "full"; then
5874     ENABLE_PCH="4"
5875     AC_MSG_RESULT([yes (full)])
5876 elif test "$enable_pch" = "yes"; then
5877     # Pick a suitable default.
5878     if test "$GCC" = "yes"; then
5879         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5880         # while making the PCHs larger and rebuilds more likely.
5881         ENABLE_PCH="2"
5882         AC_MSG_RESULT([yes (system and base headers)])
5883     else
5884         # With MSVC the highest level makes a significant difference,
5885         # and it was the default when there used to be no PCH levels.
5886         ENABLE_PCH="4"
5887         AC_MSG_RESULT([yes (full)])
5888     fi
5889 elif test "$enable_pch" = "no"; then
5890     AC_MSG_RESULT([no])
5891 else
5892     AC_MSG_ERROR([Unknown value for --enable-pch])
5894 AC_SUBST(ENABLE_PCH)
5895 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5896 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5897     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5898     if test "$CCACHE_BIN" != "not found"; then
5899         AC_MSG_CHECKING([ccache version])
5900         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5901         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5902         AC_MSG_RESULT([$CCACHE_VERSION])
5903         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5904         if test "$CCACHE_NUMVER" -gt "030701"; then
5905             AC_MSG_RESULT([yes])
5906         else
5907             AC_MSG_RESULT([no (not newer than 3.7.1)])
5908             CCACHE_DEPEND_MODE=
5909         fi
5910     fi
5913 PCH_INSTANTIATE_TEMPLATES=
5914 if test -n "$ENABLE_PCH"; then
5915     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5916     save_CFLAGS=$CFLAGS
5917     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5918     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5919     CFLAGS=$save_CFLAGS
5920     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5921         AC_MSG_RESULT(yes)
5922     else
5923         AC_MSG_RESULT(no)
5924     fi
5926 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5928 BUILDING_PCH_WITH_OBJ=
5929 if test -n "$ENABLE_PCH"; then
5930     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5931     save_CFLAGS=$CFLAGS
5932     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5933     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5934     CFLAGS=$save_CFLAGS
5935     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5936         AC_MSG_RESULT(yes)
5937     else
5938         AC_MSG_RESULT(no)
5939     fi
5941 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5943 PCH_CODEGEN=
5944 PCH_NO_CODEGEN=
5945 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5946     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5947     save_CFLAGS=$CFLAGS
5948     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5949     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5950         [
5951         PCH_CODEGEN="-fpch-codegen"
5952         PCH_NO_CODEGEN="-fno-pch-codegen"
5953         ],[])
5954     CFLAGS=$save_CFLAGS
5955     if test -n "$PCH_CODEGEN"; then
5956         AC_MSG_RESULT(yes)
5957     else
5958         AC_MSG_RESULT(no)
5959     fi
5961 AC_SUBST(PCH_CODEGEN)
5962 AC_SUBST(PCH_NO_CODEGEN)
5963 PCH_DEBUGINFO=
5964 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5965     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5966     save_CFLAGS=$CFLAGS
5967     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5968     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5969     CFLAGS=$save_CFLAGS
5970     if test -n "$PCH_DEBUGINFO"; then
5971         AC_MSG_RESULT(yes)
5972     else
5973         AC_MSG_RESULT(no)
5974     fi
5976 AC_SUBST(PCH_DEBUGINFO)
5978 TAB=`printf '\t'`
5980 AC_MSG_CHECKING([the GNU Make version])
5981 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5982 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5983 if test "$_make_longver" -ge "038200"; then
5984     AC_MSG_RESULT([$GNUMAKE $_make_version])
5986 elif test "$_make_longver" -ge "038100"; then
5987     if test "$build_os" = "cygwin"; then
5988         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5989     fi
5990     AC_MSG_RESULT([$GNUMAKE $_make_version])
5992     dnl ===================================================================
5993     dnl Search all the common names for sha1sum
5994     dnl ===================================================================
5995     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5996     if test -z "$SHA1SUM"; then
5997         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5998     elif test "$SHA1SUM" = "openssl"; then
5999         SHA1SUM="openssl sha1"
6000     fi
6001     AC_MSG_CHECKING([for GNU Make bug 20033])
6002     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6003     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6004 A := \$(wildcard *.a)
6006 .PHONY: all
6007 all: \$(A:.a=.b)
6008 <TAB>@echo survived bug20033.
6010 .PHONY: setup
6011 setup:
6012 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6014 define d1
6015 @echo lala \$(1)
6016 @sleep 1
6017 endef
6019 define d2
6020 @echo tyty \$(1)
6021 @sleep 1
6022 endef
6024 %.b : %.a
6025 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6026 <TAB>\$(call d1,\$(CHECKSUM)),\
6027 <TAB>\$(call d2,\$(CHECKSUM)))
6029     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6030         no_parallelism_make="YES"
6031         AC_MSG_RESULT([yes, disable parallelism])
6032     else
6033         AC_MSG_RESULT([no, keep parallelism enabled])
6034     fi
6035     rm -rf $TESTGMAKEBUG20033
6036 else
6037     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6040 # find if gnumake support file function
6041 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6042 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6043 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6044     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6046 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6047 \$(file >test.txt,Success )
6049 .PHONY: all
6050 all:
6051 <TAB>@cat test.txt
6054 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6055 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6056     HAVE_GNUMAKE_FILE_FUNC=TRUE
6057     AC_MSG_RESULT([yes])
6058 else
6059     AC_MSG_RESULT([no])
6061 rm -rf $TESTGMAKEFILEFUNC
6062 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6064 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6065 STALE_MAKE=
6066 if test "$_make_ver_check" = ""; then
6067    STALE_MAKE=TRUE
6070 HAVE_LD_HASH_STYLE=FALSE
6071 WITH_LINKER_HASH_STYLE=
6072 AC_MSG_CHECKING([for --hash-style gcc linker support])
6073 if test "$GCC" = "yes"; then
6074     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6075         hash_styles="gnu sysv"
6076     elif test "$with_linker_hash_style" = "no"; then
6077         hash_styles=
6078     else
6079         hash_styles="$with_linker_hash_style"
6080     fi
6082     for hash_style in $hash_styles; do
6083         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6084         hash_style_ldflags_save=$LDFLAGS
6085         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6087         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6088             [
6089 #include <stdio.h>
6090             ],[
6091 printf ("");
6092             ])],
6093             [
6094                   HAVE_LD_HASH_STYLE=TRUE
6095                   WITH_LINKER_HASH_STYLE=$hash_style
6096             ],
6097             [HAVE_LD_HASH_STYLE=FALSE],
6098             [HAVE_LD_HASH_STYLE=FALSE])
6099         LDFLAGS=$hash_style_ldflags_save
6100     done
6102     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6103         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6104     else
6105         AC_MSG_RESULT( no )
6106     fi
6107     LDFLAGS=$hash_style_ldflags_save
6108 else
6109     AC_MSG_RESULT( no )
6111 AC_SUBST(HAVE_LD_HASH_STYLE)
6112 AC_SUBST(WITH_LINKER_HASH_STYLE)
6114 dnl ===================================================================
6115 dnl Check whether there's a Perl version available.
6116 dnl ===================================================================
6117 if test -z "$with_perl_home"; then
6118     AC_PATH_PROG(PERL, perl)
6119 else
6120     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6121     _perl_path="$with_perl_home/bin/perl"
6122     if test -x "$_perl_path"; then
6123         PERL=$_perl_path
6124     else
6125         AC_MSG_ERROR([$_perl_path not found])
6126     fi
6129 dnl ===================================================================
6130 dnl Testing for Perl version 5 or greater.
6131 dnl $] is the Perl version variable, it is returned as an integer
6132 dnl ===================================================================
6133 if test "$PERL"; then
6134     AC_MSG_CHECKING([the Perl version])
6135     ${PERL} -e "exit($]);"
6136     _perl_version=$?
6137     if test "$_perl_version" -lt 5; then
6138         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6139     fi
6140     AC_MSG_RESULT([Perl $_perl_version])
6141 else
6142     AC_MSG_ERROR([Perl not found, install Perl 5])
6145 dnl ===================================================================
6146 dnl Testing for required Perl modules
6147 dnl ===================================================================
6149 AC_MSG_CHECKING([for required Perl modules])
6150 perl_use_string="use Cwd ; use Digest::MD5"
6151 if test "$_os" = "WINNT"; then
6152     if test -n "$PKGFORMAT"; then
6153         for i in $PKGFORMAT; do
6154             case "$i" in
6155             msi)
6156                 # for getting fonts versions to use in MSI
6157                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6158                 ;;
6159             esac
6160         done
6161     fi
6163 if test "$with_system_hsqldb" = "yes"; then
6164     perl_use_string="$perl_use_string ; use Archive::Zip"
6166 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6167     # OpenSSL needs that to build
6168     perl_use_string="$perl_use_string ; use FindBin"
6170 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6171     AC_MSG_RESULT([all modules found])
6172 else
6173     AC_MSG_RESULT([failed to find some modules])
6174     # Find out which modules are missing.
6175     for i in $perl_use_string; do
6176         if test "$i" != "use" -a "$i" != ";"; then
6177             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6178                 missing_perl_modules="$missing_perl_modules $i"
6179             fi
6180         fi
6181     done
6182     AC_MSG_ERROR([
6183     The missing Perl modules are: $missing_perl_modules
6184     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6187 dnl ===================================================================
6188 dnl Check for pkg-config
6189 dnl ===================================================================
6190 if test "$_os" != "WINNT"; then
6191     PKG_PROG_PKG_CONFIG
6194 if test "$_os" != "WINNT"; then
6196     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6197     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6198     # explicitly. Or put /path/to/compiler in PATH yourself.
6200     # Use wrappers for LTO
6201     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6202         AC_CHECK_TOOL(AR,gcc-ar)
6203         AC_CHECK_TOOL(NM,gcc-nm)
6204         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6205     else
6206         AC_CHECK_TOOL(AR,ar)
6207         AC_CHECK_TOOL(NM,nm)
6208         AC_CHECK_TOOL(RANLIB,ranlib)
6209     fi
6210     AC_CHECK_TOOL(OBJDUMP,objdump)
6211     AC_CHECK_TOOL(READELF,readelf)
6212     AC_CHECK_TOOL(STRIP,strip)
6214 AC_SUBST(AR)
6215 AC_SUBST(LD)
6216 AC_SUBST(NM)
6217 AC_SUBST(OBJDUMP)
6218 AC_SUBST(PKG_CONFIG)
6219 AC_SUBST(PKG_CONFIG_PATH)
6220 AC_SUBST(PKG_CONFIG_LIBDIR)
6221 AC_SUBST(RANLIB)
6222 AC_SUBST(READELF)
6223 AC_SUBST(STRIP)
6225 dnl ===================================================================
6226 dnl pkg-config checks on macOS
6227 dnl ===================================================================
6229 if test $_os = Darwin; then
6230     AC_MSG_CHECKING([for bogus pkg-config])
6231     if test -n "$PKG_CONFIG"; then
6232         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6233             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6234         else
6235             if test "$enable_bogus_pkg_config" = "yes"; then
6236                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6237             else
6238                 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.])
6239             fi
6240         fi
6241     else
6242         AC_MSG_RESULT([no, good])
6243     fi
6246 find_csc()
6248     # Return value: $csctest
6250     unset csctest
6252     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6253     if test -n "$regvalue"; then
6254         csctest=$regvalue
6255         return
6256     fi
6259 find_al()
6261     # Return value: $altest
6263     unset altest
6265     # We need this check to detect 4.6.1 or above.
6266     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6267         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6268         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6269             altest=$regvalue
6270             return
6271         fi
6272     done
6274     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6275         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6276         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6277             altest=$regvalue
6278             return
6279         fi
6280     done
6283 find_dotnetsdk46()
6285     unset frametest
6287     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6288         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6289         if test -n "$regvalue"; then
6290             frametest=$regvalue
6291             return
6292         fi
6293     done
6296 find_winsdk_version()
6298     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6299     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6301     unset winsdktest winsdkbinsubdir winsdklibsubdir
6303     case "$1" in
6304     8.0|8.0A)
6305         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6306         if test -n "$regvalue"; then
6307             winsdktest=$regvalue
6308             winsdklibsubdir=win8
6309             return
6310         fi
6311         ;;
6312     8.1|8.1A)
6313         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6314         if test -n "$regvalue"; then
6315             winsdktest=$regvalue
6316             winsdklibsubdir=winv6.3
6317             return
6318         fi
6319         ;;
6320     10.0)
6321         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6322         if test -n "$regvalue"; then
6323             winsdktest=$regvalue
6324             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6325             if test -n "$regvalue"; then
6326                 winsdkbinsubdir="$regvalue".0
6327                 winsdklibsubdir=$winsdkbinsubdir
6328                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6329                 local tmppath_unix=$(cygpath -u "$tmppath")
6330                 # test exist the SDK path
6331                 if test -d "$tmppath_unix"; then
6332                    # when path is convertible to a short path then path is okay
6333                    cygpath -d "$tmppath" >/dev/null 2>&1
6334                    if test $? -ne 0; then
6335                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6336                    fi
6337                 else
6338                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6339                 fi
6340             fi
6341             return
6342         fi
6343         ;;
6344     esac
6347 find_winsdk()
6349     # Return value: From find_winsdk_version
6351     unset winsdktest
6353     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6354         find_winsdk_version $ver
6355         if test -n "$winsdktest"; then
6356             return
6357         fi
6358     done
6361 find_msms()
6363     # Return value: $msmdir
6365     AC_MSG_CHECKING([for MSVC merge modules directory])
6366     local my_msm_files
6367     local my_msm_dir
6369     dnl Order my_msm_files in increasing order. Then check the directories returned
6370     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6371     dnl the result will be the highest MSM version found in the highest directory.
6373     case "$VCVER" in
6374         16.0 | 17.0)
6375         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6376         ;;
6377     esac
6378     for f in $my_msm_files; do
6379         echo "$as_me:$LINENO: searching for $f" >&5
6380     done
6382     msmdir=
6383     case "$VCVER" in
6384     16.0 | 17.0)
6385         for f in ${my_msm_files}; do
6386             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6387                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6388                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6389                 if test -e "$my_msm_dir${f}"; then
6390                     msmdir=$my_msm_dir
6391                 fi
6392             done
6393         done
6394         ;;
6395     esac
6397     if test -n "$msmdir"; then
6398         msmdir=`cygpath -m "$msmdir"`
6399         AC_MSG_RESULT([$msmdir])
6400     else
6401         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6402             AC_MSG_FAILURE([not found])
6403         else
6404             AC_MSG_WARN([not found (check config.log)])
6405             add_warning "MSM none of ${my_msm_files} found"
6406         fi
6407     fi
6410 find_msvc_x64_dlls()
6412     # Return value: $msvcdllpath, $msvcdlls
6414     AC_MSG_CHECKING([for MSVC x64 DLL path])
6416     dnl Order crtver in increasing order. Then check the directories returned by
6417     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6418     dnl the result will be the highest CRT version found in the highest directory.
6420     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6421     case "$VCVER" in
6422     16.0 | 17.0)
6423         for crtver in 141 142 143; do
6424             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6425                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6426                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6427                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6428                 fi
6429             done
6430         done
6431         ;;
6432     esac
6433     AC_MSG_RESULT([$msvcdllpath])
6434     AC_MSG_CHECKING([for MSVC x64 DLLs])
6435     msvcdlls="msvcp140.dll vcruntime140.dll"
6436     for dll in $msvcdlls; do
6437         if ! test -f "$msvcdllpath/$dll"; then
6438             AC_MSG_FAILURE([missing $dll])
6439         fi
6440     done
6441     AC_MSG_RESULT([found all ($msvcdlls)])
6444 dnl =========================================
6445 dnl Check for the Windows  SDK.
6446 dnl =========================================
6447 if test "$_os" = "WINNT"; then
6448     AC_MSG_CHECKING([for Windows SDK])
6449     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6450         find_winsdk
6451         WINDOWS_SDK_HOME=$winsdktest
6453         # normalize if found
6454         if test -n "$WINDOWS_SDK_HOME"; then
6455             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6456             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6457         fi
6459         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6460     fi
6462     if test -n "$WINDOWS_SDK_HOME"; then
6463         # Remove a possible trailing backslash
6464         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6466         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6467              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6468              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6469             have_windows_sdk_headers=yes
6470         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6471              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6472              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6473             have_windows_sdk_headers=yes
6474         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6475              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6476              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6477             have_windows_sdk_headers=yes
6478         else
6479             have_windows_sdk_headers=no
6480         fi
6482         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6483             have_windows_sdk_libs=yes
6484         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6485             have_windows_sdk_libs=yes
6486         else
6487             have_windows_sdk_libs=no
6488         fi
6490         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6491             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6492 the  Windows SDK are installed.])
6493         fi
6494     fi
6496     if test -z "$WINDOWS_SDK_HOME"; then
6497         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6498     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6499         WINDOWS_SDK_VERSION=80
6500         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6501     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6502         WINDOWS_SDK_VERSION=81
6503         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6504     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6505         WINDOWS_SDK_VERSION=10
6506         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6507     else
6508         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6509     fi
6510     PathFormat "$WINDOWS_SDK_HOME"
6511     WINDOWS_SDK_HOME="$formatted_path"
6512     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6513     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6514         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6515         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6516             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6517         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6518             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6519         fi
6520     fi
6522     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6523     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6524     dnl but not in v8.0), so allow this to be overridden with a
6525     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6526     dnl and configuration error if no WiLangId.vbs is found would arguably be
6527     dnl better, but I do not know under which conditions exactly it is needed by
6528     dnl msiglobal.pm:
6529     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6530         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6531         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6532         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6533             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6534             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6535         fi
6536         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6537             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6538             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6539         fi
6540         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6541             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6542             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6543         fi
6544     fi
6545     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6546         if test -n "$with_package_format" -a "$with_package_format" != no; then
6547             for i in "$with_package_format"; do
6548                 if test "$i" = "msi"; then
6549                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6550                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6551                     fi
6552                 fi
6553             done
6554         fi
6555     fi
6557 AC_SUBST(WINDOWS_SDK_HOME)
6558 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6559 AC_SUBST(WINDOWS_SDK_VERSION)
6560 AC_SUBST(WINDOWS_SDK_WILANGID)
6562 if test "$build_os" = "cygwin"; then
6563     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6564     dnl dir, it also determines that dir's path w/o an arch segment if any,
6565     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6566     AC_MSG_CHECKING([for midl.exe])
6568     find_winsdk
6569     if test -n "$winsdkbinsubdir" \
6570         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6571     then
6572         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6573         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6574     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6575         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6576         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6577     elif test -f "$winsdktest/Bin/midl.exe"; then
6578         MIDL_PATH=$winsdktest/Bin
6579         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6580     fi
6581     if test ! -f "$MIDL_PATH/midl.exe"; then
6582         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6583     else
6584         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6585     fi
6587     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6588     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6590     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6591          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6592          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6593          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6594     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6595          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6596          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6597          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6598     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6599          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6600          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6601          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6602     else
6603         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6604     fi
6606     dnl Check csc.exe
6607     AC_MSG_CHECKING([for csc.exe])
6608     find_csc
6609     if test -f "$csctest/csc.exe"; then
6610         CSC_PATH="$csctest"
6611     fi
6612     if test ! -f "$CSC_PATH/csc.exe"; then
6613         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6614     else
6615         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6616     fi
6618     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6620     dnl Check al.exe
6621     AC_MSG_CHECKING([for al.exe])
6622     find_winsdk
6623     if test -n "$winsdkbinsubdir" \
6624         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6625     then
6626         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6627     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6628         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6629     elif test -f "$winsdktest/Bin/al.exe"; then
6630         AL_PATH="$winsdktest/Bin"
6631     fi
6633     if test -z "$AL_PATH"; then
6634         find_al
6635         if test -f "$altest/bin/al.exe"; then
6636             AL_PATH="$altest/bin"
6637         elif test -f "$altest/al.exe"; then
6638             AL_PATH="$altest"
6639         fi
6640     fi
6641     if test ! -f "$AL_PATH/al.exe"; then
6642         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6643     else
6644         AC_MSG_RESULT([$AL_PATH/al.exe])
6645     fi
6647     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6649     dnl Check mscoree.lib / .NET Framework dir
6650     AC_MSG_CHECKING(.NET Framework)
6651     find_dotnetsdk46
6652     PathFormat "$frametest"
6653     frametest="$formatted_path"
6654     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6655         DOTNET_FRAMEWORK_HOME="$frametest"
6656     else
6657         find_winsdk
6658         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6659             DOTNET_FRAMEWORK_HOME="$winsdktest"
6660         fi
6661     fi
6662     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
6663         AC_MSG_ERROR([mscoree.lib not found])
6664     fi
6665     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6667     PathFormat "$MIDL_PATH"
6668     MIDL_PATH="$formatted_path"
6670     PathFormat "$AL_PATH"
6671     AL_PATH="$formatted_path"
6673     PathFormat "$DOTNET_FRAMEWORK_HOME"
6674     DOTNET_FRAMEWORK_HOME="$formatted_path"
6676     PathFormat "$CSC_PATH"
6677     CSC_PATH="$formatted_path"
6680 dnl ===================================================================
6681 dnl Testing for C++ compiler and version...
6682 dnl ===================================================================
6684 if test "$_os" != "WINNT"; then
6685     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6686     save_CXXFLAGS=$CXXFLAGS
6687     AC_PROG_CXX
6688     CXXFLAGS=$save_CXXFLAGS
6689     if test -z "$CXX_BASE"; then
6690         CXX_BASE=`first_arg_basename "$CXX"`
6691     fi
6694 dnl check for GNU C++ compiler version
6695 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6696     AC_MSG_CHECKING([the GNU C++ compiler version])
6698     _gpp_version=`$CXX -dumpversion`
6699     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6701     if test "$_gpp_majmin" -lt "700"; then
6702         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6703     else
6704         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6705     fi
6707     dnl see https://code.google.com/p/android/issues/detail?id=41770
6708         glibcxx_threads=no
6709         AC_LANG_PUSH([C++])
6710         AC_REQUIRE_CPP
6711         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6712         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6713             #include <bits/c++config.h>]],[[
6714             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6715             && !defined(_GLIBCXX__PTHREADS) \
6716             && !defined(_GLIBCXX_HAS_GTHREADS)
6717             choke me
6718             #endif
6719         ]])],[AC_MSG_RESULT([yes])
6720         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6721         AC_LANG_POP([C++])
6722         if test $glibcxx_threads = yes; then
6723             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6724         fi
6726 AC_SUBST(BOOST_CXXFLAGS)
6729 # prefx CXX with ccache if needed
6731 if test "$CCACHE" != ""; then
6732     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6733     AC_LANG_PUSH([C++])
6734     save_CXXFLAGS=$CXXFLAGS
6735     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6736     dnl an empty program will do, we're checking the compiler flags
6737     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6738                       [use_ccache=yes], [use_ccache=no])
6739     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6740         AC_MSG_RESULT([yes])
6741     else
6742         CXX="$CCACHE $CXX"
6743         CXX_BASE="ccache $CXX_BASE"
6744         AC_MSG_RESULT([no])
6745     fi
6746     CXXFLAGS=$save_CXXFLAGS
6747     AC_LANG_POP([C++])
6750 dnl ===================================================================
6751 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6752 dnl ===================================================================
6754 if test "$_os" != "WINNT"; then
6755     AC_PROG_CXXCPP
6757     dnl Check whether there's a C pre-processor.
6758     AC_PROG_CPP
6762 dnl ===================================================================
6763 dnl Find integral type sizes and alignments
6764 dnl ===================================================================
6766 if test "$_os" != "WINNT"; then
6768     AC_CHECK_SIZEOF(long)
6769     AC_CHECK_SIZEOF(short)
6770     AC_CHECK_SIZEOF(int)
6771     AC_CHECK_SIZEOF(long long)
6772     AC_CHECK_SIZEOF(double)
6773     AC_CHECK_SIZEOF(void*)
6774     AC_CHECK_SIZEOF(size_t)
6776     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6777     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6778     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6779     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6780     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6781     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6783     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6784     m4_pattern_allow([AC_CHECK_ALIGNOF])
6785     m4_ifdef([AC_CHECK_ALIGNOF],
6786         [
6787             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6788             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6789             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6790             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6791         ],
6792         [
6793             case "$_os-$host_cpu" in
6794             Linux-i686)
6795                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6796                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6797                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6798                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6799                 ;;
6800             Linux-x86_64)
6801                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6802                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6803                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6804                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6805                 ;;
6806             *)
6807                 if test -z "$ac_cv_alignof_short" -o \
6808                         -z "$ac_cv_alignof_int" -o \
6809                         -z "$ac_cv_alignof_long" -o \
6810                         -z "$ac_cv_alignof_double"; then
6811                    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.])
6812                 fi
6813                 ;;
6814             esac
6815         ])
6817     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6818     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6819     if test $ac_cv_sizeof_long -eq 8; then
6820         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6821     elif test $ac_cv_sizeof_double -eq 8; then
6822         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6823     else
6824         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6825     fi
6827     dnl Check for large file support
6828     AC_SYS_LARGEFILE
6829     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6830         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6831     fi
6832     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6833         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6834     fi
6835 else
6836     # Hardcode for MSVC
6837     SAL_TYPES_SIZEOFSHORT=2
6838     SAL_TYPES_SIZEOFINT=4
6839     SAL_TYPES_SIZEOFLONG=4
6840     SAL_TYPES_SIZEOFLONGLONG=8
6841     if test $WIN_HOST_BITS -eq 32; then
6842         SAL_TYPES_SIZEOFPOINTER=4
6843         SIZEOF_SIZE_T=4
6844     else
6845         SAL_TYPES_SIZEOFPOINTER=8
6846         SIZEOF_SIZE_T=8
6847     fi
6848     SAL_TYPES_ALIGNMENT2=2
6849     SAL_TYPES_ALIGNMENT4=4
6850     SAL_TYPES_ALIGNMENT8=8
6851     LFS_CFLAGS=''
6853 AC_SUBST(LFS_CFLAGS)
6854 AC_SUBST(SIZEOF_SIZE_T)
6856 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6857 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6858 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6859 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6860 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6861 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6862 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6863 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6865 dnl ===================================================================
6866 dnl Check whether to enable runtime optimizations
6867 dnl ===================================================================
6868 ENABLE_RUNTIME_OPTIMIZATIONS=
6869 AC_MSG_CHECKING([whether to enable runtime optimizations])
6870 if test -z "$enable_runtime_optimizations"; then
6871     for i in $CC; do
6872         case $i in
6873         -fsanitize=*)
6874             enable_runtime_optimizations=no
6875             break
6876             ;;
6877         esac
6878     done
6880 if test "$enable_runtime_optimizations" != no; then
6881     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6882     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6883     AC_MSG_RESULT([yes])
6884 else
6885     AC_MSG_RESULT([no])
6887 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6889 dnl ===================================================================
6890 dnl Check if valgrind headers are available
6891 dnl ===================================================================
6892 ENABLE_VALGRIND=
6893 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6894     prev_cppflags=$CPPFLAGS
6895     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6896     # or where does it come from?
6897     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6898     AC_CHECK_HEADER([valgrind/valgrind.h],
6899         [ENABLE_VALGRIND=TRUE])
6900     CPPFLAGS=$prev_cppflags
6902 AC_SUBST([ENABLE_VALGRIND])
6903 if test -z "$ENABLE_VALGRIND"; then
6904     if test "$with_valgrind" = yes; then
6905         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6906     fi
6907     VALGRIND_CFLAGS=
6909 AC_SUBST([VALGRIND_CFLAGS])
6912 dnl ===================================================================
6913 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6914 dnl ===================================================================
6916 # We need at least the sys/sdt.h include header.
6917 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6918 if test "$SDT_H_FOUND" = "TRUE"; then
6919     # Found sys/sdt.h header, now make sure the c++ compiler works.
6920     # Old g++ versions had problems with probes in constructors/destructors.
6921     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6922     AC_LANG_PUSH([C++])
6923     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6924     #include <sys/sdt.h>
6925     class ProbeClass
6926     {
6927     private:
6928       int& ref;
6929       const char *name;
6931     public:
6932       ProbeClass(int& v, const char *n) : ref(v), name(n)
6933       {
6934         DTRACE_PROBE2(_test_, cons, name, ref);
6935       }
6937       void method(int min)
6938       {
6939         DTRACE_PROBE3(_test_, meth, name, ref, min);
6940         ref -= min;
6941       }
6943       ~ProbeClass()
6944       {
6945         DTRACE_PROBE2(_test_, dest, name, ref);
6946       }
6947     };
6948     ]],[[
6949     int i = 64;
6950     DTRACE_PROBE1(_test_, call, i);
6951     ProbeClass inst = ProbeClass(i, "call");
6952     inst.method(24);
6953     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6954           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6955     AC_LANG_POP([C++])
6957 AC_CONFIG_HEADERS([config_host/config_probes.h])
6959 dnl ===================================================================
6960 dnl GCC features
6961 dnl ===================================================================
6962 HAVE_GCC_STACK_CLASH_PROTECTION=
6963 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6964     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6965     save_CFLAGS=$CFLAGS
6966     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6967     AC_LINK_IFELSE(
6968         [AC_LANG_PROGRAM(, [[return 0;]])],
6969         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6970         [AC_MSG_RESULT([no])])
6971     CFLAGS=$save_CFLAGS
6973     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6974     save_CFLAGS=$CFLAGS
6975     CFLAGS="$CFLAGS -Werror -mno-avx"
6976     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6977     CFLAGS=$save_CFLAGS
6978     if test "$HAVE_GCC_AVX" = "TRUE"; then
6979         AC_MSG_RESULT([yes])
6980     else
6981         AC_MSG_RESULT([no])
6982     fi
6984     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6985     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6986     int v = 0;
6987     if (__sync_add_and_fetch(&v, 1) != 1 ||
6988         __sync_sub_and_fetch(&v, 1) != 0)
6989         return 1;
6990     __sync_synchronize();
6991     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6992         v != 1)
6993         return 1;
6994     return 0;
6995 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6996     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6997         AC_MSG_RESULT([yes])
6998         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6999     else
7000         AC_MSG_RESULT([no])
7001     fi
7003     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7004     AC_LANG_PUSH([C++])
7005     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7006             #include <cstddef>
7007             #include <cxxabi.h>
7008             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7009         ])], [
7010             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7011             AC_MSG_RESULT([yes])
7012         ], [AC_MSG_RESULT([no])])
7013     AC_LANG_POP([C++])
7015     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7016     AC_LANG_PUSH([C++])
7017     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7018             #include <cstddef>
7019             #include <cxxabi.h>
7020             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7021         ])], [
7022             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7023             AC_MSG_RESULT([yes])
7024         ], [AC_MSG_RESULT([no])])
7025     AC_LANG_POP([C++])
7027     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7028     AC_LANG_PUSH([C++])
7029     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7030             #include <cxxabi.h>
7031             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7032         ])], [
7033             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7034             AC_MSG_RESULT([yes])
7035         ], [AC_MSG_RESULT([no])])
7036     AC_LANG_POP([C++])
7038     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7039     AC_LANG_PUSH([C++])
7040     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7041             #include <cstddef>
7042             #include <cxxabi.h>
7043             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7044         ])], [
7045             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7046             AC_MSG_RESULT([yes])
7047         ], [AC_MSG_RESULT([no])])
7048     AC_LANG_POP([C++])
7050     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7051     AC_LANG_PUSH([C++])
7052     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7053             #include <cstddef>
7054             #include <cxxabi.h>
7055             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7056         ])], [
7057             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7058             AC_MSG_RESULT([yes])
7059         ], [AC_MSG_RESULT([no])])
7060     AC_LANG_POP([C++])
7062     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7063     AC_LANG_PUSH([C++])
7064     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7065             #include <cxxabi.h>
7066             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7067         ])], [
7068             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7069             AC_MSG_RESULT([yes])
7070         ], [AC_MSG_RESULT([no])])
7071     AC_LANG_POP([C++])
7073     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7074     AC_LANG_PUSH([C++])
7075     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7076             #include <cxxabi.h>
7077             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7078         ])], [
7079             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7080             AC_MSG_RESULT([yes])
7081         ], [AC_MSG_RESULT([no])])
7082     AC_LANG_POP([C++])
7084     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7085     AC_LANG_PUSH([C++])
7086     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7087             #include <cxxabi.h>
7088             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7089         ])], [
7090             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7091             AC_MSG_RESULT([yes])
7092         ], [AC_MSG_RESULT([no])])
7093     AC_LANG_POP([C++])
7095     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7096     AC_LANG_PUSH([C++])
7097     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7098             #include <cstddef>
7099             #include <cxxabi.h>
7100             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7101         ])], [
7102             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7103             AC_MSG_RESULT([yes])
7104         ], [AC_MSG_RESULT([no])])
7105     AC_LANG_POP([C++])
7107     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7108     AC_LANG_PUSH([C++])
7109     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7110             #include <cstddef>
7111             #include <cxxabi.h>
7112             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7113         ])], [
7114             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7115             AC_MSG_RESULT([yes])
7116         ], [AC_MSG_RESULT([no])])
7117     AC_LANG_POP([C++])
7120 AC_SUBST(HAVE_GCC_AVX)
7121 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7122 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7124 dnl ===================================================================
7125 dnl Identify the C++ library
7126 dnl ===================================================================
7128 AC_MSG_CHECKING([what the C++ library is])
7129 HAVE_LIBSTDCPP=
7130 AC_LANG_PUSH([C++])
7131 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7132 #include <utility>
7133 #ifndef __GLIBCXX__
7134 foo bar
7135 #endif
7136 ]])],
7137     [CPP_LIBRARY=GLIBCXX
7138      cpp_library_name="GNU libstdc++"
7139      HAVE_LIBSTDCPP=TRUE
7140     ],
7141     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7142 #include <utility>
7143 #ifndef _LIBCPP_VERSION
7144 foo bar
7145 #endif
7146 ]])],
7147     [CPP_LIBRARY=LIBCPP
7148      cpp_library_name="LLVM libc++"
7149      AC_DEFINE([HAVE_LIBCXX])
7150     ],
7151     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7152 #include <utility>
7153 #ifndef _MSC_VER
7154 foo bar
7155 #endif
7156 ]])],
7157     [CPP_LIBRARY=MSVCRT
7158      cpp_library_name="Microsoft"
7159     ],
7160     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7161 AC_MSG_RESULT([$cpp_library_name])
7162 AC_LANG_POP([C++])
7163 AC_SUBST([HAVE_LIBSTDCPP])
7165 dnl ===================================================================
7166 dnl Check for gperf
7167 dnl ===================================================================
7168 AC_PATH_PROG(GPERF, gperf)
7169 if test -z "$GPERF"; then
7170     AC_MSG_ERROR([gperf not found but needed. Install it.])
7172 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7173     GPERF=`cygpath -m $GPERF`
7175 AC_MSG_CHECKING([whether gperf is new enough])
7176 my_gperf_ver1=$($GPERF --version | head -n 1)
7177 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7178 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7179 if test "$my_gperf_ver3" -ge 301; then
7180     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7181 else
7182     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7184 AC_SUBST(GPERF)
7186 dnl ===================================================================
7187 dnl Check for system libcmis
7188 dnl ===================================================================
7189 # libcmis requires curl and we can't build curl for iOS
7190 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7191     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7192     ENABLE_LIBCMIS=TRUE
7193 else
7194     ENABLE_LIBCMIS=
7196 AC_SUBST(ENABLE_LIBCMIS)
7198 dnl ===================================================================
7199 dnl C++11
7200 dnl ===================================================================
7202 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7203 CXXFLAGS_CXX11=
7204 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7205     if test "$with_latest_c__" = yes; then
7206         CXXFLAGS_CXX11=-std:c++latest
7207     else
7208         CXXFLAGS_CXX11=-std:c++17
7209     fi
7210     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7211 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7212     my_flags='-std=c++17 -std=c++1z'
7213     if test "$with_latest_c__" = yes; then
7214         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7215     fi
7216     for flag in $my_flags; do
7217         if test "$COM" = MSC; then
7218             flag="-Xclang $flag"
7219         fi
7220         save_CXXFLAGS=$CXXFLAGS
7221         CXXFLAGS="$CXXFLAGS $flag -Werror"
7222         if test "$SYSTEM_LIBCMIS" = TRUE; then
7223             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7224         fi
7225         AC_LANG_PUSH([C++])
7226         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7227             #include <algorithm>
7228             #include <functional>
7229             #include <vector>
7231             #if defined SYSTEM_LIBCMIS
7232             // See ucb/source/ucp/cmis/auth_provider.hxx:
7233             #if !defined __clang__
7234             #pragma GCC diagnostic push
7235             #pragma GCC diagnostic ignored "-Wdeprecated"
7236             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7237             #endif
7238             #include <libcmis/libcmis.hxx>
7239             #if !defined __clang__
7240             #pragma GCC diagnostic pop
7241             #endif
7242             #endif
7244             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7245                 std::sort(v.begin(), v.end(), fn);
7246             }
7247             ]])],[CXXFLAGS_CXX11=$flag])
7248         AC_LANG_POP([C++])
7249         CXXFLAGS=$save_CXXFLAGS
7250         if test -n "$CXXFLAGS_CXX11"; then
7251             break
7252         fi
7253     done
7255 if test -n "$CXXFLAGS_CXX11"; then
7256     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7257 else
7258     AC_MSG_ERROR(no)
7260 AC_SUBST(CXXFLAGS_CXX11)
7262 if test "$GCC" = "yes"; then
7263     save_CXXFLAGS=$CXXFLAGS
7264     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7265     CHECK_L_ATOMIC
7266     CXXFLAGS=$save_CXXFLAGS
7267     AC_SUBST(ATOMIC_LIB)
7270 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7271 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7272 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7273 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7274 dnl again towards 4.7.2:
7275 if test $CPP_LIBRARY = GLIBCXX; then
7276     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7277     AC_LANG_PUSH([C++])
7278     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7279 #include <list>
7280 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7281     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7282     //   GCC 4.7.0: 20120322
7283     //   GCC 4.7.1: 20120614
7284     // and using a range check is not possible as the mapping between
7285     // __GLIBCXX__ values and GCC versions is not monotonic
7286 /* ok */
7287 #else
7288 abi broken
7289 #endif
7290         ]])], [AC_MSG_RESULT(no, ok)],
7291         [AC_MSG_ERROR(yes)])
7292     AC_LANG_POP([C++])
7295 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7296 save_CXXFLAGS=$CXXFLAGS
7297 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7298 AC_LANG_PUSH([C++])
7300 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7301 #include <stddef.h>
7303 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7305 namespace
7307         struct b
7308         {
7309                 int i;
7310                 int j;
7311         };
7313 ]], [[
7314 struct a
7316         int i;
7317         int j;
7319 a thinga[]={{0,0}, {1,1}};
7320 b thingb[]={{0,0}, {1,1}};
7321 size_t i = sizeof(sal_n_array_size(thinga));
7322 size_t j = sizeof(sal_n_array_size(thingb));
7323 return !(i != 0 && j != 0);
7325     ], [ AC_MSG_RESULT(yes) ],
7326     [ AC_MSG_ERROR(no)])
7327 AC_LANG_POP([C++])
7328 CXXFLAGS=$save_CXXFLAGS
7330 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7331 if test "$GCC" = yes; then
7332     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7333     AC_LANG_PUSH([C++])
7334     save_CXXFLAGS=$CXXFLAGS
7335     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7336     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7337     CXXFLAGS=$save_CXXFLAGS
7338     AC_LANG_POP([C++])
7339     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7340         AC_MSG_RESULT([yes])
7341     else
7342         AC_MSG_RESULT([no])
7343     fi
7345 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7347 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7348 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7349 dnl from consteval constructor initializing const variable",
7350 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
7351 dnl expression' with consteval constructor", or <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
7352 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
7353 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'":
7354 AC_LANG_PUSH([C++])
7355 save_CXXFLAGS=$CXXFLAGS
7356 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7357 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7358         struct S {
7359             consteval S() { i = 1; }
7360             int i = 0;
7361         };
7362         S const s;
7364         struct S1 { consteval S1(int) {} };
7365         struct S2 {
7366             S1 x;
7367             S2(): x(0) {}
7368         };
7370         struct S3 {
7371             consteval S3() {}
7372             union {
7373                 int a;
7374                 unsigned b = 0;
7375             };
7376         };
7377         void f() { S3(); }
7378     ], [
7379         return (s.i == 1) ? 0 : 1;
7380     ])], [
7381         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7382         AC_MSG_RESULT([yes])
7383     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7384 CXXFLAGS=$save_CXXFLAGS
7385 AC_LANG_POP([C++])
7387 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7388 AC_LANG_PUSH([C++])
7389 save_CXXFLAGS=$CXXFLAGS
7390 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7391 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7392         #include <algorithm>
7393         #include <initializer_list>
7394         #include <vector>
7395         template<typename T> class S {
7396         private:
7397             std::vector<T> v_;
7398         public:
7399             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7400         };
7401         constinit S<int> s{3, 2, 1};
7402     ])], [
7403         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7404         AC_MSG_RESULT([yes])
7405     ], [AC_MSG_RESULT([no])])
7406 CXXFLAGS=$save_CXXFLAGS
7407 AC_LANG_POP([C++])
7409 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7410 AC_LANG_PUSH([C++])
7411 save_CXXFLAGS=$CXXFLAGS
7412 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7414         #include <span>
7415         #include <type_traits>
7416         // Don't check size_type directly, as it was called index_type before P1872R0:
7417         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7418     ])], [
7419         AC_DEFINE([HAVE_CPP_SPAN],[1])
7420         AC_MSG_RESULT([yes])
7421     ], [AC_MSG_RESULT([no])])
7422 CXXFLAGS=$save_CXXFLAGS
7423 AC_LANG_POP([C++])
7425 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7426 AC_LANG_PUSH([C++])
7427 save_CXXFLAGS=$CXXFLAGS
7428 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7429 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7430         struct S1 { S1(S1 &&); };
7431         struct S2: S1 {};
7432         S1 f(S2 s) { return s; }
7433     ])], [
7434         AC_DEFINE([HAVE_P1155R3],[1])
7435         AC_MSG_RESULT([yes])
7436     ], [AC_MSG_RESULT([no])])
7437 CXXFLAGS=$save_CXXFLAGS
7438 AC_LANG_POP([C++])
7440 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7441 dnl which is included in -Wextra anyway):
7442 HAVE_WDEPRECATED_COPY_DTOR=
7443 if test "$GCC" = yes; then
7444     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7445     AC_LANG_PUSH([C++])
7446     save_CXXFLAGS=$CXXFLAGS
7447     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7448     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7449             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7450             AC_MSG_RESULT([yes])
7451         ], [AC_MSG_RESULT([no])])
7452     CXXFLAGS=$save_CXXFLAGS
7453     AC_LANG_POP([C++])
7455 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7457 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7458 dnl uninitialized warning for code like
7460 dnl   OString f();
7461 dnl   boost::optional<OString> * g(bool b) {
7462 dnl       boost::optional<OString> o;
7463 dnl       if (b) o = f();
7464 dnl       return new boost::optional<OString>(o);
7465 dnl   }
7467 dnl (as is e.g. present, in a slightly more elaborate form, in
7468 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7469 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7470 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7471 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7472     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7473     AC_LANG_PUSH([C++])
7474     save_CXXFLAGS=$CXXFLAGS
7475     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7476     if test "$ENABLE_OPTIMIZED" = TRUE; then
7477         CXXFLAGS="$CXXFLAGS -O2"
7478     else
7479         CXXFLAGS="$CXXFLAGS -O0"
7480     fi
7481     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7482             #include <new>
7483             void f1(int);
7484             struct S1 {
7485                 ~S1() { f1(n); }
7486                 int n = 0;
7487             };
7488             struct S2 {
7489                 S2() {}
7490                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7491                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7492                 void set(S1 s) {
7493                     new (stg) S1(s);
7494                     init = true;
7495                 }
7496                 bool init = false;
7497                 char stg[sizeof (S1)];
7498             } ;
7499             S1 f2();
7500             S2 * f3(bool b) {
7501                 S2 o;
7502                 if (b) o.set(f2());
7503                 return new S2(o);
7504             }
7505         ]])], [AC_MSG_RESULT([no])], [
7506             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7507             AC_MSG_RESULT([yes])
7508         ])
7509     CXXFLAGS=$save_CXXFLAGS
7510     AC_LANG_POP([C++])
7512 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7514 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7515 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7516 dnl hits us e.g. with GCC 10 and --enable-optimized at
7518 dnl   In file included from include/rtl/string.hxx:49,
7519 dnl                    from include/rtl/ustring.hxx:43,
7520 dnl                    from include/osl/file.hxx:35,
7521 dnl                    from include/codemaker/global.hxx:28,
7522 dnl                    from include/codemaker/options.hxx:23,
7523 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7524 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7525 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,
7526 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,
7527 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,
7528 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7529 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7530 dnl      78 |         memcpy( buffer, data, length );
7531 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7532 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7533 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7534     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7535     AC_LANG_PUSH([C++])
7536     save_CXXFLAGS=$CXXFLAGS
7537     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7538     if test "$ENABLE_OPTIMIZED" = TRUE; then
7539         CXXFLAGS="$CXXFLAGS -O2"
7540     else
7541         CXXFLAGS="$CXXFLAGS -O0"
7542     fi
7543     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7544     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7545             void fill(char const * begin, char const * end, char c);
7546             struct q {
7547                 char ids[4];
7548                 char username[6];
7549             };
7550             void test(q & c) {
7551                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7552                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7553             }
7554         ]])], [AC_MSG_RESULT([no])], [
7555             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7556             AC_MSG_RESULT([yes])
7557         ])
7558     CXXFLAGS=$save_CXXFLAGS
7559     AC_LANG_POP([C++])
7561 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7563 HAVE_DLLEXPORTINLINES=
7564 if test "$_os" = "WINNT"; then
7565     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7566     AC_LANG_PUSH([C++])
7567     save_CXXFLAGS=$CXXFLAGS
7568     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7569     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7570             HAVE_DLLEXPORTINLINES=TRUE
7571             AC_MSG_RESULT([yes])
7572         ], [AC_MSG_RESULT([no])])
7573     CXXFLAGS=$save_CXXFLAGS
7574     AC_LANG_POP([C++])
7576 AC_SUBST([HAVE_DLLEXPORTINLINES])
7578 dnl ===================================================================
7579 dnl CPU Intrinsics support - SSE, AVX
7580 dnl ===================================================================
7582 CXXFLAGS_INTRINSICS_SSE2=
7583 CXXFLAGS_INTRINSICS_SSSE3=
7584 CXXFLAGS_INTRINSICS_SSE41=
7585 CXXFLAGS_INTRINSICS_SSE42=
7586 CXXFLAGS_INTRINSICS_AVX=
7587 CXXFLAGS_INTRINSICS_AVX2=
7588 CXXFLAGS_INTRINSICS_AVX512=
7589 CXXFLAGS_INTRINSICS_AVX512F=
7590 CXXFLAGS_INTRINSICS_F16C=
7591 CXXFLAGS_INTRINSICS_FMA=
7593 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7594     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7595     flag_sse2=-msse2
7596     flag_ssse3=-mssse3
7597     flag_sse41=-msse4.1
7598     flag_sse42=-msse4.2
7599     flag_avx=-mavx
7600     flag_avx2=-mavx2
7601     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7602     flag_avx512f=-mavx512f
7603     flag_f16c=-mf16c
7604     flag_fma=-mfma
7605 else
7606     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7607     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7608     # SSE2 seems to be SSE2+.
7609     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7610     # is not empty (and can be tested in gbuild).
7611     flag_sse2=-arch:SSE2
7612     flag_ssse3=-arch:SSE2
7613     flag_sse41=-arch:SSE2
7614     flag_sse42=-arch:SSE2
7615     flag_avx=-arch:AVX
7616     flag_avx2=-arch:AVX2
7617     flag_avx512=-arch:AVX512
7618     flag_avx512f=-arch:AVX512
7619     # These are part of -arch:AVX2
7620     flag_f16c=-arch:AVX2
7621     flag_fma=-arch:AVX2
7624 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7625 AC_LANG_PUSH([C++])
7626 save_CXXFLAGS=$CXXFLAGS
7627 CXXFLAGS="$CXXFLAGS $flag_sse2"
7628 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7629     #include <emmintrin.h>
7630     int main () {
7631         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7632         c = _mm_xor_si128 (a, b);
7633         return 0;
7634     }
7635     ])],
7636     [can_compile_sse2=yes],
7637     [can_compile_sse2=no])
7638 AC_LANG_POP([C++])
7639 CXXFLAGS=$save_CXXFLAGS
7640 AC_MSG_RESULT([${can_compile_sse2}])
7641 if test "${can_compile_sse2}" = "yes" ; then
7642     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7645 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7646 AC_LANG_PUSH([C++])
7647 save_CXXFLAGS=$CXXFLAGS
7648 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7649 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7650     #include <tmmintrin.h>
7651     int main () {
7652         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7653         c = _mm_maddubs_epi16 (a, b);
7654         return 0;
7655     }
7656     ])],
7657     [can_compile_ssse3=yes],
7658     [can_compile_ssse3=no])
7659 AC_LANG_POP([C++])
7660 CXXFLAGS=$save_CXXFLAGS
7661 AC_MSG_RESULT([${can_compile_ssse3}])
7662 if test "${can_compile_ssse3}" = "yes" ; then
7663     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7666 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7667 AC_LANG_PUSH([C++])
7668 save_CXXFLAGS=$CXXFLAGS
7669 CXXFLAGS="$CXXFLAGS $flag_sse41"
7670 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7671     #include <smmintrin.h>
7672     int main () {
7673         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7674         c = _mm_cmpeq_epi64 (a, b);
7675         return 0;
7676     }
7677     ])],
7678     [can_compile_sse41=yes],
7679     [can_compile_sse41=no])
7680 AC_LANG_POP([C++])
7681 CXXFLAGS=$save_CXXFLAGS
7682 AC_MSG_RESULT([${can_compile_sse41}])
7683 if test "${can_compile_sse41}" = "yes" ; then
7684     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7687 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7688 AC_LANG_PUSH([C++])
7689 save_CXXFLAGS=$CXXFLAGS
7690 CXXFLAGS="$CXXFLAGS $flag_sse42"
7691 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7692     #include <nmmintrin.h>
7693     int main () {
7694         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7695         c = _mm_cmpgt_epi64 (a, b);
7696         return 0;
7697     }
7698     ])],
7699     [can_compile_sse42=yes],
7700     [can_compile_sse42=no])
7701 AC_LANG_POP([C++])
7702 CXXFLAGS=$save_CXXFLAGS
7703 AC_MSG_RESULT([${can_compile_sse42}])
7704 if test "${can_compile_sse42}" = "yes" ; then
7705     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7708 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7709 AC_LANG_PUSH([C++])
7710 save_CXXFLAGS=$CXXFLAGS
7711 CXXFLAGS="$CXXFLAGS $flag_avx"
7712 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7713     #include <immintrin.h>
7714     int main () {
7715         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7716         c = _mm256_xor_ps(a, b);
7717         return 0;
7718     }
7719     ])],
7720     [can_compile_avx=yes],
7721     [can_compile_avx=no])
7722 AC_LANG_POP([C++])
7723 CXXFLAGS=$save_CXXFLAGS
7724 AC_MSG_RESULT([${can_compile_avx}])
7725 if test "${can_compile_avx}" = "yes" ; then
7726     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7729 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7730 AC_LANG_PUSH([C++])
7731 save_CXXFLAGS=$CXXFLAGS
7732 CXXFLAGS="$CXXFLAGS $flag_avx2"
7733 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7734     #include <immintrin.h>
7735     int main () {
7736         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7737         c = _mm256_maddubs_epi16(a, b);
7738         return 0;
7739     }
7740     ])],
7741     [can_compile_avx2=yes],
7742     [can_compile_avx2=no])
7743 AC_LANG_POP([C++])
7744 CXXFLAGS=$save_CXXFLAGS
7745 AC_MSG_RESULT([${can_compile_avx2}])
7746 if test "${can_compile_avx2}" = "yes" ; then
7747     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7750 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7751 AC_LANG_PUSH([C++])
7752 save_CXXFLAGS=$CXXFLAGS
7753 CXXFLAGS="$CXXFLAGS $flag_avx512"
7754 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7755     #include <immintrin.h>
7756     int main () {
7757         __m512i a = _mm512_loadu_si512(0);
7758         __m512d v1 = _mm512_load_pd(0);
7759         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7760         __m512d v2 = _mm512_abs_pd(v1);
7761         return 0;
7762     }
7763     ])],
7764     [can_compile_avx512=yes],
7765     [can_compile_avx512=no])
7766 AC_LANG_POP([C++])
7767 CXXFLAGS=$save_CXXFLAGS
7768 AC_MSG_RESULT([${can_compile_avx512}])
7769 if test "${can_compile_avx512}" = "yes" ; then
7770     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7771     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7774 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7775 AC_LANG_PUSH([C++])
7776 save_CXXFLAGS=$CXXFLAGS
7777 CXXFLAGS="$CXXFLAGS $flag_f16c"
7778 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7779     #include <immintrin.h>
7780     int main () {
7781         __m128i a = _mm_set1_epi32 (0);
7782         __m128 c;
7783         c = _mm_cvtph_ps(a);
7784         return 0;
7785     }
7786     ])],
7787     [can_compile_f16c=yes],
7788     [can_compile_f16c=no])
7789 AC_LANG_POP([C++])
7790 CXXFLAGS=$save_CXXFLAGS
7791 AC_MSG_RESULT([${can_compile_f16c}])
7792 if test "${can_compile_f16c}" = "yes" ; then
7793     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7796 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7797 AC_LANG_PUSH([C++])
7798 save_CXXFLAGS=$CXXFLAGS
7799 CXXFLAGS="$CXXFLAGS $flag_fma"
7800 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7801     #include <immintrin.h>
7802     int main () {
7803         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7804         d = _mm256_fmadd_ps(a, b, c);
7805         return 0;
7806     }
7807     ])],
7808     [can_compile_fma=yes],
7809     [can_compile_fma=no])
7810 AC_LANG_POP([C++])
7811 CXXFLAGS=$save_CXXFLAGS
7812 AC_MSG_RESULT([${can_compile_fma}])
7813 if test "${can_compile_fma}" = "yes" ; then
7814     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7817 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7818 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7819 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7820 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7821 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7822 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7823 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7824 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7825 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7826 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7828 dnl ===================================================================
7829 dnl system stl sanity tests
7830 dnl ===================================================================
7831 if test "$_os" != "WINNT"; then
7833     AC_LANG_PUSH([C++])
7835     save_CPPFLAGS="$CPPFLAGS"
7836     if test -n "$MACOSX_SDK_PATH"; then
7837         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7838     fi
7840     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7841     # only.
7842     if test "$CPP_LIBRARY" = GLIBCXX; then
7843         dnl gcc#19664, gcc#22482, rhbz#162935
7844         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7845         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7846         AC_MSG_RESULT([$stlvisok])
7847         if test "$stlvisok" = "no"; then
7848             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7849         fi
7850     fi
7852     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7853     # when we don't make any dynamic libraries?
7854     if test "$DISABLE_DYNLOADING" = ""; then
7855         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7856         cat > conftestlib1.cc <<_ACEOF
7857 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7858 struct S2: S1<int> { virtual ~S2(); };
7859 S2::~S2() {}
7860 _ACEOF
7861         cat > conftestlib2.cc <<_ACEOF
7862 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7863 struct S2: S1<int> { virtual ~S2(); };
7864 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7865 _ACEOF
7866         gccvisinlineshiddenok=yes
7867         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7868             gccvisinlineshiddenok=no
7869         else
7870             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7871             dnl known to not work with -z defs (unsetting which makes the test
7872             dnl moot, though):
7873             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7874             if test "$COM_IS_CLANG" = TRUE; then
7875                 for i in $CXX $CXXFLAGS; do
7876                     case $i in
7877                     -fsanitize=*)
7878                         my_linkflagsnoundefs=
7879                         break
7880                         ;;
7881                     esac
7882                 done
7883             fi
7884             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7885                 gccvisinlineshiddenok=no
7886             fi
7887         fi
7889         rm -fr libconftest*
7890         AC_MSG_RESULT([$gccvisinlineshiddenok])
7891         if test "$gccvisinlineshiddenok" = "no"; then
7892             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7893         fi
7894     fi
7896    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7897     cat >visibility.cxx <<_ACEOF
7898 #pragma GCC visibility push(hidden)
7899 struct __attribute__ ((visibility ("default"))) TestStruct {
7900   static void Init();
7902 __attribute__ ((visibility ("default"))) void TestFunc() {
7903   TestStruct::Init();
7905 _ACEOF
7906     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7907         gccvisbroken=yes
7908     else
7909         case "$host_cpu" in
7910         i?86|x86_64)
7911             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7912                 gccvisbroken=no
7913             else
7914                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7915                     gccvisbroken=no
7916                 else
7917                     gccvisbroken=yes
7918                 fi
7919             fi
7920             ;;
7921         *)
7922             gccvisbroken=no
7923             ;;
7924         esac
7925     fi
7926     rm -f visibility.s visibility.cxx
7928     AC_MSG_RESULT([$gccvisbroken])
7929     if test "$gccvisbroken" = "yes"; then
7930         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7931     fi
7933     CPPFLAGS="$save_CPPFLAGS"
7935     AC_LANG_POP([C++])
7938 dnl ===================================================================
7939 dnl  Clang++ tests
7940 dnl ===================================================================
7942 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7943 if test "$GCC" = "yes"; then
7944     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7945     AC_LANG_PUSH([C++])
7946     save_CXXFLAGS=$CXXFLAGS
7947     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7948     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7949     CXXFLAGS=$save_CXXFLAGS
7950     AC_LANG_POP([C++])
7951     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7952         AC_MSG_RESULT([yes])
7953     else
7954         AC_MSG_RESULT([no])
7955     fi
7957 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7959 dnl ===================================================================
7960 dnl Compiler plugins
7961 dnl ===================================================================
7963 COMPILER_PLUGINS=
7964 # currently only Clang
7966 if test "$COM_IS_CLANG" != "TRUE"; then
7967     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7968         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7969         enable_compiler_plugins=no
7970     fi
7973 COMPILER_PLUGINS_COM_IS_CLANG=
7974 if test "$COM_IS_CLANG" = "TRUE"; then
7975     if test -n "$enable_compiler_plugins"; then
7976         compiler_plugins="$enable_compiler_plugins"
7977     elif test -n "$ENABLE_DBGUTIL"; then
7978         compiler_plugins=test
7979     else
7980         compiler_plugins=no
7981     fi
7982     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7983         if test "$CLANGVER" -lt 50002; then
7984             if test "$compiler_plugins" = yes; then
7985                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7986             else
7987                 compiler_plugins=no
7988             fi
7989         fi
7990     fi
7991     if test "$compiler_plugins" != "no"; then
7992         dnl The prefix where Clang resides, override to where Clang resides if
7993         dnl using a source build:
7994         if test -z "$CLANGDIR"; then
7995             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
7996         fi
7997         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7998         if test -z "$COMPILER_PLUGINS_CXX"; then
7999             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8000         fi
8001         clangbindir=$CLANGDIR/bin
8002         if test "$build_os" = "cygwin"; then
8003             clangbindir=$(cygpath -u "$clangbindir")
8004         fi
8005         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8006         if test -n "$LLVM_CONFIG"; then
8007             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8008             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8009             if test -z "$CLANGLIBDIR"; then
8010                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8011             fi
8012             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8013             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8014             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8015             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8016                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8017             fi
8018             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8019             clangobjdir=$($LLVM_CONFIG --obj-root)
8020             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8021                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8022             fi
8023         fi
8024         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8025         AC_LANG_PUSH([C++])
8026         save_CXX=$CXX
8027         save_CXXCPP=$CXXCPP
8028         save_CPPFLAGS=$CPPFLAGS
8029         save_CXXFLAGS=$CXXFLAGS
8030         save_LDFLAGS=$LDFLAGS
8031         save_LIBS=$LIBS
8032         CXX=$COMPILER_PLUGINS_CXX
8033         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8034         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8035         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8036         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8037             [COMPILER_PLUGINS=TRUE],
8038             [
8039             if test "$compiler_plugins" = "yes"; then
8040                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8041             else
8042                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8043                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8044             fi
8045             ])
8046         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8047         dnl comment in compilerplugins/Makefile-clang.mk:
8048         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8049             LDFLAGS=""
8050             AC_MSG_CHECKING([for clang libraries to use])
8051             if test -z "$CLANGTOOLLIBS"; then
8052                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8053  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8054                 AC_LINK_IFELSE([
8055                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8056                         [[ clang::FullSourceLoc().dump(); ]])
8057                 ],[CLANGTOOLLIBS="$LIBS"],[])
8058             fi
8059             if test -z "$CLANGTOOLLIBS"; then
8060                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8061                 AC_LINK_IFELSE([
8062                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8063                         [[ clang::FullSourceLoc().dump(); ]])
8064                 ],[CLANGTOOLLIBS="$LIBS"],[])
8065             fi
8066             AC_MSG_RESULT([$CLANGTOOLLIBS])
8067             if test -z "$CLANGTOOLLIBS"; then
8068                 if test "$compiler_plugins" = "yes"; then
8069                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8070                 else
8071                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8072                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8073                 fi
8074                 COMPILER_PLUGINS=
8075             fi
8076             if test -n "$COMPILER_PLUGINS"; then
8077                 if test -z "$CLANGSYSINCLUDE"; then
8078                     if test -n "$LLVM_CONFIG"; then
8079                         # Path to the clang system headers (no idea if there's a better way to get it).
8080                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8081                     fi
8082                 fi
8083             fi
8084         fi
8085         CXX=$save_CXX
8086         CXXCPP=$save_CXXCPP
8087         CPPFLAGS=$save_CPPFLAGS
8088         CXXFLAGS=$save_CXXFLAGS
8089         LDFLAGS=$save_LDFLAGS
8090         LIBS="$save_LIBS"
8091         AC_LANG_POP([C++])
8093         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8094         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8095             #ifndef __clang__
8096             you lose
8097             #endif
8098             int foo=42;
8099             ]])],
8100             [AC_MSG_RESULT([yes])
8101              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8102             [AC_MSG_RESULT([no])])
8103         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8104     fi
8105 else
8106     if test "$enable_compiler_plugins" = "yes"; then
8107         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8108     fi
8110 COMPILER_PLUGINS_ANALYZER_PCH=
8111 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8112     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8114 AC_SUBST(COMPILER_PLUGINS)
8115 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8116 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8117 AC_SUBST(COMPILER_PLUGINS_CXX)
8118 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8119 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8120 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8121 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8122 AC_SUBST(CLANGDIR)
8123 AC_SUBST(CLANGLIBDIR)
8124 AC_SUBST(CLANGTOOLLIBS)
8125 AC_SUBST(CLANGSYSINCLUDE)
8127 # Plugin to help linker.
8128 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8129 # This makes --enable-lto build with clang work.
8130 AC_SUBST(LD_PLUGIN)
8132 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8133 AC_SUBST(HAVE_POSIX_FALLOCATE)
8135 JITC_PROCESSOR_TYPE=""
8136 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8137     # IBMs JDK needs this...
8138     JITC_PROCESSOR_TYPE=6
8139     export JITC_PROCESSOR_TYPE
8141 AC_SUBST([JITC_PROCESSOR_TYPE])
8143 # Misc Windows Stuff
8144 AC_ARG_WITH(ucrt-dir,
8145     AS_HELP_STRING([--with-ucrt-dir],
8146         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8147         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8148         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8149             Windows6.1-KB2999226-x64.msu
8150             Windows6.1-KB2999226-x86.msu
8151             Windows8.1-KB2999226-x64.msu
8152             Windows8.1-KB2999226-x86.msu
8153             Windows8-RT-KB2999226-x64.msu
8154             Windows8-RT-KB2999226-x86.msu
8155         A zip archive including those files is available from Microsoft site:
8156         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8159 UCRT_REDISTDIR="$with_ucrt_dir"
8160 if test $_os = "WINNT"; then
8161     find_msvc_x64_dlls
8162     for i in $PKGFORMAT; do
8163         if test "$i" = msi; then
8164             find_msms
8165             break
8166         fi
8167     done
8168     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8169     MSVC_DLLS="$msvcdlls"
8170     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8171     # MSVC 15.3 changed it to VC141
8172     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8173         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8174     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8175         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8176     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8177         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8178     else
8179         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8180     fi
8182     if test "$UCRT_REDISTDIR" = "no"; then
8183         dnl explicitly disabled
8184         UCRT_REDISTDIR=""
8185     else
8186         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8187                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8188                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8189                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8190                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8191                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8192             UCRT_REDISTDIR=""
8193             if test -n "$PKGFORMAT"; then
8194                for i in $PKGFORMAT; do
8195                    case "$i" in
8196                    msi)
8197                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8198                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8199                        ;;
8200                    esac
8201                done
8202             fi
8203         fi
8204     fi
8207 AC_SUBST(UCRT_REDISTDIR)
8208 AC_SUBST(MSVC_DLL_PATH)
8209 AC_SUBST(MSVC_DLLS)
8210 AC_SUBST(MSM_PATH)
8213 dnl ===================================================================
8214 dnl Checks for Java
8215 dnl ===================================================================
8216 if test "$ENABLE_JAVA" != ""; then
8218     # Windows-specific tests
8219     if test "$build_os" = "cygwin"; then
8220         if test -z "$with_jdk_home"; then
8221             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8222             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8223             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8224             if test -n "$regvalue"; then
8225                 ver=$regvalue
8226                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8227                 with_jdk_home=$regvalue
8228             fi
8229             howfound="found automatically"
8230         else
8231             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8232             howfound="you passed"
8233         fi
8235         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8236             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])
8237         fi
8238     fi
8240     # 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.
8241     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8242     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8243         with_jdk_home=`/usr/libexec/java_home`
8244     fi
8246     JAVA_HOME=; export JAVA_HOME
8247     if test -z "$with_jdk_home"; then
8248         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8249     else
8250         _java_path="$with_jdk_home/bin/$with_java"
8251         dnl Check if there is a Java interpreter at all.
8252         if test -x "$_java_path"; then
8253             JAVAINTERPRETER=$_java_path
8254         else
8255             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8256         fi
8257     fi
8259     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8260     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8261     dnl loaded by java to run JunitTests:
8262     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8263         shortjdkhome=`cygpath -d "$with_jdk_home"`
8264         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
8265             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8266             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8267         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
8268             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8269             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8270         fi
8272         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8273             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8274         fi
8275         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8276     elif test "$cross_compiling" != "yes"; then
8277         case $CPUNAME in
8278             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8279                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8280                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8281                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8282                 fi
8283                 ;;
8284             *) # assumption: everything else 32-bit
8285                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8286                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8287                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8288                 fi
8289                 ;;
8290         esac
8291     fi
8294 dnl ===================================================================
8295 dnl Checks for JDK.
8296 dnl ===================================================================
8298 # Whether all the complexity here actually is needed any more or not, no idea.
8300 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8301     _gij_longver=0
8302     AC_MSG_CHECKING([the installed JDK])
8303     if test -n "$JAVAINTERPRETER"; then
8304         dnl java -version sends output to stderr!
8305         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8306             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8307         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8308             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8309         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8310             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8311         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8312             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8313         else
8314             JDK=sun
8316             dnl Sun JDK specific tests
8317             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8318             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8320             if test "$_jdk_ver" -lt 10900; then
8321                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8322             fi
8323             if test "$_jdk_ver" -gt 10900; then
8324                 JAVA_CLASSPATH_NOT_SET=TRUE
8325             fi
8327             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8328             if test "$_os" = "WINNT"; then
8329                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8330             fi
8331             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8333             # set to limit VM usage for JunitTests
8334             JAVAIFLAGS=-Xmx64M
8335             # set to limit VM usage for javac
8336             JAVACFLAGS=-J-Xmx128M
8337         fi
8338     else
8339         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8340     fi
8341 else
8342     if test -z "$ENABLE_JAVA"; then
8343         dnl Java disabled
8344         JAVA_HOME=
8345         export JAVA_HOME
8346     elif test "$cross_compiling" = "yes"; then
8347         # Just assume compatibility of build and host JDK
8348         JDK=$JDK_FOR_BUILD
8349         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8350     fi
8353 dnl ===================================================================
8354 dnl Checks for javac
8355 dnl ===================================================================
8356 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8357     javacompiler="javac"
8358     : ${JAVA_SOURCE_VER=8}
8359     : ${JAVA_TARGET_VER=8}
8360     if test -z "$with_jdk_home"; then
8361         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8362     else
8363         _javac_path="$with_jdk_home/bin/$javacompiler"
8364         dnl Check if there is a Java compiler at all.
8365         if test -x "$_javac_path"; then
8366             JAVACOMPILER=$_javac_path
8367         fi
8368     fi
8369     if test -z "$JAVACOMPILER"; then
8370         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8371     fi
8372     if test "$build_os" = "cygwin"; then
8373         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8374             JAVACOMPILER="${JAVACOMPILER}.exe"
8375         fi
8376         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8377     fi
8380 dnl ===================================================================
8381 dnl Checks for javadoc
8382 dnl ===================================================================
8383 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8384     if test -z "$with_jdk_home"; then
8385         AC_PATH_PROG(JAVADOC, javadoc)
8386     else
8387         _javadoc_path="$with_jdk_home/bin/javadoc"
8388         dnl Check if there is a javadoc at all.
8389         if test -x "$_javadoc_path"; then
8390             JAVADOC=$_javadoc_path
8391         else
8392             AC_PATH_PROG(JAVADOC, javadoc)
8393         fi
8394     fi
8395     if test -z "$JAVADOC"; then
8396         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8397     fi
8398     if test "$build_os" = "cygwin"; then
8399         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8400             JAVADOC="${JAVADOC}.exe"
8401         fi
8402         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8403     fi
8405     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8406     JAVADOCISGJDOC="yes"
8407     fi
8409 AC_SUBST(JAVADOC)
8410 AC_SUBST(JAVADOCISGJDOC)
8412 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8413     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8414     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8415         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8416            # try to recover first by looking whether we have an alternative
8417            # system as in Debian or newer SuSEs where following /usr/bin/javac
8418            # over /etc/alternatives/javac leads to the right bindir where we
8419            # just need to strip a bit away to get a valid JAVA_HOME
8420            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8421         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8422             # maybe only one level of symlink (e.g. on Mac)
8423             JAVA_HOME=$(readlink $JAVACOMPILER)
8424             if test "$(dirname $JAVA_HOME)" = "."; then
8425                 # we've got no path to trim back
8426                 JAVA_HOME=""
8427             fi
8428         else
8429             # else warn
8430             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8431             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8432             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8433             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8434         fi
8435         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8436         if test "$JAVA_HOME" != "/usr"; then
8437             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8438                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8439                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8440                 dnl Tiger already returns a JDK path...
8441                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8442             else
8443                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8444                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8445                 dnl that checks which version to run
8446                 if test -f "$JAVA_HOME"; then
8447                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8448                 fi
8449             fi
8450         fi
8451     fi
8452     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8454     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8455     if test -z "$JAVA_HOME"; then
8456         if test "x$with_jdk_home" = "x"; then
8457             cat > findhome.java <<_ACEOF
8458 [import java.io.File;
8460 class findhome
8462     public static void main(String args[])
8463     {
8464         String jrelocation = System.getProperty("java.home");
8465         File jre = new File(jrelocation);
8466         System.out.println(jre.getParent());
8467     }
8469 _ACEOF
8470             AC_MSG_CHECKING([if javac works])
8471             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8472             AC_TRY_EVAL(javac_cmd)
8473             if test $? = 0 -a -f ./findhome.class; then
8474                 AC_MSG_RESULT([javac works])
8475             else
8476                 echo "configure: javac test failed" >&5
8477                 cat findhome.java >&5
8478                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8479             fi
8480             AC_MSG_CHECKING([if gij knows its java.home])
8481             JAVA_HOME=`$JAVAINTERPRETER findhome`
8482             if test $? = 0 -a "$JAVA_HOME" != ""; then
8483                 AC_MSG_RESULT([$JAVA_HOME])
8484             else
8485                 echo "configure: java test failed" >&5
8486                 cat findhome.java >&5
8487                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8488             fi
8489             # clean-up after ourselves
8490             rm -f ./findhome.java ./findhome.class
8491         else
8492             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8493         fi
8494     fi
8496     # now check if $JAVA_HOME is really valid
8497     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8498         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8499             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8500             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8501             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8502             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8503             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8504             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8505         fi
8506     fi
8507     PathFormat "$JAVA_HOME"
8508     JAVA_HOME="$formatted_path"
8511 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8512     "$_os" != Darwin
8513 then
8514     AC_MSG_CHECKING([for JAWT lib])
8515     if test "$_os" = WINNT; then
8516         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8517         JAWTLIB=jawt.lib
8518     else
8519         case "$host_cpu" in
8520         arm*)
8521             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8522             JAVA_ARCH=$my_java_arch
8523             ;;
8524         i*86)
8525             my_java_arch=i386
8526             ;;
8527         m68k)
8528             my_java_arch=m68k
8529             ;;
8530         powerpc)
8531             my_java_arch=ppc
8532             ;;
8533         powerpc64)
8534             my_java_arch=ppc64
8535             ;;
8536         powerpc64le)
8537             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8538             JAVA_ARCH=$my_java_arch
8539             ;;
8540         sparc64)
8541             my_java_arch=sparcv9
8542             ;;
8543         x86_64)
8544             my_java_arch=amd64
8545             ;;
8546         *)
8547             my_java_arch=$host_cpu
8548             ;;
8549         esac
8550         # This is where JDK9 puts the library
8551         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8552             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8553         else
8554             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8555         fi
8556         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8557     fi
8558     AC_MSG_RESULT([$JAWTLIB])
8560 AC_SUBST(JAWTLIB)
8562 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8563     case "$host_os" in
8565     aix*)
8566         JAVAINC="-I$JAVA_HOME/include"
8567         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8568         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8569         ;;
8571     cygwin*|wsl*)
8572         JAVAINC="-I$JAVA_HOME/include/win32"
8573         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8574         ;;
8576     darwin*|macos*)
8577         if test -d "$JAVA_HOME/include/darwin"; then
8578             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8579         else
8580             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8581         fi
8582         ;;
8584     dragonfly*)
8585         JAVAINC="-I$JAVA_HOME/include"
8586         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8587         ;;
8589     freebsd*)
8590         JAVAINC="-I$JAVA_HOME/include"
8591         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8592         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8593         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8594         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8595         ;;
8597     k*bsd*-gnu*)
8598         JAVAINC="-I$JAVA_HOME/include"
8599         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8600         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8601         ;;
8603     linux-gnu*)
8604         JAVAINC="-I$JAVA_HOME/include"
8605         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8606         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8607         ;;
8609     *netbsd*)
8610         JAVAINC="-I$JAVA_HOME/include"
8611         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8612         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8613        ;;
8615     openbsd*)
8616         JAVAINC="-I$JAVA_HOME/include"
8617         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8618         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8619         ;;
8621     solaris*)
8622         JAVAINC="-I$JAVA_HOME/include"
8623         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8624         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8625         ;;
8626     esac
8628 SOLARINC="$SOLARINC $JAVAINC"
8630 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8631     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8632     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8633     JDK_FOR_BUILD=$JDK
8636 AC_SUBST(JAVACFLAGS)
8637 AC_SUBST(JAVACOMPILER)
8638 AC_SUBST(JAVAINTERPRETER)
8639 AC_SUBST(JAVAIFLAGS)
8640 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8641 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8642 AC_SUBST(JAVA_HOME)
8643 AC_SUBST(JAVA_HOME_FOR_BUILD)
8644 AC_SUBST(JDK)
8645 AC_SUBST(JDK_FOR_BUILD)
8646 AC_SUBST(JAVA_SOURCE_VER)
8647 AC_SUBST(JAVA_TARGET_VER)
8650 dnl ===================================================================
8651 dnl Export file validation
8652 dnl ===================================================================
8653 AC_MSG_CHECKING([whether to enable export file validation])
8654 if test "$with_export_validation" != "no"; then
8655     if test -z "$ENABLE_JAVA"; then
8656         if test "$with_export_validation" = "yes"; then
8657             AC_MSG_ERROR([requested, but Java is disabled])
8658         else
8659             AC_MSG_RESULT([no, as Java is disabled])
8660         fi
8661     elif ! test -d "${SRC_ROOT}/schema"; then
8662         if test "$with_export_validation" = "yes"; then
8663             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8664         else
8665             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8666         fi
8667     else
8668         AC_MSG_RESULT([yes])
8669         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8671         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8672         if test -z "$ODFVALIDATOR"; then
8673             # remember to download the ODF toolkit with validator later
8674             AC_MSG_NOTICE([no odfvalidator found, will download it])
8675             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8676             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8678             # and fetch name of odfvalidator jar name from download.lst
8679             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8680             AC_SUBST(ODFVALIDATOR_JAR)
8682             if test -z "$ODFVALIDATOR_JAR"; then
8683                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8684             fi
8685         fi
8686         if test "$build_os" = "cygwin"; then
8687             # In case of Cygwin it will be executed from Windows,
8688             # so we need to run bash and absolute path to validator
8689             # so instead of "odfvalidator" it will be
8690             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8691             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8692         else
8693             ODFVALIDATOR="sh $ODFVALIDATOR"
8694         fi
8695         AC_SUBST(ODFVALIDATOR)
8698         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8699         if test -z "$OFFICEOTRON"; then
8700             # remember to download the officeotron with validator later
8701             AC_MSG_NOTICE([no officeotron found, will download it])
8702             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8703             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8705             # and fetch name of officeotron jar name from download.lst
8706             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8707             AC_SUBST(OFFICEOTRON_JAR)
8709             if test -z "$OFFICEOTRON_JAR"; then
8710                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8711             fi
8712         else
8713             # check version of existing officeotron
8714             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8715             if test 0"$OFFICEOTRON_VER" -lt 704; then
8716                 AC_MSG_ERROR([officeotron too old])
8717             fi
8718         fi
8719         if test "$build_os" = "cygwin"; then
8720             # In case of Cygwin it will be executed from Windows,
8721             # so we need to run bash and absolute path to validator
8722             # so instead of "odfvalidator" it will be
8723             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8724             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8725         else
8726             OFFICEOTRON="sh $OFFICEOTRON"
8727         fi
8728     fi
8729     AC_SUBST(OFFICEOTRON)
8730 else
8731     AC_MSG_RESULT([no])
8734 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8735 if test "$with_bffvalidator" != "no"; then
8736     AC_DEFINE(HAVE_BFFVALIDATOR)
8738     if test "$with_export_validation" = "no"; then
8739         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8740     fi
8742     if test "$with_bffvalidator" = "yes"; then
8743         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8744     else
8745         BFFVALIDATOR="$with_bffvalidator"
8746     fi
8748     if test "$build_os" = "cygwin"; then
8749         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8750             AC_MSG_RESULT($BFFVALIDATOR)
8751         else
8752             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8753         fi
8754     elif test -n "$BFFVALIDATOR"; then
8755         # We are not in Cygwin but need to run Windows binary with wine
8756         AC_PATH_PROGS(WINE, wine)
8758         # so swap in a shell wrapper that converts paths transparently
8759         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8760         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8761         AC_SUBST(BFFVALIDATOR_EXE)
8762         AC_MSG_RESULT($BFFVALIDATOR)
8763     else
8764         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8765     fi
8766     AC_SUBST(BFFVALIDATOR)
8767 else
8768     AC_MSG_RESULT([no])
8771 dnl ===================================================================
8772 dnl Check for C preprocessor to use
8773 dnl ===================================================================
8774 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8775 SYSTEM_UCPP_IS_GCC=
8776 if test -n "$with_idlc_cpp"; then
8777     AC_MSG_RESULT([$with_idlc_cpp])
8778     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8779     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8780     # ucpp will accept -v (to output version), warn about the others as unknown
8781     # and return 1 (due to -v)
8782     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8783     # and return 0 (due to --version ) if all options are supported
8784     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8785     if test $? -eq 0;  then
8786         SYSTEM_UCPP_IS_GCC=TRUE
8787         AC_MSG_RESULT([yes])
8788     else
8789         AC_MSG_RESULT([no])
8790     fi
8791 else
8792     AC_MSG_RESULT([ucpp])
8793     AC_MSG_CHECKING([which ucpp to use])
8794     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8795         AC_MSG_RESULT([external])
8796         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8797     else
8798         AC_MSG_RESULT([internal])
8799         BUILD_TYPE="$BUILD_TYPE UCPP"
8800     fi
8802 AC_SUBST(SYSTEM_UCPP)
8803 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8805 dnl ===================================================================
8806 dnl Check for epm (not needed for Windows)
8807 dnl ===================================================================
8808 AC_MSG_CHECKING([whether to enable EPM for packing])
8809 if test "$enable_epm" = "yes"; then
8810     AC_MSG_RESULT([yes])
8811     if test "$_os" != "WINNT"; then
8812         if test $_os = Darwin; then
8813             EPM=internal
8814         elif test -n "$with_epm"; then
8815             EPM=$with_epm
8816         else
8817             AC_PATH_PROG(EPM, epm, no)
8818         fi
8819         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8820             AC_MSG_NOTICE([EPM will be built.])
8821             BUILD_TYPE="$BUILD_TYPE EPM"
8822             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8823         else
8824             # Gentoo has some epm which is something different...
8825             AC_MSG_CHECKING([whether the found epm is the right epm])
8826             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8827                 AC_MSG_RESULT([yes])
8828             else
8829                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8830             fi
8831             AC_MSG_CHECKING([epm version])
8832             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8833             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8834                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8835                 AC_MSG_RESULT([OK, >= 3.7])
8836             else
8837                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8838                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8839             fi
8840         fi
8841     fi
8843     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8844         AC_MSG_CHECKING([for rpm])
8845         for a in "$RPM" rpmbuild rpm; do
8846             $a --usage >/dev/null 2> /dev/null
8847             if test $? -eq 0; then
8848                 RPM=$a
8849                 break
8850             else
8851                 $a --version >/dev/null 2> /dev/null
8852                 if test $? -eq 0; then
8853                     RPM=$a
8854                     break
8855                 fi
8856             fi
8857         done
8858         if test -z "$RPM"; then
8859             AC_MSG_ERROR([not found])
8860         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8861             RPM_PATH=`which $RPM`
8862             AC_MSG_RESULT([$RPM_PATH])
8863             SCPDEFS="$SCPDEFS -DWITH_RPM"
8864         else
8865             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8866         fi
8867     fi
8868     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8869         AC_PATH_PROG(DPKG, dpkg, no)
8870         if test "$DPKG" = "no"; then
8871             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8872         fi
8873     fi
8874     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8875        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8876         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8877             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8878                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8879                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8880                     AC_MSG_RESULT([yes])
8881                 else
8882                     AC_MSG_RESULT([no])
8883                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8884                         _pt="rpm"
8885                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8886                         add_warning "the rpms will need to be installed with --nodeps"
8887                     else
8888                         _pt="pkg"
8889                     fi
8890                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8891                     add_warning "the ${_pt}s will not be relocatable"
8892                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8893                                  relocation will work, you need to patch your epm with the
8894                                  patch in epm/epm-3.7.patch or build with
8895                                  --with-epm=internal which will build a suitable epm])
8896                 fi
8897             fi
8898         fi
8899     fi
8900     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8901         AC_PATH_PROG(PKGMK, pkgmk, no)
8902         if test "$PKGMK" = "no"; then
8903             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8904         fi
8905     fi
8906     AC_SUBST(RPM)
8907     AC_SUBST(DPKG)
8908     AC_SUBST(PKGMK)
8909 else
8910     for i in $PKGFORMAT; do
8911         case "$i" in
8912         aix | bsd | deb | pkg | rpm | native | portable)
8913             AC_MSG_ERROR(
8914                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8915             ;;
8916         esac
8917     done
8918     AC_MSG_RESULT([no])
8919     EPM=NO
8921 AC_SUBST(EPM)
8923 ENABLE_LWP=
8924 if test "$enable_lotuswordpro" = "yes"; then
8925     ENABLE_LWP="TRUE"
8927 AC_SUBST(ENABLE_LWP)
8929 dnl ===================================================================
8930 dnl Check for building ODK
8931 dnl ===================================================================
8932 if test "$enable_odk" != yes; then
8933     unset DOXYGEN
8934 else
8935     if test "$with_doxygen" = no; then
8936         AC_MSG_CHECKING([for doxygen])
8937         unset DOXYGEN
8938         AC_MSG_RESULT([no])
8939     else
8940         if test "$with_doxygen" = yes; then
8941             AC_PATH_PROG([DOXYGEN], [doxygen])
8942             if test -z "$DOXYGEN"; then
8943                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8944             fi
8945             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8946                 if ! dot -V 2>/dev/null; then
8947                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8948                 fi
8949             fi
8950         else
8951             AC_MSG_CHECKING([for doxygen])
8952             DOXYGEN=$with_doxygen
8953             AC_MSG_RESULT([$DOXYGEN])
8954         fi
8955         if test -n "$DOXYGEN"; then
8956             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8957             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8958             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8959                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8960             fi
8961         fi
8962     fi
8964 AC_SUBST([DOXYGEN])
8966 AC_MSG_CHECKING([whether to build the ODK])
8967 if test "$enable_odk" = yes; then
8968     AC_MSG_RESULT([yes])
8969     BUILD_TYPE="$BUILD_TYPE ODK"
8970 else
8971     AC_MSG_RESULT([no])
8974 dnl ===================================================================
8975 dnl Check for system zlib
8976 dnl ===================================================================
8977 if test "$with_system_zlib" = "auto"; then
8978     case "$_os" in
8979     WINNT)
8980         with_system_zlib="$with_system_libs"
8981         ;;
8982     *)
8983         if test "$enable_fuzzers" != "yes"; then
8984             with_system_zlib=yes
8985         else
8986             with_system_zlib=no
8987         fi
8988         ;;
8989     esac
8992 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8993 dnl and has no pkg-config for it at least on some tinderboxes,
8994 dnl so leaving that out for now
8995 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8996 AC_MSG_CHECKING([which zlib to use])
8997 if test "$with_system_zlib" = "yes"; then
8998     AC_MSG_RESULT([external])
8999     SYSTEM_ZLIB=TRUE
9000     AC_CHECK_HEADER(zlib.h, [],
9001         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9002     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9003         [AC_MSG_ERROR(zlib not found or functional)], [])
9004 else
9005     AC_MSG_RESULT([internal])
9006     SYSTEM_ZLIB=
9007     BUILD_TYPE="$BUILD_TYPE ZLIB"
9008     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9009     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9011 AC_SUBST(ZLIB_CFLAGS)
9012 AC_SUBST(ZLIB_LIBS)
9013 AC_SUBST(SYSTEM_ZLIB)
9015 dnl ===================================================================
9016 dnl Check for system jpeg
9017 dnl ===================================================================
9018 AC_MSG_CHECKING([which libjpeg to use])
9019 if test "$with_system_jpeg" = "yes"; then
9020     AC_MSG_RESULT([external])
9021     SYSTEM_LIBJPEG=TRUE
9022     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9023         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9024     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9025         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9026 else
9027     SYSTEM_LIBJPEG=
9028     AC_MSG_RESULT([internal, libjpeg-turbo])
9029     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9031     case "$host_cpu" in
9032     x86_64 | amd64 | i*86 | x86 | ia32)
9033         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9034         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9035             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9036                 NASM="$LODE_HOME/opt/bin/nasm"
9037             elif test -x "/opt/lo/bin/nasm"; then
9038                 NASM="/opt/lo/bin/nasm"
9039             fi
9040         fi
9042         if test -n "$NASM"; then
9043             AC_MSG_CHECKING([for object file format of host system])
9044             case "$host_os" in
9045               cygwin* | mingw* | pw32* | wsl*)
9046                 case "$host_cpu" in
9047                   x86_64)
9048                     objfmt='Win64-COFF'
9049                     ;;
9050                   *)
9051                     objfmt='Win32-COFF'
9052                     ;;
9053                 esac
9054               ;;
9055               msdosdjgpp* | go32*)
9056                 objfmt='COFF'
9057               ;;
9058               os2-emx*) # not tested
9059                 objfmt='MSOMF' # obj
9060               ;;
9061               linux*coff* | linux*oldld*)
9062                 objfmt='COFF' # ???
9063               ;;
9064               linux*aout*)
9065                 objfmt='a.out'
9066               ;;
9067               linux*)
9068                 case "$host_cpu" in
9069                   x86_64)
9070                     objfmt='ELF64'
9071                     ;;
9072                   *)
9073                     objfmt='ELF'
9074                     ;;
9075                 esac
9076               ;;
9077               kfreebsd* | freebsd* | netbsd* | openbsd*)
9078                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9079                   objfmt='BSD-a.out'
9080                 else
9081                   case "$host_cpu" in
9082                     x86_64 | amd64)
9083                       objfmt='ELF64'
9084                       ;;
9085                     *)
9086                       objfmt='ELF'
9087                       ;;
9088                   esac
9089                 fi
9090               ;;
9091               solaris* | sunos* | sysv* | sco*)
9092                 case "$host_cpu" in
9093                   x86_64)
9094                     objfmt='ELF64'
9095                     ;;
9096                   *)
9097                     objfmt='ELF'
9098                     ;;
9099                 esac
9100               ;;
9101               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9102                 case "$host_cpu" in
9103                   x86_64)
9104                     objfmt='Mach-O64'
9105                     ;;
9106                   *)
9107                     objfmt='Mach-O'
9108                     ;;
9109                 esac
9110               ;;
9111               *)
9112                 objfmt='ELF ?'
9113               ;;
9114             esac
9116             AC_MSG_RESULT([$objfmt])
9117             if test "$objfmt" = 'ELF ?'; then
9118               objfmt='ELF'
9119               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9120             fi
9122             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9123             case "$objfmt" in
9124               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9125               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9126               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9127               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9128               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9129               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9130               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9131               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9132               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9133               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9134               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9135             esac
9136             AC_MSG_RESULT([$NAFLAGS])
9138             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9139             cat > conftest.asm << EOF
9140             [%line __oline__ "configure"
9141                     section .text
9142                     global  _main,main
9143             _main:
9144             main:   xor     eax,eax
9145                     ret
9146             ]
9148             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9149             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9150               AC_MSG_RESULT(yes)
9151             else
9152               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9153               cat conftest.asm >&AS_MESSAGE_LOG_FD
9154               rm -rf conftest*
9155               AC_MSG_RESULT(no)
9156               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9157               NASM=""
9158             fi
9160         fi
9162         if test -z "$NASM"; then
9163 cat << _EOS
9164 ****************************************************************************
9165 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9166 To get one please:
9168 _EOS
9169             if test "$build_os" = "cygwin"; then
9170 cat << _EOS
9171 install a pre-compiled binary for Win32
9173 mkdir -p /opt/lo/bin
9174 cd /opt/lo/bin
9175 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9176 chmod +x nasm
9178 or get and install one from http://www.nasm.us/
9180 Then re-run autogen.sh
9182 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9183 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9185 _EOS
9186             else
9187 cat << _EOS
9188 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9190 _EOS
9191             fi
9192             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9193             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9194         fi
9195       ;;
9196     esac
9199 AC_SUBST(NASM)
9200 AC_SUBST(NAFLAGS)
9201 AC_SUBST(LIBJPEG_CFLAGS)
9202 AC_SUBST(LIBJPEG_LIBS)
9203 AC_SUBST(SYSTEM_LIBJPEG)
9205 dnl ===================================================================
9206 dnl Check for system clucene
9207 dnl ===================================================================
9208 dnl we should rather be using
9209 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9210 dnl but the contribs-lib check seems tricky
9211 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9212 AC_MSG_CHECKING([which clucene to use])
9213 if test "$with_system_clucene" = "yes"; then
9214     AC_MSG_RESULT([external])
9215     SYSTEM_CLUCENE=TRUE
9216     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9217     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9218     FilterLibs "${CLUCENE_LIBS}"
9219     CLUCENE_LIBS="${filteredlibs}"
9220     AC_LANG_PUSH([C++])
9221     save_CXXFLAGS=$CXXFLAGS
9222     save_CPPFLAGS=$CPPFLAGS
9223     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9224     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9225     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9226     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9227     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9228                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9229     CXXFLAGS=$save_CXXFLAGS
9230     CPPFLAGS=$save_CPPFLAGS
9231     AC_LANG_POP([C++])
9233     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9234 else
9235     AC_MSG_RESULT([internal])
9236     SYSTEM_CLUCENE=
9237     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9240 AC_SUBST(SYSTEM_CLUCENE)
9241 AC_SUBST(CLUCENE_CFLAGS)
9242 AC_SUBST(CLUCENE_LIBS)
9244 dnl ===================================================================
9245 dnl Check for system expat
9246 dnl ===================================================================
9247 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9249 dnl ===================================================================
9250 dnl Check for system xmlsec
9251 dnl ===================================================================
9252 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9254 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9255 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9256     ENABLE_EOT="TRUE"
9257     AC_DEFINE([ENABLE_EOT])
9258     AC_MSG_RESULT([yes])
9260     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9261 else
9262     ENABLE_EOT=
9263     AC_MSG_RESULT([no])
9265 AC_SUBST([ENABLE_EOT])
9267 dnl ===================================================================
9268 dnl Check for DLP libs
9269 dnl ===================================================================
9270 AS_IF([test "$COM" = "MSC"],
9271       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9272       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9274 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9276 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9278 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9280 AS_IF([test "$COM" = "MSC"],
9281       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9282       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9284 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9286 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9288 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9289 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9291 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9293 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9295 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9297 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9298 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9300 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9301 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9303 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9305 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9306 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9308 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9310 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9312 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9314 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9316 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9317 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9319 dnl ===================================================================
9320 dnl Check for system lcms2
9321 dnl ===================================================================
9322 if test "$with_system_lcms2" != "yes"; then
9323     SYSTEM_LCMS2=
9325 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9326 if test "$GCC" = "yes"; then
9327     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9329 if test "$COM" = "MSC"; then # override the above
9330     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9333 dnl ===================================================================
9334 dnl Check for system cppunit
9335 dnl ===================================================================
9336 if test "$_os" != "Android" ; then
9337     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9340 dnl ===================================================================
9341 dnl Check whether freetype is available
9342 dnl ===================================================================
9343 if test "$using_freetype_fontconfig" = yes; then
9344     AC_MSG_CHECKING([which freetype to use])
9346 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9347     AC_MSG_RESULT([external])
9348     # FreeType has 3 different kinds of versions
9349     # * release, like 2.4.10
9350     # * libtool, like 13.0.7 (this what pkg-config returns)
9351     # * soname
9352     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9353     #
9354     # 9.9.3 is 2.2.0
9355     # When the minimal version is at least 2.8.1, remove Skia's check down below.
9356     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9357     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9358     FilterLibs "${FREETYPE_LIBS}"
9359     FREETYPE_LIBS="${filteredlibs}"
9360     SYSTEM_FREETYPE=TRUE
9361 elif test "$using_freetype_fontconfig" = yes; then
9362     AC_MSG_RESULT([internal])
9363     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9364     if test "x$ac_config_site_64bit_host" = xYES; then
9365         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9366     else
9367         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9368     fi
9369     BUILD_TYPE="$BUILD_TYPE FREETYPE"
9371 AC_SUBST(FREETYPE_CFLAGS)
9372 AC_SUBST(FREETYPE_LIBS)
9373 AC_SUBST([SYSTEM_FREETYPE])
9375 # ===================================================================
9376 # Check for system libxslt
9377 # to prevent incompatibilities between internal libxml2 and external libxslt,
9378 # or vice versa, use with_system_libxml here
9379 # ===================================================================
9380 if test "$with_system_libxml" = "auto"; then
9381     case "$_os" in
9382     WINNT|iOS|Android)
9383         with_system_libxml="$with_system_libs"
9384         ;;
9385     Emscripten)
9386         with_system_libxml=no
9387         ;;
9388     *)
9389         if test "$enable_fuzzers" != "yes"; then
9390             with_system_libxml=yes
9391         else
9392             with_system_libxml=no
9393         fi
9394         ;;
9395     esac
9398 AC_MSG_CHECKING([which libxslt to use])
9399 if test "$with_system_libxml" = "yes"; then
9400     AC_MSG_RESULT([external])
9401     SYSTEM_LIBXSLT=TRUE
9402     if test "$_os" = "Darwin"; then
9403         dnl make sure to use SDK path
9404         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9405         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9406         dnl omit -L/usr/lib
9407         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9408         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9409     else
9410         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9411         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9412         FilterLibs "${LIBXSLT_LIBS}"
9413         LIBXSLT_LIBS="${filteredlibs}"
9414         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9415         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9416         FilterLibs "${LIBEXSLT_LIBS}"
9417         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9418     fi
9420     dnl Check for xsltproc
9421     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9422     if test "$XSLTPROC" = "no"; then
9423         AC_MSG_ERROR([xsltproc is required])
9424     fi
9425 else
9426     AC_MSG_RESULT([internal])
9427     SYSTEM_LIBXSLT=
9428     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9430 AC_SUBST(SYSTEM_LIBXSLT)
9431 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9432     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9434 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9436 AC_SUBST(LIBEXSLT_CFLAGS)
9437 AC_SUBST(LIBEXSLT_LIBS)
9438 AC_SUBST(LIBXSLT_CFLAGS)
9439 AC_SUBST(LIBXSLT_LIBS)
9440 AC_SUBST(XSLTPROC)
9442 # ===================================================================
9443 # Check for system libxml
9444 # ===================================================================
9445 AC_MSG_CHECKING([which libxml to use])
9446 if test "$with_system_libxml" = "yes"; then
9447     AC_MSG_RESULT([external])
9448     SYSTEM_LIBXML=TRUE
9449     if test "$_os" = "Darwin"; then
9450         dnl make sure to use SDK path
9451         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9452         dnl omit -L/usr/lib
9453         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9454     elif test $_os = iOS; then
9455         dnl make sure to use SDK path
9456         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9457         LIBXML_CFLAGS="-I$usr/include/libxml2"
9458         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9459     else
9460         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9461         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9462         FilterLibs "${LIBXML_LIBS}"
9463         LIBXML_LIBS="${filteredlibs}"
9464     fi
9466     dnl Check for xmllint
9467     AC_PATH_PROG(XMLLINT, xmllint, no)
9468     if test "$XMLLINT" = "no"; then
9469         AC_MSG_ERROR([xmllint is required])
9470     fi
9471 else
9472     AC_MSG_RESULT([internal])
9473     SYSTEM_LIBXML=
9474     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9475     if test "$COM" = "MSC"; then
9476         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9477     fi
9478     if test "$COM" = "MSC"; then
9479         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9480     else
9481         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9482         if test "$_os" = Android; then
9483             LIBXML_LIBS="$LIBXML_LIBS -lm"
9484         fi
9485     fi
9486     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9488 AC_SUBST(SYSTEM_LIBXML)
9489 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9490     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9492 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9493 AC_SUBST(LIBXML_CFLAGS)
9494 AC_SUBST(LIBXML_LIBS)
9495 AC_SUBST(XMLLINT)
9497 # =====================================================================
9498 # Checking for a Python interpreter with version >= 3.3.
9499 # Optionally user can pass an option to configure, i. e.
9500 # ./configure PYTHON=/usr/bin/python
9501 # =====================================================================
9502 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9503     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9504     # unless PYTHON is defined as above which allows 'system'
9505     enable_python=internal
9507 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9508     if test -n "$PYTHON"; then
9509         PYTHON_FOR_BUILD=$PYTHON
9510     else
9511         # This allows a lack of system python with no error, we use internal one in that case.
9512         AM_PATH_PYTHON([3.3],, [:])
9513         # Clean PYTHON_VERSION checked below if cross-compiling
9514         PYTHON_VERSION=""
9515         if test "$PYTHON" != ":"; then
9516             PYTHON_FOR_BUILD=$PYTHON
9517         fi
9518     fi
9520 AC_SUBST(PYTHON_FOR_BUILD)
9522 # Checks for Python to use for Pyuno
9523 AC_MSG_CHECKING([which Python to use for Pyuno])
9524 case "$enable_python" in
9525 no|disable)
9526     if test -z $PYTHON_FOR_BUILD; then
9527         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9528         # requirement from the choice whether to include Python stuff in the installer, but why
9529         # bother?
9530         if test "$cross_compiling" = yes; then
9531             enable_python=system
9532         else
9533             AC_MSG_ERROR([Python is required at build time.])
9534         fi
9535     fi
9536     enable_python=no
9537     AC_MSG_RESULT([none])
9538     ;;
9539 ""|yes|auto)
9540     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9541         AC_MSG_RESULT([no, overridden by --disable-scripting])
9542         enable_python=no
9543     elif test $build_os = cygwin; then
9544         dnl When building on Windows we don't attempt to use any installed
9545         dnl "system"  Python.
9546         AC_MSG_RESULT([fully internal])
9547         enable_python=internal
9548     elif test "$cross_compiling" = yes; then
9549         AC_MSG_RESULT([system])
9550         enable_python=system
9551     else
9552         # Unset variables set by the above AM_PATH_PYTHON so that
9553         # we actually do check anew.
9554         AC_MSG_RESULT([])
9555         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
9556         AM_PATH_PYTHON([3.3],, [:])
9557         AC_MSG_CHECKING([which Python to use for Pyuno])
9558         if test "$PYTHON" = ":"; then
9559             if test -z "$PYTHON_FOR_BUILD"; then
9560                 AC_MSG_RESULT([fully internal])
9561             else
9562                 AC_MSG_RESULT([internal])
9563             fi
9564             enable_python=internal
9565         else
9566             AC_MSG_RESULT([system])
9567             enable_python=system
9568         fi
9569     fi
9570     ;;
9571 internal)
9572     AC_MSG_RESULT([internal])
9573     ;;
9574 fully-internal)
9575     AC_MSG_RESULT([fully internal])
9576     enable_python=internal
9577     ;;
9578 system)
9579     AC_MSG_RESULT([system])
9580     if test "$_os" = Darwin -a -z "$PYTHON"; then
9581         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9582     fi
9583     ;;
9585     AC_MSG_ERROR([Incorrect --enable-python option])
9586     ;;
9587 esac
9589 if test $enable_python != no; then
9590     BUILD_TYPE="$BUILD_TYPE PYUNO"
9593 if test $enable_python = system; then
9594     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9595         # Fallback: Accept these in the environment, or as set above
9596         # for MacOSX.
9597         :
9598     elif test "$cross_compiling" != yes; then
9599         # Unset variables set by the above AM_PATH_PYTHON so that
9600         # we actually do check anew.
9601         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
9602         # This causes an error if no python command is found
9603         AM_PATH_PYTHON([3.3])
9604         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9605         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9606         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9607         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9608         if test -z "$PKG_CONFIG"; then
9609             PYTHON_CFLAGS="-I$python_include"
9610             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9611         elif $PKG_CONFIG --exists python-$python_version-embed; then
9612             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9613             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9614         elif $PKG_CONFIG --exists python-$python_version; then
9615             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9616             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9617         else
9618             PYTHON_CFLAGS="-I$python_include"
9619             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9620         fi
9621         FilterLibs "${PYTHON_LIBS}"
9622         PYTHON_LIBS="${filteredlibs}"
9623     else
9624         dnl How to find out the cross-compilation Python installation path?
9625         AC_MSG_CHECKING([for python version])
9626         AS_IF([test -n "$PYTHON_VERSION"],
9627               [AC_MSG_RESULT([$PYTHON_VERSION])],
9628               [AC_MSG_RESULT([not found])
9629                AC_MSG_ERROR([no usable python found])])
9630         test -n "$PYTHON_CFLAGS" && break
9631     fi
9633     dnl Check if the headers really work
9634     save_CPPFLAGS="$CPPFLAGS"
9635     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9636     AC_CHECK_HEADER(Python.h)
9637     CPPFLAGS="$save_CPPFLAGS"
9639     # let the PYTHON_FOR_BUILD match the same python installation that
9640     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9641     # better for PythonTests.
9642     PYTHON_FOR_BUILD=$PYTHON
9645 if test "$with_lxml" != no; then
9646     if test -z "$PYTHON_FOR_BUILD"; then
9647         case $build_os in
9648             cygwin)
9649                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9650                 ;;
9651             *)
9652                 if test "$cross_compiling" != yes ; then
9653                     BUILD_TYPE="$BUILD_TYPE LXML"
9654                 fi
9655                 ;;
9656         esac
9657     else
9658         AC_MSG_CHECKING([for python lxml])
9659         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9660             AC_MSG_RESULT([yes])
9661         else
9662             case $build_os in
9663                 cygwin)
9664                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9665                     ;;
9666                 *)
9667                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9668                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9669                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9670                         else
9671                             BUILD_TYPE="$BUILD_TYPE LXML"
9672                             AC_MSG_RESULT([no, using internal lxml])
9673                         fi
9674                     else
9675                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9676                     fi
9677                     ;;
9678             esac
9679         fi
9680     fi
9683 dnl By now enable_python should be "system", "internal" or "no"
9684 case $enable_python in
9685 system)
9686     SYSTEM_PYTHON=TRUE
9688     if test "x$ac_cv_header_Python_h" != "xyes"; then
9689        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9690     fi
9692     AC_LANG_PUSH(C)
9693     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9694     AC_MSG_CHECKING([for correct python library version])
9695        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9696 #include <Python.h>
9698 int main(int argc, char **argv) {
9699    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9700    else return 1;
9702        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9703     AC_LANG_POP(C)
9705     dnl FIXME Check if the Python library can be linked with, too?
9706     ;;
9708 internal)
9709     SYSTEM_PYTHON=
9710     PYTHON_VERSION_MAJOR=3
9711     PYTHON_VERSION_MINOR=8
9712     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9713     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9714         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9715     fi
9716     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9717     BUILD_TYPE="$BUILD_TYPE PYTHON"
9718     if test "$OS" = LINUX -o "$OS" = WNT ; then
9719         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9720     fi
9721     # Embedded Python dies without Home set
9722     if test "$HOME" = ""; then
9723         export HOME=""
9724     fi
9725     ;;
9727     DISABLE_PYTHON=TRUE
9728     SYSTEM_PYTHON=
9729     ;;
9731     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9732     ;;
9733 esac
9735 AC_SUBST(DISABLE_PYTHON)
9736 AC_SUBST(SYSTEM_PYTHON)
9737 AC_SUBST(PYTHON_CFLAGS)
9738 AC_SUBST(PYTHON_LIBS)
9739 AC_SUBST(PYTHON_VERSION)
9740 AC_SUBST(PYTHON_VERSION_MAJOR)
9741 AC_SUBST(PYTHON_VERSION_MINOR)
9743 AC_MSG_CHECKING([whether to build LibreLogo])
9744 case "$enable_python" in
9745 no|disable)
9746     AC_MSG_RESULT([no; Python disabled])
9747     ;;
9749     if test "${enable_librelogo}" = "no"; then
9750         AC_MSG_RESULT([no])
9751     else
9752         AC_MSG_RESULT([yes])
9753         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9754         AC_DEFINE([ENABLE_LIBRELOGO],1)
9755     fi
9756     ;;
9757 esac
9758 AC_SUBST(ENABLE_LIBRELOGO)
9760 ENABLE_MARIADBC=
9761 MARIADBC_MAJOR=1
9762 MARIADBC_MINOR=0
9763 MARIADBC_MICRO=2
9764 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9765 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9766     ENABLE_MARIADBC=TRUE
9767     AC_MSG_RESULT([yes])
9768     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9769 else
9770     AC_MSG_RESULT([no])
9772 AC_SUBST(ENABLE_MARIADBC)
9773 AC_SUBST(MARIADBC_MAJOR)
9774 AC_SUBST(MARIADBC_MINOR)
9775 AC_SUBST(MARIADBC_MICRO)
9777 if test "$ENABLE_MARIADBC" = "TRUE"; then
9778     dnl ===================================================================
9779     dnl Check for system MariaDB
9780     dnl ===================================================================
9781     AC_MSG_CHECKING([which MariaDB to use])
9782     if test "$with_system_mariadb" = "yes"; then
9783         AC_MSG_RESULT([external])
9784         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9785         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9786         if test -z "$MARIADBCONFIG"; then
9787             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9788             if test -z "$MARIADBCONFIG"; then
9789                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9790                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9791             fi
9792         fi
9793         AC_MSG_CHECKING([MariaDB version])
9794         MARIADB_VERSION=`$MARIADBCONFIG --version`
9795         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9796         if test "$MARIADB_MAJOR" -ge "5"; then
9797             AC_MSG_RESULT([OK])
9798         else
9799             AC_MSG_ERROR([too old, use 5.0.x or later])
9800         fi
9801         AC_MSG_CHECKING([for MariaDB Client library])
9802         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9803         if test "$COM_IS_CLANG" = TRUE; then
9804             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9805         fi
9806         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9807         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9808         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9809         dnl linux32:
9810         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9811             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9812             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9813                 | sed -e 's|/lib64/|/lib/|')
9814         fi
9815         FilterLibs "${MARIADB_LIBS}"
9816         MARIADB_LIBS="${filteredlibs}"
9817         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9818         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9819         if test "$enable_bundle_mariadb" = "yes"; then
9820             AC_MSG_RESULT([yes])
9821             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9822             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9824 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9826 /g' | grep -E '(mysqlclient|mariadb)')
9827             if test "$_os" = "Darwin"; then
9828                 LIBMARIADB=${LIBMARIADB}.dylib
9829             elif test "$_os" = "WINNT"; then
9830                 LIBMARIADB=${LIBMARIADB}.dll
9831             else
9832                 LIBMARIADB=${LIBMARIADB}.so
9833             fi
9834             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9835             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9836             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9837                 AC_MSG_RESULT([found.])
9838                 PathFormat "$LIBMARIADB_PATH"
9839                 LIBMARIADB_PATH="$formatted_path"
9840             else
9841                 AC_MSG_ERROR([not found.])
9842             fi
9843         else
9844             AC_MSG_RESULT([no])
9845             BUNDLE_MARIADB_CONNECTOR_C=
9846         fi
9847     else
9848         AC_MSG_RESULT([internal])
9849         SYSTEM_MARIADB_CONNECTOR_C=
9850         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9851         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9852         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9853     fi
9855     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9856     AC_SUBST(MARIADB_CFLAGS)
9857     AC_SUBST(MARIADB_LIBS)
9858     AC_SUBST(LIBMARIADB)
9859     AC_SUBST(LIBMARIADB_PATH)
9860     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9863 dnl ===================================================================
9864 dnl Check for system hsqldb
9865 dnl ===================================================================
9866 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9867     HSQLDB_USE_JDBC_4_1=
9868     AC_MSG_CHECKING([which hsqldb to use])
9869     if test "$with_system_hsqldb" = "yes"; then
9870         AC_MSG_RESULT([external])
9871         SYSTEM_HSQLDB=TRUE
9872         if test -z $HSQLDB_JAR; then
9873             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9874         fi
9875         if ! test -f $HSQLDB_JAR; then
9876                AC_MSG_ERROR(hsqldb.jar not found.)
9877         fi
9878         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9879         export HSQLDB_JAR
9880         if $PERL -e \
9881            'use Archive::Zip;
9882             my $file = "$ENV{'HSQLDB_JAR'}";
9883             my $zip = Archive::Zip->new( $file );
9884             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9885             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9886             {
9887                 push @l, split(/\n/, $mf);
9888                 foreach my $line (@l)
9889                 {
9890                     if ($line =~ m/Specification-Version:/)
9891                     {
9892                         ($t, $version) = split (/:/,$line);
9893                         $version =~ s/^\s//;
9894                         ($a, $b, $c, $d) = split (/\./,$version);
9895                         if ($c == "0" && $d > "8")
9896                         {
9897                             exit 0;
9898                         }
9899                         else
9900                         {
9901                             exit 1;
9902                         }
9903                     }
9904                 }
9905             }
9906             else
9907             {
9908                 exit 1;
9909             }'; then
9910             AC_MSG_RESULT([yes])
9911         else
9912             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9913         fi
9914     else
9915         AC_MSG_RESULT([internal])
9916         SYSTEM_HSQLDB=
9917         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9918         NEED_ANT=TRUE
9919         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9920         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9921         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9922             AC_MSG_RESULT([yes])
9923             HSQLDB_USE_JDBC_4_1=TRUE
9924         else
9925             AC_MSG_RESULT([no])
9926         fi
9927     fi
9928 else
9929     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9930         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9931     fi
9933 AC_SUBST(SYSTEM_HSQLDB)
9934 AC_SUBST(HSQLDB_JAR)
9935 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9937 dnl ===================================================================
9938 dnl Check for PostgreSQL stuff
9939 dnl ===================================================================
9940 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9941 if test "x$enable_postgresql_sdbc" != "xno"; then
9942     AC_MSG_RESULT([yes])
9943     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9945     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9946         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9947     fi
9948     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9949         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9950     fi
9952     postgres_interface=""
9953     if test "$with_system_postgresql" = "yes"; then
9954         postgres_interface="external PostgreSQL"
9955         SYSTEM_POSTGRESQL=TRUE
9956         if test "$_os" = Darwin; then
9957             supp_path=''
9958             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9959                 pg_supp_path="$P_SEP$d$pg_supp_path"
9960             done
9961         fi
9962         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9963         if test -n "$PGCONFIG"; then
9964             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9965             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9966         else
9967             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9968               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9969               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9970             ],[
9971               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9972             ])
9973         fi
9974         FilterLibs "${POSTGRESQL_LIB}"
9975         POSTGRESQL_LIB="${filteredlibs}"
9976     else
9977         # if/when anything else than PostgreSQL uses Kerberos,
9978         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9979         WITH_KRB5=
9980         WITH_GSSAPI=
9981         case "$_os" in
9982         Darwin)
9983             # macOS has system MIT Kerberos 5 since 10.4
9984             if test "$with_krb5" != "no"; then
9985                 WITH_KRB5=TRUE
9986                 save_LIBS=$LIBS
9987                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9988                 # that the libraries where these functions are located on macOS will change, is it?
9989                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9990                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9991                 KRB5_LIBS=$LIBS
9992                 LIBS=$save_LIBS
9993                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9994                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9995                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9996                 LIBS=$save_LIBS
9997             fi
9998             if test "$with_gssapi" != "no"; then
9999                 WITH_GSSAPI=TRUE
10000                 save_LIBS=$LIBS
10001                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10002                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10003                 GSSAPI_LIBS=$LIBS
10004                 LIBS=$save_LIBS
10005             fi
10006             ;;
10007         WINNT)
10008             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10009                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10010             fi
10011             ;;
10012         Linux|GNU|*BSD|DragonFly)
10013             if test "$with_krb5" != "no"; then
10014                 WITH_KRB5=TRUE
10015                 save_LIBS=$LIBS
10016                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10017                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10018                 KRB5_LIBS=$LIBS
10019                 LIBS=$save_LIBS
10020                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10021                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10022                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10023                 LIBS=$save_LIBS
10024             fi
10025             if test "$with_gssapi" != "no"; then
10026                 WITH_GSSAPI=TRUE
10027                 save_LIBS=$LIBS
10028                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10029                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10030                 GSSAPI_LIBS=$LIBS
10031                 LIBS=$save_LIBS
10032             fi
10033             ;;
10034         *)
10035             if test "$with_krb5" = "yes"; then
10036                 WITH_KRB5=TRUE
10037                 save_LIBS=$LIBS
10038                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10039                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10040                 KRB5_LIBS=$LIBS
10041                 LIBS=$save_LIBS
10042                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10043                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10044                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10045                 LIBS=$save_LIBS
10046             fi
10047             if test "$with_gssapi" = "yes"; then
10048                 WITH_GSSAPI=TRUE
10049                 save_LIBS=$LIBS
10050                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10051                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10052                 LIBS=$save_LIBS
10053                 GSSAPI_LIBS=$LIBS
10054             fi
10055         esac
10057         if test -n "$with_libpq_path"; then
10058             SYSTEM_POSTGRESQL=TRUE
10059             postgres_interface="external libpq"
10060             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10061             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10062         else
10063             SYSTEM_POSTGRESQL=
10064             postgres_interface="internal"
10065             POSTGRESQL_LIB=""
10066             POSTGRESQL_INC="%OVERRIDE_ME%"
10067             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10068         fi
10069     fi
10071     AC_MSG_CHECKING([PostgreSQL C interface])
10072     AC_MSG_RESULT([$postgres_interface])
10074     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10075         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10076         save_CFLAGS=$CFLAGS
10077         save_CPPFLAGS=$CPPFLAGS
10078         save_LIBS=$LIBS
10079         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10080         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10081         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10082         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10083             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10084         CFLAGS=$save_CFLAGS
10085         CPPFLAGS=$save_CPPFLAGS
10086         LIBS=$save_LIBS
10087     fi
10088     BUILD_POSTGRESQL_SDBC=TRUE
10089 else
10090     AC_MSG_RESULT([no])
10092 AC_SUBST(WITH_KRB5)
10093 AC_SUBST(WITH_GSSAPI)
10094 AC_SUBST(GSSAPI_LIBS)
10095 AC_SUBST(KRB5_LIBS)
10096 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10097 AC_SUBST(SYSTEM_POSTGRESQL)
10098 AC_SUBST(POSTGRESQL_INC)
10099 AC_SUBST(POSTGRESQL_LIB)
10101 dnl ===================================================================
10102 dnl Check for Firebird stuff
10103 dnl ===================================================================
10104 ENABLE_FIREBIRD_SDBC=
10105 if test "$enable_firebird_sdbc" = "yes" ; then
10106     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10108     dnl ===================================================================
10109     dnl Check for system Firebird
10110     dnl ===================================================================
10111     AC_MSG_CHECKING([which Firebird to use])
10112     if test "$with_system_firebird" = "yes"; then
10113         AC_MSG_RESULT([external])
10114         SYSTEM_FIREBIRD=TRUE
10115         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10116         if test -z "$FIREBIRDCONFIG"; then
10117             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10118             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10119                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10120             ])
10121             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10122         else
10123             AC_MSG_NOTICE([fb_config found])
10124             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10125             AC_MSG_CHECKING([for Firebird Client library])
10126             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10127             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10128             FilterLibs "${FIREBIRD_LIBS}"
10129             FIREBIRD_LIBS="${filteredlibs}"
10130         fi
10131         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10132         AC_MSG_CHECKING([Firebird version])
10133         if test -n "${FIREBIRD_VERSION}"; then
10134             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10135             if test "$FIREBIRD_MAJOR" -ge "3"; then
10136                 AC_MSG_RESULT([OK])
10137             else
10138                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10139             fi
10140         else
10141             save_CFLAGS="${CFLAGS}"
10142             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10143             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10144 #if defined(FB_API_VER) && FB_API_VER == 30
10145 int fb_api_is_30(void) { return 0; }
10146 #else
10147 #error "Wrong Firebird API version"
10148 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10149             CFLAGS="$save_CFLAGS"
10150         fi
10151         ENABLE_FIREBIRD_SDBC=TRUE
10152         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10153     elif test "$enable_database_connectivity" = no; then
10154         AC_MSG_RESULT([none])
10155     elif test "$cross_compiling" = "yes"; then
10156         AC_MSG_RESULT([none])
10157     else
10158         dnl Embedded Firebird has version 3.0
10159         dnl We need libatomic_ops for any non X86/X64 system
10160         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10161             dnl ===================================================================
10162             dnl Check for system libatomic_ops
10163             dnl ===================================================================
10164             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10165             if test "$with_system_libatomic_ops" = "yes"; then
10166                 SYSTEM_LIBATOMIC_OPS=TRUE
10167                 AC_CHECK_HEADERS(atomic_ops.h, [],
10168                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10169             else
10170                 SYSTEM_LIBATOMIC_OPS=
10171                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10172                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10173                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10174             fi
10175         fi
10177         AC_MSG_RESULT([internal])
10178         SYSTEM_FIREBIRD=
10179         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10180         FIREBIRD_LIBS="-lfbclient"
10182         if test "$with_system_libtommath" = "yes"; then
10183             SYSTEM_LIBTOMMATH=TRUE
10184             dnl check for tommath presence
10185             save_LIBS=$LIBS
10186             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10187             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10188             LIBS=$save_LIBS
10189         else
10190             SYSTEM_LIBTOMMATH=
10191             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10192             LIBTOMMATH_LIBS="-ltommath"
10193             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10194         fi
10196         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10197         ENABLE_FIREBIRD_SDBC=TRUE
10198         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10199     fi
10201 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10202 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10203 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10204 AC_SUBST(LIBATOMIC_OPS_LIBS)
10205 AC_SUBST(SYSTEM_FIREBIRD)
10206 AC_SUBST(FIREBIRD_CFLAGS)
10207 AC_SUBST(FIREBIRD_LIBS)
10208 AC_SUBST(SYSTEM_LIBTOMMATH)
10209 AC_SUBST(LIBTOMMATH_CFLAGS)
10210 AC_SUBST(LIBTOMMATH_LIBS)
10212 dnl ===================================================================
10213 dnl Check for system curl
10214 dnl ===================================================================
10215 AC_MSG_CHECKING([which libcurl to use])
10216 if test "$with_system_curl" = "auto"; then
10217     with_system_curl="$with_system_libs"
10220 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10221     AC_MSG_RESULT([external])
10222     SYSTEM_CURL=TRUE
10224     # First try PKGCONFIG and then fall back
10225     PKG_CHECK_MODULES(CURL, libcurl >= 7.63.0,, [:])
10227     if test -n "$CURL_PKG_ERRORS"; then
10228         AC_PATH_PROG(CURLCONFIG, curl-config)
10229         if test -z "$CURLCONFIG"; then
10230             AC_MSG_ERROR([curl development files not found])
10231         fi
10232         CURL_LIBS=`$CURLCONFIG --libs`
10233         FilterLibs "${CURL_LIBS}"
10234         CURL_LIBS="${filteredlibs}"
10235         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10236         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10238         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10239         case $curl_version in
10240         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10241         dnl so they need to be doubled to end up in the configure script
10242         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10243             AC_MSG_RESULT([yes])
10244             ;;
10245         *)
10246             AC_MSG_ERROR([no, you have $curl_version])
10247             ;;
10248         esac
10249     fi
10251     ENABLE_CURL=TRUE
10252 elif test "$enable_curl" = "no"; then
10253     AC_MSG_RESULT([none])
10254 else
10255     AC_MSG_RESULT([internal])
10256     SYSTEM_CURL=
10257     BUILD_TYPE="$BUILD_TYPE CURL"
10258     ENABLE_CURL=TRUE
10260 AC_SUBST(SYSTEM_CURL)
10261 AC_SUBST(CURL_CFLAGS)
10262 AC_SUBST(CURL_LIBS)
10263 AC_SUBST(ENABLE_CURL)
10265 dnl ===================================================================
10266 dnl Check for system boost
10267 dnl ===================================================================
10268 AC_MSG_CHECKING([which boost to use])
10269 if test "$with_system_boost" = "yes"; then
10270     AC_MSG_RESULT([external])
10271     SYSTEM_BOOST=TRUE
10272     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10273     AX_BOOST_DATE_TIME
10274     AX_BOOST_FILESYSTEM
10275     AX_BOOST_IOSTREAMS
10276     AX_BOOST_LOCALE
10277     AC_LANG_PUSH([C++])
10278     save_CXXFLAGS=$CXXFLAGS
10279     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10280     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10281        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10282     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10283        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10284     CXXFLAGS=$save_CXXFLAGS
10285     AC_LANG_POP([C++])
10286     # this is in m4/ax_boost_base.m4
10287     FilterLibs "${BOOST_LDFLAGS}"
10288     BOOST_LDFLAGS="${filteredlibs}"
10289 else
10290     AC_MSG_RESULT([internal])
10291     BUILD_TYPE="$BUILD_TYPE BOOST"
10292     SYSTEM_BOOST=
10293     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10294         # use warning-suppressing wrapper headers
10295         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10296     else
10297         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10298     fi
10300 AC_SUBST(SYSTEM_BOOST)
10302 dnl ===================================================================
10303 dnl Check for system mdds
10304 dnl ===================================================================
10305 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10307 dnl ===================================================================
10308 dnl Check for system cuckoo
10309 dnl ===================================================================
10310 AC_MSG_CHECKING([which cuckoo to use])
10311 if test "$with_system_cuckoo" = "yes"; then
10312     AC_MSG_RESULT([external])
10313     SYSTEM_CUCKOO=TRUE
10314     AC_LANG_PUSH([C++])
10315     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10316        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10317     AC_LANG_POP([C++])
10318 else
10319     AC_MSG_RESULT([internal])
10320     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10321     SYSTEM_CUCKOO=
10322     CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10324 AC_SUBST([CUCKOO_CFLAGS])
10325 AC_SUBST([SYSTEM_CUCKOO])
10327 dnl ===================================================================
10328 dnl Check for system glm
10329 dnl ===================================================================
10330 AC_MSG_CHECKING([which glm to use])
10331 if test "$with_system_glm" = "yes"; then
10332     AC_MSG_RESULT([external])
10333     SYSTEM_GLM=TRUE
10334     AC_LANG_PUSH([C++])
10335     AC_CHECK_HEADER([glm/glm.hpp], [],
10336        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10337     AC_LANG_POP([C++])
10338 else
10339     AC_MSG_RESULT([internal])
10340     BUILD_TYPE="$BUILD_TYPE GLM"
10341     SYSTEM_GLM=
10342     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10344 AC_SUBST([GLM_CFLAGS])
10345 AC_SUBST([SYSTEM_GLM])
10347 dnl ===================================================================
10348 dnl Check for system odbc
10349 dnl ===================================================================
10350 AC_MSG_CHECKING([which odbc headers to use])
10351 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
10352     AC_MSG_RESULT([external])
10353     SYSTEM_ODBC_HEADERS=TRUE
10355     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10356         save_CPPFLAGS=$CPPFLAGS
10357         find_winsdk
10358         PathFormat "$winsdktest"
10359         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"
10360         AC_CHECK_HEADER(sqlext.h, [],
10361             [AC_MSG_ERROR(odbc not found. install odbc)],
10362             [#include <windows.h>])
10363         CPPFLAGS=$save_CPPFLAGS
10364     else
10365         AC_CHECK_HEADER(sqlext.h, [],
10366             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10367     fi
10368 elif test "$enable_database_connectivity" = no; then
10369     AC_MSG_RESULT([none])
10370 else
10371     AC_MSG_RESULT([internal])
10372     SYSTEM_ODBC_HEADERS=
10374 AC_SUBST(SYSTEM_ODBC_HEADERS)
10376 dnl ===================================================================
10377 dnl Check for system NSS
10378 dnl ===================================================================
10379 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10380     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10381     AC_DEFINE(HAVE_FEATURE_NSS)
10382     ENABLE_NSS=TRUE
10383 elif test $_os != iOS ; then
10384     with_tls=openssl
10386 AC_SUBST(ENABLE_NSS)
10388 dnl ===================================================================
10389 dnl Enable LDAP support
10390 dnl ===================================================================
10392 if test "$test_openldap" = yes; then
10393     AC_MSG_CHECKING([whether to enable LDAP support])
10394     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10395         AC_MSG_RESULT([yes])
10396         ENABLE_LDAP=TRUE
10397     else
10398         if test "$enable_ldap" != "yes"; then
10399             AC_MSG_RESULT([no])
10400         else
10401             AC_MSG_RESULT([no (needs NSS or system openldap)])
10402         fi
10403     fi
10405 dnl ===================================================================
10406 dnl Check for system openldap
10407 dnl ===================================================================
10409     if test "$ENABLE_LDAP" = TRUE; then
10410         AC_MSG_CHECKING([which openldap library to use])
10411         if test "$with_system_openldap" = yes; then
10412             AC_MSG_RESULT([external])
10413             SYSTEM_OPENLDAP=TRUE
10414             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10415             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10416             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10417         else
10418             AC_MSG_RESULT([internal])
10419             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10420         fi
10421     fi
10424 AC_SUBST(ENABLE_LDAP)
10425 AC_SUBST(SYSTEM_OPENLDAP)
10427 dnl ===================================================================
10428 dnl Check for TLS/SSL and cryptographic implementation to use
10429 dnl ===================================================================
10430 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10431 if test -n "$with_tls"; then
10432     case $with_tls in
10433     openssl)
10434         AC_DEFINE(USE_TLS_OPENSSL)
10435         TLS=OPENSSL
10436         AC_MSG_RESULT([$TLS])
10438         if test "$enable_openssl" != "yes"; then
10439             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10440         fi
10442         # warn that OpenSSL has been selected but not all TLS code has this option
10443         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10444         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10445         ;;
10446     nss)
10447         AC_DEFINE(USE_TLS_NSS)
10448         TLS=NSS
10449         AC_MSG_RESULT([$TLS])
10450         ;;
10451     no)
10452         AC_MSG_RESULT([none])
10453         AC_MSG_WARN([Skipping TLS/SSL])
10454         ;;
10455     *)
10456         AC_MSG_RESULT([])
10457         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10458 openssl - OpenSSL
10459 nss - Mozilla's Network Security Services (NSS)
10460     ])
10461         ;;
10462     esac
10463 else
10464     # default to using NSS, it results in smaller oox lib
10465     AC_DEFINE(USE_TLS_NSS)
10466     TLS=NSS
10467     AC_MSG_RESULT([$TLS])
10469 AC_SUBST(TLS)
10471 dnl ===================================================================
10472 dnl Check for system sane
10473 dnl ===================================================================
10474 AC_MSG_CHECKING([which sane header to use])
10475 if test "$with_system_sane" = "yes"; then
10476     AC_MSG_RESULT([external])
10477     AC_CHECK_HEADER(sane/sane.h, [],
10478       [AC_MSG_ERROR(sane not found. install sane)], [])
10479 else
10480     AC_MSG_RESULT([internal])
10481     BUILD_TYPE="$BUILD_TYPE SANE"
10484 dnl ===================================================================
10485 dnl Check for system icu
10486 dnl ===================================================================
10487 SYSTEM_GENBRK=
10488 SYSTEM_GENCCODE=
10489 SYSTEM_GENCMN=
10491 ICU_MAJOR=69
10492 ICU_MINOR=1
10493 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10494 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10495 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10496 AC_MSG_CHECKING([which icu to use])
10497 if test "$with_system_icu" = "yes"; then
10498     AC_MSG_RESULT([external])
10499     SYSTEM_ICU=TRUE
10500     AC_LANG_PUSH([C++])
10501     AC_MSG_CHECKING([for unicode/rbbi.h])
10502     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10503     AC_LANG_POP([C++])
10505     if test "$cross_compiling" != "yes"; then
10506         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10507         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10508         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10509         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10510     fi
10512     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10513         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10514         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10515         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10516         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10517         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10518             AC_MSG_RESULT([yes])
10519         else
10520             AC_MSG_RESULT([no])
10521             if test "$with_system_icu_for_build" != "force"; then
10522                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10523 You can use --with-system-icu-for-build=force to use it anyway.])
10524             fi
10525         fi
10526     fi
10528     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10529         # using the system icu tools can lead to version confusion, use the
10530         # ones from the build environment when cross-compiling
10531         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10532         if test -z "$SYSTEM_GENBRK"; then
10533             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10534         fi
10535         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10536         if test -z "$SYSTEM_GENCCODE"; then
10537             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10538         fi
10539         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10540         if test -z "$SYSTEM_GENCMN"; then
10541             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10542         fi
10543         if test "$ICU_MAJOR" -ge "49"; then
10544             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10545             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10546             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10547         else
10548             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10549             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10550             ICU_RECLASSIFIED_HEBREW_LETTER=
10551         fi
10552     fi
10554     if test "$cross_compiling" = "yes"; then
10555         if test "$ICU_MAJOR" -ge "50"; then
10556             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10557             ICU_MINOR=""
10558         fi
10559     fi
10560 else
10561     AC_MSG_RESULT([internal])
10562     SYSTEM_ICU=
10563     BUILD_TYPE="$BUILD_TYPE ICU"
10564     # surprisingly set these only for "internal" (to be used by various other
10565     # external libs): the system icu-config is quite unhelpful and spits out
10566     # dozens of weird flags and also default path -I/usr/include
10567     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10568     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10570 if test "$ICU_MAJOR" -ge "59"; then
10571     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10572     # with -std=c++11 but not all external libraries can be built with that,
10573     # for those use a bit-compatible typedef uint16_t UChar; see
10574     # icu/source/common/unicode/umachine.h
10575     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10576 else
10577     ICU_UCHAR_TYPE=""
10579 AC_SUBST(SYSTEM_ICU)
10580 AC_SUBST(SYSTEM_GENBRK)
10581 AC_SUBST(SYSTEM_GENCCODE)
10582 AC_SUBST(SYSTEM_GENCMN)
10583 AC_SUBST(ICU_MAJOR)
10584 AC_SUBST(ICU_MINOR)
10585 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10586 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10587 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10588 AC_SUBST(ICU_CFLAGS)
10589 AC_SUBST(ICU_LIBS)
10590 AC_SUBST(ICU_UCHAR_TYPE)
10592 dnl ==================================================================
10593 dnl Breakpad
10594 dnl ==================================================================
10595 DEFAULT_CRASHDUMP_VALUE="true"
10596 AC_MSG_CHECKING([whether to enable breakpad])
10597 if test "$enable_breakpad" != yes; then
10598     AC_MSG_RESULT([no])
10599 else
10600     AC_MSG_RESULT([yes])
10601     ENABLE_BREAKPAD="TRUE"
10602     AC_DEFINE(ENABLE_BREAKPAD)
10603     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10604     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10606     AC_MSG_CHECKING([for disable crash dump])
10607     if test "$enable_crashdump" = no; then
10608         DEFAULT_CRASHDUMP_VALUE="false"
10609         AC_MSG_RESULT([yes])
10610     else
10611        AC_MSG_RESULT([no])
10612     fi
10614     AC_MSG_CHECKING([for crashreport config])
10615     if test "$with_symbol_config" = "no"; then
10616         BREAKPAD_SYMBOL_CONFIG="invalid"
10617         AC_MSG_RESULT([no])
10618     else
10619         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10620         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10621         AC_MSG_RESULT([yes])
10622     fi
10623     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10625 AC_SUBST(ENABLE_BREAKPAD)
10626 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10628 dnl ==================================================================
10629 dnl libfuzzer
10630 dnl ==================================================================
10631 AC_MSG_CHECKING([whether to enable fuzzers])
10632 if test "$enable_fuzzers" != yes; then
10633     AC_MSG_RESULT([no])
10634 else
10635     if test -z $LIB_FUZZING_ENGINE; then
10636       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10637     fi
10638     AC_MSG_RESULT([yes])
10639     ENABLE_FUZZERS="TRUE"
10640     AC_DEFINE([ENABLE_FUZZERS],1)
10641     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10643 AC_SUBST(LIB_FUZZING_ENGINE)
10644 AC_SUBST(ENABLE_FUZZERS)
10646 dnl ===================================================================
10647 dnl Orcus
10648 dnl ===================================================================
10649 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
10650 if test "$with_system_orcus" != "yes"; then
10651     if test "$SYSTEM_BOOST" = "TRUE"; then
10652         dnl Link with Boost.System
10653         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10654         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10655         dnl in documentation has no effect.
10656         AX_BOOST_SYSTEM
10657     fi
10659 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10660 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10661 AC_SUBST([BOOST_SYSTEM_LIB])
10662 AC_SUBST(SYSTEM_LIBORCUS)
10664 dnl ===================================================================
10665 dnl HarfBuzz
10666 dnl ===================================================================
10667 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10668                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10669                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10671 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10672                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10673                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10675 if test "$COM" = "MSC"; then # override the above
10676     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10677     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10680 if test "$with_system_harfbuzz" = "yes"; then
10681     if test "$with_system_graphite" = "no"; then
10682         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10683     fi
10684     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10685     save_LIBS="$LIBS"
10686     save_CFLAGS="$CFLAGS"
10687     LIBS="$LIBS $HARFBUZZ_LIBS"
10688     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10689     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10690     LIBS="$save_LIBS"
10691     CFLAGS="$save_CFLAGS"
10692 else
10693     if test "$with_system_graphite" = "yes"; then
10694         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10695     fi
10698 if test "$USING_X11" = TRUE; then
10699     AC_PATH_X
10700     AC_PATH_XTRA
10701     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10703     if test -z "$x_includes"; then
10704         x_includes="default_x_includes"
10705     fi
10706     if test -z "$x_libraries"; then
10707         x_libraries="default_x_libraries"
10708     fi
10709     CFLAGS="$CFLAGS $X_CFLAGS"
10710     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10711     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10712 else
10713     x_includes="no_x_includes"
10714     x_libraries="no_x_libraries"
10717 if test "$USING_X11" = TRUE; then
10718     dnl ===================================================================
10719     dnl Check for extension headers
10720     dnl ===================================================================
10721     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10722      [#include <X11/extensions/shape.h>])
10724     # vcl needs ICE and SM
10725     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10726     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10727         [AC_MSG_ERROR(ICE library not found)])
10728     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10729     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10730         [AC_MSG_ERROR(SM library not found)])
10733 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10734     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10735     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10738 dnl ===================================================================
10739 dnl Check for system Xrender
10740 dnl ===================================================================
10741 AC_MSG_CHECKING([whether to use Xrender])
10742 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10743     AC_MSG_RESULT([yes])
10744     PKG_CHECK_MODULES(XRENDER, xrender)
10745     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10746     FilterLibs "${XRENDER_LIBS}"
10747     XRENDER_LIBS="${filteredlibs}"
10748     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10749       [AC_MSG_ERROR(libXrender not found or functional)], [])
10750     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10751       [AC_MSG_ERROR(Xrender not found. install X)], [])
10752 else
10753     AC_MSG_RESULT([no])
10755 AC_SUBST(XRENDER_CFLAGS)
10756 AC_SUBST(XRENDER_LIBS)
10758 dnl ===================================================================
10759 dnl Check for XRandr
10760 dnl ===================================================================
10761 AC_MSG_CHECKING([whether to enable RandR support])
10762 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10763     AC_MSG_RESULT([yes])
10764     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10765     if test "$ENABLE_RANDR" != "TRUE"; then
10766         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10767                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10768         XRANDR_CFLAGS=" "
10769         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10770           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10771         XRANDR_LIBS="-lXrandr "
10772         ENABLE_RANDR="TRUE"
10773     fi
10774     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10775     FilterLibs "${XRANDR_LIBS}"
10776     XRANDR_LIBS="${filteredlibs}"
10777 else
10778     ENABLE_RANDR=""
10779     AC_MSG_RESULT([no])
10781 AC_SUBST(XRANDR_CFLAGS)
10782 AC_SUBST(XRANDR_LIBS)
10783 AC_SUBST(ENABLE_RANDR)
10785 if test "$test_webdav" = yes; then
10786     if test -z "$with_webdav"; then
10787         WITH_WEBDAV=neon
10788         if test "$enable_mpl_subset" = yes; then
10789             WITH_WEBDAV=serf
10790         fi
10791     else
10792         WITH_WEBDAV="$with_webdav"
10793     fi
10796 AC_MSG_CHECKING([for webdav library])
10797 case "$WITH_WEBDAV" in
10798 curl)
10799     AC_MSG_RESULT([curl])
10800     # curl is already mandatory (almost) and checked elsewhere
10801     if test "$enable_curl" = "no"; then
10802         AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10803     fi
10804     ;;
10805 serf)
10806     AC_MSG_RESULT([serf])
10807     # Check for system apr-util
10808     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10809                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10810                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10811     if test "$COM" = "MSC"; then
10812         APR_LIB_DIR="LibR"
10813         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10814         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10815     fi
10817     # Check for system serf
10818     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10819     ;;
10820 neon)
10821     AC_MSG_RESULT([neon])
10822     # Check for system neon
10823     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10824     if test "$with_system_neon" = "yes"; then
10825         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10826     else
10827         NEON_VERSION=0312
10828     fi
10829     AC_SUBST(NEON_VERSION)
10830     ;;
10832     AC_MSG_RESULT([none, disabled])
10833     WITH_WEBDAV=""
10834     ;;
10835 esac
10836 AC_SUBST(WITH_WEBDAV)
10838 dnl ===================================================================
10839 dnl Check for disabling cve_tests
10840 dnl ===================================================================
10841 AC_MSG_CHECKING([whether to execute CVE tests])
10842 # If not explicitly enabled or disabled, default
10843 if test -z "$enable_cve_tests"; then
10844     case "$OS" in
10845     WNT)
10846         # Default cves off for Windows with its wild and wonderful
10847         # variety of AV software kicking in and panicking
10848         enable_cve_tests=no
10849         ;;
10850     *)
10851         # otherwise yes
10852         enable_cve_tests=yes
10853         ;;
10854     esac
10856 if test "$enable_cve_tests" = "no"; then
10857     AC_MSG_RESULT([no])
10858     DISABLE_CVE_TESTS=TRUE
10859     AC_SUBST(DISABLE_CVE_TESTS)
10860 else
10861     AC_MSG_RESULT([yes])
10864 dnl ===================================================================
10865 dnl Check for enabling chart XShape tests
10866 dnl ===================================================================
10867 AC_MSG_CHECKING([whether to execute chart XShape tests])
10868 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10869     AC_MSG_RESULT([yes])
10870     ENABLE_CHART_TESTS=TRUE
10871     AC_SUBST(ENABLE_CHART_TESTS)
10872 else
10873     AC_MSG_RESULT([no])
10876 dnl ===================================================================
10877 dnl Check for system openssl
10878 dnl ===================================================================
10879 ENABLE_OPENSSL=
10880 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10881 if test "$enable_openssl" = "yes"; then
10882     AC_MSG_RESULT([no])
10883     ENABLE_OPENSSL=TRUE
10884     if test "$_os" = Darwin ; then
10885         # OpenSSL is deprecated when building for 10.7 or later.
10886         #
10887         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10888         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10890         with_system_openssl=no
10891         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10892     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10893             && test "$with_system_openssl" != "no"; then
10894         with_system_openssl=yes
10895         SYSTEM_OPENSSL=TRUE
10896         OPENSSL_CFLAGS=
10897         OPENSSL_LIBS="-lssl -lcrypto"
10898     else
10899         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10900     fi
10901     if test "$with_system_openssl" = "yes"; then
10902         AC_MSG_CHECKING([whether openssl supports SHA512])
10903         AC_LANG_PUSH([C])
10904         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10905             SHA512_CTX context;
10906 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10907         AC_LANG_POP(C)
10908     fi
10909 else
10910     AC_MSG_RESULT([yes])
10912     # warn that although OpenSSL is disabled, system libraries may depend on it
10913     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10914     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10917 AC_SUBST([ENABLE_OPENSSL])
10919 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10920     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10921         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10922         enable_cipher_openssl_backend=no
10923     else
10924         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10925     fi
10927 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10928 ENABLE_CIPHER_OPENSSL_BACKEND=
10929 if test "$enable_cipher_openssl_backend" = yes; then
10930     AC_MSG_RESULT([yes])
10931     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10932 else
10933     AC_MSG_RESULT([no])
10935 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10937 dnl ===================================================================
10938 dnl Select the crypto backends used by LO
10939 dnl ===================================================================
10941 if test "$build_crypto" = yes; then
10942     if test "$OS" = WNT; then
10943         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10944         AC_DEFINE([USE_CRYPTO_MSCAPI])
10945     elif test "$ENABLE_NSS" = TRUE; then
10946         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10947         AC_DEFINE([USE_CRYPTO_NSS])
10948     fi
10951 dnl ===================================================================
10952 dnl Check for building gnutls
10953 dnl ===================================================================
10954 AC_MSG_CHECKING([whether to use gnutls])
10955 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10956     AC_MSG_RESULT([yes])
10957     AM_PATH_LIBGCRYPT()
10958     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10959         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10960                       available in the system to use as replacement.]]))
10961     FilterLibs "${LIBGCRYPT_LIBS}"
10962     LIBGCRYPT_LIBS="${filteredlibs}"
10963 else
10964     AC_MSG_RESULT([no])
10967 AC_SUBST([LIBGCRYPT_CFLAGS])
10968 AC_SUBST([LIBGCRYPT_LIBS])
10970 dnl ===================================================================
10971 dnl Check for system redland
10972 dnl ===================================================================
10973 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10974 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10975 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10976 if test "$with_system_redland" = "yes"; then
10977     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10978             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10979 else
10980     RAPTOR_MAJOR="0"
10981     RASQAL_MAJOR="3"
10982     REDLAND_MAJOR="0"
10984 AC_SUBST(RAPTOR_MAJOR)
10985 AC_SUBST(RASQAL_MAJOR)
10986 AC_SUBST(REDLAND_MAJOR)
10988 dnl ===================================================================
10989 dnl Check for system hunspell
10990 dnl ===================================================================
10991 AC_MSG_CHECKING([which libhunspell to use])
10992 if test "$with_system_hunspell" = "yes"; then
10993     AC_MSG_RESULT([external])
10994     SYSTEM_HUNSPELL=TRUE
10995     AC_LANG_PUSH([C++])
10996     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10997     if test "$HUNSPELL_PC" != "TRUE"; then
10998         AC_CHECK_HEADER(hunspell.hxx, [],
10999             [
11000             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11001             [AC_MSG_ERROR(hunspell headers not found.)], [])
11002             ], [])
11003         AC_CHECK_LIB([hunspell], [main], [:],
11004            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11005         HUNSPELL_LIBS=-lhunspell
11006     fi
11007     AC_LANG_POP([C++])
11008     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11009     FilterLibs "${HUNSPELL_LIBS}"
11010     HUNSPELL_LIBS="${filteredlibs}"
11011 else
11012     AC_MSG_RESULT([internal])
11013     SYSTEM_HUNSPELL=
11014     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11015     if test "$COM" = "MSC"; then
11016         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11017     else
11018         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11019     fi
11020     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11022 AC_SUBST(SYSTEM_HUNSPELL)
11023 AC_SUBST(HUNSPELL_CFLAGS)
11024 AC_SUBST(HUNSPELL_LIBS)
11026 dnl ===================================================================
11027 dnl Check for system zxing
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([whether to use zxing])
11030 if test "$enable_zxing" = "no"; then
11031     AC_MSG_RESULT([no])
11032     ENABLE_ZXING=
11033     SYSTEM_ZXING=
11034 else
11035     AC_MSG_RESULT([yes])
11036     ENABLE_ZXING=TRUE
11037     AC_MSG_CHECKING([which libzxing to use])
11038     if test "$with_system_zxing" = "yes"; then
11039         AC_MSG_RESULT([external])
11040         SYSTEM_ZXING=TRUE
11041         AC_LANG_PUSH([C++])
11042         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11043             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11044         ZXING_CFLAGS=-I/usr/include/ZXing
11045         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11046             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11047             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11048         AC_LANG_POP([C++])
11049         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11050         FilterLibs "${ZXING_LIBS}"
11051         ZXING_LIBS="${filteredlibs}"
11052     else
11053         AC_MSG_RESULT([internal])
11054         SYSTEM_ZXING=
11055         BUILD_TYPE="$BUILD_TYPE ZXING"
11056     fi
11057     if test "$ENABLE_ZXING" = TRUE; then
11058         AC_DEFINE(ENABLE_ZXING)
11059     fi
11061 AC_SUBST(SYSTEM_ZXING)
11062 AC_SUBST(ENABLE_ZXING)
11063 AC_SUBST(ZXING_CFLAGS)
11064 AC_SUBST(ZXING_LIBS)
11066 dnl ===================================================================
11067 dnl Check for system box2d
11068 dnl ===================================================================
11069 AC_MSG_CHECKING([which box2d to use])
11070 if test "$with_system_box2d" = "yes"; then
11071     AC_MSG_RESULT([external])
11072     SYSTEM_BOX2D=TRUE
11073     AC_LANG_PUSH([C++])
11074     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11075         [BOX2D_H_FOUND='FALSE'])
11076     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11077         _BOX2D_LIB=box2d
11078         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11079     else
11080         # fail this. there's no other alternative to check when we are here.
11081         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11082             [AC_MSG_ERROR(box2d headers not found.)])
11083         _BOX2D_LIB=Box2D
11084         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11085     fi
11086     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11087         [ AC_MSG_ERROR(box2d library not found.) ], [])
11088     BOX2D_LIBS=-l$_BOX2D_LIB
11089     AC_LANG_POP([C++])
11090     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11091     FilterLibs "${BOX2D_LIBS}"
11092     BOX2D_LIBS="${filteredlibs}"
11093 else
11094     AC_MSG_RESULT([internal])
11095     SYSTEM_BOX2D=
11096     BUILD_TYPE="$BUILD_TYPE BOX2D"
11098 AC_SUBST(SYSTEM_BOX2D)
11099 AC_SUBST(BOX2D_CFLAGS)
11100 AC_SUBST(BOX2D_LIBS)
11102 dnl ===================================================================
11103 dnl Checking for altlinuxhyph
11104 dnl ===================================================================
11105 AC_MSG_CHECKING([which altlinuxhyph to use])
11106 if test "$with_system_altlinuxhyph" = "yes"; then
11107     AC_MSG_RESULT([external])
11108     SYSTEM_HYPH=TRUE
11109     AC_CHECK_HEADER(hyphen.h, [],
11110        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11111     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11112        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11113        [#include <hyphen.h>])
11114     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11115         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11116     if test -z "$HYPHEN_LIB"; then
11117         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11118            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11119     fi
11120     if test -z "$HYPHEN_LIB"; then
11121         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11122            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11123     fi
11124 else
11125     AC_MSG_RESULT([internal])
11126     SYSTEM_HYPH=
11127     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11128     if test "$COM" = "MSC"; then
11129         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11130     else
11131         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11132     fi
11134 AC_SUBST(SYSTEM_HYPH)
11135 AC_SUBST(HYPHEN_LIB)
11137 dnl ===================================================================
11138 dnl Checking for mythes
11139 dnl ===================================================================
11140 AC_MSG_CHECKING([which mythes to use])
11141 if test "$with_system_mythes" = "yes"; then
11142     AC_MSG_RESULT([external])
11143     SYSTEM_MYTHES=TRUE
11144     AC_LANG_PUSH([C++])
11145     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11146     if test "$MYTHES_PKGCONFIG" = "no"; then
11147         AC_CHECK_HEADER(mythes.hxx, [],
11148             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11149         AC_CHECK_LIB([mythes-1.2], [main], [:],
11150             [ MYTHES_FOUND=no], [])
11151     if test "$MYTHES_FOUND" = "no"; then
11152         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11153                 [ MYTHES_FOUND=no], [])
11154     fi
11155     if test "$MYTHES_FOUND" = "no"; then
11156         AC_MSG_ERROR([mythes library not found!.])
11157     fi
11158     fi
11159     AC_LANG_POP([C++])
11160     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11161     FilterLibs "${MYTHES_LIBS}"
11162     MYTHES_LIBS="${filteredlibs}"
11163 else
11164     AC_MSG_RESULT([internal])
11165     SYSTEM_MYTHES=
11166     BUILD_TYPE="$BUILD_TYPE MYTHES"
11167     if test "$COM" = "MSC"; then
11168         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11169     else
11170         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11171     fi
11173 AC_SUBST(SYSTEM_MYTHES)
11174 AC_SUBST(MYTHES_CFLAGS)
11175 AC_SUBST(MYTHES_LIBS)
11177 dnl ===================================================================
11178 dnl How should we build the linear programming solver ?
11179 dnl ===================================================================
11181 ENABLE_COINMP=
11182 AC_MSG_CHECKING([whether to build with CoinMP])
11183 if test "$enable_coinmp" != "no"; then
11184     ENABLE_COINMP=TRUE
11185     AC_MSG_RESULT([yes])
11186     if test "$with_system_coinmp" = "yes"; then
11187         SYSTEM_COINMP=TRUE
11188         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11189         FilterLibs "${COINMP_LIBS}"
11190         COINMP_LIBS="${filteredlibs}"
11191     else
11192         BUILD_TYPE="$BUILD_TYPE COINMP"
11193     fi
11194 else
11195     AC_MSG_RESULT([no])
11197 AC_SUBST(ENABLE_COINMP)
11198 AC_SUBST(SYSTEM_COINMP)
11199 AC_SUBST(COINMP_CFLAGS)
11200 AC_SUBST(COINMP_LIBS)
11202 ENABLE_LPSOLVE=
11203 AC_MSG_CHECKING([whether to build with lpsolve])
11204 if test "$enable_lpsolve" != "no"; then
11205     ENABLE_LPSOLVE=TRUE
11206     AC_MSG_RESULT([yes])
11207 else
11208     AC_MSG_RESULT([no])
11210 AC_SUBST(ENABLE_LPSOLVE)
11212 if test "$ENABLE_LPSOLVE" = TRUE; then
11213     AC_MSG_CHECKING([which lpsolve to use])
11214     if test "$with_system_lpsolve" = "yes"; then
11215         AC_MSG_RESULT([external])
11216         SYSTEM_LPSOLVE=TRUE
11217         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11218            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11219         save_LIBS=$LIBS
11220         # some systems need this. Like Ubuntu...
11221         AC_CHECK_LIB(m, floor)
11222         AC_CHECK_LIB(dl, dlopen)
11223         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11224             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11225         LIBS=$save_LIBS
11226     else
11227         AC_MSG_RESULT([internal])
11228         SYSTEM_LPSOLVE=
11229         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11230     fi
11232 AC_SUBST(SYSTEM_LPSOLVE)
11234 dnl ===================================================================
11235 dnl Checking for libexttextcat
11236 dnl ===================================================================
11237 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11238 if test "$with_system_libexttextcat" = "yes"; then
11239     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11241 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11243 dnl ===================================================================
11244 dnl Checking for libnumbertext
11245 dnl ===================================================================
11246 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11247 if test "$with_system_libnumbertext" = "yes"; then
11248     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11249     SYSTEM_LIBNUMBERTEXT=YES
11250 else
11251     SYSTEM_LIBNUMBERTEXT=
11252     AC_LANG_PUSH([C++])
11253     save_CPPFLAGS=$CPPFLAGS
11254     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11255     AC_CHECK_HEADERS([codecvt regex])
11256     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11257             [ LIBNUMBERTEXT_CFLAGS=''
11258               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11259                            Enable libnumbertext fallback (missing number to number name conversion).])
11260             ])
11261     CPPFLAGS=$save_CPPFLAGS
11262     AC_LANG_POP([C++])
11264 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11265 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11266 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11268 dnl ***************************************
11269 dnl testing libc version for Linux...
11270 dnl ***************************************
11271 if test "$_os" = "Linux"; then
11272     AC_MSG_CHECKING([whether the libc is recent enough])
11273     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11274     #include <features.h>
11275     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11276     #error glibc >= 2.1 is required
11277     #endif
11278     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11281 dnl =========================================
11282 dnl Check for uuidgen
11283 dnl =========================================
11284 if test "$_os" = "WINNT"; then
11285     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11286     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11287     UUIDGEN=uuidgen.exe
11288     AC_SUBST(UUIDGEN)
11289 else
11290     AC_PATH_PROG([UUIDGEN], [uuidgen])
11291     if test -z "$UUIDGEN"; then
11292         AC_MSG_WARN([uuid is needed for building installation sets])
11293     fi
11296 dnl ***************************************
11297 dnl Checking for bison and flex
11298 dnl ***************************************
11299 AC_PATH_PROG(BISON, bison)
11300 if test -z "$BISON"; then
11301     AC_MSG_ERROR([no bison found in \$PATH, install it])
11302 else
11303     AC_MSG_CHECKING([the bison version])
11304     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11305     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11306     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11307     dnl cause
11308     dnl
11309     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]
11310     dnl   typedef union YYSTYPE
11311     dnl           ~~~~~~^~~~~~~
11312     dnl
11313     dnl while at least 3.4.1 is know to be good:
11314     if test "$COMPILER_PLUGINS" = TRUE; then
11315         if test "$_bison_longver" -lt 2004; then
11316             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11317         fi
11318     else
11319         if test "$_bison_longver" -lt 2000; then
11320             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11321         fi
11322     fi
11324 AC_SUBST([BISON])
11326 AC_PATH_PROG(FLEX, flex)
11327 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11328     FLEX=`cygpath -m $FLEX`
11330 if test -z "$FLEX"; then
11331     AC_MSG_ERROR([no flex found in \$PATH, install it])
11332 else
11333     AC_MSG_CHECKING([the flex version])
11334     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11335     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11336         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11337     fi
11339 AC_SUBST([FLEX])
11340 dnl ***************************************
11341 dnl Checking for patch
11342 dnl ***************************************
11343 AC_PATH_PROG(PATCH, patch)
11344 if test -z "$PATCH"; then
11345     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11348 dnl On Solaris or macOS, check if --with-gnu-patch was used
11349 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11350     if test -z "$with_gnu_patch"; then
11351         GNUPATCH=$PATCH
11352     else
11353         if test -x "$with_gnu_patch"; then
11354             GNUPATCH=$with_gnu_patch
11355         else
11356             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11357         fi
11358     fi
11360     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11361     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11362         AC_MSG_RESULT([yes])
11363     else
11364         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11365     fi
11366 else
11367     GNUPATCH=$PATCH
11370 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11371     GNUPATCH=`cygpath -m $GNUPATCH`
11374 dnl We also need to check for --with-gnu-cp
11376 if test -z "$with_gnu_cp"; then
11377     # check the place where the good stuff is hidden on Solaris...
11378     if test -x /usr/gnu/bin/cp; then
11379         GNUCP=/usr/gnu/bin/cp
11380     else
11381         AC_PATH_PROGS(GNUCP, gnucp cp)
11382     fi
11383     if test -z $GNUCP; then
11384         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11385     fi
11386 else
11387     if test -x "$with_gnu_cp"; then
11388         GNUCP=$with_gnu_cp
11389     else
11390         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11391     fi
11394 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11395     GNUCP=`cygpath -m $GNUCP`
11398 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11399 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11400     AC_MSG_RESULT([yes])
11401 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11402     AC_MSG_RESULT([yes])
11403 else
11404     case "$build_os" in
11405     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11406         x_GNUCP=[\#]
11407         GNUCP=''
11408         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11409         ;;
11410     *)
11411         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11412         ;;
11413     esac
11416 AC_SUBST(GNUPATCH)
11417 AC_SUBST(GNUCP)
11418 AC_SUBST(x_GNUCP)
11420 dnl ***************************************
11421 dnl testing assembler path
11422 dnl ***************************************
11423 ML_EXE=""
11424 if test "$_os" = "WINNT"; then
11425     case "$WIN_HOST_ARCH" in
11426     x86) assembler=ml.exe ;;
11427     x64) assembler=ml64.exe ;;
11428     arm64) assembler=armasm64.exe ;;
11429     esac
11431     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11432     if test -f "$MSVC_HOST_PATH/$assembler"; then
11433         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11434         AC_MSG_RESULT([$ML_EXE])
11435     else
11436         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11437     fi
11440 AC_SUBST(ML_EXE)
11442 dnl ===================================================================
11443 dnl We need zip and unzip
11444 dnl ===================================================================
11445 AC_PATH_PROG(ZIP, zip)
11446 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11447 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11448     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],,)
11451 AC_PATH_PROG(UNZIP, unzip)
11452 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11454 dnl ===================================================================
11455 dnl Zip must be a specific type for different build types.
11456 dnl ===================================================================
11457 if test $build_os = cygwin; then
11458     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11459         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11460     fi
11463 dnl ===================================================================
11464 dnl We need touch with -h option support.
11465 dnl ===================================================================
11466 AC_PATH_PROG(TOUCH, touch)
11467 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11468 touch "$WARNINGS_FILE"
11469 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11470     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],,)
11473 dnl ===================================================================
11474 dnl Check for system epoxy
11475 dnl ===================================================================
11476 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11478 dnl ===================================================================
11479 dnl Set vcl option: coordinate device in double or sal_Int32
11480 dnl ===================================================================
11482 dnl disabled for now, we don't want subtle differences between OSs
11483 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11484 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11485 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11486 dnl     AC_MSG_RESULT([double])
11487 dnl else
11488 dnl     AC_MSG_RESULT([sal_Int32])
11489 dnl fi
11491 dnl ===================================================================
11492 dnl Show which vclplugs will be built.
11493 dnl ===================================================================
11494 R=""
11495 if test "$USING_X11" != TRUE; then
11496     enable_gtk3=no
11499 ENABLE_GTK3=""
11500 if test "x$enable_gtk3" = "xyes"; then
11501     ENABLE_GTK3="TRUE"
11502     AC_DEFINE(ENABLE_GTK3)
11503     R="$R gtk3"
11505 AC_SUBST(ENABLE_GTK3)
11507 ENABLE_GTK3_KDE5=""
11508 if test "x$enable_gtk3_kde5" = "xyes"; then
11509     ENABLE_GTK3_KDE5="TRUE"
11510     AC_DEFINE(ENABLE_GTK3_KDE5)
11511     R="$R gtk3_kde5"
11513 AC_SUBST(ENABLE_GTK3_KDE5)
11515 ENABLE_GTK4=""
11516 if test "x$enable_gtk4" = "xyes"; then
11517     ENABLE_GTK4="TRUE"
11518     AC_DEFINE(ENABLE_GTK4)
11519     R="$R gtk4"
11521 AC_SUBST(ENABLE_GTK4)
11523 ENABLE_QT5=""
11524 if test "x$enable_qt5" = "xyes"; then
11525     ENABLE_QT5="TRUE"
11526     AC_DEFINE(ENABLE_QT5)
11527     R="$R qt5"
11529 AC_SUBST(ENABLE_QT5)
11531 ENABLE_QT6=""
11532 if test "x$enable_qt6" = "xyes"; then
11533     ENABLE_QT6="TRUE"
11534     AC_DEFINE(ENABLE_QT6)
11535     R="$R qt6"
11537 AC_SUBST(ENABLE_QT6)
11540 ENABLE_KF5=""
11541 if test "x$enable_kf5" = "xyes"; then
11542     ENABLE_KF5="TRUE"
11543     AC_DEFINE(ENABLE_KF5)
11544     R="$R kf5"
11546 AC_SUBST(ENABLE_KF5)
11548 if test "x$USING_X11" = "xyes"; then
11549     R="$R gen"
11552 if test "$_os" = "WINNT"; then
11553     R="$R win"
11554 elif test "$_os" = "Darwin"; then
11555     R="$R osx"
11556 elif test "$_os" = "iOS"; then
11557     R="ios"
11558 elif test "$_os" = Android; then
11559     R="android"
11562 build_vcl_plugins="$R"
11563 if test -z "$build_vcl_plugins"; then
11564     build_vcl_plugins=" none"
11566 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11567 VCL_PLUGIN_INFO=$R
11568 AC_SUBST([VCL_PLUGIN_INFO])
11570 dnl ===================================================================
11571 dnl Check for GTK libraries
11572 dnl ===================================================================
11574 GTK3_CFLAGS=""
11575 GTK3_LIBS=""
11576 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11577     if test "$with_system_cairo" = no; then
11578         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11579     fi
11580     : ${with_system_cairo:=yes}
11581     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)
11582     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11583     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11584     FilterLibs "${GTK3_LIBS}"
11585     GTK3_LIBS="${filteredlibs}"
11587     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11588     if test "$with_system_epoxy" != "yes"; then
11589         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11590         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11591                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11592     fi
11594 AC_SUBST(GTK3_LIBS)
11595 AC_SUBST(GTK3_CFLAGS)
11597 GTK4_CFLAGS=""
11598 GTK4_LIBS=""
11599 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11600     if test "$with_system_cairo" = no; then
11601         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11602     fi
11603     : ${with_system_cairo:=yes}
11604     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11605     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11606     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11607     FilterLibs "${GTK4_LIBS}"
11608     GTK4_LIBS="${filteredlibs}"
11610     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11611     if test "$with_system_epoxy" != "yes"; then
11612         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11613         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11614                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11615     fi
11617 AC_SUBST(GTK4_LIBS)
11618 AC_SUBST(GTK4_CFLAGS)
11620 if test "$enable_introspection" = yes; then
11621     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11622         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11623     else
11624         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11625     fi
11628 dnl ===================================================================
11629 dnl check for dbus support
11630 dnl ===================================================================
11631 ENABLE_DBUS=""
11632 DBUS_CFLAGS=""
11633 DBUS_LIBS=""
11634 DBUS_GLIB_CFLAGS=""
11635 DBUS_GLIB_LIBS=""
11636 DBUS_HAVE_GLIB=""
11638 if test "$enable_dbus" = "no"; then
11639     test_dbus=no
11642 AC_MSG_CHECKING([whether to enable DBUS support])
11643 if test "$test_dbus" = "yes"; then
11644     ENABLE_DBUS="TRUE"
11645     AC_MSG_RESULT([yes])
11646     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11647     AC_DEFINE(ENABLE_DBUS)
11648     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11649     FilterLibs "${DBUS_LIBS}"
11650     DBUS_LIBS="${filteredlibs}"
11652     # Glib is needed for BluetoothServer
11653     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11654     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11655         [
11656             DBUS_HAVE_GLIB="TRUE"
11657             AC_DEFINE(DBUS_HAVE_GLIB,1)
11658         ],
11659         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11660     )
11661 else
11662     AC_MSG_RESULT([no])
11665 AC_SUBST(ENABLE_DBUS)
11666 AC_SUBST(DBUS_CFLAGS)
11667 AC_SUBST(DBUS_LIBS)
11668 AC_SUBST(DBUS_GLIB_CFLAGS)
11669 AC_SUBST(DBUS_GLIB_LIBS)
11670 AC_SUBST(DBUS_HAVE_GLIB)
11672 AC_MSG_CHECKING([whether to enable Impress remote control])
11673 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11674     AC_MSG_RESULT([yes])
11675     ENABLE_SDREMOTE=TRUE
11676     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11678     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11679         # The Bluetooth code doesn't compile with macOS SDK 10.15
11680         if test "$enable_sdremote_bluetooth" = yes; then
11681             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11682         fi
11683         enable_sdremote_bluetooth=no
11684     fi
11685     # If not explicitly enabled or disabled, default
11686     if test -z "$enable_sdremote_bluetooth"; then
11687         case "$OS" in
11688         LINUX|MACOSX|WNT)
11689             # Default to yes for these
11690             enable_sdremote_bluetooth=yes
11691             ;;
11692         *)
11693             # otherwise no
11694             enable_sdremote_bluetooth=no
11695             ;;
11696         esac
11697     fi
11698     # $enable_sdremote_bluetooth is guaranteed non-empty now
11700     if test "$enable_sdremote_bluetooth" != "no"; then
11701         if test "$OS" = "LINUX"; then
11702             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11703                 AC_MSG_RESULT([yes])
11704                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11705                 dnl ===================================================================
11706                 dnl Check for system bluez
11707                 dnl ===================================================================
11708                 AC_MSG_CHECKING([which Bluetooth header to use])
11709                 if test "$with_system_bluez" = "yes"; then
11710                     AC_MSG_RESULT([external])
11711                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11712                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11713                     SYSTEM_BLUEZ=TRUE
11714                 else
11715                     AC_MSG_RESULT([internal])
11716                     SYSTEM_BLUEZ=
11717                 fi
11718             else
11719                 AC_MSG_RESULT([no, dbus disabled])
11720                 ENABLE_SDREMOTE_BLUETOOTH=
11721                 SYSTEM_BLUEZ=
11722             fi
11723         else
11724             AC_MSG_RESULT([yes])
11725             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11726             SYSTEM_BLUEZ=
11727         fi
11728     else
11729         AC_MSG_RESULT([no])
11730         ENABLE_SDREMOTE_BLUETOOTH=
11731         SYSTEM_BLUEZ=
11732     fi
11733 else
11734     ENABLE_SDREMOTE=
11735     SYSTEM_BLUEZ=
11736     AC_MSG_RESULT([no])
11738 AC_SUBST(ENABLE_SDREMOTE)
11739 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11740 AC_SUBST(SYSTEM_BLUEZ)
11742 dnl ===================================================================
11743 dnl Check whether to enable GIO support
11744 dnl ===================================================================
11745 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11746     AC_MSG_CHECKING([whether to enable GIO support])
11747     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11748         dnl Need at least 2.26 for the dbus support.
11749         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11750                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11751         if test "$ENABLE_GIO" = "TRUE"; then
11752             AC_DEFINE(ENABLE_GIO)
11753             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11754             FilterLibs "${GIO_LIBS}"
11755             GIO_LIBS="${filteredlibs}"
11756         fi
11757     else
11758         AC_MSG_RESULT([no])
11759     fi
11761 AC_SUBST(ENABLE_GIO)
11762 AC_SUBST(GIO_CFLAGS)
11763 AC_SUBST(GIO_LIBS)
11766 dnl ===================================================================
11768 SPLIT_APP_MODULES=""
11769 if test "$enable_split_app_modules" = "yes"; then
11770     SPLIT_APP_MODULES="TRUE"
11772 AC_SUBST(SPLIT_APP_MODULES)
11774 SPLIT_OPT_FEATURES=""
11775 if test "$enable_split_opt_features" = "yes"; then
11776     SPLIT_OPT_FEATURES="TRUE"
11778 AC_SUBST(SPLIT_OPT_FEATURES)
11780 dnl ===================================================================
11781 dnl Check whether the GStreamer libraries are available.
11782 dnl ===================================================================
11784 ENABLE_GSTREAMER_1_0=""
11786 if test "$test_gstreamer_1_0" = yes; then
11788     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11789     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11790         ENABLE_GSTREAMER_1_0="TRUE"
11791         AC_MSG_RESULT([yes])
11792         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11793         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11794         FilterLibs "${GSTREAMER_1_0_LIBS}"
11795         GSTREAMER_1_0_LIBS="${filteredlibs}"
11796         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11797     else
11798         AC_MSG_RESULT([no])
11799     fi
11801 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11802 AC_SUBST(GSTREAMER_1_0_LIBS)
11803 AC_SUBST(ENABLE_GSTREAMER_1_0)
11805 ENABLE_OPENGL_TRANSITIONS=
11806 ENABLE_OPENGL_CANVAS=
11807 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11808    : # disable
11809 elif test "$_os" = "Darwin"; then
11810     # We use frameworks on macOS, no need for detail checks
11811     ENABLE_OPENGL_TRANSITIONS=TRUE
11812     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11813     ENABLE_OPENGL_CANVAS=TRUE
11814 elif test $_os = WINNT; then
11815     ENABLE_OPENGL_TRANSITIONS=TRUE
11816     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11817     ENABLE_OPENGL_CANVAS=TRUE
11818 else
11819     if test "$USING_X11" = TRUE; then
11820         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11821         ENABLE_OPENGL_TRANSITIONS=TRUE
11822         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11823         ENABLE_OPENGL_CANVAS=TRUE
11824     fi
11827 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11828 AC_SUBST(ENABLE_OPENGL_CANVAS)
11830 dnl =================================================
11831 dnl Check whether to build with OpenCL support.
11832 dnl =================================================
11834 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11835     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11836     # platform (optional at run-time, used through clew).
11837     BUILD_TYPE="$BUILD_TYPE OPENCL"
11838     AC_DEFINE(HAVE_FEATURE_OPENCL)
11841 dnl =================================================
11842 dnl Check whether to build with dconf support.
11843 dnl =================================================
11845 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11846     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11847         if test "$enable_dconf" = yes; then
11848             AC_MSG_ERROR([dconf not found])
11849         else
11850             enable_dconf=no
11851         fi])
11853 AC_MSG_CHECKING([whether to enable dconf])
11854 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11855     DCONF_CFLAGS=
11856     DCONF_LIBS=
11857     ENABLE_DCONF=
11858     AC_MSG_RESULT([no])
11859 else
11860     ENABLE_DCONF=TRUE
11861     AC_DEFINE(ENABLE_DCONF)
11862     AC_MSG_RESULT([yes])
11864 AC_SUBST([DCONF_CFLAGS])
11865 AC_SUBST([DCONF_LIBS])
11866 AC_SUBST([ENABLE_DCONF])
11868 # pdf import?
11869 AC_MSG_CHECKING([whether to build the PDF import feature])
11870 ENABLE_PDFIMPORT=
11871 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11872     AC_MSG_RESULT([yes])
11873     ENABLE_PDFIMPORT=TRUE
11874     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11875 else
11876     AC_MSG_RESULT([no])
11879 # Pdfium?
11880 AC_MSG_CHECKING([whether to build PDFium])
11881 ENABLE_PDFIUM=
11882 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11883     AC_MSG_RESULT([yes])
11884     ENABLE_PDFIUM=TRUE
11885     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11886 else
11887     AC_MSG_RESULT([no])
11889 AC_SUBST(ENABLE_PDFIUM)
11891 dnl ===================================================================
11892 dnl Check for poppler
11893 dnl ===================================================================
11894 ENABLE_POPPLER=
11895 AC_MSG_CHECKING([whether to build Poppler])
11896 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11897     AC_MSG_RESULT([yes])
11898     ENABLE_POPPLER=TRUE
11899     AC_DEFINE(HAVE_FEATURE_POPPLER)
11900 else
11901     AC_MSG_RESULT([no])
11903 AC_SUBST(ENABLE_POPPLER)
11905 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11906     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11909 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11910     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11913 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11914     dnl ===================================================================
11915     dnl Check for system poppler
11916     dnl ===================================================================
11917     AC_MSG_CHECKING([which PDF import poppler to use])
11918     if test "$with_system_poppler" = "yes"; then
11919         AC_MSG_RESULT([external])
11920         SYSTEM_POPPLER=TRUE
11921         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11922         AC_LANG_PUSH([C++])
11923         save_CXXFLAGS=$CXXFLAGS
11924         save_CPPFLAGS=$CPPFLAGS
11925         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11926         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11927         AC_CHECK_HEADER([cpp/poppler-version.h],
11928             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11929             [])
11930         CXXFLAGS=$save_CXXFLAGS
11931         CPPFLAGS=$save_CPPFLAGS
11932         AC_LANG_POP([C++])
11933         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11935         FilterLibs "${POPPLER_LIBS}"
11936         POPPLER_LIBS="${filteredlibs}"
11937     else
11938         AC_MSG_RESULT([internal])
11939         SYSTEM_POPPLER=
11940         BUILD_TYPE="$BUILD_TYPE POPPLER"
11941         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11942     fi
11943     AC_DEFINE([ENABLE_PDFIMPORT],1)
11945 AC_SUBST(ENABLE_PDFIMPORT)
11946 AC_SUBST(SYSTEM_POPPLER)
11947 AC_SUBST(POPPLER_CFLAGS)
11948 AC_SUBST(POPPLER_LIBS)
11950 # Skia?
11951 ENABLE_SKIA=
11952 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11953     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
11954     if test "$SYSTEM_FREETYPE" = TRUE; then
11955         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
11956             [skia_freetype_ok=yes],
11957             [skia_freetype_ok=no])
11958     else # internal is ok
11959         skia_freetype_ok=yes
11960     fi
11961     AC_MSG_CHECKING([whether to build Skia])
11962     if test "$skia_freetype_ok" = "yes"; then
11963         if test "$enable_skia" = "debug"; then
11964             AC_MSG_RESULT([yes (debug)])
11965             ENABLE_SKIA_DEBUG=TRUE
11966         else
11967             AC_MSG_RESULT([yes])
11968             ENABLE_SKIA_DEBUG=
11969         fi
11970         ENABLE_SKIA=TRUE
11971         AC_DEFINE(HAVE_FEATURE_SKIA)
11972         BUILD_TYPE="$BUILD_TYPE SKIA"
11974         if test "$OS" = "MACOSX"; then
11975             AC_DEFINE(SK_SUPPORT_GPU,1)
11976             AC_DEFINE(SK_METAL,1)
11977             SKIA_GPU=METAL
11978             AC_SUBST(SKIA_GPU)
11979         else
11980             AC_DEFINE(SK_SUPPORT_GPU,1)
11981             AC_DEFINE(SK_VULKAN,1)
11982             SKIA_GPU=VULKAN
11983             AC_SUBST(SKIA_GPU)
11984         fi
11986         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
11987             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
11988             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
11989         fi
11990     else
11991         AC_MSG_RESULT([no (freetype too old)])
11992         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
11993     fi
11995 else
11996     AC_MSG_CHECKING([whether to build Skia])
11997     AC_MSG_RESULT([no])
11999 AC_SUBST(ENABLE_SKIA)
12000 AC_SUBST(ENABLE_SKIA_DEBUG)
12002 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12003 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12004 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12005 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12006 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12007 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12008 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12009 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12010 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12011 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12012 HAVE_LO_CLANG_DLLEXPORTINLINES=
12014 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12015     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12016         AC_MSG_CHECKING([for Clang])
12017         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12018     else
12019         if test "$_os" = "WINNT"; then
12020             AC_MSG_CHECKING([for clang-cl])
12021             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12022                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12023                 dnl explicitly set -m32/-m64
12024                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12025                 LO_CLANG_CXX="$LO_CLANG_CC"
12026                 AC_MSG_RESULT([$LO_CLANG_CC])
12027             else
12028                 AC_MSG_RESULT([no])
12029             fi
12030         else
12031             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12032             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12033         fi
12034     fi
12035     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12036         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12037         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12038         if test "$clang2_ver" -lt 50002; then
12039             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12040             LO_CLANG_CC=
12041             LO_CLANG_CXX=
12042         fi
12043     fi
12044     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12045         save_CXX="$CXX"
12046         CXX="$LO_CLANG_CXX"
12047         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12048         AC_LANG_PUSH([C++])
12049         save_CXXFLAGS=$CXXFLAGS
12050         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12051         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12052                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12053                 AC_MSG_RESULT([yes])
12054             ], [AC_MSG_RESULT([no])])
12055         CXXFLAGS=$save_CXXFLAGS
12056         AC_LANG_POP([C++])
12057         CXX="$save_CXX"
12058         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12059             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.])
12060         fi
12061     fi
12062     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12063         # Skia is the default on Windows, so hard-require Clang.
12064         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12065         if test "$_os" = "WINNT"; then
12066             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
12067         else
12068             AC_MSG_WARN([Clang compiler not found.])
12069         fi
12070     else
12072         save_CXX="$CXX"
12073         CXX="$LO_CLANG_CXX"
12074         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12075         flag_sse2=-msse2
12076         flag_ssse3=-mssse3
12077         flag_sse41=-msse4.1
12078         flag_sse42=-msse4.2
12079         flag_avx=-mavx
12080         flag_avx2=-mavx2
12081         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12082         flag_avx512f=-mavx512f
12083         flag_f16c=-mf16c
12084         flag_fma=-mfma
12086         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12087         AC_LANG_PUSH([C++])
12088         save_CXXFLAGS=$CXXFLAGS
12089         CXXFLAGS="$CXXFLAGS $flag_sse2"
12090         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12091             #include <emmintrin.h>
12092             int main () {
12093                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12094                 c = _mm_xor_si128 (a, b);
12095                 return 0;
12096             }
12097             ])],
12098             [can_compile_sse2=yes],
12099             [can_compile_sse2=no])
12100         AC_LANG_POP([C++])
12101         CXXFLAGS=$save_CXXFLAGS
12102         AC_MSG_RESULT([${can_compile_sse2}])
12103         if test "${can_compile_sse2}" = "yes" ; then
12104             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12105         fi
12107         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12108         AC_LANG_PUSH([C++])
12109         save_CXXFLAGS=$CXXFLAGS
12110         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12111         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12112             #include <tmmintrin.h>
12113             int main () {
12114                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12115                 c = _mm_maddubs_epi16 (a, b);
12116                 return 0;
12117             }
12118             ])],
12119             [can_compile_ssse3=yes],
12120             [can_compile_ssse3=no])
12121         AC_LANG_POP([C++])
12122         CXXFLAGS=$save_CXXFLAGS
12123         AC_MSG_RESULT([${can_compile_ssse3}])
12124         if test "${can_compile_ssse3}" = "yes" ; then
12125             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12126         fi
12128         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12129         AC_LANG_PUSH([C++])
12130         save_CXXFLAGS=$CXXFLAGS
12131         CXXFLAGS="$CXXFLAGS $flag_sse41"
12132         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12133             #include <smmintrin.h>
12134             int main () {
12135                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12136                 c = _mm_cmpeq_epi64 (a, b);
12137                 return 0;
12138             }
12139             ])],
12140             [can_compile_sse41=yes],
12141             [can_compile_sse41=no])
12142         AC_LANG_POP([C++])
12143         CXXFLAGS=$save_CXXFLAGS
12144         AC_MSG_RESULT([${can_compile_sse41}])
12145         if test "${can_compile_sse41}" = "yes" ; then
12146             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12147         fi
12149         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12150         AC_LANG_PUSH([C++])
12151         save_CXXFLAGS=$CXXFLAGS
12152         CXXFLAGS="$CXXFLAGS $flag_sse42"
12153         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12154             #include <nmmintrin.h>
12155             int main () {
12156                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12157                 c = _mm_cmpgt_epi64 (a, b);
12158                 return 0;
12159             }
12160             ])],
12161             [can_compile_sse42=yes],
12162             [can_compile_sse42=no])
12163         AC_LANG_POP([C++])
12164         CXXFLAGS=$save_CXXFLAGS
12165         AC_MSG_RESULT([${can_compile_sse42}])
12166         if test "${can_compile_sse42}" = "yes" ; then
12167             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12168         fi
12170         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12171         AC_LANG_PUSH([C++])
12172         save_CXXFLAGS=$CXXFLAGS
12173         CXXFLAGS="$CXXFLAGS $flag_avx"
12174         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12175             #include <immintrin.h>
12176             int main () {
12177                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12178                 c = _mm256_xor_ps(a, b);
12179                 return 0;
12180             }
12181             ])],
12182             [can_compile_avx=yes],
12183             [can_compile_avx=no])
12184         AC_LANG_POP([C++])
12185         CXXFLAGS=$save_CXXFLAGS
12186         AC_MSG_RESULT([${can_compile_avx}])
12187         if test "${can_compile_avx}" = "yes" ; then
12188             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12189         fi
12191         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12192         AC_LANG_PUSH([C++])
12193         save_CXXFLAGS=$CXXFLAGS
12194         CXXFLAGS="$CXXFLAGS $flag_avx2"
12195         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12196             #include <immintrin.h>
12197             int main () {
12198                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12199                 c = _mm256_maddubs_epi16(a, b);
12200                 return 0;
12201             }
12202             ])],
12203             [can_compile_avx2=yes],
12204             [can_compile_avx2=no])
12205         AC_LANG_POP([C++])
12206         CXXFLAGS=$save_CXXFLAGS
12207         AC_MSG_RESULT([${can_compile_avx2}])
12208         if test "${can_compile_avx2}" = "yes" ; then
12209             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12210         fi
12212         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12213         AC_LANG_PUSH([C++])
12214         save_CXXFLAGS=$CXXFLAGS
12215         CXXFLAGS="$CXXFLAGS $flag_avx512"
12216         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12217             #include <immintrin.h>
12218             int main () {
12219                 __m512i a = _mm512_loadu_si512(0);
12220                 __m512d v1 = _mm512_load_pd(0);
12221                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12222                 __m512d v2 = _mm512_abs_pd(v1);
12223                 return 0;
12224             }
12225             ])],
12226             [can_compile_avx512=yes],
12227             [can_compile_avx512=no])
12228         AC_LANG_POP([C++])
12229         CXXFLAGS=$save_CXXFLAGS
12230         AC_MSG_RESULT([${can_compile_avx512}])
12231         if test "${can_compile_avx512}" = "yes" ; then
12232             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12233             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12234         fi
12236         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12237         AC_LANG_PUSH([C++])
12238         save_CXXFLAGS=$CXXFLAGS
12239         CXXFLAGS="$CXXFLAGS $flag_f16c"
12240         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12241             #include <immintrin.h>
12242             int main () {
12243                 __m128i a = _mm_set1_epi32 (0);
12244                 __m128 c;
12245                 c = _mm_cvtph_ps(a);
12246                 return 0;
12247             }
12248             ])],
12249             [can_compile_f16c=yes],
12250             [can_compile_f16c=no])
12251         AC_LANG_POP([C++])
12252         CXXFLAGS=$save_CXXFLAGS
12253         AC_MSG_RESULT([${can_compile_f16c}])
12254         if test "${can_compile_f16c}" = "yes" ; then
12255             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12256         fi
12258         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12259         AC_LANG_PUSH([C++])
12260         save_CXXFLAGS=$CXXFLAGS
12261         CXXFLAGS="$CXXFLAGS $flag_fma"
12262         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12263             #include <immintrin.h>
12264             int main () {
12265                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12266                 d = _mm256_fmadd_ps(a, b, c);
12267                 return 0;
12268             }
12269             ])],
12270             [can_compile_fma=yes],
12271             [can_compile_fma=no])
12272         AC_LANG_POP([C++])
12273         CXXFLAGS=$save_CXXFLAGS
12274         AC_MSG_RESULT([${can_compile_fma}])
12275         if test "${can_compile_fma}" = "yes" ; then
12276             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12277         fi
12279         CXX="$save_CXX"
12280     fi
12283 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12285 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12286     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12287     AC_LANG_PUSH([C])
12288     save_CC="$CC"
12289     CC="$LO_CLANG_CC"
12290     save_CFLAGS=$CFLAGS
12291     CFLAGS="$CFLAGS --ccache-skip -O2"
12292     dnl an empty program will do, we're checking the compiler flags
12293     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12294                       [use_ccache=yes], [use_ccache=no])
12295     CFLAGS=$save_CFLAGS
12296     CC=$save_CC
12297     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12298         AC_MSG_RESULT([yes])
12299     else
12300         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12301         AC_MSG_RESULT([no])
12302     fi
12303     AC_LANG_POP([C])
12305     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12306     AC_LANG_PUSH([C++])
12307     save_CXX="$CXX"
12308     CXX="$LO_CLANG_CXX"
12309     save_CXXFLAGS=$CXXFLAGS
12310     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12311     dnl an empty program will do, we're checking the compiler flags
12312     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12313                       [use_ccache=yes], [use_ccache=no])
12314     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12315         AC_MSG_RESULT([yes])
12316     else
12317         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12318         AC_MSG_RESULT([no])
12319     fi
12320     CXXFLAGS=$save_CXXFLAGS
12321     CXX=$save_CXX
12322     AC_LANG_POP([C++])
12325 AC_SUBST(LO_CLANG_CC)
12326 AC_SUBST(LO_CLANG_CXX)
12327 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12328 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12329 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12330 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12331 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12332 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12333 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12334 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12335 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12336 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12337 AC_SUBST(CLANG_USE_LD)
12338 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12340 SYSTEM_GPGMEPP=
12342 if test "$enable_gpgmepp" = no; then
12343     AC_MSG_CHECKING([whether to enable gpgmepp])
12344     AC_MSG_RESULT([no])
12345 elif test "$enable_mpl_subset" = "yes"; then
12346     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12347     AC_MSG_RESULT([yes])
12348 elif test "$enable_fuzzers" = "yes"; then
12349     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12350     AC_MSG_RESULT([yes])
12351 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12352     dnl ===================================================================
12353     dnl Check for system gpgme
12354     dnl ===================================================================
12355     AC_MSG_CHECKING([which gpgmepp to use])
12356     if test "$with_system_gpgmepp" = "yes"; then
12357         AC_MSG_RESULT([external])
12358         SYSTEM_GPGMEPP=TRUE
12360         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12361         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12362             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12363         # progress_callback is the only func with plain C linkage
12364         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12365         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12366             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12367         AC_CHECK_HEADER(gpgme.h, [],
12368             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12369     else
12370         AC_MSG_RESULT([internal])
12371         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12372         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12374         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12375         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12376         if test "$_os" != "WINNT"; then
12377             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12378             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12379         fi
12380     fi
12381     ENABLE_GPGMEPP=TRUE
12382     AC_DEFINE([HAVE_FEATURE_GPGME])
12383     AC_PATH_PROG(GPG, gpg)
12384     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12385     # so let's exclude that manually for the moment
12386     if test -n "$GPG" -a "$_os" != "WINNT"; then
12387         # make sure we not only have a working gpgme, but a full working
12388         # gpg installation to run OpenPGP signature verification
12389         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12390     fi
12391     if test "$_os" = "Linux"; then
12392       uid=`id -u`
12393       AC_MSG_CHECKING([for /run/user/$uid])
12394       if test -d /run/user/$uid; then
12395         AC_MSG_RESULT([yes])
12396         AC_PATH_PROG(GPGCONF, gpgconf)
12398         # Older versions of gpgconf are not working as expected, since
12399         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12400         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12401         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12402         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12403         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12404         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12405         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12406           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12407           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12408           if $GPGCONF --dump-options > /dev/null ; then
12409             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12410               AC_MSG_RESULT([yes])
12411               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12412               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12413             else
12414               AC_MSG_RESULT([no])
12415             fi
12416           else
12417             AC_MSG_RESULT([no. missing or broken gpgconf?])
12418           fi
12419         else
12420           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12421         fi
12422       else
12423         AC_MSG_RESULT([no])
12424      fi
12425    fi
12427 AC_SUBST(ENABLE_GPGMEPP)
12428 AC_SUBST(SYSTEM_GPGMEPP)
12429 AC_SUBST(GPG_ERROR_CFLAGS)
12430 AC_SUBST(GPG_ERROR_LIBS)
12431 AC_SUBST(LIBASSUAN_CFLAGS)
12432 AC_SUBST(LIBASSUAN_LIBS)
12433 AC_SUBST(GPGMEPP_CFLAGS)
12434 AC_SUBST(GPGMEPP_LIBS)
12436 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12437 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12438     AC_MSG_RESULT([yes])
12439     ENABLE_MEDIAWIKI=TRUE
12440     BUILD_TYPE="$BUILD_TYPE XSLTML"
12441     if test  "x$with_java" = "xno"; then
12442         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12443     fi
12444 else
12445     AC_MSG_RESULT([no])
12446     ENABLE_MEDIAWIKI=
12447     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12449 AC_SUBST(ENABLE_MEDIAWIKI)
12451 AC_MSG_CHECKING([whether to build the Report Builder])
12452 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12453     AC_MSG_RESULT([yes])
12454     ENABLE_REPORTBUILDER=TRUE
12455     AC_MSG_CHECKING([which jfreereport libs to use])
12456     if test "$with_system_jfreereport" = "yes"; then
12457         SYSTEM_JFREEREPORT=TRUE
12458         AC_MSG_RESULT([external])
12459         if test -z $SAC_JAR; then
12460             SAC_JAR=/usr/share/java/sac.jar
12461         fi
12462         if ! test -f $SAC_JAR; then
12463              AC_MSG_ERROR(sac.jar not found.)
12464         fi
12466         if test -z $LIBXML_JAR; then
12467             if test -f /usr/share/java/libxml-1.0.0.jar; then
12468                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12469             elif test -f /usr/share/java/libxml.jar; then
12470                 LIBXML_JAR=/usr/share/java/libxml.jar
12471             else
12472                 AC_MSG_ERROR(libxml.jar replacement not found.)
12473             fi
12474         elif ! test -f $LIBXML_JAR; then
12475             AC_MSG_ERROR(libxml.jar not found.)
12476         fi
12478         if test -z $FLUTE_JAR; then
12479             if test -f /usr/share/java/flute-1.3.0.jar; then
12480                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12481             elif test -f /usr/share/java/flute.jar; then
12482                 FLUTE_JAR=/usr/share/java/flute.jar
12483             else
12484                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12485             fi
12486         elif ! test -f $FLUTE_JAR; then
12487             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12488         fi
12490         if test -z $JFREEREPORT_JAR; then
12491             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12492                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12493             elif test -f /usr/share/java/flow-engine.jar; then
12494                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12495             else
12496                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12497             fi
12498         elif ! test -f  $JFREEREPORT_JAR; then
12499                 AC_MSG_ERROR(jfreereport.jar not found.)
12500         fi
12502         if test -z $LIBLAYOUT_JAR; then
12503             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12504                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12505             elif test -f /usr/share/java/liblayout.jar; then
12506                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12507             else
12508                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12509             fi
12510         elif ! test -f $LIBLAYOUT_JAR; then
12511                 AC_MSG_ERROR(liblayout.jar not found.)
12512         fi
12514         if test -z $LIBLOADER_JAR; then
12515             if test -f /usr/share/java/libloader-1.0.0.jar; then
12516                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12517             elif test -f /usr/share/java/libloader.jar; then
12518                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12519             else
12520                 AC_MSG_ERROR(libloader.jar replacement not found.)
12521             fi
12522         elif ! test -f  $LIBLOADER_JAR; then
12523             AC_MSG_ERROR(libloader.jar not found.)
12524         fi
12526         if test -z $LIBFORMULA_JAR; then
12527             if test -f /usr/share/java/libformula-0.2.0.jar; then
12528                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12529             elif test -f /usr/share/java/libformula.jar; then
12530                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12531             else
12532                 AC_MSG_ERROR(libformula.jar replacement not found.)
12533             fi
12534         elif ! test -f $LIBFORMULA_JAR; then
12535                 AC_MSG_ERROR(libformula.jar not found.)
12536         fi
12538         if test -z $LIBREPOSITORY_JAR; then
12539             if test -f /usr/share/java/librepository-1.0.0.jar; then
12540                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12541             elif test -f /usr/share/java/librepository.jar; then
12542                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12543             else
12544                 AC_MSG_ERROR(librepository.jar replacement not found.)
12545             fi
12546         elif ! test -f $LIBREPOSITORY_JAR; then
12547             AC_MSG_ERROR(librepository.jar not found.)
12548         fi
12550         if test -z $LIBFONTS_JAR; then
12551             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12552                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12553             elif test -f /usr/share/java/libfonts.jar; then
12554                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12555             else
12556                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12557             fi
12558         elif ! test -f $LIBFONTS_JAR; then
12559                 AC_MSG_ERROR(libfonts.jar not found.)
12560         fi
12562         if test -z $LIBSERIALIZER_JAR; then
12563             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12564                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12565             elif test -f /usr/share/java/libserializer.jar; then
12566                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12567             else
12568                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12569             fi
12570         elif ! test -f $LIBSERIALIZER_JAR; then
12571                 AC_MSG_ERROR(libserializer.jar not found.)
12572         fi
12574         if test -z $LIBBASE_JAR; then
12575             if test -f /usr/share/java/libbase-1.0.0.jar; then
12576                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12577             elif test -f /usr/share/java/libbase.jar; then
12578                 LIBBASE_JAR=/usr/share/java/libbase.jar
12579             else
12580                 AC_MSG_ERROR(libbase.jar replacement not found.)
12581             fi
12582         elif ! test -f $LIBBASE_JAR; then
12583             AC_MSG_ERROR(libbase.jar not found.)
12584         fi
12586     else
12587         AC_MSG_RESULT([internal])
12588         SYSTEM_JFREEREPORT=
12589         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12590         NEED_ANT=TRUE
12591     fi
12592 else
12593     AC_MSG_RESULT([no])
12594     ENABLE_REPORTBUILDER=
12595     SYSTEM_JFREEREPORT=
12597 AC_SUBST(ENABLE_REPORTBUILDER)
12598 AC_SUBST(SYSTEM_JFREEREPORT)
12599 AC_SUBST(SAC_JAR)
12600 AC_SUBST(LIBXML_JAR)
12601 AC_SUBST(FLUTE_JAR)
12602 AC_SUBST(JFREEREPORT_JAR)
12603 AC_SUBST(LIBBASE_JAR)
12604 AC_SUBST(LIBLAYOUT_JAR)
12605 AC_SUBST(LIBLOADER_JAR)
12606 AC_SUBST(LIBFORMULA_JAR)
12607 AC_SUBST(LIBREPOSITORY_JAR)
12608 AC_SUBST(LIBFONTS_JAR)
12609 AC_SUBST(LIBSERIALIZER_JAR)
12611 # scripting provider for BeanShell?
12612 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12613 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12614     AC_MSG_RESULT([yes])
12615     ENABLE_SCRIPTING_BEANSHELL=TRUE
12617     dnl ===================================================================
12618     dnl Check for system beanshell
12619     dnl ===================================================================
12620     AC_MSG_CHECKING([which beanshell to use])
12621     if test "$with_system_beanshell" = "yes"; then
12622         AC_MSG_RESULT([external])
12623         SYSTEM_BSH=TRUE
12624         if test -z $BSH_JAR; then
12625             BSH_JAR=/usr/share/java/bsh.jar
12626         fi
12627         if ! test -f $BSH_JAR; then
12628             AC_MSG_ERROR(bsh.jar not found.)
12629         fi
12630     else
12631         AC_MSG_RESULT([internal])
12632         SYSTEM_BSH=
12633         BUILD_TYPE="$BUILD_TYPE BSH"
12634     fi
12635 else
12636     AC_MSG_RESULT([no])
12637     ENABLE_SCRIPTING_BEANSHELL=
12638     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12640 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12641 AC_SUBST(SYSTEM_BSH)
12642 AC_SUBST(BSH_JAR)
12644 # scripting provider for JavaScript?
12645 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12646 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12647     AC_MSG_RESULT([yes])
12648     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12650     dnl ===================================================================
12651     dnl Check for system rhino
12652     dnl ===================================================================
12653     AC_MSG_CHECKING([which rhino to use])
12654     if test "$with_system_rhino" = "yes"; then
12655         AC_MSG_RESULT([external])
12656         SYSTEM_RHINO=TRUE
12657         if test -z $RHINO_JAR; then
12658             RHINO_JAR=/usr/share/java/js.jar
12659         fi
12660         if ! test -f $RHINO_JAR; then
12661             AC_MSG_ERROR(js.jar not found.)
12662         fi
12663     else
12664         AC_MSG_RESULT([internal])
12665         SYSTEM_RHINO=
12666         BUILD_TYPE="$BUILD_TYPE RHINO"
12667         NEED_ANT=TRUE
12668     fi
12669 else
12670     AC_MSG_RESULT([no])
12671     ENABLE_SCRIPTING_JAVASCRIPT=
12672     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12674 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12675 AC_SUBST(SYSTEM_RHINO)
12676 AC_SUBST(RHINO_JAR)
12678 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12679 # paths should be added to library search path. So lets put all 64-bit
12680 # platforms there.
12681 supports_multilib=
12682 case "$host_cpu" in
12683 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12684     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12685         supports_multilib="yes"
12686     fi
12687     ;;
12689     ;;
12690 esac
12692 dnl ===================================================================
12693 dnl QT5 Integration
12694 dnl ===================================================================
12696 QT5_CFLAGS=""
12697 QT5_LIBS=""
12698 QMAKE5="qmake"
12699 MOC5="moc"
12700 QT5_GOBJECT_CFLAGS=""
12701 QT5_GOBJECT_LIBS=""
12702 QT5_HAVE_GOBJECT=""
12703 QT5_PLATFORMS_SRCDIR=""
12704 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12705         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12706         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12707 then
12708     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12709     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12711     if test -n "$supports_multilib"; then
12712         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12713     fi
12715     qt5_test_include="QtWidgets/qapplication.h"
12716     if test "$_os" = "Emscripten"; then
12717         qt5_test_library="libQt5Widgets.a"
12718     else
12719         qt5_test_library="libQt5Widgets.so"
12720     fi
12722     dnl Check for qmake5
12723     if test -n "$QT5DIR"; then
12724         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12725     else
12726         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12727     fi
12728     if test "$QMAKE5" = "no"; then
12729         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12730     else
12731         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12732         if test -z "$qmake5_test_ver"; then
12733             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12734         fi
12735         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12736         qt5_minimal_minor="6"
12737         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12738             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12739         else
12740             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12741         fi
12742     fi
12744     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12745     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12746     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12747     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12749     AC_MSG_CHECKING([for Qt5 headers])
12750     qt5_incdir="no"
12751     for inc_dir in $qt5_incdirs; do
12752         if test -r "$inc_dir/$qt5_test_include"; then
12753             qt5_incdir="$inc_dir"
12754             break
12755         fi
12756     done
12757     AC_MSG_RESULT([$qt5_incdir])
12758     if test "x$qt5_incdir" = "xno"; then
12759         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12760     fi
12761     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12762     AC_LANG_PUSH([C++])
12763     save_CPPFLAGS=$CPPFLAGS
12764     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12765     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12766         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12767     CPPFLAGS=$save_CPPFLAGS
12768     AC_LANG_POP([C++])
12770     AC_MSG_CHECKING([for Qt5 libraries])
12771     qt5_libdir="no"
12772     for lib_dir in $qt5_libdirs; do
12773         if test -r "$lib_dir/$qt5_test_library"; then
12774             qt5_libdir="$lib_dir"
12775             break
12776         fi
12777     done
12778     AC_MSG_RESULT([$qt5_libdir])
12779     if test "x$qt5_libdir" = "xno"; then
12780         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12781     fi
12783     if test "$_os" = "Emscripten"; then
12784         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12785             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12786         fi
12787         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12788             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12789         fi
12790     fi
12792     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12793     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12794     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12795     if test "$_os" = "Emscripten"; then
12796         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12797     fi
12799     if test "$USING_X11" = TRUE; then
12800         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12801         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12802             QT5_HAVE_XCB_ICCCM=1
12803             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12804         ],[
12805             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)])
12806             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12807         ])
12808         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12809         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12810         QT5_USING_X11=1
12811         AC_DEFINE(QT5_USING_X11)
12812     fi
12814     dnl Check for Meta Object Compiler
12816     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12817     if test "$MOC5" = "no"; then
12818         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12819 the root of your Qt installation by exporting QT5DIR before running "configure".])
12820     fi
12822     if test "$test_gstreamer_1_0" = yes; then
12823         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12824                 QT5_HAVE_GOBJECT=1
12825                 AC_DEFINE(QT5_HAVE_GOBJECT)
12826             ],
12827             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12828         )
12829     fi
12831 AC_SUBST(QT5_CFLAGS)
12832 AC_SUBST(QT5_LIBS)
12833 AC_SUBST(MOC5)
12834 AC_SUBST(QT5_GOBJECT_CFLAGS)
12835 AC_SUBST(QT5_GOBJECT_LIBS)
12836 AC_SUBST(QT5_HAVE_GOBJECT)
12837 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12839 dnl ===================================================================
12840 dnl QT6 Integration
12841 dnl ===================================================================
12843 QT6_CFLAGS=""
12844 QT6_LIBS=""
12845 QMAKE6="qmake"
12846 MOC6="moc"
12847 QT6_PLATFORMS_SRCDIR=""
12848 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12849 then
12850     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12851     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12853     if test -n "$supports_multilib"; then
12854         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12855     fi
12857     qt6_test_include="QtWidgets/qapplication.h"
12858     if test "$_os" = "Emscripten"; then
12859         qt6_test_library="libQt6Widgets.a"
12860     else
12861         qt6_test_library="libQt6Widgets.so"
12862     fi
12864     dnl Check for qmake6
12865     if test -n "$QT6DIR"; then
12866         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12867     else
12868         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12869     fi
12870     if test "$QMAKE6" = "no"; then
12871         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12872     else
12873         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12874         if test -z "$qmake6_test_ver"; then
12875             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12876         fi
12877         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12878     fi
12880     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12881     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12882     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12883     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12885     AC_MSG_CHECKING([for Qt6 headers])
12886     qt6_incdir="no"
12887     for inc_dir in $qt6_incdirs; do
12888         if test -r "$inc_dir/$qt6_test_include"; then
12889             qt6_incdir="$inc_dir"
12890             break
12891         fi
12892     done
12893     AC_MSG_RESULT([$qt6_incdir])
12894     if test "x$qt6_incdir" = "xno"; then
12895         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12896     fi
12897     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12898     AC_LANG_PUSH([C++])
12899     save_CPPFLAGS=$CPPFLAGS
12900     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12901     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12902         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12903     CPPFLAGS=$save_CPPFLAGS
12904     AC_LANG_POP([C++])
12906     AC_MSG_CHECKING([for Qt6 libraries])
12907     qt6_libdir="no"
12908     for lib_dir in $qt6_libdirs; do
12909         if test -r "$lib_dir/$qt6_test_library"; then
12910             qt6_libdir="$lib_dir"
12911             break
12912         fi
12913     done
12914     AC_MSG_RESULT([$qt6_libdir])
12915     if test "x$qt6_libdir" = "xno"; then
12916         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12917     fi
12919     if test "$_os" = "Emscripten"; then
12920         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12921             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12922         fi
12923         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12924             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12925         fi
12926     fi
12928     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12929     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12930     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12931     if test "$_os" = "Emscripten"; then
12932         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12933     fi
12935     if test "$USING_X11" = TRUE; then
12936         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12937         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12938         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
12939         QT6_USING_X11=1
12940         AC_DEFINE(QT6_USING_X11)
12941     fi
12943     dnl Check for Meta Object Compiler
12945     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
12946     if test "$MOC6" = "no"; then
12947         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12948 the root of your Qt installation by exporting QT6DIR before running "configure".])
12949     fi
12951 AC_SUBST(QT6_CFLAGS)
12952 AC_SUBST(QT6_LIBS)
12953 AC_SUBST(MOC6)
12954 AC_SUBST(QT6_PLATFORMS_SRCDIR)
12956 dnl ===================================================================
12957 dnl KF5 Integration
12958 dnl ===================================================================
12960 KF5_CFLAGS=""
12961 KF5_LIBS=""
12962 KF5_CONFIG="kf5-config"
12963 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12964         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12965 then
12966     if test "$OS" = "HAIKU"; then
12967         haiku_arch="`echo $RTL_ARCH | tr X x`"
12968         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12969         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12970     fi
12972     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12973     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12974     if test -n "$supports_multilib"; then
12975         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12976     fi
12978     kf5_test_include="KF5/kcoreaddons_version.h"
12979     kf5_test_library="libKF5CoreAddons.so"
12980     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12982     dnl kf5 KDE4 support compatibility installed
12983     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12984     if test "$KF5_CONFIG" != "no"; then
12985         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12986         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12987     fi
12989     dnl Check for KF5 headers
12990     AC_MSG_CHECKING([for KF5 headers])
12991     kf5_incdir="no"
12992     for kf5_check in $kf5_incdirs; do
12993         if test -r "$kf5_check/$kf5_test_include"; then
12994             kf5_incdir="$kf5_check/KF5"
12995             break
12996         fi
12997     done
12998     AC_MSG_RESULT([$kf5_incdir])
12999     if test "x$kf5_incdir" = "xno"; then
13000         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13001     fi
13003     dnl Check for KF5 libraries
13004     AC_MSG_CHECKING([for KF5 libraries])
13005     kf5_libdir="no"
13006     for kf5_check in $kf5_libdirs; do
13007         if test -r "$kf5_check/$kf5_test_library"; then
13008             kf5_libdir="$kf5_check"
13009             break
13010         fi
13011     done
13013     AC_MSG_RESULT([$kf5_libdir])
13014     if test "x$kf5_libdir" = "xno"; then
13015         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13016     fi
13018     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"
13019     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13020     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13022     if test "$USING_X11" = TRUE; then
13023         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13024     fi
13026     AC_LANG_PUSH([C++])
13027     save_CXXFLAGS=$CXXFLAGS
13028     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13029     AC_MSG_CHECKING([whether KDE is >= 5.0])
13030        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13031 #include <kcoreaddons_version.h>
13033 int main(int argc, char **argv) {
13034        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13035        else return 1;
13037        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13038     CXXFLAGS=$save_CXXFLAGS
13039     AC_LANG_POP([C++])
13041 AC_SUBST(KF5_CFLAGS)
13042 AC_SUBST(KF5_LIBS)
13044 dnl ===================================================================
13045 dnl Test whether to include Evolution 2 support
13046 dnl ===================================================================
13047 AC_MSG_CHECKING([whether to enable evolution 2 support])
13048 if test "$enable_evolution2" = yes; then
13049     AC_MSG_RESULT([yes])
13050     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13051     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13052     FilterLibs "${GOBJECT_LIBS}"
13053     GOBJECT_LIBS="${filteredlibs}"
13054     ENABLE_EVOAB2="TRUE"
13055 else
13056     AC_MSG_RESULT([no])
13058 AC_SUBST(ENABLE_EVOAB2)
13059 AC_SUBST(GOBJECT_CFLAGS)
13060 AC_SUBST(GOBJECT_LIBS)
13062 dnl ===================================================================
13063 dnl Test which themes to include
13064 dnl ===================================================================
13065 AC_MSG_CHECKING([which themes to include])
13066 # if none given use default subset of available themes
13067 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13068     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"
13071 WITH_THEMES=""
13072 if test "x$with_theme" != "xno"; then
13073     for theme in $with_theme; do
13074         case $theme in
13075         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" ;;
13076         default) real_theme=colibre ;;
13077         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13078         esac
13079         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13080     done
13082 AC_MSG_RESULT([$WITH_THEMES])
13083 AC_SUBST([WITH_THEMES])
13084 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13085 for theme in $with_theme; do
13086     case $theme in
13087     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13088     *) ;;
13089     esac
13090 done
13092 ###############################################################################
13093 # Extensions checking
13094 ###############################################################################
13095 AC_MSG_CHECKING([for extensions integration])
13096 if test "x$enable_extension_integration" != "xno"; then
13097     WITH_EXTENSION_INTEGRATION=TRUE
13098     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13099     AC_MSG_RESULT([yes, use integration])
13100 else
13101     WITH_EXTENSION_INTEGRATION=
13102     AC_MSG_RESULT([no, do not integrate])
13104 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13106 dnl Should any extra extensions be included?
13107 dnl There are standalone tests for each of these below.
13108 WITH_EXTRA_EXTENSIONS=
13109 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13111 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13112 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13113 if test "x$with_java" != "xno"; then
13114     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13115     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13118 AC_MSG_CHECKING([whether to build opens___.ttf])
13119 if test "$enable_build_opensymbol" = "yes"; then
13120     AC_MSG_RESULT([yes])
13121     AC_PATH_PROG(FONTFORGE, fontforge)
13122     if test -z "$FONTFORGE"; then
13123         AC_MSG_ERROR([fontforge not installed])
13124     fi
13125 else
13126     AC_MSG_RESULT([no])
13127     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
13128     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13130 AC_SUBST(OPENSYMBOL_TTF)
13131 AC_SUBST(FONTFORGE)
13133 dnl ===================================================================
13134 dnl Test whether to include fonts
13135 dnl ===================================================================
13136 AC_MSG_CHECKING([whether to include third-party fonts])
13137 if test "$with_fonts" != "no"; then
13138     AC_MSG_RESULT([yes])
13139     WITH_FONTS=TRUE
13140     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13141     AC_DEFINE(HAVE_MORE_FONTS)
13142 else
13143     AC_MSG_RESULT([no])
13144     WITH_FONTS=
13145     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13147 AC_SUBST(WITH_FONTS)
13150 dnl ===================================================================
13151 dnl Test whether to enable online update service
13152 dnl ===================================================================
13153 AC_MSG_CHECKING([whether to enable online update])
13154 ENABLE_ONLINE_UPDATE=
13155 ENABLE_ONLINE_UPDATE_MAR=
13156 UPDATE_CONFIG=
13157 if test "$enable_online_update" = ""; then
13158     AC_MSG_RESULT([no])
13159 else
13160     if test "$enable_online_update" = "mar"; then
13161         AC_MSG_RESULT([yes - MAR-based online update])
13162         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13163         if test "$with_update_config" = ""; then
13164             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13165         fi
13166         UPDATE_CONFIG="$with_update_config"
13167         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13168     elif test "$enable_online_update" = "yes"; then
13169         AC_MSG_RESULT([yes])
13170         ENABLE_ONLINE_UPDATE="TRUE"
13171     else
13172         AC_MSG_RESULT([no])
13173     fi
13175 AC_SUBST(ENABLE_ONLINE_UPDATE)
13176 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13177 AC_SUBST(UPDATE_CONFIG)
13180 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13181 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13182     if test "x$with_privacy_policy_url" = "xundefined"; then
13183         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13184     fi
13186 AC_SUBST(PRIVACY_POLICY_URL)
13187 dnl ===================================================================
13188 dnl Test whether we need bzip2
13189 dnl ===================================================================
13190 SYSTEM_BZIP2=
13191 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13192     AC_MSG_CHECKING([whether to use system bzip2])
13193     if test "$with_system_bzip2" = yes; then
13194         SYSTEM_BZIP2=TRUE
13195         AC_MSG_RESULT([yes])
13196         PKG_CHECK_MODULES(BZIP2, bzip2)
13197         FilterLibs "${BZIP2_LIBS}"
13198         BZIP2_LIBS="${filteredlibs}"
13199     else
13200         AC_MSG_RESULT([no])
13201         BUILD_TYPE="$BUILD_TYPE BZIP2"
13202     fi
13204 AC_SUBST(SYSTEM_BZIP2)
13205 AC_SUBST(BZIP2_CFLAGS)
13206 AC_SUBST(BZIP2_LIBS)
13208 dnl ===================================================================
13209 dnl Test whether to enable extension update
13210 dnl ===================================================================
13211 AC_MSG_CHECKING([whether to enable extension update])
13212 ENABLE_EXTENSION_UPDATE=
13213 if test "x$enable_extension_update" = "xno"; then
13214     AC_MSG_RESULT([no])
13215 else
13216     AC_MSG_RESULT([yes])
13217     ENABLE_EXTENSION_UPDATE="TRUE"
13218     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13219     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13221 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13224 dnl ===================================================================
13225 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13226 dnl ===================================================================
13227 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13228 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13229     AC_MSG_RESULT([no])
13230     ENABLE_SILENT_MSI=
13231 else
13232     AC_MSG_RESULT([yes])
13233     ENABLE_SILENT_MSI=TRUE
13234     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13236 AC_SUBST(ENABLE_SILENT_MSI)
13238 AC_MSG_CHECKING([whether and how to use Xinerama])
13239 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13240     if test "$x_libraries" = "default_x_libraries"; then
13241         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13242         if test "x$XINERAMALIB" = x; then
13243            XINERAMALIB="/usr/lib"
13244         fi
13245     else
13246         XINERAMALIB="$x_libraries"
13247     fi
13248     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13249         # we have both versions, let the user decide but use the dynamic one
13250         # per default
13251         USE_XINERAMA=TRUE
13252         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13253             XINERAMA_LINK=dynamic
13254         else
13255             XINERAMA_LINK=static
13256         fi
13257     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13258         # we have only the dynamic version
13259         USE_XINERAMA=TRUE
13260         XINERAMA_LINK=dynamic
13261     elif test -e "$XINERAMALIB/libXinerama.a"; then
13262         # static version
13263         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13264             USE_XINERAMA=TRUE
13265             XINERAMA_LINK=static
13266         else
13267             USE_XINERAMA=
13268             XINERAMA_LINK=none
13269         fi
13270     else
13271         # no Xinerama
13272         USE_XINERAMA=
13273         XINERAMA_LINK=none
13274     fi
13275     if test "$USE_XINERAMA" = "TRUE"; then
13276         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13277         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13278             [AC_MSG_ERROR(Xinerama header not found.)], [])
13279         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13280         if test "x$XEXTLIB" = x; then
13281            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13282         fi
13283         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13284         if test "$_os" = "FreeBSD"; then
13285             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13286         fi
13287         if test "$_os" = "Linux"; then
13288             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13289         fi
13290         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13291             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13292     else
13293         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13294     fi
13295 else
13296     USE_XINERAMA=
13297     XINERAMA_LINK=none
13298     AC_MSG_RESULT([no])
13300 AC_SUBST(USE_XINERAMA)
13301 AC_SUBST(XINERAMA_LINK)
13303 dnl ===================================================================
13304 dnl Test whether to build cairo or rely on the system version
13305 dnl ===================================================================
13307 if test "$test_cairo" = "yes"; then
13308     AC_MSG_CHECKING([whether to use the system cairo])
13310     : ${with_system_cairo:=$with_system_libs}
13311     if test "$with_system_cairo" = "yes"; then
13312         SYSTEM_CAIRO=TRUE
13313         AC_MSG_RESULT([yes])
13315         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13316         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13317         FilterLibs "${CAIRO_LIBS}"
13318         CAIRO_LIBS="${filteredlibs}"
13320         if test "$test_xrender" = "yes"; then
13321             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13322             AC_LANG_PUSH([C])
13323             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13324 #ifdef PictStandardA8
13325 #else
13326       return fail;
13327 #endif
13328 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13330             AC_LANG_POP([C])
13331         fi
13332     else
13333         AC_MSG_RESULT([no])
13334         BUILD_TYPE="$BUILD_TYPE CAIRO"
13335     fi
13337     if test "$enable_cairo_canvas" != no; then
13338         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13339         ENABLE_CAIRO_CANVAS=TRUE
13340     fi
13343 AC_SUBST(CAIRO_CFLAGS)
13344 AC_SUBST(CAIRO_LIBS)
13345 AC_SUBST(ENABLE_CAIRO_CANVAS)
13346 AC_SUBST(SYSTEM_CAIRO)
13348 dnl ===================================================================
13349 dnl Test whether to use avahi
13350 dnl ===================================================================
13351 if test "$_os" = "WINNT"; then
13352     # Windows uses bundled mDNSResponder
13353     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13354 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13355     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13356                       [ENABLE_AVAHI="TRUE"])
13357     AC_DEFINE(HAVE_FEATURE_AVAHI)
13358     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13359     FilterLibs "${AVAHI_LIBS}"
13360     AVAHI_LIBS="${filteredlibs}"
13363 AC_SUBST(ENABLE_AVAHI)
13364 AC_SUBST(AVAHI_CFLAGS)
13365 AC_SUBST(AVAHI_LIBS)
13367 dnl ===================================================================
13368 dnl Test whether to use liblangtag
13369 dnl ===================================================================
13370 SYSTEM_LIBLANGTAG=
13371 AC_MSG_CHECKING([whether to use system liblangtag])
13372 if test "$with_system_liblangtag" = yes; then
13373     SYSTEM_LIBLANGTAG=TRUE
13374     AC_MSG_RESULT([yes])
13375     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13376     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13377     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13378     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13379     FilterLibs "${LIBLANGTAG_LIBS}"
13380     LIBLANGTAG_LIBS="${filteredlibs}"
13381 else
13382     SYSTEM_LIBLANGTAG=
13383     AC_MSG_RESULT([no])
13384     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13385     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13386     if test "$COM" = "MSC"; then
13387         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13388     else
13389         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13390     fi
13392 AC_SUBST(SYSTEM_LIBLANGTAG)
13393 AC_SUBST(LIBLANGTAG_CFLAGS)
13394 AC_SUBST(LIBLANGTAG_LIBS)
13396 dnl ===================================================================
13397 dnl Test whether to build libpng or rely on the system version
13398 dnl ===================================================================
13400 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13402 dnl ===================================================================
13403 dnl Check for runtime JVM search path
13404 dnl ===================================================================
13405 if test "$ENABLE_JAVA" != ""; then
13406     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13407     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13408         AC_MSG_RESULT([yes])
13409         if ! test -d "$with_jvm_path"; then
13410             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13411         fi
13412         if ! test -d "$with_jvm_path"jvm; then
13413             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13414         fi
13415         JVM_ONE_PATH_CHECK="$with_jvm_path"
13416         AC_SUBST(JVM_ONE_PATH_CHECK)
13417     else
13418         AC_MSG_RESULT([no])
13419     fi
13422 dnl ===================================================================
13423 dnl Test for the presence of Ant and that it works
13424 dnl ===================================================================
13426 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13427     ANT_HOME=; export ANT_HOME
13428     WITH_ANT_HOME=; export WITH_ANT_HOME
13429     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13430         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13431             if test "$_os" = "WINNT"; then
13432                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13433             else
13434                 with_ant_home="$LODE_HOME/opt/ant"
13435             fi
13436         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13437             with_ant_home="$LODE_HOME/opt/ant"
13438         fi
13439     fi
13440     if test -z "$with_ant_home"; then
13441         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13442     else
13443         if test "$_os" = "WINNT"; then
13444             # AC_PATH_PROGS needs unix path
13445             with_ant_home=`cygpath -u "$with_ant_home"`
13446         fi
13447         AbsolutePath "$with_ant_home"
13448         with_ant_home=$absolute_path
13449         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13450         WITH_ANT_HOME=$with_ant_home
13451         ANT_HOME=$with_ant_home
13452     fi
13454     if test -z "$ANT"; then
13455         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13456     else
13457         # resolve relative or absolute symlink
13458         while test -h "$ANT"; do
13459             a_cwd=`pwd`
13460             a_basename=`basename "$ANT"`
13461             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13462             cd "`dirname "$ANT"`"
13463             cd "`dirname "$a_script"`"
13464             ANT="`pwd`"/"`basename "$a_script"`"
13465             cd "$a_cwd"
13466         done
13468         AC_MSG_CHECKING([if $ANT works])
13469         mkdir -p conftest.dir
13470         a_cwd=$(pwd)
13471         cd conftest.dir
13472         cat > conftest.java << EOF
13473         public class conftest {
13474             int testmethod(int a, int b) {
13475                     return a + b;
13476             }
13477         }
13480         cat > conftest.xml << EOF
13481         <project name="conftest" default="conftest">
13482         <target name="conftest">
13483             <javac srcdir="." includes="conftest.java">
13484             </javac>
13485         </target>
13486         </project>
13489         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13490         if test $? = 0 -a -f ./conftest.class; then
13491             AC_MSG_RESULT([Ant works])
13492             if test -z "$WITH_ANT_HOME"; then
13493                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13494                 if test -z "$ANT_HOME"; then
13495                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13496                 fi
13497             else
13498                 ANT_HOME="$WITH_ANT_HOME"
13499             fi
13500         else
13501             echo "configure: Ant test failed" >&5
13502             cat conftest.java >&5
13503             cat conftest.xml >&5
13504             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13505         fi
13506         cd "$a_cwd"
13507         rm -fr conftest.dir
13508     fi
13509     if test -z "$ANT_HOME"; then
13510         ANT_HOME="NO_ANT_HOME"
13511     else
13512         PathFormat "$ANT_HOME"
13513         ANT_HOME="$formatted_path"
13514         PathFormat "$ANT"
13515         ANT="$formatted_path"
13516     fi
13518     dnl Checking for ant.jar
13519     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13520         AC_MSG_CHECKING([Ant lib directory])
13521         if test -f $ANT_HOME/lib/ant.jar; then
13522             ANT_LIB="$ANT_HOME/lib"
13523         else
13524             if test -f $ANT_HOME/ant.jar; then
13525                 ANT_LIB="$ANT_HOME"
13526             else
13527                 if test -f /usr/share/java/ant.jar; then
13528                     ANT_LIB=/usr/share/java
13529                 else
13530                     if test -f /usr/share/ant-core/lib/ant.jar; then
13531                         ANT_LIB=/usr/share/ant-core/lib
13532                     else
13533                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13534                             ANT_LIB="$ANT_HOME/lib/ant"
13535                         else
13536                             if test -f /usr/share/lib/ant/ant.jar; then
13537                                 ANT_LIB=/usr/share/lib/ant
13538                             else
13539                                 AC_MSG_ERROR([Ant libraries not found!])
13540                             fi
13541                         fi
13542                     fi
13543                 fi
13544             fi
13545         fi
13546         PathFormat "$ANT_LIB"
13547         ANT_LIB="$formatted_path"
13548         AC_MSG_RESULT([Ant lib directory found.])
13549     fi
13551     ant_minver=1.6.0
13552     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13554     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13555     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13556     ant_version_major=`echo $ant_version | cut -d. -f1`
13557     ant_version_minor=`echo $ant_version | cut -d. -f2`
13558     echo "configure: ant_version $ant_version " >&5
13559     echo "configure: ant_version_major $ant_version_major " >&5
13560     echo "configure: ant_version_minor $ant_version_minor " >&5
13561     if test "$ant_version_major" -ge "2"; then
13562         AC_MSG_RESULT([yes, $ant_version])
13563     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13564         AC_MSG_RESULT([yes, $ant_version])
13565     else
13566         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13567     fi
13569     rm -f conftest* core core.* *.core
13571 AC_SUBST(ANT)
13572 AC_SUBST(ANT_HOME)
13573 AC_SUBST(ANT_LIB)
13575 OOO_JUNIT_JAR=
13576 HAMCREST_JAR=
13577 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13578     AC_MSG_CHECKING([for JUnit 4])
13579     if test "$with_junit" = "yes"; then
13580         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13581             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13582         elif test -e /usr/share/java/junit4.jar; then
13583             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13584         else
13585            if test -e /usr/share/lib/java/junit.jar; then
13586               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13587            else
13588               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13589            fi
13590         fi
13591     else
13592         OOO_JUNIT_JAR=$with_junit
13593     fi
13594     if test "$_os" = "WINNT"; then
13595         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13596     fi
13597     printf 'import org.junit.Before;' > conftest.java
13598     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13599         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13600     else
13601         AC_MSG_ERROR(
13602 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13603  specify its pathname via --with-junit=..., or disable it via --without-junit])
13604     fi
13605     rm -f conftest.class conftest.java
13606     if test $OOO_JUNIT_JAR != ""; then
13607         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13608     fi
13610     AC_MSG_CHECKING([for included Hamcrest])
13611     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13612     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13613         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13614     else
13615         AC_MSG_RESULT([Not included])
13616         AC_MSG_CHECKING([for standalone hamcrest jar.])
13617         if test "$with_hamcrest" = "yes"; then
13618             if test -e /usr/share/lib/java/hamcrest.jar; then
13619                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13620             elif test -e /usr/share/java/hamcrest/core.jar; then
13621                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13622             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13623                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13624             else
13625                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13626             fi
13627         else
13628             HAMCREST_JAR=$with_hamcrest
13629         fi
13630         if test "$_os" = "WINNT"; then
13631             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13632         fi
13633         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13634             AC_MSG_RESULT([$HAMCREST_JAR])
13635         else
13636             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),
13637                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13638         fi
13639     fi
13640     rm -f conftest.class conftest.java
13642 AC_SUBST(OOO_JUNIT_JAR)
13643 AC_SUBST(HAMCREST_JAR)
13646 AC_SUBST(SCPDEFS)
13649 # check for wget and curl
13651 WGET=
13652 CURL=
13654 if test "$enable_fetch_external" != "no"; then
13656 CURL=`which curl 2>/dev/null`
13658 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13659     # wget new enough?
13660     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13661     if test $? -eq 0; then
13662         WGET=$i
13663         break
13664     fi
13665 done
13667 if test -z "$WGET" -a -z "$CURL"; then
13668     AC_MSG_ERROR([neither wget nor curl found!])
13673 AC_SUBST(WGET)
13674 AC_SUBST(CURL)
13677 # check for sha256sum
13679 SHA256SUM=
13681 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13682     eval "$i -a 256 --version" > /dev/null 2>&1
13683     ret=$?
13684     if test $ret -eq 0; then
13685         SHA256SUM="$i -a 256"
13686         break
13687     fi
13688 done
13690 if test -z "$SHA256SUM"; then
13691     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13692         eval "$i --version" > /dev/null 2>&1
13693         ret=$?
13694         if test $ret -eq 0; then
13695             SHA256SUM=$i
13696             break
13697         fi
13698     done
13701 if test -z "$SHA256SUM"; then
13702     AC_MSG_ERROR([no sha256sum found!])
13705 AC_SUBST(SHA256SUM)
13707 dnl ===================================================================
13708 dnl Dealing with l10n options
13709 dnl ===================================================================
13710 AC_MSG_CHECKING([which languages to be built])
13711 # get list of all languages
13712 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13713 # the sed command does the following:
13714 #   + if a line ends with a backslash, append the next line to it
13715 #   + adds " on the beginning of the value (after =)
13716 #   + adds " at the end of the value
13717 #   + removes en-US; we want to put it on the beginning
13718 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13719 [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)]
13720 ALL_LANGS="en-US $completelangiso"
13721 # check the configured localizations
13722 WITH_LANG="$with_lang"
13724 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13725 # (Norwegian is "nb" and "nn".)
13726 if test "$WITH_LANG" = "no"; then
13727     WITH_LANG=
13730 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13731     AC_MSG_RESULT([en-US])
13732 else
13733     AC_MSG_RESULT([$WITH_LANG])
13734     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13735     if test -z "$MSGFMT"; then
13736         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13737             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13738         elif test -x "/opt/lo/bin/msgfmt"; then
13739             MSGFMT="/opt/lo/bin/msgfmt"
13740         else
13741             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13742             if test -z "$MSGFMT"; then
13743                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13744             fi
13745         fi
13746     fi
13747     if test -z "$MSGUNIQ"; then
13748         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13749             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13750         elif test -x "/opt/lo/bin/msguniq"; then
13751             MSGUNIQ="/opt/lo/bin/msguniq"
13752         else
13753             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13754             if test -z "$MSGUNIQ"; then
13755                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13756             fi
13757         fi
13758     fi
13760 AC_SUBST(MSGFMT)
13761 AC_SUBST(MSGUNIQ)
13762 # check that the list is valid
13763 for lang in $WITH_LANG; do
13764     test "$lang" = "ALL" && continue
13765     # need to check for the exact string, so add space before and after the list of all languages
13766     for vl in $ALL_LANGS; do
13767         if test "$vl" = "$lang"; then
13768            break
13769         fi
13770     done
13771     if test "$vl" != "$lang"; then
13772         # if you're reading this - you prolly quoted your languages remove the quotes ...
13773         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13774     fi
13775 done
13776 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13777     echo $WITH_LANG | grep -q en-US
13778     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13780 # list with substituted ALL
13781 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13782 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13783 test "$WITH_LANG" = "en-US" && WITH_LANG=
13784 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13785     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13786     ALL_LANGS=`echo $ALL_LANGS qtz`
13788 AC_SUBST(ALL_LANGS)
13789 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13790 AC_SUBST(WITH_LANG)
13791 AC_SUBST(WITH_LANG_LIST)
13792 AC_SUBST(GIT_NEEDED_SUBMODULES)
13794 WITH_POOR_HELP_LOCALIZATIONS=
13795 if test -d "$SRC_ROOT/translations/source"; then
13796     for l in `ls -1 $SRC_ROOT/translations/source`; do
13797         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13798             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13799         fi
13800     done
13802 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13804 if test -n "$with_locales"; then
13805     WITH_LOCALES="$with_locales"
13807     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13808     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13809     # config_host/config_locales.h.in
13810     for locale in $WITH_LOCALES; do
13811         lang=${locale%_*}
13813         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13815         case $lang in
13816         hi|mr*ne)
13817             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13818             ;;
13819         bg|ru)
13820             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13821             ;;
13822         esac
13823     done
13824 else
13825     AC_DEFINE(WITH_LOCALE_ALL)
13827 AC_SUBST(WITH_LOCALES)
13829 dnl git submodule update --reference
13830 dnl ===================================================================
13831 if test -n "${GIT_REFERENCE_SRC}"; then
13832     for repo in ${GIT_NEEDED_SUBMODULES}; do
13833         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13834             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13835         fi
13836     done
13838 AC_SUBST(GIT_REFERENCE_SRC)
13840 dnl git submodules linked dirs
13841 dnl ===================================================================
13842 if test -n "${GIT_LINK_SRC}"; then
13843     for repo in ${GIT_NEEDED_SUBMODULES}; do
13844         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13845             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13846         fi
13847     done
13849 AC_SUBST(GIT_LINK_SRC)
13851 dnl branding
13852 dnl ===================================================================
13853 AC_MSG_CHECKING([for alternative branding images directory])
13854 # initialize mapped arrays
13855 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13856 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13858 if test -z "$with_branding" -o "$with_branding" = "no"; then
13859     AC_MSG_RESULT([none])
13860     DEFAULT_BRAND_IMAGES="$brand_files"
13861 else
13862     if ! test -d $with_branding ; then
13863         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13864     else
13865         AC_MSG_RESULT([$with_branding])
13866         CUSTOM_BRAND_DIR="$with_branding"
13867         for lfile in $brand_files
13868         do
13869             if ! test -f $with_branding/$lfile ; then
13870                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13871                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13872             else
13873                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13874             fi
13875         done
13876         check_for_progress="yes"
13877     fi
13879 AC_SUBST([BRAND_INTRO_IMAGES])
13880 AC_SUBST([CUSTOM_BRAND_DIR])
13881 AC_SUBST([CUSTOM_BRAND_IMAGES])
13882 AC_SUBST([DEFAULT_BRAND_IMAGES])
13885 AC_MSG_CHECKING([for 'intro' progress settings])
13886 PROGRESSBARCOLOR=
13887 PROGRESSSIZE=
13888 PROGRESSPOSITION=
13889 PROGRESSFRAMECOLOR=
13890 PROGRESSTEXTCOLOR=
13891 PROGRESSTEXTBASELINE=
13893 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13894     source "$with_branding/progress.conf"
13895     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13896 else
13897     AC_MSG_RESULT([none])
13900 AC_SUBST(PROGRESSBARCOLOR)
13901 AC_SUBST(PROGRESSSIZE)
13902 AC_SUBST(PROGRESSPOSITION)
13903 AC_SUBST(PROGRESSFRAMECOLOR)
13904 AC_SUBST(PROGRESSTEXTCOLOR)
13905 AC_SUBST(PROGRESSTEXTBASELINE)
13908 dnl ===================================================================
13909 dnl Custom build version
13910 dnl ===================================================================
13911 AC_MSG_CHECKING([for extra build ID])
13912 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13913     EXTRA_BUILDID="$with_extra_buildid"
13915 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13916 if test -n "$EXTRA_BUILDID" ; then
13917     AC_MSG_RESULT([$EXTRA_BUILDID])
13918 else
13919     AC_MSG_RESULT([not set])
13921 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13923 OOO_VENDOR=
13924 AC_MSG_CHECKING([for vendor])
13925 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13926     OOO_VENDOR="$USERNAME"
13928     if test -z "$OOO_VENDOR"; then
13929         OOO_VENDOR="$USER"
13930     fi
13932     if test -z "$OOO_VENDOR"; then
13933         OOO_VENDOR="`id -u -n`"
13934     fi
13936     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13937 else
13938     OOO_VENDOR="$with_vendor"
13939     AC_MSG_RESULT([$OOO_VENDOR])
13941 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13942 AC_SUBST(OOO_VENDOR)
13944 if test "$_os" = "Android" ; then
13945     ANDROID_PACKAGE_NAME=
13946     AC_MSG_CHECKING([for Android package name])
13947     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13948         if test -n "$ENABLE_DEBUG"; then
13949             # Default to the package name that makes ndk-gdb happy.
13950             ANDROID_PACKAGE_NAME="org.libreoffice"
13951         else
13952             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13953         fi
13955         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13956     else
13957         ANDROID_PACKAGE_NAME="$with_android_package_name"
13958         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13959     fi
13960     AC_SUBST(ANDROID_PACKAGE_NAME)
13963 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13964 if test "$with_compat_oowrappers" = "yes"; then
13965     WITH_COMPAT_OOWRAPPERS=TRUE
13966     AC_MSG_RESULT(yes)
13967 else
13968     WITH_COMPAT_OOWRAPPERS=
13969     AC_MSG_RESULT(no)
13971 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13973 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13974 AC_MSG_CHECKING([for install dirname])
13975 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13976     INSTALLDIRNAME="$with_install_dirname"
13978 AC_MSG_RESULT([$INSTALLDIRNAME])
13979 AC_SUBST(INSTALLDIRNAME)
13981 AC_MSG_CHECKING([for prefix])
13982 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13983 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13984 PREFIXDIR="$prefix"
13985 AC_MSG_RESULT([$PREFIXDIR])
13986 AC_SUBST(PREFIXDIR)
13988 LIBDIR=[$(eval echo $(eval echo $libdir))]
13989 AC_SUBST(LIBDIR)
13991 DATADIR=[$(eval echo $(eval echo $datadir))]
13992 AC_SUBST(DATADIR)
13994 MANDIR=[$(eval echo $(eval echo $mandir))]
13995 AC_SUBST(MANDIR)
13997 DOCDIR=[$(eval echo $(eval echo $docdir))]
13998 AC_SUBST(DOCDIR)
14000 BINDIR=[$(eval echo $(eval echo $bindir))]
14001 AC_SUBST(BINDIR)
14003 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14004 AC_SUBST(INSTALLDIR)
14006 TESTINSTALLDIR="${BUILDDIR}/test-install"
14007 AC_SUBST(TESTINSTALLDIR)
14010 # ===================================================================
14011 # OAuth2 id and secrets
14012 # ===================================================================
14014 AC_MSG_CHECKING([for Google Drive client id and secret])
14015 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14016     AC_MSG_RESULT([not set])
14017     GDRIVE_CLIENT_ID="\"\""
14018     GDRIVE_CLIENT_SECRET="\"\""
14019 else
14020     AC_MSG_RESULT([set])
14021     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14022     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14024 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14025 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14027 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14028 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14029     AC_MSG_RESULT([not set])
14030     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14031     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14032 else
14033     AC_MSG_RESULT([set])
14034     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14035     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14037 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14038 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14040 AC_MSG_CHECKING([for OneDrive client id and secret])
14041 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14042     AC_MSG_RESULT([not set])
14043     ONEDRIVE_CLIENT_ID="\"\""
14044     ONEDRIVE_CLIENT_SECRET="\"\""
14045 else
14046     AC_MSG_RESULT([set])
14047     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14048     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14050 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14051 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14054 dnl ===================================================================
14055 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14056 dnl --enable-dependency-tracking configure option
14057 dnl ===================================================================
14058 AC_MSG_CHECKING([whether to enable dependency tracking])
14059 if test "$enable_dependency_tracking" = "no"; then
14060     nodep=TRUE
14061     AC_MSG_RESULT([no])
14062 else
14063     AC_MSG_RESULT([yes])
14065 AC_SUBST(nodep)
14067 dnl ===================================================================
14068 dnl Number of CPUs to use during the build
14069 dnl ===================================================================
14070 AC_MSG_CHECKING([for number of processors to use])
14071 # plain --with-parallelism is just the default
14072 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14073     if test "$with_parallelism" = "no"; then
14074         PARALLELISM=0
14075     else
14076         PARALLELISM=$with_parallelism
14077     fi
14078 else
14079     if test "$enable_icecream" = "yes"; then
14080         PARALLELISM="40"
14081     else
14082         case `uname -s` in
14084         Darwin|FreeBSD|NetBSD|OpenBSD)
14085             PARALLELISM=`sysctl -n hw.ncpu`
14086             ;;
14088         Linux)
14089             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14090         ;;
14091         # what else than above does profit here *and* has /proc?
14092         *)
14093             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14094             ;;
14095         esac
14097         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14098         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14099     fi
14102 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14103     if test -z "$with_parallelism"; then
14104             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14105             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14106             PARALLELISM="1"
14107     else
14108         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."
14109     fi
14112 if test $PARALLELISM -eq 0; then
14113     AC_MSG_RESULT([explicit make -j option needed])
14114 else
14115     AC_MSG_RESULT([$PARALLELISM])
14117 AC_SUBST(PARALLELISM)
14119 IWYU_PATH="$with_iwyu"
14120 AC_SUBST(IWYU_PATH)
14121 if test ! -z "$IWYU_PATH"; then
14122     if test ! -f "$IWYU_PATH"; then
14123         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14124     fi
14128 # Set up ILIB for MSVC build
14130 ILIB1=
14131 if test "$build_os" = "cygwin"; then
14132     ILIB="."
14133     if test -n "$JAVA_HOME"; then
14134         ILIB="$ILIB;$JAVA_HOME/lib"
14135     fi
14136     ILIB1=-link
14137     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14138     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14139     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14140     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14141     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14142         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14143         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14144     fi
14145     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14146     ucrtlibpath_formatted=$formatted_path
14147     ILIB="$ILIB;$ucrtlibpath_formatted"
14148     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14149     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14150         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14151     else
14152         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14153     fi
14155     if test "$cross_compiling" != "yes"; then
14156         ILIB_FOR_BUILD="$ILIB"
14157     fi
14159 AC_SUBST(ILIB)
14160 AC_SUBST(ILIB_FOR_BUILD)
14162 # ===================================================================
14163 # Creating bigger shared library to link against
14164 # ===================================================================
14165 AC_MSG_CHECKING([whether to create huge library])
14166 MERGELIBS=
14168 if test $_os = iOS -o $_os = Android; then
14169     # Never any point in mergelibs for these as we build just static
14170     # libraries anyway...
14171     enable_mergelibs=no
14174 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14175     if test $_os != Linux -a $_os != WINNT; then
14176         add_warning "--enable-mergelibs is not tested for this platform"
14177     fi
14178     MERGELIBS="TRUE"
14179     AC_MSG_RESULT([yes])
14180     AC_DEFINE(ENABLE_MERGELIBS)
14181 else
14182     AC_MSG_RESULT([no])
14184 AC_SUBST([MERGELIBS])
14186 dnl ===================================================================
14187 dnl icerun is a wrapper that stops us spawning tens of processes
14188 dnl locally - for tools that can't be executed on the compile cluster
14189 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14190 dnl ===================================================================
14191 AC_MSG_CHECKING([whether to use icerun wrapper])
14192 ICECREAM_RUN=
14193 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14194     ICECREAM_RUN=icerun
14195     AC_MSG_RESULT([yes])
14196 else
14197     AC_MSG_RESULT([no])
14199 AC_SUBST(ICECREAM_RUN)
14201 dnl ===================================================================
14202 dnl Setup the ICECC_VERSION for the build the same way it was set for
14203 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14204 dnl ===================================================================
14205 x_ICECC_VERSION=[\#]
14206 if test -n "$ICECC_VERSION" ; then
14207     x_ICECC_VERSION=
14209 AC_SUBST(x_ICECC_VERSION)
14210 AC_SUBST(ICECC_VERSION)
14212 dnl ===================================================================
14214 AC_MSG_CHECKING([MPL subset])
14215 MPL_SUBSET=
14217 if test "$enable_mpl_subset" = "yes"; then
14218     warn_report=false
14219     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14220         warn_report=true
14221     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14222         warn_report=true
14223     fi
14224     if test "$warn_report" = "true"; then
14225         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14226     fi
14227     if test "x$enable_postgresql_sdbc" != "xno"; then
14228         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14229     fi
14230     if test "$enable_lotuswordpro" = "yes"; then
14231         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14232     fi
14233     if test "$WITH_WEBDAV" = "neon"; then
14234         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14235     fi
14236     if test -n "$ENABLE_POPPLER"; then
14237         if test "x$SYSTEM_POPPLER" = "x"; then
14238             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14239         fi
14240     fi
14241     # cf. m4/libo_check_extension.m4
14242     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14243         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14244     fi
14245     for theme in $WITH_THEMES; do
14246         case $theme in
14247         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14248             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14249         *) : ;;
14250         esac
14251     done
14253     ENABLE_OPENGL_TRANSITIONS=
14255     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14256         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14257     fi
14259     MPL_SUBSET="TRUE"
14260     AC_DEFINE(MPL_HAVE_SUBSET)
14261     AC_MSG_RESULT([only])
14262 else
14263     AC_MSG_RESULT([no restrictions])
14265 AC_SUBST(MPL_SUBSET)
14267 dnl ===================================================================
14269 AC_MSG_CHECKING([formula logger])
14270 ENABLE_FORMULA_LOGGER=
14272 if test "x$enable_formula_logger" = "xyes"; then
14273     AC_MSG_RESULT([yes])
14274     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14275     ENABLE_FORMULA_LOGGER=TRUE
14276 elif test -n "$ENABLE_DBGUTIL" ; then
14277     AC_MSG_RESULT([yes])
14278     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14279     ENABLE_FORMULA_LOGGER=TRUE
14280 else
14281     AC_MSG_RESULT([no])
14284 AC_SUBST(ENABLE_FORMULA_LOGGER)
14286 dnl ===================================================================
14287 dnl Checking for active Antivirus software.
14288 dnl ===================================================================
14290 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14291     AC_MSG_CHECKING([for active Antivirus software])
14292     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14293     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14294         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14295             AC_MSG_RESULT([found])
14296             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14297             echo $EICAR_STRING > $SRC_ROOT/eicar
14298             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14299             rm $SRC_ROOT/eicar
14300             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14301                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14302             fi
14303             echo $EICAR_STRING > $BUILDDIR/eicar
14304             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14305             rm $BUILDDIR/eicar
14306             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14307                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14308             fi
14309             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"
14310         else
14311             AC_MSG_RESULT([not found])
14312         fi
14313     else
14314         AC_MSG_RESULT([n/a])
14315     fi
14318 dnl ===================================================================
14319 dnl Setting up the environment.
14320 dnl ===================================================================
14321 AC_MSG_NOTICE([setting up the build environment variables...])
14323 AC_SUBST(COMPATH)
14325 if test "$build_os" = "cygwin"; then
14326     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14327         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14328         ATL_INCLUDE="$COMPATH/atlmfc/include"
14329     elif test -d "$COMPATH/atlmfc/lib"; then
14330         ATL_LIB="$COMPATH/atlmfc/lib"
14331         ATL_INCLUDE="$COMPATH/atlmfc/include"
14332     else
14333         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14334         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14335     fi
14336     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14337     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14338     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14340     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14341     PathFormat "/usr/bin/find.exe"
14342     FIND="$formatted_path"
14343     PathFormat "/usr/bin/sort.exe"
14344     SORT="$formatted_path"
14345     PathFormat "/usr/bin/grep.exe"
14346     WIN_GREP="$formatted_path"
14347     PathFormat "/usr/bin/ls.exe"
14348     WIN_LS="$formatted_path"
14349     PathFormat "/usr/bin/touch.exe"
14350     WIN_TOUCH="$formatted_path"
14351 else
14352     FIND=find
14353     SORT=sort
14356 AC_SUBST(ATL_INCLUDE)
14357 AC_SUBST(ATL_LIB)
14358 AC_SUBST(FIND)
14359 AC_SUBST(SORT)
14360 AC_SUBST(WIN_GREP)
14361 AC_SUBST(WIN_LS)
14362 AC_SUBST(WIN_TOUCH)
14364 AC_SUBST(BUILD_TYPE)
14366 AC_SUBST(SOLARINC)
14368 PathFormat "$PERL"
14369 PERL="$formatted_path"
14370 AC_SUBST(PERL)
14372 if test -n "$TMPDIR"; then
14373     TEMP_DIRECTORY="$TMPDIR"
14374 else
14375     TEMP_DIRECTORY="/tmp"
14377 if test "$build_os" = "cygwin"; then
14378     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14380 AC_SUBST(TEMP_DIRECTORY)
14382 # setup the PATH for the environment
14383 if test -n "$LO_PATH_FOR_BUILD"; then
14384     LO_PATH="$LO_PATH_FOR_BUILD"
14385     case "$host_os" in
14386     cygwin*|wsl*)
14387         pathmunge "$MSVC_HOST_PATH" "before"
14388         ;;
14389     esac
14390 else
14391     LO_PATH="$PATH"
14393     case "$host_os" in
14395     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14396         if test "$ENABLE_JAVA" != ""; then
14397             pathmunge "$JAVA_HOME/bin" "after"
14398         fi
14399         ;;
14401     cygwin*|wsl*)
14402         # Win32 make needs native paths
14403         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14404             LO_PATH=`cygpath -p -m "$PATH"`
14405         fi
14406         if test "$WIN_BUILD_ARCH" = "x64"; then
14407             # needed for msi packaging
14408             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14409         fi
14410         # .NET 4.6 and higher don't have bin directory
14411         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14412             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14413         fi
14414         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14415         pathmunge "$CSC_PATH" "before"
14416         pathmunge "$MIDL_PATH" "before"
14417         pathmunge "$AL_PATH" "before"
14418         pathmunge "$MSVC_MULTI_PATH" "before"
14419         pathmunge "$MSVC_BUILD_PATH" "before"
14420         if test -n "$MSBUILD_PATH" ; then
14421             pathmunge "$MSBUILD_PATH" "before"
14422         fi
14423         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14424         if test "$ENABLE_JAVA" != ""; then
14425             if test -d "$JAVA_HOME/jre/bin/client"; then
14426                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14427             fi
14428             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14429                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14430             fi
14431             pathmunge "$JAVA_HOME/bin" "before"
14432         fi
14433         pathmunge "$MSVC_HOST_PATH" "before"
14434         ;;
14436     solaris*)
14437         pathmunge "/usr/css/bin" "before"
14438         if test "$ENABLE_JAVA" != ""; then
14439             pathmunge "$JAVA_HOME/bin" "after"
14440         fi
14441         ;;
14442     esac
14445 AC_SUBST(LO_PATH)
14447 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14448 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14449     x_LO_ELFCHECK_ALLOWLIST=
14450 else
14451     x_LO_ELFCHECK_ALLOWLIST=[\#]
14453 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14454 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14456 libo_FUZZ_SUMMARY
14458 # Generate a configuration sha256 we can use for deps
14459 if test -f config_host.mk; then
14460     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14462 if test -f config_host_lang.mk; then
14463     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14466 CFLAGS=$my_original_CFLAGS
14467 CXXFLAGS=$my_original_CXXFLAGS
14468 CPPFLAGS=$my_original_CPPFLAGS
14470 AC_CONFIG_LINKS([include:include])
14472 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14473 # BUILD platform configuration] - otherwise breaks cross building
14474 AC_CONFIG_FILES([config_host.mk
14475                  config_host_lang.mk
14476                  Makefile
14477                  bin/bffvalidator.sh
14478                  bin/odfvalidator.sh
14479                  bin/officeotron.sh
14480                  hardened_runtime.xcent
14481                  instsetoo_native/util/openoffice.lst
14482                  sysui/desktop/macosx/Info.plist
14483                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14484 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14485 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14486 AC_CONFIG_HEADERS([config_host/config_clang.h])
14487 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14488 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14489 AC_CONFIG_HEADERS([config_host/config_eot.h])
14490 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14491 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14492 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14493 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14494 AC_CONFIG_HEADERS([config_host/config_features.h])
14495 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14496 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14497 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14498 AC_CONFIG_HEADERS([config_host/config_folders.h])
14499 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14500 AC_CONFIG_HEADERS([config_host/config_gio.h])
14501 AC_CONFIG_HEADERS([config_host/config_global.h])
14502 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14503 AC_CONFIG_HEADERS([config_host/config_java.h])
14504 AC_CONFIG_HEADERS([config_host/config_langs.h])
14505 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14506 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14507 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14508 AC_CONFIG_HEADERS([config_host/config_locales.h])
14509 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14510 AC_CONFIG_HEADERS([config_host/config_oox.h])
14511 AC_CONFIG_HEADERS([config_host/config_options.h])
14512 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14513 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14514 AC_CONFIG_HEADERS([config_host/config_skia.h])
14515 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14516 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14517 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14518 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14519 AC_CONFIG_HEADERS([config_host/config_version.h])
14520 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14521 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14522 AC_CONFIG_HEADERS([config_host/config_python.h])
14523 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14524 AC_OUTPUT
14526 if test "$CROSS_COMPILING" = TRUE; then
14527     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14530 # touch the config timestamp file
14531 if test ! -f config_host.mk.stamp; then
14532     echo > config_host.mk.stamp
14533 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14534     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14535 else
14536     echo > config_host.mk.stamp
14539 # touch the config lang timestamp file
14540 if test ! -f config_host_lang.mk.stamp; then
14541     echo > config_host_lang.mk.stamp
14542 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14543     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14544 else
14545     echo > config_host_lang.mk.stamp
14549 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14550         -a "$build_os" = "cygwin"; then
14552 cat << _EOS
14553 ****************************************************************************
14554 WARNING:
14555 Your make version is known to be horribly slow, and hard to debug
14556 problems with. To get a reasonably functional make please do:
14558 to install a pre-compiled binary make for Win32
14560  mkdir -p /opt/lo/bin
14561  cd /opt/lo/bin
14562  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14563  cp make-4.2.1-msvc.exe make
14564  chmod +x make
14566 to install from source:
14567 place yourself in a working directory of you choice.
14569  git clone git://git.savannah.gnu.org/make.git
14571  [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"]
14572  set PATH=%PATH%;C:\Cygwin\bin
14573  [or Cygwin64, if that is what you have]
14574  cd path-to-make-repo-you-cloned-above
14575  build_w32.bat --without-guile
14577 should result in a WinRel/gnumake.exe.
14578 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14580 Then re-run autogen.sh
14582 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14583 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14585 _EOS
14586 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14587     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14592 cat << _EOF
14593 ****************************************************************************
14595 To build, run:
14596 $GNUMAKE
14598 To view some help, run:
14599 $GNUMAKE help
14601 _EOF
14603 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14604     cat << _EOF
14605 After the build has finished successfully, you can immediately run what you built using the command:
14606 _EOF
14608     if test $_os = Darwin; then
14609         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14610     else
14611         echo instdir/program/soffice
14612     fi
14613     cat << _EOF
14615 If you want to run the smoketest, run:
14616 $GNUMAKE check
14618 _EOF
14621 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14622     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14623     cat "$WARNINGS_FILE_FOR_BUILD"
14624     echo
14627 if test -s "$WARNINGS_FILE"; then
14628     echo "HOST config ($WARNINGS_FILE)"
14629     cat "$WARNINGS_FILE"
14632 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: