Simplify m_aAppId initialization
[LibreOffice.git] / configure.ac
blob23c2beaceefd9c9caa4b11bee040f29c7ca56d7c
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 -isystem /usr/include -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 -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3891         if test -z "$vswhereoutput"; then
3892             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3893         fi
3894         # Fall back to all MS products (this includes VC++ Build Tools)
3895         if ! test -n "$vswhereoutput"; then
3896             AC_MSG_CHECKING([VC++ Build Tools and similar])
3897             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3898         fi
3899         if test -n "$vswhereoutput"; then
3900             PathFormat "$vswhereoutput"
3901             vctest=$formatted_path_unix
3902             break
3903         fi
3904     done
3906     if test -n "$vctest"; then
3907         vcnumwithdot="$ver.0"
3908         case "$vcnumwithdot" in
3909         16.0)
3910             vcyear=2019
3911             vctoolset=v142
3912             ;;
3913         17.0)
3914             vcyear=2022
3915             vctoolset=v143
3916             ;;
3917         esac
3918         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3920     fi
3923 test_cl_exe()
3925     AC_MSG_CHECKING([$1 compiler])
3927     CL_EXE_PATH="$2/cl.exe"
3929     if test ! -f "$CL_EXE_PATH"; then
3930         if test "$1" = "multi-arch"; then
3931             AC_MSG_WARN([no compiler (cl.exe) in $2])
3932             return 1
3933         else
3934             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3935         fi
3936     fi
3938     dnl ===========================================================
3939     dnl  Check for the corresponding mspdb*.dll
3940     dnl ===========================================================
3942     # MSVC 15.0 has libraries from 14.0?
3943     mspdbnum="140"
3945     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3946         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3947     fi
3949     # The compiles has to find its shared libraries
3950     OLD_PATH="$PATH"
3951     TEMP_PATH=`cygpath -d "$2"`
3952     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3954     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3955         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3956     fi
3958     PATH="$OLD_PATH"
3960     AC_MSG_RESULT([$CL_EXE_PATH])
3963 SOLARINC=
3964 MSBUILD_PATH=
3965 DEVENV=
3966 if test "$_os" = "WINNT"; then
3967     AC_MSG_CHECKING([Visual C++])
3968     find_msvc "$with_visual_studio"
3969     if test -z "$vctest"; then
3970         if test -n "$with_visual_studio"; then
3971             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3972         else
3973             AC_MSG_ERROR([no Visual Studio installation found])
3974         fi
3975     fi
3976     AC_MSG_RESULT([])
3978     VC_PRODUCT_DIR="$vctest/VC"
3979     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3981     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3982     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3983         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3984         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3985         if test $? -ne 0; then
3986             WIN_MULTI_ARCH=""
3987             WIN_OTHER_ARCH=""
3988         fi
3989     fi
3991     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3992         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3993         test_cl_exe "build" "$MSVC_BUILD_PATH"
3994     fi
3996     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3997         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3998         test_cl_exe "host" "$MSVC_HOST_PATH"
3999     else
4000         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4001     fi
4003     AC_MSG_CHECKING([for short pathname of VC product directory])
4004     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4005     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4007     UCRTSDKDIR=
4008     UCRTVERSION=
4010     AC_MSG_CHECKING([for UCRT location])
4011     find_ucrt
4012     # find_ucrt errors out if it doesn't find it
4013     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4014     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4015     ucrtincpath_formatted=$formatted_path
4016     # SOLARINC is used for external modules and must be set too.
4017     # And no, it's not sufficient to set SOLARINC only, as configure
4018     # itself doesn't honour it.
4019     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4020     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4021     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4022     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4024     AC_SUBST(UCRTSDKDIR)
4025     AC_SUBST(UCRTVERSION)
4027     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4028     # Find the proper version of MSBuild.exe to use based on the VS version
4029     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4030     if test -z "$regvalue" ; then
4031         if test "$WIN_BUILD_ARCH" != "x64"; then
4032             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4033         else
4034             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4035         fi
4036     fi
4037     if test -d "$regvalue" ; then
4038         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4039         AC_MSG_RESULT([$regvalue])
4040     else
4041         AC_MSG_ERROR([MSBuild.exe location not found])
4042     fi
4044     # Find the version of devenv.exe
4045     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4046     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4047     DEVENV_unix=$(cygpath -u "$DEVENV")
4048     if test ! -e "$DEVENV_unix"; then
4049         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4050     fi
4052     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4053     dnl needed when building CLR code:
4054     if test -z "$MSVC_CXX"; then
4055         # This gives us a posix path with 8.3 filename restrictions
4056         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4057     fi
4059     if test -z "$CC"; then
4060         CC=$MSVC_CXX
4061         CC_BASE=`first_arg_basename "$CC"`
4062     fi
4063     if test -z "$CXX"; then
4064         CXX=$MSVC_CXX
4065         CXX_BASE=`first_arg_basename "$CXX"`
4066     fi
4068     if test -n "$CC"; then
4069         # Remove /cl.exe from CC case insensitive
4070         AC_MSG_NOTICE([found Visual C++ $vcyear])
4072         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4073         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4075         PathFormat "$COMPATH"
4076         COMPATH=`win_short_path_for_make "$formatted_path"`
4078         VCVER=$vcnumwithdot
4079         VCTOOLSET=$vctoolset
4081         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4082         # are always "better", we list them in reverse chronological order.
4084         case "$vcnumwithdot" in
4085         16.0 | 17.0)
4086             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4087             ;;
4088         esac
4090         # The expectation is that --with-windows-sdk should not need to be used
4091         if test -n "$with_windows_sdk"; then
4092             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4093             *" "$with_windows_sdk" "*)
4094                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4095                 ;;
4096             *)
4097                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4098                 ;;
4099             esac
4100         fi
4102         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4103         ac_objext=obj
4104         ac_exeext=exe
4106     else
4107         AC_MSG_ERROR([Visual C++ not found after all, huh])
4108     fi
4110     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4111     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4112         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4113         // between Visual Studio versions and _MSC_VER:
4114         #if _MSC_VER < 1925
4115         #error
4116         #endif
4117     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4119     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4120     # version of the Explorer extension (and maybe other small
4121     # bits, too) needed when installing a 32-bit LibreOffice on a
4122     # 64-bit OS. The 64-bit Explorer extension is a feature that
4123     # has been present since long in OOo. Don't confuse it with
4124     # building LibreOffice itself as 64-bit code.
4126     BUILD_X64=
4127     CXX_X64_BINARY=
4129     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4130         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4131         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4132              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4133         then
4134             BUILD_X64=TRUE
4135             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4136             AC_MSG_RESULT([found])
4137         else
4138             AC_MSG_RESULT([not found])
4139             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4140         fi
4141     elif test "$WIN_HOST_ARCH" = "x64"; then
4142         CXX_X64_BINARY=$CXX
4143     fi
4144     AC_SUBST(BUILD_X64)
4146     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4147     AC_SUBST(CXX_X64_BINARY)
4149     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4150     # needed to support TWAIN scan on both 32- and 64-bit systems
4152     case "$WIN_HOST_ARCH" in
4153     x64)
4154         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4155         if test -n "$CXX_X86_BINARY"; then
4156             BUILD_X86=TRUE
4157             AC_MSG_RESULT([preset])
4158         elif test -n "$WIN_MULTI_ARCH"; then
4159             BUILD_X86=TRUE
4160             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4161             CXX_X86_BINARY+=" /arch:SSE"
4162             AC_MSG_RESULT([found])
4163         else
4164             AC_MSG_RESULT([not found])
4165             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4166         fi
4167         ;;
4168     x86)
4169         BUILD_X86=TRUE
4170         CXX_X86_BINARY=$MSVC_CXX
4171         ;;
4172     esac
4173     AC_SUBST(BUILD_X86)
4174     AC_SUBST(CXX_X86_BINARY)
4176 AC_SUBST(VCVER)
4177 AC_SUBST(VCTOOLSET)
4178 AC_SUBST(DEVENV)
4179 AC_SUBST(MSVC_CXX)
4181 COM_IS_CLANG=
4182 AC_MSG_CHECKING([whether the compiler is actually Clang])
4183 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4184     #ifndef __clang__
4185     you lose
4186     #endif
4187     int foo=42;
4188     ]])],
4189     [AC_MSG_RESULT([yes])
4190      COM_IS_CLANG=TRUE],
4191     [AC_MSG_RESULT([no])])
4192 AC_SUBST(COM_IS_CLANG)
4194 CC_PLAIN=$CC
4195 CLANGVER=
4196 if test "$COM_IS_CLANG" = TRUE; then
4197     AC_MSG_CHECKING([whether Clang is new enough])
4198     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4199         #if !defined __apple_build_version__
4200         #error
4201         #endif
4202         ]])],
4203         [my_apple_clang=yes],[my_apple_clang=])
4204     if test "$my_apple_clang" = yes; then
4205         AC_MSG_RESULT([assumed yes (Apple Clang)])
4206     elif test "$_os" = Emscripten; then
4207         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4208     else
4209         if test "$_os" = WINNT; then
4210             dnl In which case, assume clang-cl:
4211             my_args="/EP /TC"
4212             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4213             dnl clang-cl:
4214             CC_PLAIN=
4215             for i in $CC; do
4216                 case $i in
4217                 -FIIntrin.h)
4218                     ;;
4219                 *)
4220                     CC_PLAIN="$CC_PLAIN $i"
4221                     ;;
4222                 esac
4223             done
4224         else
4225             my_args="-E -P"
4226         fi
4227         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4228         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4229         CLANGVER=`echo $clang_version \
4230             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4231         if test "$CLANGVER" -ge 50002; then
4232             AC_MSG_RESULT([yes ($clang_version)])
4233         else
4234             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4235         fi
4236         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4237         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4238     fi
4241 SHOWINCLUDES_PREFIX=
4242 if test "$_os" = WINNT; then
4243     dnl We need to guess the prefix of the -showIncludes output, it can be
4244     dnl localized
4245     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4246     echo "#include <stdlib.h>" > conftest.c
4247     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4248         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4249     rm -f conftest.c conftest.obj
4250     if test -z "$SHOWINCLUDES_PREFIX"; then
4251         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4252     else
4253         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4254     fi
4256 AC_SUBST(SHOWINCLUDES_PREFIX)
4259 # prefix C with ccache if needed
4261 if test "$CCACHE" != ""; then
4262     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4264     AC_LANG_PUSH([C])
4265     save_CFLAGS=$CFLAGS
4266     CFLAGS="$CFLAGS --ccache-skip -O2"
4267     dnl an empty program will do, we're checking the compiler flags
4268     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4269                       [use_ccache=yes], [use_ccache=no])
4270     CFLAGS=$save_CFLAGS
4271     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4272         AC_MSG_RESULT([yes])
4273     else
4274         CC="$CCACHE $CC"
4275         CC_BASE="ccache $CC_BASE"
4276         AC_MSG_RESULT([no])
4277     fi
4278     AC_LANG_POP([C])
4281 # ===================================================================
4282 # check various GCC options that Clang does not support now but maybe
4283 # will somewhen in the future, check them even for GCC, so that the
4284 # flags are set
4285 # ===================================================================
4287 HAVE_GCC_GGDB2=
4288 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4289     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4290     save_CFLAGS=$CFLAGS
4291     CFLAGS="$CFLAGS -Werror -ggdb2"
4292     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4293     CFLAGS=$save_CFLAGS
4294     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4295         AC_MSG_RESULT([yes])
4296     else
4297         AC_MSG_RESULT([no])
4298     fi
4300     if test "$host_cpu" = "m68k"; then
4301         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4302         save_CFLAGS=$CFLAGS
4303         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4304         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4305         CFLAGS=$save_CFLAGS
4306         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4307             AC_MSG_RESULT([yes])
4308         else
4309             AC_MSG_ERROR([no])
4310         fi
4311     fi
4313 AC_SUBST(HAVE_GCC_GGDB2)
4315 dnl ===================================================================
4316 dnl  Test the gcc version
4317 dnl ===================================================================
4318 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4319     AC_MSG_CHECKING([the GCC version])
4320     _gcc_version=`$CC -dumpfullversion`
4321     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4322         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4323     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4325     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4327     if test "$gcc_full_version" -lt 70000; then
4328         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4329     fi
4330 else
4331     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4332     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4333     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4334     # (which reports itself as GCC 4.2.1).
4335     GCC_VERSION=
4337 AC_SUBST(GCC_VERSION)
4339 dnl Set the ENABLE_DBGUTIL variable
4340 dnl ===================================================================
4341 AC_MSG_CHECKING([whether to build with additional debug utilities])
4342 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4343     ENABLE_DBGUTIL="TRUE"
4344     # this is an extra var so it can have different default on different MSVC
4345     # versions (in case there are version specific problems with it)
4346     MSVC_USE_DEBUG_RUNTIME="TRUE"
4348     AC_MSG_RESULT([yes])
4349     # cppunit and graphite expose STL in public headers
4350     if test "$with_system_cppunit" = "yes"; then
4351         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4352     else
4353         with_system_cppunit=no
4354     fi
4355     if test "$with_system_graphite" = "yes"; then
4356         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4357     else
4358         with_system_graphite=no
4359     fi
4360     if test "$with_system_orcus" = "yes"; then
4361         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4362     else
4363         with_system_orcus=no
4364     fi
4365     if test "$with_system_libcmis" = "yes"; then
4366         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4367     else
4368         with_system_libcmis=no
4369     fi
4370     if test "$with_system_hunspell" = "yes"; then
4371         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4372     else
4373         with_system_hunspell=no
4374     fi
4375     if test "$with_system_gpgmepp" = "yes"; then
4376         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4377     else
4378         with_system_gpgmepp=no
4379     fi
4380     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4381     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4382     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4383     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4384     # of those two is using the system variant:
4385     if test "$with_system_libnumbertext" = "yes"; then
4386         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4387     else
4388         with_system_libnumbertext=no
4389     fi
4390     if test "$with_system_libwps" = "yes"; then
4391         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4392     else
4393         with_system_libwps=no
4394     fi
4395 else
4396     ENABLE_DBGUTIL=""
4397     MSVC_USE_DEBUG_RUNTIME=""
4398     AC_MSG_RESULT([no])
4400 AC_SUBST(ENABLE_DBGUTIL)
4401 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4403 dnl Set the ENABLE_DEBUG variable.
4404 dnl ===================================================================
4405 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4406     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4408 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4409     if test -z "$libo_fuzzed_enable_debug"; then
4410         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4411     else
4412         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4413         enable_debug=yes
4414     fi
4417 AC_MSG_CHECKING([whether to do a debug build])
4418 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4419     ENABLE_DEBUG="TRUE"
4420     if test -n "$ENABLE_DBGUTIL" ; then
4421         AC_MSG_RESULT([yes (dbgutil)])
4422     else
4423         AC_MSG_RESULT([yes])
4424     fi
4425 else
4426     ENABLE_DEBUG=""
4427     AC_MSG_RESULT([no])
4429 AC_SUBST(ENABLE_DEBUG)
4431 dnl ===================================================================
4432 dnl Select the linker to use (gold/lld/ld.bfd).
4433 dnl This is done only after compiler checks (need to know if Clang is
4434 dnl used, for different defaults) and after checking if a debug build
4435 dnl is wanted (non-debug builds get the default linker if not explicitly
4436 dnl specified otherwise).
4437 dnl All checks for linker features/options should come after this.
4438 dnl ===================================================================
4439 check_use_ld()
4441     use_ld=-fuse-ld=${1%%:*}
4442     use_ld_path=${1#*:}
4443     if test "$use_ld_path" != "$1"; then
4444         use_ld="$use_ld --ld-path=$use_ld_path"
4445     fi
4446     use_ld_fail_if_error=$2
4447     use_ld_ok=
4448     AC_MSG_CHECKING([for $use_ld linker support])
4449     use_ld_ldflags_save="$LDFLAGS"
4450     LDFLAGS="$LDFLAGS $use_ld"
4451     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4452 #include <stdio.h>
4453         ],[
4454 printf ("hello world\n");
4455         ])], USE_LD=$use_ld, [])
4456     if test -n "$USE_LD"; then
4457         AC_MSG_RESULT( yes )
4458         use_ld_ok=yes
4459     else
4460         if test -n "$use_ld_fail_if_error"; then
4461             AC_MSG_ERROR( no )
4462         else
4463             AC_MSG_RESULT( no )
4464         fi
4465     fi
4466     if test -n "$use_ld_ok"; then
4467         dnl keep the value of LDFLAGS
4468         return 0
4469     fi
4470     LDFLAGS="$use_ld_ldflags_save"
4471     return 1
4473 USE_LD=
4474 if test "$enable_ld" != "no"; then
4475     if test "$GCC" = "yes"; then
4476         if test -n "$enable_ld"; then
4477             check_use_ld "$enable_ld" fail_if_error
4478         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4479             dnl non-debug builds default to the default linker
4480             true
4481         elif test -n "$COM_IS_CLANG"; then
4482             check_use_ld lld
4483             if test $? -ne 0; then
4484                 check_use_ld gold
4485             fi
4486         else
4487             # For gcc first try gold, new versions also support lld.
4488             check_use_ld gold
4489             if test $? -ne 0; then
4490                 check_use_ld lld
4491             fi
4492         fi
4493         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4494         rm conftest.out
4495         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4496         if test -z "$ld_used"; then
4497             ld_used="unknown"
4498         fi
4499         AC_MSG_CHECKING([for linker that is used])
4500         AC_MSG_RESULT([$ld_used])
4501         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4502             if echo "$ld_used" | grep -q "^GNU ld"; then
4503                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4504                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4505             fi
4506         fi
4507     else
4508         if test "$enable_ld" = "yes"; then
4509             AC_MSG_ERROR([--enable-ld not supported])
4510         fi
4511     fi
4513 AC_SUBST(USE_LD)
4515 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4516 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4517     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4518     bsymbolic_functions_ldflags_save=$LDFLAGS
4519     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4520     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4521 #include <stdio.h>
4522         ],[
4523 printf ("hello world\n");
4524         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4525     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4526         AC_MSG_RESULT( found )
4527     else
4528         AC_MSG_RESULT( not found )
4529     fi
4530     LDFLAGS=$bsymbolic_functions_ldflags_save
4532 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4534 LD_GC_SECTIONS=
4535 if test "$GCC" = "yes"; then
4536     for flag in "--gc-sections" "-dead_strip"; do
4537         AC_MSG_CHECKING([for $flag linker support])
4538         ldflags_save=$LDFLAGS
4539         LDFLAGS="$LDFLAGS -Wl,$flag"
4540         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4541 #include <stdio.h>
4542             ],[
4543 printf ("hello world\n");
4544             ])],[
4545             LD_GC_SECTIONS="-Wl,$flag"
4546             AC_MSG_RESULT( found )
4547             ], [
4548             AC_MSG_RESULT( not found )
4549             ])
4550         LDFLAGS=$ldflags_save
4551         if test -n "$LD_GC_SECTIONS"; then
4552             break
4553         fi
4554     done
4556 AC_SUBST(LD_GC_SECTIONS)
4558 HAVE_GSPLIT_DWARF=
4559 if test "$enable_split_debug" != no; then
4560     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4561     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4562         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4563         save_CFLAGS=$CFLAGS
4564         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4565         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4566         CFLAGS=$save_CFLAGS
4567         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4568             AC_MSG_RESULT([yes])
4569         else
4570             if test "$enable_split_debug" = yes; then
4571                 AC_MSG_ERROR([no])
4572             else
4573                 AC_MSG_RESULT([no])
4574             fi
4575         fi
4576     fi
4577     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4578         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4579         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4580     fi
4582 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4584 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4585 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4586 save_CFLAGS=$CFLAGS
4587 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4588 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4589 CFLAGS=$save_CFLAGS
4590 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4591     AC_MSG_RESULT([yes])
4592 else
4593     AC_MSG_RESULT([no])
4595 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4597 ENABLE_GDB_INDEX=
4598 if test "$enable_gdb_index" != "no"; then
4599     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4600     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4601         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4602         save_CFLAGS=$CFLAGS
4603         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4604         have_ggnu_pubnames=
4605         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4606         if test "$have_ggnu_pubnames" != "TRUE"; then
4607             if test "$enable_gdb_index" = "yes"; then
4608                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4609             else
4610                 AC_MSG_RESULT( no )
4611             fi
4612         else
4613             AC_MSG_RESULT( yes )
4614             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4615             ldflags_save=$LDFLAGS
4616             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4617             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4618 #include <stdio.h>
4619                 ],[
4620 printf ("hello world\n");
4621                 ])], ENABLE_GDB_INDEX=TRUE, [])
4622             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4623                 AC_MSG_RESULT( yes )
4624             else
4625                 if test "$enable_gdb_index" = "yes"; then
4626                     AC_MSG_ERROR( no )
4627                 else
4628                     AC_MSG_RESULT( no )
4629                 fi
4630             fi
4631             LDFLAGS=$ldflags_save
4632         fi
4633         CFLAGS=$save_CFLAGS
4634         fi
4635     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4636         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4637         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4638     fi
4640 AC_SUBST(ENABLE_GDB_INDEX)
4642 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4643     enable_sal_log=yes
4645 if test "$enable_sal_log" = yes; then
4646     ENABLE_SAL_LOG=TRUE
4648 AC_SUBST(ENABLE_SAL_LOG)
4650 dnl Check for enable symbols option
4651 dnl ===================================================================
4652 AC_MSG_CHECKING([whether to generate debug information])
4653 if test -z "$enable_symbols"; then
4654     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4655         enable_symbols=yes
4656     else
4657         enable_symbols=no
4658     fi
4660 if test "$enable_symbols" = yes; then
4661     ENABLE_SYMBOLS_FOR=all
4662     AC_MSG_RESULT([yes])
4663 elif test "$enable_symbols" = no; then
4664     ENABLE_SYMBOLS_FOR=
4665     AC_MSG_RESULT([no])
4666 else
4667     # Selective debuginfo.
4668     ENABLE_SYMBOLS_FOR="$enable_symbols"
4669     AC_MSG_RESULT([for "$enable_symbols"])
4671 AC_SUBST(ENABLE_SYMBOLS_FOR)
4673 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4674     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4675     AC_MSG_CHECKING([whether enough memory is available for linking])
4676     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4677     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4678     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4679         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4680     else
4681         AC_MSG_RESULT([yes])
4682     fi
4685 ENABLE_OPTIMIZED=
4686 ENABLE_OPTIMIZED_DEBUG=
4687 AC_MSG_CHECKING([whether to compile with optimization flags])
4688 if test -z "$enable_optimized"; then
4689     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4690         enable_optimized=no
4691     else
4692         enable_optimized=yes
4693     fi
4695 if test "$enable_optimized" = yes; then
4696     ENABLE_OPTIMIZED=TRUE
4697     AC_MSG_RESULT([yes])
4698 elif test "$enable_optimized" = debug; then
4699     ENABLE_OPTIMIZED_DEBUG=TRUE
4700     AC_MSG_RESULT([yes (debug)])
4701     HAVE_GCC_OG=
4702     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4703         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4704         save_CFLAGS=$CFLAGS
4705         CFLAGS="$CFLAGS -Werror -Og"
4706         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4707         CFLAGS=$save_CFLAGS
4708         if test "$HAVE_GCC_OG" = "TRUE"; then
4709             AC_MSG_RESULT([yes])
4710         else
4711             AC_MSG_RESULT([no])
4712         fi
4713     fi
4714     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4715         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4716     fi
4717 else
4718     AC_MSG_RESULT([no])
4720 AC_SUBST(ENABLE_OPTIMIZED)
4721 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4724 # determine CPUNAME, OS, ...
4726 case "$host_os" in
4728 aix*)
4729     COM=GCC
4730     CPUNAME=POWERPC
4731     OS=AIX
4732     RTL_OS=AIX
4733     RTL_ARCH=PowerPC
4734     PLATFORMID=aix_powerpc
4735     P_SEP=:
4736     ;;
4738 cygwin*|wsl*)
4739     # Already handled
4740     ;;
4742 darwin*|macos*)
4743     COM=GCC
4744     OS=MACOSX
4745     RTL_OS=MacOSX
4746     P_SEP=:
4748     case "$host_cpu" in
4749     aarch64|arm64)
4750         if test "$enable_ios_simulator" = "yes"; then
4751             OS=iOS
4752         else
4753             CPUNAME=AARCH64
4754             RTL_ARCH=AARCH64
4755             PLATFORMID=macosx_aarch64
4756         fi
4757         ;;
4758     x86_64)
4759         if test "$enable_ios_simulator" = "yes"; then
4760             OS=iOS
4761         fi
4762         CPUNAME=X86_64
4763         RTL_ARCH=X86_64
4764         PLATFORMID=macosx_x86_64
4765         ;;
4766     *)
4767         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4768         ;;
4769     esac
4770     ;;
4772 ios*)
4773     COM=GCC
4774     OS=iOS
4775     RTL_OS=iOS
4776     P_SEP=:
4778     case "$host_cpu" in
4779     aarch64|arm64)
4780         if test "$enable_ios_simulator" = "yes"; then
4781             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4782         fi
4783         ;;
4784     *)
4785         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4786         ;;
4787     esac
4788     CPUNAME=AARCH64
4789     RTL_ARCH=AARCH64
4790     PLATFORMID=ios_arm64
4791     ;;
4793 dragonfly*)
4794     COM=GCC
4795     OS=DRAGONFLY
4796     RTL_OS=DragonFly
4797     P_SEP=:
4799     case "$host_cpu" in
4800     i*86)
4801         CPUNAME=INTEL
4802         RTL_ARCH=x86
4803         PLATFORMID=dragonfly_x86
4804         ;;
4805     x86_64)
4806         CPUNAME=X86_64
4807         RTL_ARCH=X86_64
4808         PLATFORMID=dragonfly_x86_64
4809         ;;
4810     *)
4811         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4812         ;;
4813     esac
4814     ;;
4816 freebsd*)
4817     COM=GCC
4818     RTL_OS=FreeBSD
4819     OS=FREEBSD
4820     P_SEP=:
4822     case "$host_cpu" in
4823     aarch64)
4824         CPUNAME=AARCH64
4825         PLATFORMID=freebsd_aarch64
4826         RTL_ARCH=AARCH64
4827         ;;
4828     i*86)
4829         CPUNAME=INTEL
4830         RTL_ARCH=x86
4831         PLATFORMID=freebsd_x86
4832         ;;
4833     x86_64|amd64)
4834         CPUNAME=X86_64
4835         RTL_ARCH=X86_64
4836         PLATFORMID=freebsd_x86_64
4837         ;;
4838     powerpc64)
4839         CPUNAME=POWERPC64
4840         RTL_ARCH=PowerPC_64
4841         PLATFORMID=freebsd_powerpc64
4842         ;;
4843     powerpc|powerpcspe)
4844         CPUNAME=POWERPC
4845         RTL_ARCH=PowerPC
4846         PLATFORMID=freebsd_powerpc
4847         ;;
4848     *)
4849         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4850         ;;
4851     esac
4852     ;;
4854 haiku*)
4855     COM=GCC
4856     GUIBASE=haiku
4857     RTL_OS=Haiku
4858     OS=HAIKU
4859     P_SEP=:
4861     case "$host_cpu" in
4862     i*86)
4863         CPUNAME=INTEL
4864         RTL_ARCH=x86
4865         PLATFORMID=haiku_x86
4866         ;;
4867     x86_64|amd64)
4868         CPUNAME=X86_64
4869         RTL_ARCH=X86_64
4870         PLATFORMID=haiku_x86_64
4871         ;;
4872     *)
4873         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4874         ;;
4875     esac
4876     ;;
4878 kfreebsd*)
4879     COM=GCC
4880     OS=LINUX
4881     RTL_OS=kFreeBSD
4882     P_SEP=:
4884     case "$host_cpu" in
4886     i*86)
4887         CPUNAME=INTEL
4888         RTL_ARCH=x86
4889         PLATFORMID=kfreebsd_x86
4890         ;;
4891     x86_64)
4892         CPUNAME=X86_64
4893         RTL_ARCH=X86_64
4894         PLATFORMID=kfreebsd_x86_64
4895         ;;
4896     *)
4897         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4898         ;;
4899     esac
4900     ;;
4902 linux-gnu*|linux-musl*)
4903     COM=GCC
4904     OS=LINUX
4905     RTL_OS=Linux
4906     P_SEP=:
4908     case "$host_cpu" in
4910     aarch64)
4911         CPUNAME=AARCH64
4912         PLATFORMID=linux_aarch64
4913         RTL_ARCH=AARCH64
4914         EPM_FLAGS="-a arm64"
4915         ;;
4916     alpha)
4917         CPUNAME=AXP
4918         RTL_ARCH=ALPHA
4919         PLATFORMID=linux_alpha
4920         ;;
4921     arm*)
4922         CPUNAME=ARM
4923         EPM_FLAGS="-a arm"
4924         RTL_ARCH=ARM_EABI
4925         PLATFORMID=linux_arm_eabi
4926         case "$host_cpu" in
4927         arm*-linux)
4928             RTL_ARCH=ARM_OABI
4929             PLATFORMID=linux_arm_oabi
4930             ;;
4931         esac
4932         ;;
4933     hppa)
4934         CPUNAME=HPPA
4935         RTL_ARCH=HPPA
4936         EPM_FLAGS="-a hppa"
4937         PLATFORMID=linux_hppa
4938         ;;
4939     i*86)
4940         CPUNAME=INTEL
4941         RTL_ARCH=x86
4942         PLATFORMID=linux_x86
4943         ;;
4944     ia64)
4945         CPUNAME=IA64
4946         RTL_ARCH=IA64
4947         PLATFORMID=linux_ia64
4948         ;;
4949     mips)
4950         CPUNAME=GODSON
4951         RTL_ARCH=MIPS_EB
4952         EPM_FLAGS="-a mips"
4953         PLATFORMID=linux_mips_eb
4954         ;;
4955     mips64)
4956         CPUNAME=GODSON64
4957         RTL_ARCH=MIPS64_EB
4958         EPM_FLAGS="-a mips64"
4959         PLATFORMID=linux_mips64_eb
4960         ;;
4961     mips64el)
4962         CPUNAME=GODSON64
4963         RTL_ARCH=MIPS64_EL
4964         EPM_FLAGS="-a mips64el"
4965         PLATFORMID=linux_mips64_el
4966         ;;
4967     mipsel)
4968         CPUNAME=GODSON
4969         RTL_ARCH=MIPS_EL
4970         EPM_FLAGS="-a mipsel"
4971         PLATFORMID=linux_mips_el
4972         ;;
4973     m68k)
4974         CPUNAME=M68K
4975         RTL_ARCH=M68K
4976         PLATFORMID=linux_m68k
4977         ;;
4978     powerpc)
4979         CPUNAME=POWERPC
4980         RTL_ARCH=PowerPC
4981         PLATFORMID=linux_powerpc
4982         ;;
4983     powerpc64)
4984         CPUNAME=POWERPC64
4985         RTL_ARCH=PowerPC_64
4986         PLATFORMID=linux_powerpc64
4987         ;;
4988     powerpc64le)
4989         CPUNAME=POWERPC64
4990         RTL_ARCH=PowerPC_64_LE
4991         PLATFORMID=linux_powerpc64_le
4992         ;;
4993     sparc)
4994         CPUNAME=SPARC
4995         RTL_ARCH=SPARC
4996         PLATFORMID=linux_sparc
4997         ;;
4998     sparc64)
4999         CPUNAME=SPARC64
5000         RTL_ARCH=SPARC64
5001         PLATFORMID=linux_sparc64
5002         ;;
5003     s390)
5004         CPUNAME=S390
5005         RTL_ARCH=S390
5006         PLATFORMID=linux_s390
5007         ;;
5008     s390x)
5009         CPUNAME=S390X
5010         RTL_ARCH=S390x
5011         PLATFORMID=linux_s390x
5012         ;;
5013     x86_64)
5014         CPUNAME=X86_64
5015         RTL_ARCH=X86_64
5016         PLATFORMID=linux_x86_64
5017         ;;
5018     *)
5019         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5020         ;;
5021     esac
5022     ;;
5024 linux-android*)
5025     COM=GCC
5026     OS=ANDROID
5027     RTL_OS=Android
5028     P_SEP=:
5030     case "$host_cpu" in
5032     arm|armel)
5033         CPUNAME=ARM
5034         RTL_ARCH=ARM_EABI
5035         PLATFORMID=android_arm_eabi
5036         ;;
5037     aarch64)
5038         CPUNAME=AARCH64
5039         RTL_ARCH=AARCH64
5040         PLATFORMID=android_aarch64
5041         ;;
5042     i*86)
5043         CPUNAME=INTEL
5044         RTL_ARCH=x86
5045         PLATFORMID=android_x86
5046         ;;
5047     x86_64)
5048         CPUNAME=X86_64
5049         RTL_ARCH=X86_64
5050         PLATFORMID=android_x86_64
5051         ;;
5052     *)
5053         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5054         ;;
5055     esac
5056     ;;
5058 *netbsd*)
5059     COM=GCC
5060     OS=NETBSD
5061     RTL_OS=NetBSD
5062     P_SEP=:
5064     case "$host_cpu" in
5065     i*86)
5066         CPUNAME=INTEL
5067         RTL_ARCH=x86
5068         PLATFORMID=netbsd_x86
5069         ;;
5070     powerpc)
5071         CPUNAME=POWERPC
5072         RTL_ARCH=PowerPC
5073         PLATFORMID=netbsd_powerpc
5074         ;;
5075     sparc)
5076         CPUNAME=SPARC
5077         RTL_ARCH=SPARC
5078         PLATFORMID=netbsd_sparc
5079         ;;
5080     x86_64)
5081         CPUNAME=X86_64
5082         RTL_ARCH=X86_64
5083         PLATFORMID=netbsd_x86_64
5084         ;;
5085     *)
5086         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5087         ;;
5088     esac
5089     ;;
5091 openbsd*)
5092     COM=GCC
5093     OS=OPENBSD
5094     RTL_OS=OpenBSD
5095     P_SEP=:
5097     case "$host_cpu" in
5098     i*86)
5099         CPUNAME=INTEL
5100         RTL_ARCH=x86
5101         PLATFORMID=openbsd_x86
5102         ;;
5103     x86_64)
5104         CPUNAME=X86_64
5105         RTL_ARCH=X86_64
5106         PLATFORMID=openbsd_x86_64
5107         ;;
5108     *)
5109         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5110         ;;
5111     esac
5112     SOLARINC="$SOLARINC -I/usr/local/include"
5113     ;;
5115 solaris*)
5116     COM=GCC
5117     OS=SOLARIS
5118     RTL_OS=Solaris
5119     P_SEP=:
5121     case "$host_cpu" in
5122     i*86)
5123         CPUNAME=INTEL
5124         RTL_ARCH=x86
5125         PLATFORMID=solaris_x86
5126         ;;
5127     sparc)
5128         CPUNAME=SPARC
5129         RTL_ARCH=SPARC
5130         PLATFORMID=solaris_sparc
5131         ;;
5132     sparc64)
5133         CPUNAME=SPARC64
5134         RTL_ARCH=SPARC64
5135         PLATFORMID=solaris_sparc64
5136         ;;
5137     *)
5138         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5139         ;;
5140     esac
5141     SOLARINC="$SOLARINC -I/usr/local/include"
5142     ;;
5144 emscripten*)
5145     COM=GCC
5146     OS=EMSCRIPTEN
5147     RTL_OS=Emscripten
5148     P_SEP=:
5150     case "$host_cpu" in
5151     wasm32|wasm64)
5152         ;;
5153     *)
5154         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5155         ;;
5156     esac
5157     CPUNAME=INTEL
5158     RTL_ARCH=x86
5159     PLATFORMID=linux_x86
5160     ;;
5163     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5164     ;;
5165 esac
5167 if test "$with_x" = "no"; then
5168     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5171 DISABLE_GUI=""
5172 if test "$enable_gui" = "no"; then
5173     if test "$using_x11" != yes; then
5174         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5175     fi
5176     USING_X11=
5177     DISABLE_GUI=TRUE
5178 else
5179     AC_DEFINE(HAVE_FEATURE_UI)
5181 AC_SUBST(DISABLE_GUI)
5183 if test "$using_x11" = yes; then
5184     if test "$USING_X11" = TRUE; then
5185         AC_DEFINE(USING_X11)
5186     else
5187         disable_x11_tests
5188     fi
5189 else
5190     if test "$USING_X11" = TRUE; then
5191         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5192     fi
5195 WORKDIR="${BUILDDIR}/workdir"
5196 INSTDIR="${BUILDDIR}/instdir"
5197 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5198 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5199 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5200 AC_SUBST(COM)
5201 AC_SUBST(CPUNAME)
5202 AC_SUBST(RTL_OS)
5203 AC_SUBST(RTL_ARCH)
5204 AC_SUBST(EPM_FLAGS)
5205 AC_SUBST(USING_X11)
5206 AC_SUBST([INSTDIR])
5207 AC_SUBST([INSTROOT])
5208 AC_SUBST([INSTROOTBASE])
5209 AC_SUBST(OS)
5210 AC_SUBST(P_SEP)
5211 AC_SUBST(WORKDIR)
5212 AC_SUBST(PLATFORMID)
5213 AC_SUBST(WINDOWS_X64)
5214 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5216 if test "$OS" = WNT -a "$COM" = MSC; then
5217     case "$CPUNAME" in
5218     INTEL) CPPU_ENV=msci ;;
5219     X86_64) CPPU_ENV=mscx ;;
5220     AARCH64) CPPU_ENV=msca ;;
5221     *)
5222         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5223         ;;
5224     esac
5225 else
5226     CPPU_ENV=gcc3
5228 AC_SUBST(CPPU_ENV)
5230 dnl ===================================================================
5231 dnl Test which package format to use
5232 dnl ===================================================================
5233 AC_MSG_CHECKING([which package format to use])
5234 if test -n "$with_package_format" -a "$with_package_format" != no; then
5235     for i in $with_package_format; do
5236         case "$i" in
5237         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5238             ;;
5239         *)
5240             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5241 aix - AIX software distribution
5242 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5243 deb - Debian software distribution
5244 pkg - Solaris software distribution
5245 rpm - RedHat software distribution
5247 LibreOffice additionally supports:
5248 archive - .tar.gz or .zip
5249 dmg - macOS .dmg
5250 installed - installation tree
5251 msi - Windows .msi
5252         ])
5253             ;;
5254         esac
5255     done
5256     # fakeroot is needed to ensure correct file ownerships/permissions
5257     # inside deb packages and tar archives created on Linux and Solaris.
5258     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5259         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5260         if test "$FAKEROOT" = "no"; then
5261             AC_MSG_ERROR(
5262                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5263         fi
5264     fi
5265     PKGFORMAT="$with_package_format"
5266     AC_MSG_RESULT([$PKGFORMAT])
5267 else
5268     PKGFORMAT=
5269     AC_MSG_RESULT([none])
5271 AC_SUBST(PKGFORMAT)
5273 dnl ===================================================================
5274 dnl handle help related options
5276 dnl If you change help related options, please update README.help
5277 dnl ===================================================================
5279 ENABLE_HTMLHELP=
5280 HELP_OMINDEX_PAGE=
5281 HELP_ONLINE=
5282 WITH_HELPPACKS=
5284 AC_MSG_CHECKING([which help to build])
5285 if test -n "$with_help" -a "$with_help" != "no"; then
5286     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5287     BUILD_TYPE="$BUILD_TYPE HELP"
5288     case "$with_help" in
5289     "html")
5290         ENABLE_HTMLHELP=TRUE
5291         WITH_HELPPACKS=TRUE
5292         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5293         AC_MSG_RESULT([HTML (local)])
5294         ;;
5295     "online")
5296         ENABLE_HTMLHELP=TRUE
5297         HELP_ONLINE=TRUE
5298         AC_MSG_RESULT([HTML (online)])
5299         ;;
5300     yes)
5301         WITH_HELPPACKS=TRUE
5302         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5303         AC_MSG_RESULT([XML (local)])
5304         ;;
5305     *)
5306         AC_MSG_ERROR([Unknown --with-help=$with_help])
5307         ;;
5308     esac
5309 else
5310     AC_MSG_RESULT([no])
5313 AC_MSG_CHECKING([if we need to build the help index tooling])
5314 if test "$with_help" = yes -o "$enable_extension_integration" != no; then
5315     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5316     AC_MSG_RESULT([yes])
5317 else
5318     AC_MSG_RESULT([no])
5321 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5322 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5323     if test "$HELP_ONLINE" != TRUE; then
5324         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5325     fi
5326     case "$with_omindex" in
5327     "server")
5328         HELP_OMINDEX_PAGE=TRUE
5329         AC_MSG_RESULT([SERVER])
5330         ;;
5331     "noxap")
5332         AC_MSG_RESULT([NOXAP])
5333         ;;
5334     *)
5335         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5336         ;;
5337     esac
5338 else
5339     AC_MSG_RESULT([no])
5342 AC_MSG_CHECKING([whether to include the XML-help support])
5343 if test "$enable_xmlhelp" = yes; then
5344     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5345     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5346     AC_MSG_RESULT([yes])
5347 else
5348     if test "$with_help" = yes; then
5349         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5350     fi
5351     AC_MSG_RESULT([no])
5354 dnl Test whether to integrate helppacks into the product's installer
5355 AC_MSG_CHECKING([for helppack integration])
5356 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5357     AC_MSG_RESULT([no integration])
5358 else
5359     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5360     AC_MSG_RESULT([integration])
5363 AC_SUBST([ENABLE_HTMLHELP])
5364 AC_SUBST([HELP_OMINDEX_PAGE])
5365 AC_SUBST([HELP_ONLINE])
5366 # WITH_HELPPACKS is used only in configure
5368 dnl ===================================================================
5369 dnl Set up a different compiler to produce tools to run on the build
5370 dnl machine when doing cross-compilation
5371 dnl ===================================================================
5373 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5374 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5375 if test "$cross_compiling" = "yes"; then
5376     AC_MSG_CHECKING([for BUILD platform configuration])
5377     echo
5378     rm -rf CONF-FOR-BUILD config_build.mk
5379     mkdir CONF-FOR-BUILD
5380     # Here must be listed all files needed when running the configure script. In particular, also
5381     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5382     # keep them in the same order as there.
5383     (cd $SRC_ROOT && tar cf - \
5384         config.guess \
5385         bin/get_config_variables \
5386         solenv/bin/getcompver.awk \
5387         solenv/inc/langlist.mk \
5388         download.lst \
5389         config_host.mk.in \
5390         config_host_lang.mk.in \
5391         Makefile.in \
5392         bin/bffvalidator.sh.in \
5393         bin/odfvalidator.sh.in \
5394         bin/officeotron.sh.in \
5395         hardened_runtime.xcent.in \
5396         instsetoo_native/util/openoffice.lst.in \
5397         config_host/*.in \
5398         sysui/desktop/macosx/Info.plist.in \
5399         .vscode/vs-code-template.code-workspace.in \
5400         ) \
5401     | (cd CONF-FOR-BUILD && tar xf -)
5402     cp configure CONF-FOR-BUILD
5403     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5404     (
5405     unset COM USING_X11 OS CPUNAME
5406     unset CC CXX SYSBASE CFLAGS
5407     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5408     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5409     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5410     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5411     if test -n "$CC_FOR_BUILD"; then
5412         export CC="$CC_FOR_BUILD"
5413         CC_BASE=`first_arg_basename "$CC"`
5414     fi
5415     if test -n "$CXX_FOR_BUILD"; then
5416         export CXX="$CXX_FOR_BUILD"
5417         CXX_BASE=`first_arg_basename "$CXX"`
5418     fi
5419     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5420     cd CONF-FOR-BUILD
5422     # Handle host configuration, which affects the cross-toolset too
5423     sub_conf_opts=""
5424     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5425     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5426     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5427     if test -n "$ENABLE_JAVA"; then
5428         case "$_os" in
5429         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5430         Android)
5431             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5432             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5433             ;;
5434         *)
5435             if test -z "$with_jdk_home"; then
5436                 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.])
5437             fi
5438             ;;
5439         esac
5440     else
5441         sub_conf_opts="$sub_conf_opts --without-java"
5442     fi
5443     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5444     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5445     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5446     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5447     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5448     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5450     # Don't bother having configure look for stuff not needed for the build platform anyway
5451     sub_conf_defaults=" \
5452         --build="$build_alias" \
5453         --disable-cairo-canvas \
5454         --disable-cups \
5455         --disable-firebird-sdbc \
5456         --disable-gpgmepp \
5457         --disable-gstreamer-1-0 \
5458         --disable-gtk3 \
5459         --disable-gtk4 \
5460         --disable-mariadb-sdbc \
5461         --disable-nss \
5462         --disable-online-update \
5463         --disable-opencl \
5464         --disable-pdfimport \
5465         --disable-postgresql-sdbc \
5466         --disable-skia \
5467         --enable-icecream="$enable_icecream" \
5468         --without-doxygen \
5469         --without-webdav \
5470         --with-parallelism="$with_parallelism" \
5471         --with-theme="$with_theme" \
5472         --with-tls=openssl \
5474     echo "    Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5475     ./configure \
5476         $sub_conf_defaults \
5477         $sub_conf_opts \
5478         $with_build_platform_configure_options \
5479         --srcdir=$srcdir \
5480         2>&1 | sed -e 's/^/    /'
5481     if test [${PIPESTATUS[0]}] -ne 0; then
5482         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5483     fi
5485     # filter permitted build targets
5486     PERMITTED_BUILD_TARGETS="
5487         AVMEDIA
5488         BOOST
5489         CAIRO
5490         CLUCENE
5491         CUCKOO
5492         CURL
5493         DBCONNECTIVITY
5494         DESKTOP
5495         DYNLOADING
5496         EPOXY
5497         EXPAT
5498         GLM
5499         GRAPHITE
5500         HARFBUZZ
5501         HELPTOOLS
5502         ICU
5503         LCMS2
5504         LIBJPEG_TURBO
5505         LIBLANGTAG
5506         LibO
5507         LIBFFI
5508         LIBPN
5509         LIBXML2
5510         LIBXSLT
5511         MDDS
5512         NATIVE
5513         OPENSSL
5514         ORCUS
5515         PYTHON
5516         SCRIPTING
5517         ZLIB
5519     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5520     # newlined lists, to use grep as a filter
5521     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5522     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5523     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5524     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5526     cp config_host.mk ../config_build.mk
5527     cp config_host_lang.mk ../config_build_lang.mk
5528     mv config.log ../config.Build.log
5529     mkdir -p ../config_build
5530     mv config_host/*.h ../config_build
5531     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5533     # all these will get a _FOR_BUILD postfix
5534     DIRECT_FOR_BUILD_SETTINGS="
5535         CC
5536         CPPU_ENV
5537         CXX
5538         ILIB
5539         JAVA_HOME
5540         JAVAIFLAGS
5541         JDK
5542         LIBO_BIN_FOLDER
5543         LIBO_LIB_FOLDER
5544         LIBO_URE_LIB_FOLDER
5545         LIBO_URE_MISC_FOLDER
5546         OS
5547         SDKDIRNAME
5548         SYSTEM_LIBXML
5549         SYSTEM_LIBXSLT
5551     # these overwrite host config with build config
5552     OVERWRITING_SETTINGS="
5553         ANT
5554         ANT_HOME
5555         ANT_LIB
5556         HSQLDB_USE_JDBC_4_1
5557         JAVA_CLASSPATH_NOT_SET
5558         JAVA_SOURCE_VER
5559         JAVA_TARGET_VER
5560         JAVACFLAGS
5561         JAVACOMPILER
5562         JAVADOC
5563         JAVADOCISGJDOC
5565     # these need some special handling
5566     EXTRA_HANDLED_SETTINGS="
5567         INSTDIR
5568         INSTROOT
5569         PATH
5570         WORKDIR
5572     OLD_PATH=$PATH
5573     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5574     BUILD_PATH=$PATH
5575     PATH=$OLD_PATH
5577     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5578     echo "$line" >>build-config
5580     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5581         VV='$'$V
5582         VV=`eval "echo $VV"`
5583         if test -n "$VV"; then
5584             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5585             echo "$line" >>build-config
5586         fi
5587     done
5589     for V in $OVERWRITING_SETTINGS; do
5590         VV='$'$V
5591         VV=`eval "echo $VV"`
5592         if test -n "$VV"; then
5593             line=${V}='${'${V}:-$VV'}'
5594             echo "$line" >>build-config
5595         fi
5596     done
5598     for V in INSTDIR INSTROOT WORKDIR; do
5599         VV='$'$V
5600         VV=`eval "echo $VV"`
5601         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5602         if test -n "$VV"; then
5603             line="${V}_FOR_BUILD='$VV'"
5604             echo "$line" >>build-config
5605         fi
5606     done
5608     )
5609     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5610     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])
5611     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5612              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5614     eval `cat CONF-FOR-BUILD/build-config`
5616     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5618     rm -rf CONF-FOR-BUILD
5619 else
5620     OS_FOR_BUILD="$OS"
5621     CC_FOR_BUILD="$CC"
5622     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5623     CXX_FOR_BUILD="$CXX"
5624     INSTDIR_FOR_BUILD="$INSTDIR"
5625     INSTROOT_FOR_BUILD="$INSTROOT"
5626     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5627     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5628     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5629     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5630     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5631     WORKDIR_FOR_BUILD="$WORKDIR"
5633 AC_SUBST(OS_FOR_BUILD)
5634 AC_SUBST(INSTDIR_FOR_BUILD)
5635 AC_SUBST(INSTROOT_FOR_BUILD)
5636 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5637 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5638 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5639 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5640 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5641 AC_SUBST(WORKDIR_FOR_BUILD)
5642 AC_SUBST(CC_FOR_BUILD)
5643 AC_SUBST(CXX_FOR_BUILD)
5644 AC_SUBST(CPPU_ENV_FOR_BUILD)
5646 dnl ===================================================================
5647 dnl Check for syslog header
5648 dnl ===================================================================
5649 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5651 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5652 dnl ===================================================================
5653 AC_MSG_CHECKING([whether to turn warnings to errors])
5654 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5655     ENABLE_WERROR="TRUE"
5656     PYTHONWARNINGS="error"
5657     AC_MSG_RESULT([yes])
5658 else
5659     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5660         ENABLE_WERROR="TRUE"
5661         PYTHONWARNINGS="error"
5662         AC_MSG_RESULT([yes])
5663     else
5664         AC_MSG_RESULT([no])
5665     fi
5667 AC_SUBST(ENABLE_WERROR)
5668 AC_SUBST(PYTHONWARNINGS)
5670 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5671 dnl ===================================================================
5672 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5673 if test -z "$enable_assert_always_abort"; then
5674    if test "$ENABLE_DEBUG" = TRUE; then
5675        enable_assert_always_abort=yes
5676    else
5677        enable_assert_always_abort=no
5678    fi
5680 if test "$enable_assert_always_abort" = "yes"; then
5681     ASSERT_ALWAYS_ABORT="TRUE"
5682     AC_MSG_RESULT([yes])
5683 else
5684     ASSERT_ALWAYS_ABORT="FALSE"
5685     AC_MSG_RESULT([no])
5687 AC_SUBST(ASSERT_ALWAYS_ABORT)
5689 # Determine whether to use ooenv for the instdir installation
5690 # ===================================================================
5691 if test $_os != "WINNT" -a $_os != "Darwin"; then
5692     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5693     if test -z "$enable_ooenv"; then
5694         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5695             enable_ooenv=yes
5696         else
5697             enable_ooenv=no
5698         fi
5699     fi
5700     if test "$enable_ooenv" = "no"; then
5701         AC_MSG_RESULT([no])
5702     else
5703         ENABLE_OOENV="TRUE"
5704         AC_MSG_RESULT([yes])
5705     fi
5707 AC_SUBST(ENABLE_OOENV)
5709 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5710     if test "$enable_qt5" = "no"; then
5711         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5712     else
5713         enable_qt5=yes
5714     fi
5717 dnl ===================================================================
5718 dnl check for cups support
5719 dnl ===================================================================
5721 AC_MSG_CHECKING([whether to enable CUPS support])
5722 if test "$test_cups" = yes -a "$enable_cups" != no; then
5723     ENABLE_CUPS=TRUE
5724     AC_MSG_RESULT([yes])
5726     AC_MSG_CHECKING([whether cups support is present])
5727     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5728     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5729     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5730         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5731     fi
5732 else
5733     AC_MSG_RESULT([no])
5736 AC_SUBST(ENABLE_CUPS)
5738 # fontconfig checks
5739 if test "$using_freetype_fontconfig" = yes; then
5740     AC_MSG_CHECKING([which fontconfig to use])
5742 if test "$using_freetype_fontconfig" = yes -a "$test_system_fontconfig" != no; then
5743     AC_MSG_RESULT([external])
5744     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5745     SYSTEM_FONTCONFIG=TRUE
5746     FilterLibs "${FONTCONFIG_LIBS}"
5747     FONTCONFIG_LIBS="${filteredlibs}"
5748 elif test "$using_freetype_fontconfig" = yes; then
5749     AC_MSG_RESULT([internal])
5750     BUILD_TYPE="$BUILD_TYPE FONTCONFIG"
5752 AC_SUBST(FONTCONFIG_CFLAGS)
5753 AC_SUBST(FONTCONFIG_LIBS)
5754 AC_SUBST([SYSTEM_FONTCONFIG])
5756 dnl whether to find & fetch external tarballs?
5757 dnl ===================================================================
5758 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5759    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5760        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5761    else
5762        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5763    fi
5765 if test -z "$TARFILE_LOCATION"; then
5766     if test -d "$SRC_ROOT/src" ; then
5767         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5768         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5769     fi
5770     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5771 else
5772     AbsolutePath "$TARFILE_LOCATION"
5773     PathFormat "${absolute_path}"
5774     TARFILE_LOCATION="${formatted_path}"
5776 AC_SUBST(TARFILE_LOCATION)
5778 AC_MSG_CHECKING([whether we want to fetch tarballs])
5779 if test "$enable_fetch_external" != "no"; then
5780     if test "$with_all_tarballs" = "yes"; then
5781         AC_MSG_RESULT([yes, all of them])
5782         DO_FETCH_TARBALLS="ALL"
5783     else
5784         AC_MSG_RESULT([yes, if we use them])
5785         DO_FETCH_TARBALLS="TRUE"
5786     fi
5787 else
5788     AC_MSG_RESULT([no])
5789     DO_FETCH_TARBALLS=
5791 AC_SUBST(DO_FETCH_TARBALLS)
5793 dnl Test whether to include MySpell dictionaries
5794 dnl ===================================================================
5795 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5796 if test "$with_myspell_dicts" = "yes"; then
5797     AC_MSG_RESULT([yes])
5798     WITH_MYSPELL_DICTS=TRUE
5799     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5800     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5801 else
5802     AC_MSG_RESULT([no])
5803     WITH_MYSPELL_DICTS=
5805 AC_SUBST(WITH_MYSPELL_DICTS)
5807 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5808 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5809     if test "$with_system_dicts" = yes; then
5810         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5811     fi
5812     with_system_dicts=no
5815 AC_MSG_CHECKING([whether to use dicts from external paths])
5816 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5817     AC_MSG_RESULT([yes])
5818     SYSTEM_DICTS=TRUE
5819     AC_MSG_CHECKING([for spelling dictionary directory])
5820     if test -n "$with_external_dict_dir"; then
5821         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5822     else
5823         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5824         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5825             DICT_SYSTEM_DIR=file:///usr/share/myspell
5826         fi
5827     fi
5828     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5829     AC_MSG_CHECKING([for hyphenation patterns directory])
5830     if test -n "$with_external_hyph_dir"; then
5831         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5832     else
5833         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5834     fi
5835     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5836     AC_MSG_CHECKING([for thesaurus directory])
5837     if test -n "$with_external_thes_dir"; then
5838         THES_SYSTEM_DIR=file://$with_external_thes_dir
5839     else
5840         THES_SYSTEM_DIR=file:///usr/share/mythes
5841     fi
5842     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5843 else
5844     AC_MSG_RESULT([no])
5845     SYSTEM_DICTS=
5847 AC_SUBST(SYSTEM_DICTS)
5848 AC_SUBST(DICT_SYSTEM_DIR)
5849 AC_SUBST(HYPH_SYSTEM_DIR)
5850 AC_SUBST(THES_SYSTEM_DIR)
5852 dnl ===================================================================
5853 dnl Precompiled headers.
5854 ENABLE_PCH=""
5855 AC_MSG_CHECKING([whether to enable pch feature])
5856 if test -z "$enable_pch"; then
5857     if test "$_os" = "WINNT"; then
5858         # Enabled by default on Windows.
5859         enable_pch=yes
5860     else
5861         enable_pch=no
5862     fi
5864 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5865     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5867 if test "$enable_pch" = "system"; then
5868     ENABLE_PCH="1"
5869     AC_MSG_RESULT([yes (system headers)])
5870 elif test "$enable_pch" = "base"; then
5871     ENABLE_PCH="2"
5872     AC_MSG_RESULT([yes (system and base headers)])
5873 elif test "$enable_pch" = "normal"; then
5874     ENABLE_PCH="3"
5875     AC_MSG_RESULT([yes (normal)])
5876 elif test "$enable_pch" = "full"; then
5877     ENABLE_PCH="4"
5878     AC_MSG_RESULT([yes (full)])
5879 elif test "$enable_pch" = "yes"; then
5880     # Pick a suitable default.
5881     if test "$GCC" = "yes"; then
5882         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5883         # while making the PCHs larger and rebuilds more likely.
5884         ENABLE_PCH="2"
5885         AC_MSG_RESULT([yes (system and base headers)])
5886     else
5887         # With MSVC the highest level makes a significant difference,
5888         # and it was the default when there used to be no PCH levels.
5889         ENABLE_PCH="4"
5890         AC_MSG_RESULT([yes (full)])
5891     fi
5892 elif test "$enable_pch" = "no"; then
5893     AC_MSG_RESULT([no])
5894 else
5895     AC_MSG_ERROR([Unknown value for --enable-pch])
5897 AC_SUBST(ENABLE_PCH)
5898 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5899 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5900     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5901     if test "$CCACHE_BIN" != "not found"; then
5902         AC_MSG_CHECKING([ccache version])
5903         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5904         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5905         AC_MSG_RESULT([$CCACHE_VERSION])
5906         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5907         if test "$CCACHE_NUMVER" -gt "030701"; then
5908             AC_MSG_RESULT([yes])
5909         else
5910             AC_MSG_RESULT([no (not newer than 3.7.1)])
5911             CCACHE_DEPEND_MODE=
5912         fi
5913     fi
5916 PCH_INSTANTIATE_TEMPLATES=
5917 if test -n "$ENABLE_PCH"; then
5918     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5919     save_CFLAGS=$CFLAGS
5920     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5921     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5922     CFLAGS=$save_CFLAGS
5923     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5924         AC_MSG_RESULT(yes)
5925     else
5926         AC_MSG_RESULT(no)
5927     fi
5929 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5931 BUILDING_PCH_WITH_OBJ=
5932 if test -n "$ENABLE_PCH"; then
5933     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5934     save_CFLAGS=$CFLAGS
5935     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5936     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5937     CFLAGS=$save_CFLAGS
5938     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5939         AC_MSG_RESULT(yes)
5940     else
5941         AC_MSG_RESULT(no)
5942     fi
5944 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5946 PCH_CODEGEN=
5947 PCH_NO_CODEGEN=
5948 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5949     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5950     save_CFLAGS=$CFLAGS
5951     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5952     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5953         [
5954         PCH_CODEGEN="-fpch-codegen"
5955         PCH_NO_CODEGEN="-fno-pch-codegen"
5956         ],[])
5957     CFLAGS=$save_CFLAGS
5958     if test -n "$PCH_CODEGEN"; then
5959         AC_MSG_RESULT(yes)
5960     else
5961         AC_MSG_RESULT(no)
5962     fi
5964 AC_SUBST(PCH_CODEGEN)
5965 AC_SUBST(PCH_NO_CODEGEN)
5966 PCH_DEBUGINFO=
5967 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5968     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5969     save_CFLAGS=$CFLAGS
5970     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5971     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5972     CFLAGS=$save_CFLAGS
5973     if test -n "$PCH_DEBUGINFO"; then
5974         AC_MSG_RESULT(yes)
5975     else
5976         AC_MSG_RESULT(no)
5977     fi
5979 AC_SUBST(PCH_DEBUGINFO)
5981 TAB=`printf '\t'`
5983 AC_MSG_CHECKING([the GNU Make version])
5984 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5985 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5986 if test "$_make_longver" -ge "038200"; then
5987     AC_MSG_RESULT([$GNUMAKE $_make_version])
5989 elif test "$_make_longver" -ge "038100"; then
5990     if test "$build_os" = "cygwin"; then
5991         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5992     fi
5993     AC_MSG_RESULT([$GNUMAKE $_make_version])
5995     dnl ===================================================================
5996     dnl Search all the common names for sha1sum
5997     dnl ===================================================================
5998     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5999     if test -z "$SHA1SUM"; then
6000         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6001     elif test "$SHA1SUM" = "openssl"; then
6002         SHA1SUM="openssl sha1"
6003     fi
6004     AC_MSG_CHECKING([for GNU Make bug 20033])
6005     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6006     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6007 A := \$(wildcard *.a)
6009 .PHONY: all
6010 all: \$(A:.a=.b)
6011 <TAB>@echo survived bug20033.
6013 .PHONY: setup
6014 setup:
6015 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6017 define d1
6018 @echo lala \$(1)
6019 @sleep 1
6020 endef
6022 define d2
6023 @echo tyty \$(1)
6024 @sleep 1
6025 endef
6027 %.b : %.a
6028 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6029 <TAB>\$(call d1,\$(CHECKSUM)),\
6030 <TAB>\$(call d2,\$(CHECKSUM)))
6032     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6033         no_parallelism_make="YES"
6034         AC_MSG_RESULT([yes, disable parallelism])
6035     else
6036         AC_MSG_RESULT([no, keep parallelism enabled])
6037     fi
6038     rm -rf $TESTGMAKEBUG20033
6039 else
6040     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6043 # find if gnumake support file function
6044 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6045 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6046 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6047     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6049 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6050 \$(file >test.txt,Success )
6052 .PHONY: all
6053 all:
6054 <TAB>@cat test.txt
6057 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6058 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6059     HAVE_GNUMAKE_FILE_FUNC=TRUE
6060     AC_MSG_RESULT([yes])
6061 else
6062     AC_MSG_RESULT([no])
6064 rm -rf $TESTGMAKEFILEFUNC
6065 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6067 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6068 STALE_MAKE=
6069 if test "$_make_ver_check" = ""; then
6070    STALE_MAKE=TRUE
6073 HAVE_LD_HASH_STYLE=FALSE
6074 WITH_LINKER_HASH_STYLE=
6075 AC_MSG_CHECKING([for --hash-style gcc linker support])
6076 if test "$GCC" = "yes"; then
6077     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6078         hash_styles="gnu sysv"
6079     elif test "$with_linker_hash_style" = "no"; then
6080         hash_styles=
6081     else
6082         hash_styles="$with_linker_hash_style"
6083     fi
6085     for hash_style in $hash_styles; do
6086         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6087         hash_style_ldflags_save=$LDFLAGS
6088         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6090         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6091             [
6092 #include <stdio.h>
6093             ],[
6094 printf ("");
6095             ])],
6096             [
6097                   HAVE_LD_HASH_STYLE=TRUE
6098                   WITH_LINKER_HASH_STYLE=$hash_style
6099             ],
6100             [HAVE_LD_HASH_STYLE=FALSE],
6101             [HAVE_LD_HASH_STYLE=FALSE])
6102         LDFLAGS=$hash_style_ldflags_save
6103     done
6105     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6106         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6107     else
6108         AC_MSG_RESULT( no )
6109     fi
6110     LDFLAGS=$hash_style_ldflags_save
6111 else
6112     AC_MSG_RESULT( no )
6114 AC_SUBST(HAVE_LD_HASH_STYLE)
6115 AC_SUBST(WITH_LINKER_HASH_STYLE)
6117 dnl ===================================================================
6118 dnl Check whether there's a Perl version available.
6119 dnl ===================================================================
6120 if test -z "$with_perl_home"; then
6121     AC_PATH_PROG(PERL, perl)
6122 else
6123     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6124     _perl_path="$with_perl_home/bin/perl"
6125     if test -x "$_perl_path"; then
6126         PERL=$_perl_path
6127     else
6128         AC_MSG_ERROR([$_perl_path not found])
6129     fi
6132 dnl ===================================================================
6133 dnl Testing for Perl version 5 or greater.
6134 dnl $] is the Perl version variable, it is returned as an integer
6135 dnl ===================================================================
6136 if test "$PERL"; then
6137     AC_MSG_CHECKING([the Perl version])
6138     ${PERL} -e "exit($]);"
6139     _perl_version=$?
6140     if test "$_perl_version" -lt 5; then
6141         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6142     fi
6143     AC_MSG_RESULT([Perl $_perl_version])
6144 else
6145     AC_MSG_ERROR([Perl not found, install Perl 5])
6148 dnl ===================================================================
6149 dnl Testing for required Perl modules
6150 dnl ===================================================================
6152 AC_MSG_CHECKING([for required Perl modules])
6153 perl_use_string="use Cwd ; use Digest::MD5"
6154 if test "$_os" = "WINNT"; then
6155     if test -n "$PKGFORMAT"; then
6156         for i in $PKGFORMAT; do
6157             case "$i" in
6158             msi)
6159                 # for getting fonts versions to use in MSI
6160                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6161                 ;;
6162             esac
6163         done
6164     fi
6166 if test "$with_system_hsqldb" = "yes"; then
6167     perl_use_string="$perl_use_string ; use Archive::Zip"
6169 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6170     # OpenSSL needs that to build
6171     perl_use_string="$perl_use_string ; use FindBin"
6173 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6174     AC_MSG_RESULT([all modules found])
6175 else
6176     AC_MSG_RESULT([failed to find some modules])
6177     # Find out which modules are missing.
6178     for i in $perl_use_string; do
6179         if test "$i" != "use" -a "$i" != ";"; then
6180             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6181                 missing_perl_modules="$missing_perl_modules $i"
6182             fi
6183         fi
6184     done
6185     AC_MSG_ERROR([
6186     The missing Perl modules are: $missing_perl_modules
6187     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6190 dnl ===================================================================
6191 dnl Check for pkg-config
6192 dnl ===================================================================
6193 if test "$_os" != "WINNT"; then
6194     PKG_PROG_PKG_CONFIG
6197 if test "$_os" != "WINNT"; then
6199     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6200     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6201     # explicitly. Or put /path/to/compiler in PATH yourself.
6203     # Use wrappers for LTO
6204     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6205         AC_CHECK_TOOL(AR,gcc-ar)
6206         AC_CHECK_TOOL(NM,gcc-nm)
6207         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6208     else
6209         AC_CHECK_TOOL(AR,ar)
6210         AC_CHECK_TOOL(NM,nm)
6211         AC_CHECK_TOOL(RANLIB,ranlib)
6212     fi
6213     AC_CHECK_TOOL(OBJDUMP,objdump)
6214     AC_CHECK_TOOL(READELF,readelf)
6215     AC_CHECK_TOOL(STRIP,strip)
6217 AC_SUBST(AR)
6218 AC_SUBST(LD)
6219 AC_SUBST(NM)
6220 AC_SUBST(OBJDUMP)
6221 AC_SUBST(PKG_CONFIG)
6222 AC_SUBST(PKG_CONFIG_PATH)
6223 AC_SUBST(PKG_CONFIG_LIBDIR)
6224 AC_SUBST(RANLIB)
6225 AC_SUBST(READELF)
6226 AC_SUBST(STRIP)
6228 dnl ===================================================================
6229 dnl pkg-config checks on macOS
6230 dnl ===================================================================
6232 if test $_os = Darwin; then
6233     AC_MSG_CHECKING([for bogus pkg-config])
6234     if test -n "$PKG_CONFIG"; then
6235         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6236             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6237         else
6238             if test "$enable_bogus_pkg_config" = "yes"; then
6239                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6240             else
6241                 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.])
6242             fi
6243         fi
6244     else
6245         AC_MSG_RESULT([no, good])
6246     fi
6249 find_csc()
6251     # Return value: $csctest
6253     unset csctest
6255     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6256     if test -n "$regvalue"; then
6257         csctest=$regvalue
6258         return
6259     fi
6262 find_al()
6264     # Return value: $altest
6266     unset altest
6268     # We need this check to detect 4.6.1 or above.
6269     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6270         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6271         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6272             altest=$regvalue
6273             return
6274         fi
6275     done
6277     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6278         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6279         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6280             altest=$regvalue
6281             return
6282         fi
6283     done
6286 find_dotnetsdk46()
6288     unset frametest
6290     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6291         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6292         if test -n "$regvalue"; then
6293             frametest=$regvalue
6294             return
6295         fi
6296     done
6299 find_winsdk_version()
6301     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6302     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6304     unset winsdktest winsdkbinsubdir winsdklibsubdir
6306     case "$1" in
6307     8.0|8.0A)
6308         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6309         if test -n "$regvalue"; then
6310             winsdktest=$regvalue
6311             winsdklibsubdir=win8
6312             return
6313         fi
6314         ;;
6315     8.1|8.1A)
6316         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6317         if test -n "$regvalue"; then
6318             winsdktest=$regvalue
6319             winsdklibsubdir=winv6.3
6320             return
6321         fi
6322         ;;
6323     10.0)
6324         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6325         if test -n "$regvalue"; then
6326             winsdktest=$regvalue
6327             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6328             if test -n "$regvalue"; then
6329                 winsdkbinsubdir="$regvalue".0
6330                 winsdklibsubdir=$winsdkbinsubdir
6331                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6332                 local tmppath_unix=$(cygpath -u "$tmppath")
6333                 # test exist the SDK path
6334                 if test -d "$tmppath_unix"; then
6335                    # when path is convertible to a short path then path is okay
6336                    cygpath -d "$tmppath" >/dev/null 2>&1
6337                    if test $? -ne 0; then
6338                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6339                    fi
6340                 else
6341                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6342                 fi
6343             fi
6344             return
6345         fi
6346         ;;
6347     esac
6350 find_winsdk()
6352     # Return value: From find_winsdk_version
6354     unset winsdktest
6356     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6357         find_winsdk_version $ver
6358         if test -n "$winsdktest"; then
6359             return
6360         fi
6361     done
6364 find_msms()
6366     # Return value: $msmdir
6368     AC_MSG_CHECKING([for MSVC merge modules directory])
6369     local my_msm_files
6370     local my_msm_dir
6372     dnl Order my_msm_files in increasing order. Then check the directories returned
6373     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6374     dnl the result will be the highest MSM version found in the highest directory.
6376     case "$VCVER" in
6377         16.0 | 17.0)
6378         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6379         ;;
6380     esac
6381     for f in $my_msm_files; do
6382         echo "$as_me:$LINENO: searching for $f" >&5
6383     done
6385     msmdir=
6386     case "$VCVER" in
6387     16.0 | 17.0)
6388         for f in ${my_msm_files}; do
6389             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6390                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6391                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6392                 if test -e "$my_msm_dir${f}"; then
6393                     msmdir=$my_msm_dir
6394                 fi
6395             done
6396         done
6397         ;;
6398     esac
6400     if test -n "$msmdir"; then
6401         msmdir=`cygpath -m "$msmdir"`
6402         AC_MSG_RESULT([$msmdir])
6403     else
6404         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6405             AC_MSG_FAILURE([not found])
6406         else
6407             AC_MSG_WARN([not found (check config.log)])
6408             add_warning "MSM none of ${my_msm_files} found"
6409         fi
6410     fi
6413 find_msvc_x64_dlls()
6415     # Return value: $msvcdllpath, $msvcdlls
6417     AC_MSG_CHECKING([for MSVC x64 DLL path])
6419     dnl Order crtver in increasing order. Then check the directories returned by
6420     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6421     dnl the result will be the highest CRT version found in the highest directory.
6423     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6424     case "$VCVER" in
6425     16.0 | 17.0)
6426         for crtver in 141 142 143; do
6427             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6428                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6429                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6430                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6431                 fi
6432             done
6433         done
6434         ;;
6435     esac
6436     AC_MSG_RESULT([$msvcdllpath])
6437     AC_MSG_CHECKING([for MSVC x64 DLLs])
6438     msvcdlls="msvcp140.dll vcruntime140.dll"
6439     for dll in $msvcdlls; do
6440         if ! test -f "$msvcdllpath/$dll"; then
6441             AC_MSG_FAILURE([missing $dll])
6442         fi
6443     done
6444     AC_MSG_RESULT([found all ($msvcdlls)])
6447 dnl =========================================
6448 dnl Check for the Windows  SDK.
6449 dnl =========================================
6450 if test "$_os" = "WINNT"; then
6451     AC_MSG_CHECKING([for Windows SDK])
6452     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6453         find_winsdk
6454         WINDOWS_SDK_HOME=$winsdktest
6456         # normalize if found
6457         if test -n "$WINDOWS_SDK_HOME"; then
6458             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6459             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6460         fi
6462         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6463     fi
6465     if test -n "$WINDOWS_SDK_HOME"; then
6466         # Remove a possible trailing backslash
6467         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6469         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6470              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6471              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6472             have_windows_sdk_headers=yes
6473         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6474              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6475              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6476             have_windows_sdk_headers=yes
6477         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6478              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6479              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6480             have_windows_sdk_headers=yes
6481         else
6482             have_windows_sdk_headers=no
6483         fi
6485         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6486             have_windows_sdk_libs=yes
6487         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6488             have_windows_sdk_libs=yes
6489         else
6490             have_windows_sdk_libs=no
6491         fi
6493         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6494             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6495 the  Windows SDK are installed.])
6496         fi
6497     fi
6499     if test -z "$WINDOWS_SDK_HOME"; then
6500         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6501     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6502         WINDOWS_SDK_VERSION=80
6503         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6504     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6505         WINDOWS_SDK_VERSION=81
6506         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6507     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6508         WINDOWS_SDK_VERSION=10
6509         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6510     else
6511         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6512     fi
6513     PathFormat "$WINDOWS_SDK_HOME"
6514     WINDOWS_SDK_HOME="$formatted_path"
6515     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6516     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6517         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6518         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6519             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6520         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6521             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6522         fi
6523     fi
6525     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6526     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6527     dnl but not in v8.0), so allow this to be overridden with a
6528     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6529     dnl and configuration error if no WiLangId.vbs is found would arguably be
6530     dnl better, but I do not know under which conditions exactly it is needed by
6531     dnl msiglobal.pm:
6532     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6533         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6534         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6535         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6536             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6537             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6538         fi
6539         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6540             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6541             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6542         fi
6543         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6544             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6545             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6546         fi
6547     fi
6548     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6549         if test -n "$with_package_format" -a "$with_package_format" != no; then
6550             for i in "$with_package_format"; do
6551                 if test "$i" = "msi"; then
6552                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6553                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6554                     fi
6555                 fi
6556             done
6557         fi
6558     fi
6560 AC_SUBST(WINDOWS_SDK_HOME)
6561 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6562 AC_SUBST(WINDOWS_SDK_VERSION)
6563 AC_SUBST(WINDOWS_SDK_WILANGID)
6565 if test "$build_os" = "cygwin"; then
6566     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6567     dnl dir, it also determines that dir's path w/o an arch segment if any,
6568     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6569     AC_MSG_CHECKING([for midl.exe])
6571     find_winsdk
6572     if test -n "$winsdkbinsubdir" \
6573         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6574     then
6575         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6576         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6577     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6578         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6579         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6580     elif test -f "$winsdktest/Bin/midl.exe"; then
6581         MIDL_PATH=$winsdktest/Bin
6582         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6583     fi
6584     if test ! -f "$MIDL_PATH/midl.exe"; then
6585         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6586     else
6587         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6588     fi
6590     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6591     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6593     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6594          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6595          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6596          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6597     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6598          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6599          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6600          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6601     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6602          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6603          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6604          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6605     else
6606         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6607     fi
6609     dnl Check csc.exe
6610     AC_MSG_CHECKING([for csc.exe])
6611     find_csc
6612     if test -f "$csctest/csc.exe"; then
6613         CSC_PATH="$csctest"
6614     fi
6615     if test ! -f "$CSC_PATH/csc.exe"; then
6616         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6617     else
6618         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6619     fi
6621     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6623     dnl Check al.exe
6624     AC_MSG_CHECKING([for al.exe])
6625     find_winsdk
6626     if test -n "$winsdkbinsubdir" \
6627         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6628     then
6629         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6630     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6631         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6632     elif test -f "$winsdktest/Bin/al.exe"; then
6633         AL_PATH="$winsdktest/Bin"
6634     fi
6636     if test -z "$AL_PATH"; then
6637         find_al
6638         if test -f "$altest/bin/al.exe"; then
6639             AL_PATH="$altest/bin"
6640         elif test -f "$altest/al.exe"; then
6641             AL_PATH="$altest"
6642         fi
6643     fi
6644     if test ! -f "$AL_PATH/al.exe"; then
6645         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6646     else
6647         AC_MSG_RESULT([$AL_PATH/al.exe])
6648     fi
6650     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6652     dnl Check mscoree.lib / .NET Framework dir
6653     AC_MSG_CHECKING(.NET Framework)
6654     find_dotnetsdk46
6655     PathFormat "$frametest"
6656     frametest="$formatted_path"
6657     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6658         DOTNET_FRAMEWORK_HOME="$frametest"
6659     else
6660         find_winsdk
6661         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6662             DOTNET_FRAMEWORK_HOME="$winsdktest"
6663         fi
6664     fi
6665     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
6666         AC_MSG_ERROR([mscoree.lib not found])
6667     fi
6668     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6670     PathFormat "$MIDL_PATH"
6671     MIDL_PATH="$formatted_path"
6673     PathFormat "$AL_PATH"
6674     AL_PATH="$formatted_path"
6676     PathFormat "$DOTNET_FRAMEWORK_HOME"
6677     DOTNET_FRAMEWORK_HOME="$formatted_path"
6679     PathFormat "$CSC_PATH"
6680     CSC_PATH="$formatted_path"
6683 dnl ===================================================================
6684 dnl Testing for C++ compiler and version...
6685 dnl ===================================================================
6687 if test "$_os" != "WINNT"; then
6688     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6689     save_CXXFLAGS=$CXXFLAGS
6690     AC_PROG_CXX
6691     CXXFLAGS=$save_CXXFLAGS
6692     if test -z "$CXX_BASE"; then
6693         CXX_BASE=`first_arg_basename "$CXX"`
6694     fi
6697 dnl check for GNU C++ compiler version
6698 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6699     AC_MSG_CHECKING([the GNU C++ compiler version])
6701     _gpp_version=`$CXX -dumpversion`
6702     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6704     if test "$_gpp_majmin" -lt "700"; then
6705         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6706     else
6707         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6708     fi
6710     dnl see https://code.google.com/p/android/issues/detail?id=41770
6711         glibcxx_threads=no
6712         AC_LANG_PUSH([C++])
6713         AC_REQUIRE_CPP
6714         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6715         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6716             #include <bits/c++config.h>]],[[
6717             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6718             && !defined(_GLIBCXX__PTHREADS) \
6719             && !defined(_GLIBCXX_HAS_GTHREADS)
6720             choke me
6721             #endif
6722         ]])],[AC_MSG_RESULT([yes])
6723         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6724         AC_LANG_POP([C++])
6725         if test $glibcxx_threads = yes; then
6726             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6727         fi
6729 AC_SUBST(BOOST_CXXFLAGS)
6732 # prefx CXX with ccache if needed
6734 if test "$CCACHE" != ""; then
6735     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6736     AC_LANG_PUSH([C++])
6737     save_CXXFLAGS=$CXXFLAGS
6738     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6739     dnl an empty program will do, we're checking the compiler flags
6740     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6741                       [use_ccache=yes], [use_ccache=no])
6742     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6743         AC_MSG_RESULT([yes])
6744     else
6745         CXX="$CCACHE $CXX"
6746         CXX_BASE="ccache $CXX_BASE"
6747         AC_MSG_RESULT([no])
6748     fi
6749     CXXFLAGS=$save_CXXFLAGS
6750     AC_LANG_POP([C++])
6753 dnl ===================================================================
6754 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6755 dnl ===================================================================
6757 if test "$_os" != "WINNT"; then
6758     AC_PROG_CXXCPP
6760     dnl Check whether there's a C pre-processor.
6761     AC_PROG_CPP
6765 dnl ===================================================================
6766 dnl Find integral type sizes and alignments
6767 dnl ===================================================================
6769 if test "$_os" != "WINNT"; then
6771     AC_CHECK_SIZEOF(long)
6772     AC_CHECK_SIZEOF(short)
6773     AC_CHECK_SIZEOF(int)
6774     AC_CHECK_SIZEOF(long long)
6775     AC_CHECK_SIZEOF(double)
6776     AC_CHECK_SIZEOF(void*)
6777     AC_CHECK_SIZEOF(size_t)
6779     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6780     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6781     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6782     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6783     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6784     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6786     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6787     m4_pattern_allow([AC_CHECK_ALIGNOF])
6788     m4_ifdef([AC_CHECK_ALIGNOF],
6789         [
6790             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6791             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6792             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6793             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6794         ],
6795         [
6796             case "$_os-$host_cpu" in
6797             Linux-i686)
6798                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6799                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6800                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6801                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6802                 ;;
6803             Linux-x86_64)
6804                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6805                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6806                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6807                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6808                 ;;
6809             *)
6810                 if test -z "$ac_cv_alignof_short" -o \
6811                         -z "$ac_cv_alignof_int" -o \
6812                         -z "$ac_cv_alignof_long" -o \
6813                         -z "$ac_cv_alignof_double"; then
6814                    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.])
6815                 fi
6816                 ;;
6817             esac
6818         ])
6820     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6821     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6822     if test $ac_cv_sizeof_long -eq 8; then
6823         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6824     elif test $ac_cv_sizeof_double -eq 8; then
6825         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6826     else
6827         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6828     fi
6830     dnl Check for large file support
6831     AC_SYS_LARGEFILE
6832     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6833         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6834     fi
6835     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6836         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6837     fi
6838 else
6839     # Hardcode for MSVC
6840     SAL_TYPES_SIZEOFSHORT=2
6841     SAL_TYPES_SIZEOFINT=4
6842     SAL_TYPES_SIZEOFLONG=4
6843     SAL_TYPES_SIZEOFLONGLONG=8
6844     if test $WIN_HOST_BITS -eq 32; then
6845         SAL_TYPES_SIZEOFPOINTER=4
6846         SIZEOF_SIZE_T=4
6847     else
6848         SAL_TYPES_SIZEOFPOINTER=8
6849         SIZEOF_SIZE_T=8
6850     fi
6851     SAL_TYPES_ALIGNMENT2=2
6852     SAL_TYPES_ALIGNMENT4=4
6853     SAL_TYPES_ALIGNMENT8=8
6854     LFS_CFLAGS=''
6856 AC_SUBST(LFS_CFLAGS)
6857 AC_SUBST(SIZEOF_SIZE_T)
6859 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6860 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6861 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6862 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6863 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6864 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6865 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6866 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6868 dnl ===================================================================
6869 dnl Check whether to enable runtime optimizations
6870 dnl ===================================================================
6871 ENABLE_RUNTIME_OPTIMIZATIONS=
6872 AC_MSG_CHECKING([whether to enable runtime optimizations])
6873 if test -z "$enable_runtime_optimizations"; then
6874     for i in $CC; do
6875         case $i in
6876         -fsanitize=*)
6877             enable_runtime_optimizations=no
6878             break
6879             ;;
6880         esac
6881     done
6883 if test "$enable_runtime_optimizations" != no; then
6884     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6885     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6886     AC_MSG_RESULT([yes])
6887 else
6888     AC_MSG_RESULT([no])
6890 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6892 dnl ===================================================================
6893 dnl Check if valgrind headers are available
6894 dnl ===================================================================
6895 ENABLE_VALGRIND=
6896 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6897     prev_cppflags=$CPPFLAGS
6898     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6899     # or where does it come from?
6900     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6901     AC_CHECK_HEADER([valgrind/valgrind.h],
6902         [ENABLE_VALGRIND=TRUE])
6903     CPPFLAGS=$prev_cppflags
6905 AC_SUBST([ENABLE_VALGRIND])
6906 if test -z "$ENABLE_VALGRIND"; then
6907     if test "$with_valgrind" = yes; then
6908         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6909     fi
6910     VALGRIND_CFLAGS=
6912 AC_SUBST([VALGRIND_CFLAGS])
6915 dnl ===================================================================
6916 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6917 dnl ===================================================================
6919 # We need at least the sys/sdt.h include header.
6920 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6921 if test "$SDT_H_FOUND" = "TRUE"; then
6922     # Found sys/sdt.h header, now make sure the c++ compiler works.
6923     # Old g++ versions had problems with probes in constructors/destructors.
6924     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6925     AC_LANG_PUSH([C++])
6926     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6927     #include <sys/sdt.h>
6928     class ProbeClass
6929     {
6930     private:
6931       int& ref;
6932       const char *name;
6934     public:
6935       ProbeClass(int& v, const char *n) : ref(v), name(n)
6936       {
6937         DTRACE_PROBE2(_test_, cons, name, ref);
6938       }
6940       void method(int min)
6941       {
6942         DTRACE_PROBE3(_test_, meth, name, ref, min);
6943         ref -= min;
6944       }
6946       ~ProbeClass()
6947       {
6948         DTRACE_PROBE2(_test_, dest, name, ref);
6949       }
6950     };
6951     ]],[[
6952     int i = 64;
6953     DTRACE_PROBE1(_test_, call, i);
6954     ProbeClass inst = ProbeClass(i, "call");
6955     inst.method(24);
6956     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6957           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6958     AC_LANG_POP([C++])
6960 AC_CONFIG_HEADERS([config_host/config_probes.h])
6962 dnl ===================================================================
6963 dnl GCC features
6964 dnl ===================================================================
6965 HAVE_GCC_STACK_CLASH_PROTECTION=
6966 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6967     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6968     save_CFLAGS=$CFLAGS
6969     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6970     AC_LINK_IFELSE(
6971         [AC_LANG_PROGRAM(, [[return 0;]])],
6972         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6973         [AC_MSG_RESULT([no])])
6974     CFLAGS=$save_CFLAGS
6976     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6977     save_CFLAGS=$CFLAGS
6978     CFLAGS="$CFLAGS -Werror -mno-avx"
6979     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6980     CFLAGS=$save_CFLAGS
6981     if test "$HAVE_GCC_AVX" = "TRUE"; then
6982         AC_MSG_RESULT([yes])
6983     else
6984         AC_MSG_RESULT([no])
6985     fi
6987     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6988     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6989     int v = 0;
6990     if (__sync_add_and_fetch(&v, 1) != 1 ||
6991         __sync_sub_and_fetch(&v, 1) != 0)
6992         return 1;
6993     __sync_synchronize();
6994     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6995         v != 1)
6996         return 1;
6997     return 0;
6998 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6999     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7000         AC_MSG_RESULT([yes])
7001         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7002     else
7003         AC_MSG_RESULT([no])
7004     fi
7006     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7007     AC_LANG_PUSH([C++])
7008     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7009             #include <cstddef>
7010             #include <cxxabi.h>
7011             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7012         ])], [
7013             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7014             AC_MSG_RESULT([yes])
7015         ], [AC_MSG_RESULT([no])])
7016     AC_LANG_POP([C++])
7018     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7019     AC_LANG_PUSH([C++])
7020     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7021             #include <cstddef>
7022             #include <cxxabi.h>
7023             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7024         ])], [
7025             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7026             AC_MSG_RESULT([yes])
7027         ], [AC_MSG_RESULT([no])])
7028     AC_LANG_POP([C++])
7030     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7031     AC_LANG_PUSH([C++])
7032     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7033             #include <cxxabi.h>
7034             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7035         ])], [
7036             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7037             AC_MSG_RESULT([yes])
7038         ], [AC_MSG_RESULT([no])])
7039     AC_LANG_POP([C++])
7041     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7042     AC_LANG_PUSH([C++])
7043     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7044             #include <cstddef>
7045             #include <cxxabi.h>
7046             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7047         ])], [
7048             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7049             AC_MSG_RESULT([yes])
7050         ], [AC_MSG_RESULT([no])])
7051     AC_LANG_POP([C++])
7053     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7054     AC_LANG_PUSH([C++])
7055     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7056             #include <cstddef>
7057             #include <cxxabi.h>
7058             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7059         ])], [
7060             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7061             AC_MSG_RESULT([yes])
7062         ], [AC_MSG_RESULT([no])])
7063     AC_LANG_POP([C++])
7065     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7066     AC_LANG_PUSH([C++])
7067     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7068             #include <cxxabi.h>
7069             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7070         ])], [
7071             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7072             AC_MSG_RESULT([yes])
7073         ], [AC_MSG_RESULT([no])])
7074     AC_LANG_POP([C++])
7076     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7077     AC_LANG_PUSH([C++])
7078     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7079             #include <cxxabi.h>
7080             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7081         ])], [
7082             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7083             AC_MSG_RESULT([yes])
7084         ], [AC_MSG_RESULT([no])])
7085     AC_LANG_POP([C++])
7087     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7088     AC_LANG_PUSH([C++])
7089     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7090             #include <cxxabi.h>
7091             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7092         ])], [
7093             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7094             AC_MSG_RESULT([yes])
7095         ], [AC_MSG_RESULT([no])])
7096     AC_LANG_POP([C++])
7098     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7099     AC_LANG_PUSH([C++])
7100     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7101             #include <cstddef>
7102             #include <cxxabi.h>
7103             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7104         ])], [
7105             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7106             AC_MSG_RESULT([yes])
7107         ], [AC_MSG_RESULT([no])])
7108     AC_LANG_POP([C++])
7110     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7111     AC_LANG_PUSH([C++])
7112     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7113             #include <cstddef>
7114             #include <cxxabi.h>
7115             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7116         ])], [
7117             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7118             AC_MSG_RESULT([yes])
7119         ], [AC_MSG_RESULT([no])])
7120     AC_LANG_POP([C++])
7123 AC_SUBST(HAVE_GCC_AVX)
7124 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7125 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7127 dnl ===================================================================
7128 dnl Identify the C++ library
7129 dnl ===================================================================
7131 AC_MSG_CHECKING([what the C++ library is])
7132 HAVE_LIBSTDCPP=
7133 AC_LANG_PUSH([C++])
7134 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7135 #include <utility>
7136 #ifndef __GLIBCXX__
7137 foo bar
7138 #endif
7139 ]])],
7140     [CPP_LIBRARY=GLIBCXX
7141      cpp_library_name="GNU libstdc++"
7142      HAVE_LIBSTDCPP=TRUE
7143     ],
7144     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7145 #include <utility>
7146 #ifndef _LIBCPP_VERSION
7147 foo bar
7148 #endif
7149 ]])],
7150     [CPP_LIBRARY=LIBCPP
7151      cpp_library_name="LLVM libc++"
7152      AC_DEFINE([HAVE_LIBCXX])
7153     ],
7154     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7155 #include <utility>
7156 #ifndef _MSC_VER
7157 foo bar
7158 #endif
7159 ]])],
7160     [CPP_LIBRARY=MSVCRT
7161      cpp_library_name="Microsoft"
7162     ],
7163     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7164 AC_MSG_RESULT([$cpp_library_name])
7165 AC_LANG_POP([C++])
7166 AC_SUBST([HAVE_LIBSTDCPP])
7168 dnl ===================================================================
7169 dnl Check for gperf
7170 dnl ===================================================================
7171 AC_PATH_PROG(GPERF, gperf)
7172 if test -z "$GPERF"; then
7173     AC_MSG_ERROR([gperf not found but needed. Install it.])
7175 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7176     GPERF=`cygpath -m $GPERF`
7178 AC_MSG_CHECKING([whether gperf is new enough])
7179 my_gperf_ver1=$($GPERF --version | head -n 1)
7180 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7181 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7182 if test "$my_gperf_ver3" -ge 301; then
7183     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7184 else
7185     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7187 AC_SUBST(GPERF)
7189 dnl ===================================================================
7190 dnl Check for system libcmis
7191 dnl ===================================================================
7192 # libcmis requires curl and we can't build curl for iOS
7193 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7194     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7195     ENABLE_LIBCMIS=TRUE
7196 else
7197     ENABLE_LIBCMIS=
7199 AC_SUBST(ENABLE_LIBCMIS)
7201 dnl ===================================================================
7202 dnl C++11
7203 dnl ===================================================================
7205 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7206 CXXFLAGS_CXX11=
7207 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7208     if test "$with_latest_c__" = yes; then
7209         CXXFLAGS_CXX11=-std:c++latest
7210     else
7211         CXXFLAGS_CXX11=-std:c++17
7212     fi
7213     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7214 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7215     my_flags='-std=c++17 -std=c++1z'
7216     if test "$with_latest_c__" = yes; then
7217         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7218     fi
7219     for flag in $my_flags; do
7220         if test "$COM" = MSC; then
7221             flag="-Xclang $flag"
7222         fi
7223         save_CXXFLAGS=$CXXFLAGS
7224         CXXFLAGS="$CXXFLAGS $flag -Werror"
7225         if test "$SYSTEM_LIBCMIS" = TRUE; then
7226             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7227         fi
7228         AC_LANG_PUSH([C++])
7229         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7230             #include <algorithm>
7231             #include <functional>
7232             #include <vector>
7234             #if defined SYSTEM_LIBCMIS
7235             // See ucb/source/ucp/cmis/auth_provider.hxx:
7236             #if !defined __clang__
7237             #pragma GCC diagnostic push
7238             #pragma GCC diagnostic ignored "-Wdeprecated"
7239             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7240             #endif
7241             #include <libcmis/libcmis.hxx>
7242             #if !defined __clang__
7243             #pragma GCC diagnostic pop
7244             #endif
7245             #endif
7247             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7248                 std::sort(v.begin(), v.end(), fn);
7249             }
7250             ]])],[CXXFLAGS_CXX11=$flag])
7251         AC_LANG_POP([C++])
7252         CXXFLAGS=$save_CXXFLAGS
7253         if test -n "$CXXFLAGS_CXX11"; then
7254             break
7255         fi
7256     done
7258 if test -n "$CXXFLAGS_CXX11"; then
7259     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7260 else
7261     AC_MSG_ERROR(no)
7263 AC_SUBST(CXXFLAGS_CXX11)
7265 if test "$GCC" = "yes"; then
7266     save_CXXFLAGS=$CXXFLAGS
7267     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7268     CHECK_L_ATOMIC
7269     CXXFLAGS=$save_CXXFLAGS
7270     AC_SUBST(ATOMIC_LIB)
7273 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7274 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7275 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7276 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7277 dnl again towards 4.7.2:
7278 if test $CPP_LIBRARY = GLIBCXX; then
7279     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7280     AC_LANG_PUSH([C++])
7281     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7282 #include <list>
7283 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7284     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7285     //   GCC 4.7.0: 20120322
7286     //   GCC 4.7.1: 20120614
7287     // and using a range check is not possible as the mapping between
7288     // __GLIBCXX__ values and GCC versions is not monotonic
7289 /* ok */
7290 #else
7291 abi broken
7292 #endif
7293         ]])], [AC_MSG_RESULT(no, ok)],
7294         [AC_MSG_ERROR(yes)])
7295     AC_LANG_POP([C++])
7298 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7299 save_CXXFLAGS=$CXXFLAGS
7300 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7301 AC_LANG_PUSH([C++])
7303 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7304 #include <stddef.h>
7306 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7308 namespace
7310         struct b
7311         {
7312                 int i;
7313                 int j;
7314         };
7316 ]], [[
7317 struct a
7319         int i;
7320         int j;
7322 a thinga[]={{0,0}, {1,1}};
7323 b thingb[]={{0,0}, {1,1}};
7324 size_t i = sizeof(sal_n_array_size(thinga));
7325 size_t j = sizeof(sal_n_array_size(thingb));
7326 return !(i != 0 && j != 0);
7328     ], [ AC_MSG_RESULT(yes) ],
7329     [ AC_MSG_ERROR(no)])
7330 AC_LANG_POP([C++])
7331 CXXFLAGS=$save_CXXFLAGS
7333 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7334 if test "$GCC" = yes; then
7335     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7336     AC_LANG_PUSH([C++])
7337     save_CXXFLAGS=$CXXFLAGS
7338     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7339     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7340     CXXFLAGS=$save_CXXFLAGS
7341     AC_LANG_POP([C++])
7342     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7343         AC_MSG_RESULT([yes])
7344     else
7345         AC_MSG_RESULT([no])
7346     fi
7348 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7350 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7351 AC_LANG_PUSH([C++])
7352 save_CXXFLAGS=$CXXFLAGS
7353 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7354 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7355         #include <algorithm>
7356         #include <initializer_list>
7357         #include <vector>
7358         template<typename T> class S {
7359         private:
7360             std::vector<T> v_;
7361         public:
7362             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7363         };
7364         constinit S<int> s{3, 2, 1};
7365     ])], [
7366         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7367         AC_MSG_RESULT([yes])
7368     ], [AC_MSG_RESULT([no])])
7369 CXXFLAGS=$save_CXXFLAGS
7370 AC_LANG_POP([C++])
7372 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7373 AC_LANG_PUSH([C++])
7374 save_CXXFLAGS=$CXXFLAGS
7375 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7376 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7377         #include <span>
7378         #include <type_traits>
7379         // Don't check size_type directly, as it was called index_type before P1872R0:
7380         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7381     ])], [
7382         AC_DEFINE([HAVE_CPP_SPAN],[1])
7383         AC_MSG_RESULT([yes])
7384     ], [AC_MSG_RESULT([no])])
7385 CXXFLAGS=$save_CXXFLAGS
7386 AC_LANG_POP([C++])
7388 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7389 AC_LANG_PUSH([C++])
7390 save_CXXFLAGS=$CXXFLAGS
7391 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7392 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393         struct S1 { S1(S1 &&); };
7394         struct S2: S1 {};
7395         S1 f(S2 s) { return s; }
7396     ])], [
7397         AC_DEFINE([HAVE_P1155R3],[1])
7398         AC_MSG_RESULT([yes])
7399     ], [AC_MSG_RESULT([no])])
7400 CXXFLAGS=$save_CXXFLAGS
7401 AC_LANG_POP([C++])
7403 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7404 HAVE_CXX20_ATOMIC_REF=
7405 AC_LANG_PUSH([C++])
7406 save_CXXFLAGS=$CXXFLAGS
7407 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7408 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7409         #include <atomic>
7410         int x;
7411         std::atomic_ref<int> y(x);
7412     ])], [
7413         HAVE_CXX20_ATOMIC_REF=TRUE
7414         AC_MSG_RESULT([yes])
7415     ], [AC_MSG_RESULT([no])])
7416 CXXFLAGS=$save_CXXFLAGS
7417 AC_LANG_POP([C++])
7418 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7420 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7421 dnl which is included in -Wextra anyway):
7422 HAVE_WDEPRECATED_COPY_DTOR=
7423 if test "$GCC" = yes; then
7424     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7425     AC_LANG_PUSH([C++])
7426     save_CXXFLAGS=$CXXFLAGS
7427     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7428     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7429             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7430             AC_MSG_RESULT([yes])
7431         ], [AC_MSG_RESULT([no])])
7432     CXXFLAGS=$save_CXXFLAGS
7433     AC_LANG_POP([C++])
7435 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7437 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7438 dnl uninitialized warning for code like
7440 dnl   OString f();
7441 dnl   boost::optional<OString> * g(bool b) {
7442 dnl       boost::optional<OString> o;
7443 dnl       if (b) o = f();
7444 dnl       return new boost::optional<OString>(o);
7445 dnl   }
7447 dnl (as is e.g. present, in a slightly more elaborate form, in
7448 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7449 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7450 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7451 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7452     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7453     AC_LANG_PUSH([C++])
7454     save_CXXFLAGS=$CXXFLAGS
7455     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7456     if test "$ENABLE_OPTIMIZED" = TRUE; then
7457         CXXFLAGS="$CXXFLAGS -O2"
7458     else
7459         CXXFLAGS="$CXXFLAGS -O0"
7460     fi
7461     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7462             #include <new>
7463             void f1(int);
7464             struct S1 {
7465                 ~S1() { f1(n); }
7466                 int n = 0;
7467             };
7468             struct S2 {
7469                 S2() {}
7470                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7471                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7472                 void set(S1 s) {
7473                     new (stg) S1(s);
7474                     init = true;
7475                 }
7476                 bool init = false;
7477                 char stg[sizeof (S1)];
7478             } ;
7479             S1 f2();
7480             S2 * f3(bool b) {
7481                 S2 o;
7482                 if (b) o.set(f2());
7483                 return new S2(o);
7484             }
7485         ]])], [AC_MSG_RESULT([no])], [
7486             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7487             AC_MSG_RESULT([yes])
7488         ])
7489     CXXFLAGS=$save_CXXFLAGS
7490     AC_LANG_POP([C++])
7492 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7494 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7495 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7496 dnl hits us e.g. with GCC 10 and --enable-optimized at
7498 dnl   In file included from include/rtl/string.hxx:49,
7499 dnl                    from include/rtl/ustring.hxx:43,
7500 dnl                    from include/osl/file.hxx:35,
7501 dnl                    from include/codemaker/global.hxx:28,
7502 dnl                    from include/codemaker/options.hxx:23,
7503 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7504 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7505 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,
7506 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,
7507 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,
7508 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7509 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7510 dnl      78 |         memcpy( buffer, data, length );
7511 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7512 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7513 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7514     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7515     AC_LANG_PUSH([C++])
7516     save_CXXFLAGS=$CXXFLAGS
7517     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7518     if test "$ENABLE_OPTIMIZED" = TRUE; then
7519         CXXFLAGS="$CXXFLAGS -O2"
7520     else
7521         CXXFLAGS="$CXXFLAGS -O0"
7522     fi
7523     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7524     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7525             void fill(char const * begin, char const * end, char c);
7526             struct q {
7527                 char ids[4];
7528                 char username[6];
7529             };
7530             void test(q & c) {
7531                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7532                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7533             }
7534         ]])], [AC_MSG_RESULT([no])], [
7535             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7536             AC_MSG_RESULT([yes])
7537         ])
7538     CXXFLAGS=$save_CXXFLAGS
7539     AC_LANG_POP([C++])
7541 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7543 HAVE_DLLEXPORTINLINES=
7544 if test "$_os" = "WINNT"; then
7545     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7546     AC_LANG_PUSH([C++])
7547     save_CXXFLAGS=$CXXFLAGS
7548     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7549     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7550             HAVE_DLLEXPORTINLINES=TRUE
7551             AC_MSG_RESULT([yes])
7552         ], [AC_MSG_RESULT([no])])
7553     CXXFLAGS=$save_CXXFLAGS
7554     AC_LANG_POP([C++])
7556 AC_SUBST([HAVE_DLLEXPORTINLINES])
7558 dnl ===================================================================
7559 dnl CPU Intrinsics support - SSE, AVX
7560 dnl ===================================================================
7562 CXXFLAGS_INTRINSICS_SSE2=
7563 CXXFLAGS_INTRINSICS_SSSE3=
7564 CXXFLAGS_INTRINSICS_SSE41=
7565 CXXFLAGS_INTRINSICS_SSE42=
7566 CXXFLAGS_INTRINSICS_AVX=
7567 CXXFLAGS_INTRINSICS_AVX2=
7568 CXXFLAGS_INTRINSICS_AVX512=
7569 CXXFLAGS_INTRINSICS_AVX512F=
7570 CXXFLAGS_INTRINSICS_F16C=
7571 CXXFLAGS_INTRINSICS_FMA=
7573 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7574     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7575     flag_sse2=-msse2
7576     flag_ssse3=-mssse3
7577     flag_sse41=-msse4.1
7578     flag_sse42=-msse4.2
7579     flag_avx=-mavx
7580     flag_avx2=-mavx2
7581     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7582     flag_avx512f=-mavx512f
7583     flag_f16c=-mf16c
7584     flag_fma=-mfma
7585 else
7586     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7587     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7588     # SSE2 seems to be SSE2+.
7589     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7590     # is not empty (and can be tested in gbuild).
7591     flag_sse2=-arch:SSE2
7592     flag_ssse3=-arch:SSE2
7593     flag_sse41=-arch:SSE2
7594     flag_sse42=-arch:SSE2
7595     flag_avx=-arch:AVX
7596     flag_avx2=-arch:AVX2
7597     flag_avx512=-arch:AVX512
7598     flag_avx512f=-arch:AVX512
7599     # These are part of -arch:AVX2
7600     flag_f16c=-arch:AVX2
7601     flag_fma=-arch:AVX2
7604 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7605 AC_LANG_PUSH([C++])
7606 save_CXXFLAGS=$CXXFLAGS
7607 CXXFLAGS="$CXXFLAGS $flag_sse2"
7608 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7609     #include <emmintrin.h>
7610     int main () {
7611         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7612         c = _mm_xor_si128 (a, b);
7613         return 0;
7614     }
7615     ])],
7616     [can_compile_sse2=yes],
7617     [can_compile_sse2=no])
7618 AC_LANG_POP([C++])
7619 CXXFLAGS=$save_CXXFLAGS
7620 AC_MSG_RESULT([${can_compile_sse2}])
7621 if test "${can_compile_sse2}" = "yes" ; then
7622     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7625 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7626 AC_LANG_PUSH([C++])
7627 save_CXXFLAGS=$CXXFLAGS
7628 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7629 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7630     #include <tmmintrin.h>
7631     int main () {
7632         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7633         c = _mm_maddubs_epi16 (a, b);
7634         return 0;
7635     }
7636     ])],
7637     [can_compile_ssse3=yes],
7638     [can_compile_ssse3=no])
7639 AC_LANG_POP([C++])
7640 CXXFLAGS=$save_CXXFLAGS
7641 AC_MSG_RESULT([${can_compile_ssse3}])
7642 if test "${can_compile_ssse3}" = "yes" ; then
7643     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7646 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7647 AC_LANG_PUSH([C++])
7648 save_CXXFLAGS=$CXXFLAGS
7649 CXXFLAGS="$CXXFLAGS $flag_sse41"
7650 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7651     #include <smmintrin.h>
7652     int main () {
7653         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7654         c = _mm_cmpeq_epi64 (a, b);
7655         return 0;
7656     }
7657     ])],
7658     [can_compile_sse41=yes],
7659     [can_compile_sse41=no])
7660 AC_LANG_POP([C++])
7661 CXXFLAGS=$save_CXXFLAGS
7662 AC_MSG_RESULT([${can_compile_sse41}])
7663 if test "${can_compile_sse41}" = "yes" ; then
7664     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7667 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7668 AC_LANG_PUSH([C++])
7669 save_CXXFLAGS=$CXXFLAGS
7670 CXXFLAGS="$CXXFLAGS $flag_sse42"
7671 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7672     #include <nmmintrin.h>
7673     int main () {
7674         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7675         c = _mm_cmpgt_epi64 (a, b);
7676         return 0;
7677     }
7678     ])],
7679     [can_compile_sse42=yes],
7680     [can_compile_sse42=no])
7681 AC_LANG_POP([C++])
7682 CXXFLAGS=$save_CXXFLAGS
7683 AC_MSG_RESULT([${can_compile_sse42}])
7684 if test "${can_compile_sse42}" = "yes" ; then
7685     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7688 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7689 AC_LANG_PUSH([C++])
7690 save_CXXFLAGS=$CXXFLAGS
7691 CXXFLAGS="$CXXFLAGS $flag_avx"
7692 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7693     #include <immintrin.h>
7694     int main () {
7695         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7696         c = _mm256_xor_ps(a, b);
7697         return 0;
7698     }
7699     ])],
7700     [can_compile_avx=yes],
7701     [can_compile_avx=no])
7702 AC_LANG_POP([C++])
7703 CXXFLAGS=$save_CXXFLAGS
7704 AC_MSG_RESULT([${can_compile_avx}])
7705 if test "${can_compile_avx}" = "yes" ; then
7706     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7709 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7710 AC_LANG_PUSH([C++])
7711 save_CXXFLAGS=$CXXFLAGS
7712 CXXFLAGS="$CXXFLAGS $flag_avx2"
7713 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7714     #include <immintrin.h>
7715     int main () {
7716         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7717         c = _mm256_maddubs_epi16(a, b);
7718         return 0;
7719     }
7720     ])],
7721     [can_compile_avx2=yes],
7722     [can_compile_avx2=no])
7723 AC_LANG_POP([C++])
7724 CXXFLAGS=$save_CXXFLAGS
7725 AC_MSG_RESULT([${can_compile_avx2}])
7726 if test "${can_compile_avx2}" = "yes" ; then
7727     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7730 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7731 AC_LANG_PUSH([C++])
7732 save_CXXFLAGS=$CXXFLAGS
7733 CXXFLAGS="$CXXFLAGS $flag_avx512"
7734 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7735     #include <immintrin.h>
7736     int main () {
7737         __m512i a = _mm512_loadu_si512(0);
7738         __m512d v1 = _mm512_load_pd(0);
7739         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7740         __m512d v2 = _mm512_abs_pd(v1);
7741         return 0;
7742     }
7743     ])],
7744     [can_compile_avx512=yes],
7745     [can_compile_avx512=no])
7746 AC_LANG_POP([C++])
7747 CXXFLAGS=$save_CXXFLAGS
7748 AC_MSG_RESULT([${can_compile_avx512}])
7749 if test "${can_compile_avx512}" = "yes" ; then
7750     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7751     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7754 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7755 AC_LANG_PUSH([C++])
7756 save_CXXFLAGS=$CXXFLAGS
7757 CXXFLAGS="$CXXFLAGS $flag_f16c"
7758 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7759     #include <immintrin.h>
7760     int main () {
7761         __m128i a = _mm_set1_epi32 (0);
7762         __m128 c;
7763         c = _mm_cvtph_ps(a);
7764         return 0;
7765     }
7766     ])],
7767     [can_compile_f16c=yes],
7768     [can_compile_f16c=no])
7769 AC_LANG_POP([C++])
7770 CXXFLAGS=$save_CXXFLAGS
7771 AC_MSG_RESULT([${can_compile_f16c}])
7772 if test "${can_compile_f16c}" = "yes" ; then
7773     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7776 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7777 AC_LANG_PUSH([C++])
7778 save_CXXFLAGS=$CXXFLAGS
7779 CXXFLAGS="$CXXFLAGS $flag_fma"
7780 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7781     #include <immintrin.h>
7782     int main () {
7783         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7784         d = _mm256_fmadd_ps(a, b, c);
7785         return 0;
7786     }
7787     ])],
7788     [can_compile_fma=yes],
7789     [can_compile_fma=no])
7790 AC_LANG_POP([C++])
7791 CXXFLAGS=$save_CXXFLAGS
7792 AC_MSG_RESULT([${can_compile_fma}])
7793 if test "${can_compile_fma}" = "yes" ; then
7794     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7797 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7798 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7799 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7800 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7801 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7802 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7803 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7804 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7805 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7806 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7808 dnl ===================================================================
7809 dnl system stl sanity tests
7810 dnl ===================================================================
7811 if test "$_os" != "WINNT"; then
7813     AC_LANG_PUSH([C++])
7815     save_CPPFLAGS="$CPPFLAGS"
7816     if test -n "$MACOSX_SDK_PATH"; then
7817         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7818     fi
7820     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7821     # only.
7822     if test "$CPP_LIBRARY" = GLIBCXX; then
7823         dnl gcc#19664, gcc#22482, rhbz#162935
7824         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7825         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7826         AC_MSG_RESULT([$stlvisok])
7827         if test "$stlvisok" = "no"; then
7828             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7829         fi
7830     fi
7832     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7833     # when we don't make any dynamic libraries?
7834     if test "$DISABLE_DYNLOADING" = ""; then
7835         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7836         cat > conftestlib1.cc <<_ACEOF
7837 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7838 struct S2: S1<int> { virtual ~S2(); };
7839 S2::~S2() {}
7840 _ACEOF
7841         cat > conftestlib2.cc <<_ACEOF
7842 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7843 struct S2: S1<int> { virtual ~S2(); };
7844 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7845 _ACEOF
7846         gccvisinlineshiddenok=yes
7847         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7848             gccvisinlineshiddenok=no
7849         else
7850             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7851             dnl known to not work with -z defs (unsetting which makes the test
7852             dnl moot, though):
7853             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7854             if test "$COM_IS_CLANG" = TRUE; then
7855                 for i in $CXX $CXXFLAGS; do
7856                     case $i in
7857                     -fsanitize=*)
7858                         my_linkflagsnoundefs=
7859                         break
7860                         ;;
7861                     esac
7862                 done
7863             fi
7864             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7865                 gccvisinlineshiddenok=no
7866             fi
7867         fi
7869         rm -fr libconftest*
7870         AC_MSG_RESULT([$gccvisinlineshiddenok])
7871         if test "$gccvisinlineshiddenok" = "no"; then
7872             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7873         fi
7874     fi
7876    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7877     cat >visibility.cxx <<_ACEOF
7878 #pragma GCC visibility push(hidden)
7879 struct __attribute__ ((visibility ("default"))) TestStruct {
7880   static void Init();
7882 __attribute__ ((visibility ("default"))) void TestFunc() {
7883   TestStruct::Init();
7885 _ACEOF
7886     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7887         gccvisbroken=yes
7888     else
7889         case "$host_cpu" in
7890         i?86|x86_64)
7891             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7892                 gccvisbroken=no
7893             else
7894                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7895                     gccvisbroken=no
7896                 else
7897                     gccvisbroken=yes
7898                 fi
7899             fi
7900             ;;
7901         *)
7902             gccvisbroken=no
7903             ;;
7904         esac
7905     fi
7906     rm -f visibility.s visibility.cxx
7908     AC_MSG_RESULT([$gccvisbroken])
7909     if test "$gccvisbroken" = "yes"; then
7910         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7911     fi
7913     CPPFLAGS="$save_CPPFLAGS"
7915     AC_LANG_POP([C++])
7918 dnl ===================================================================
7919 dnl  Clang++ tests
7920 dnl ===================================================================
7922 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7923 if test "$GCC" = "yes"; then
7924     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7925     AC_LANG_PUSH([C++])
7926     save_CXXFLAGS=$CXXFLAGS
7927     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7928     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7929     CXXFLAGS=$save_CXXFLAGS
7930     AC_LANG_POP([C++])
7931     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7932         AC_MSG_RESULT([yes])
7933     else
7934         AC_MSG_RESULT([no])
7935     fi
7937 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7939 dnl ===================================================================
7940 dnl Compiler plugins
7941 dnl ===================================================================
7943 COMPILER_PLUGINS=
7944 # currently only Clang
7946 if test "$COM_IS_CLANG" != "TRUE"; then
7947     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7948         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7949         enable_compiler_plugins=no
7950     fi
7953 COMPILER_PLUGINS_COM_IS_CLANG=
7954 if test "$COM_IS_CLANG" = "TRUE"; then
7955     if test -n "$enable_compiler_plugins"; then
7956         compiler_plugins="$enable_compiler_plugins"
7957     elif test -n "$ENABLE_DBGUTIL"; then
7958         compiler_plugins=test
7959     else
7960         compiler_plugins=no
7961     fi
7962     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7963         if test "$CLANGVER" -lt 50002; then
7964             if test "$compiler_plugins" = yes; then
7965                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7966             else
7967                 compiler_plugins=no
7968             fi
7969         fi
7970     fi
7971     if test "$compiler_plugins" != "no"; then
7972         dnl The prefix where Clang resides, override to where Clang resides if
7973         dnl using a source build:
7974         if test -z "$CLANGDIR"; then
7975             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
7976         fi
7977         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7978         if test -z "$COMPILER_PLUGINS_CXX"; then
7979             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7980         fi
7981         clangbindir=$CLANGDIR/bin
7982         if test "$build_os" = "cygwin"; then
7983             clangbindir=$(cygpath -u "$clangbindir")
7984         fi
7985         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7986         if test -n "$LLVM_CONFIG"; then
7987             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7988             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7989             if test -z "$CLANGLIBDIR"; then
7990                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7991             fi
7992             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7993             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7994             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7995             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7996                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7997             fi
7998             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7999             clangobjdir=$($LLVM_CONFIG --obj-root)
8000             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8001                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8002             fi
8003         fi
8004         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8005         AC_LANG_PUSH([C++])
8006         save_CXX=$CXX
8007         save_CXXCPP=$CXXCPP
8008         save_CPPFLAGS=$CPPFLAGS
8009         save_CXXFLAGS=$CXXFLAGS
8010         save_LDFLAGS=$LDFLAGS
8011         save_LIBS=$LIBS
8012         CXX=$COMPILER_PLUGINS_CXX
8013         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8014         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8015         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8016         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8017             [COMPILER_PLUGINS=TRUE],
8018             [
8019             if test "$compiler_plugins" = "yes"; then
8020                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8021             else
8022                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8023                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8024             fi
8025             ])
8026         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8027         dnl comment in compilerplugins/Makefile-clang.mk:
8028         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8029             LDFLAGS=""
8030             AC_MSG_CHECKING([for clang libraries to use])
8031             if test -z "$CLANGTOOLLIBS"; then
8032                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8033  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8034                 AC_LINK_IFELSE([
8035                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8036                         [[ clang::FullSourceLoc().dump(); ]])
8037                 ],[CLANGTOOLLIBS="$LIBS"],[])
8038             fi
8039             if test -z "$CLANGTOOLLIBS"; then
8040                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8041                 AC_LINK_IFELSE([
8042                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8043                         [[ clang::FullSourceLoc().dump(); ]])
8044                 ],[CLANGTOOLLIBS="$LIBS"],[])
8045             fi
8046             AC_MSG_RESULT([$CLANGTOOLLIBS])
8047             if test -z "$CLANGTOOLLIBS"; then
8048                 if test "$compiler_plugins" = "yes"; then
8049                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8050                 else
8051                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8052                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8053                 fi
8054                 COMPILER_PLUGINS=
8055             fi
8056             if test -n "$COMPILER_PLUGINS"; then
8057                 if test -z "$CLANGSYSINCLUDE"; then
8058                     if test -n "$LLVM_CONFIG"; then
8059                         # Path to the clang system headers (no idea if there's a better way to get it).
8060                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8061                     fi
8062                 fi
8063             fi
8064         fi
8065         CXX=$save_CXX
8066         CXXCPP=$save_CXXCPP
8067         CPPFLAGS=$save_CPPFLAGS
8068         CXXFLAGS=$save_CXXFLAGS
8069         LDFLAGS=$save_LDFLAGS
8070         LIBS="$save_LIBS"
8071         AC_LANG_POP([C++])
8073         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8074         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8075             #ifndef __clang__
8076             you lose
8077             #endif
8078             int foo=42;
8079             ]])],
8080             [AC_MSG_RESULT([yes])
8081              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8082             [AC_MSG_RESULT([no])])
8083         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8084     fi
8085 else
8086     if test "$enable_compiler_plugins" = "yes"; then
8087         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8088     fi
8090 COMPILER_PLUGINS_ANALYZER_PCH=
8091 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8092     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8094 AC_SUBST(COMPILER_PLUGINS)
8095 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8096 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8097 AC_SUBST(COMPILER_PLUGINS_CXX)
8098 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8099 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8100 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8101 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8102 AC_SUBST(CLANGDIR)
8103 AC_SUBST(CLANGLIBDIR)
8104 AC_SUBST(CLANGTOOLLIBS)
8105 AC_SUBST(CLANGSYSINCLUDE)
8107 # Plugin to help linker.
8108 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8109 # This makes --enable-lto build with clang work.
8110 AC_SUBST(LD_PLUGIN)
8112 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8113 AC_SUBST(HAVE_POSIX_FALLOCATE)
8115 JITC_PROCESSOR_TYPE=""
8116 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8117     # IBMs JDK needs this...
8118     JITC_PROCESSOR_TYPE=6
8119     export JITC_PROCESSOR_TYPE
8121 AC_SUBST([JITC_PROCESSOR_TYPE])
8123 # Misc Windows Stuff
8124 AC_ARG_WITH(ucrt-dir,
8125     AS_HELP_STRING([--with-ucrt-dir],
8126         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8127         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8128         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8129             Windows6.1-KB2999226-x64.msu
8130             Windows6.1-KB2999226-x86.msu
8131             Windows8.1-KB2999226-x64.msu
8132             Windows8.1-KB2999226-x86.msu
8133             Windows8-RT-KB2999226-x64.msu
8134             Windows8-RT-KB2999226-x86.msu
8135         A zip archive including those files is available from Microsoft site:
8136         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8139 UCRT_REDISTDIR="$with_ucrt_dir"
8140 if test $_os = "WINNT"; then
8141     find_msvc_x64_dlls
8142     for i in $PKGFORMAT; do
8143         if test "$i" = msi; then
8144             find_msms
8145             break
8146         fi
8147     done
8148     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8149     MSVC_DLLS="$msvcdlls"
8150     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8151     # MSVC 15.3 changed it to VC141
8152     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8153         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8154     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8155         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8156     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8157         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8158     else
8159         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8160     fi
8162     if test "$UCRT_REDISTDIR" = "no"; then
8163         dnl explicitly disabled
8164         UCRT_REDISTDIR=""
8165     else
8166         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8167                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8168                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8169                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8170                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8171                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8172             UCRT_REDISTDIR=""
8173             if test -n "$PKGFORMAT"; then
8174                for i in $PKGFORMAT; do
8175                    case "$i" in
8176                    msi)
8177                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8178                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8179                        ;;
8180                    esac
8181                done
8182             fi
8183         fi
8184     fi
8187 AC_SUBST(UCRT_REDISTDIR)
8188 AC_SUBST(MSVC_DLL_PATH)
8189 AC_SUBST(MSVC_DLLS)
8190 AC_SUBST(MSM_PATH)
8193 dnl ===================================================================
8194 dnl Checks for Java
8195 dnl ===================================================================
8196 if test "$ENABLE_JAVA" != ""; then
8198     # Windows-specific tests
8199     if test "$build_os" = "cygwin"; then
8200         if test -z "$with_jdk_home"; then
8201             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8202             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8203             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8204             if test -n "$regvalue"; then
8205                 ver=$regvalue
8206                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8207                 with_jdk_home=$regvalue
8208             fi
8209             howfound="found automatically"
8210         else
8211             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8212             howfound="you passed"
8213         fi
8215         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8216             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])
8217         fi
8218     fi
8220     # 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.
8221     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8222     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8223         with_jdk_home=`/usr/libexec/java_home`
8224     fi
8226     JAVA_HOME=; export JAVA_HOME
8227     if test -z "$with_jdk_home"; then
8228         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8229     else
8230         _java_path="$with_jdk_home/bin/$with_java"
8231         dnl Check if there is a Java interpreter at all.
8232         if test -x "$_java_path"; then
8233             JAVAINTERPRETER=$_java_path
8234         else
8235             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8236         fi
8237     fi
8239     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8240     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8241     dnl loaded by java to run JunitTests:
8242     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8243         shortjdkhome=`cygpath -d "$with_jdk_home"`
8244         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
8245             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8246             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8247         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
8248             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8249             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8250         fi
8252         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8253             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8254         fi
8255         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8256     elif test "$cross_compiling" != "yes"; then
8257         case $CPUNAME in
8258             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8259                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8260                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8261                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8262                 fi
8263                 ;;
8264             *) # assumption: everything else 32-bit
8265                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8266                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8267                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8268                 fi
8269                 ;;
8270         esac
8271     fi
8274 dnl ===================================================================
8275 dnl Checks for JDK.
8276 dnl ===================================================================
8278 # Whether all the complexity here actually is needed any more or not, no idea.
8280 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8281     _gij_longver=0
8282     AC_MSG_CHECKING([the installed JDK])
8283     if test -n "$JAVAINTERPRETER"; then
8284         dnl java -version sends output to stderr!
8285         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8286             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8287         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8288             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8289         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8290             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8291         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8292             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8293         else
8294             JDK=sun
8296             dnl Sun JDK specific tests
8297             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8298             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8300             if test "$_jdk_ver" -lt 10900; then
8301                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8302             fi
8303             if test "$_jdk_ver" -gt 10900; then
8304                 JAVA_CLASSPATH_NOT_SET=TRUE
8305             fi
8307             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8308             if test "$_os" = "WINNT"; then
8309                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8310             fi
8311             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8313             # set to limit VM usage for JunitTests
8314             JAVAIFLAGS=-Xmx64M
8315             # set to limit VM usage for javac
8316             JAVACFLAGS=-J-Xmx128M
8317         fi
8318     else
8319         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8320     fi
8321 else
8322     if test -z "$ENABLE_JAVA"; then
8323         dnl Java disabled
8324         JAVA_HOME=
8325         export JAVA_HOME
8326     elif test "$cross_compiling" = "yes"; then
8327         # Just assume compatibility of build and host JDK
8328         JDK=$JDK_FOR_BUILD
8329         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8330     fi
8333 dnl ===================================================================
8334 dnl Checks for javac
8335 dnl ===================================================================
8336 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8337     javacompiler="javac"
8338     : ${JAVA_SOURCE_VER=8}
8339     : ${JAVA_TARGET_VER=8}
8340     if test -z "$with_jdk_home"; then
8341         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8342     else
8343         _javac_path="$with_jdk_home/bin/$javacompiler"
8344         dnl Check if there is a Java compiler at all.
8345         if test -x "$_javac_path"; then
8346             JAVACOMPILER=$_javac_path
8347         fi
8348     fi
8349     if test -z "$JAVACOMPILER"; then
8350         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8351     fi
8352     if test "$build_os" = "cygwin"; then
8353         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8354             JAVACOMPILER="${JAVACOMPILER}.exe"
8355         fi
8356         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8357     fi
8360 dnl ===================================================================
8361 dnl Checks for javadoc
8362 dnl ===================================================================
8363 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8364     if test -z "$with_jdk_home"; then
8365         AC_PATH_PROG(JAVADOC, javadoc)
8366     else
8367         _javadoc_path="$with_jdk_home/bin/javadoc"
8368         dnl Check if there is a javadoc at all.
8369         if test -x "$_javadoc_path"; then
8370             JAVADOC=$_javadoc_path
8371         else
8372             AC_PATH_PROG(JAVADOC, javadoc)
8373         fi
8374     fi
8375     if test -z "$JAVADOC"; then
8376         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8377     fi
8378     if test "$build_os" = "cygwin"; then
8379         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8380             JAVADOC="${JAVADOC}.exe"
8381         fi
8382         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8383     fi
8385     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8386     JAVADOCISGJDOC="yes"
8387     fi
8389 AC_SUBST(JAVADOC)
8390 AC_SUBST(JAVADOCISGJDOC)
8392 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8393     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8394     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8395         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8396            # try to recover first by looking whether we have an alternative
8397            # system as in Debian or newer SuSEs where following /usr/bin/javac
8398            # over /etc/alternatives/javac leads to the right bindir where we
8399            # just need to strip a bit away to get a valid JAVA_HOME
8400            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8401         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8402             # maybe only one level of symlink (e.g. on Mac)
8403             JAVA_HOME=$(readlink $JAVACOMPILER)
8404             if test "$(dirname $JAVA_HOME)" = "."; then
8405                 # we've got no path to trim back
8406                 JAVA_HOME=""
8407             fi
8408         else
8409             # else warn
8410             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8411             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8412             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8413             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8414         fi
8415         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8416         if test "$JAVA_HOME" != "/usr"; then
8417             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8418                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8419                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8420                 dnl Tiger already returns a JDK path...
8421                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8422             else
8423                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8424                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8425                 dnl that checks which version to run
8426                 if test -f "$JAVA_HOME"; then
8427                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8428                 fi
8429             fi
8430         fi
8431     fi
8432     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8434     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8435     if test -z "$JAVA_HOME"; then
8436         if test "x$with_jdk_home" = "x"; then
8437             cat > findhome.java <<_ACEOF
8438 [import java.io.File;
8440 class findhome
8442     public static void main(String args[])
8443     {
8444         String jrelocation = System.getProperty("java.home");
8445         File jre = new File(jrelocation);
8446         System.out.println(jre.getParent());
8447     }
8449 _ACEOF
8450             AC_MSG_CHECKING([if javac works])
8451             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8452             AC_TRY_EVAL(javac_cmd)
8453             if test $? = 0 -a -f ./findhome.class; then
8454                 AC_MSG_RESULT([javac works])
8455             else
8456                 echo "configure: javac test failed" >&5
8457                 cat findhome.java >&5
8458                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8459             fi
8460             AC_MSG_CHECKING([if gij knows its java.home])
8461             JAVA_HOME=`$JAVAINTERPRETER findhome`
8462             if test $? = 0 -a "$JAVA_HOME" != ""; then
8463                 AC_MSG_RESULT([$JAVA_HOME])
8464             else
8465                 echo "configure: java test failed" >&5
8466                 cat findhome.java >&5
8467                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8468             fi
8469             # clean-up after ourselves
8470             rm -f ./findhome.java ./findhome.class
8471         else
8472             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8473         fi
8474     fi
8476     # now check if $JAVA_HOME is really valid
8477     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8478         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8479             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8480             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8481             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8482             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8483             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8484             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8485         fi
8486     fi
8487     PathFormat "$JAVA_HOME"
8488     JAVA_HOME="$formatted_path"
8491 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8492     "$_os" != Darwin
8493 then
8494     AC_MSG_CHECKING([for JAWT lib])
8495     if test "$_os" = WINNT; then
8496         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8497         JAWTLIB=jawt.lib
8498     else
8499         case "$host_cpu" in
8500         arm*)
8501             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8502             JAVA_ARCH=$my_java_arch
8503             ;;
8504         i*86)
8505             my_java_arch=i386
8506             ;;
8507         m68k)
8508             my_java_arch=m68k
8509             ;;
8510         powerpc)
8511             my_java_arch=ppc
8512             ;;
8513         powerpc64)
8514             my_java_arch=ppc64
8515             ;;
8516         powerpc64le)
8517             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8518             JAVA_ARCH=$my_java_arch
8519             ;;
8520         sparc64)
8521             my_java_arch=sparcv9
8522             ;;
8523         x86_64)
8524             my_java_arch=amd64
8525             ;;
8526         *)
8527             my_java_arch=$host_cpu
8528             ;;
8529         esac
8530         # This is where JDK9 puts the library
8531         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8532             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8533         else
8534             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8535         fi
8536         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8537     fi
8538     AC_MSG_RESULT([$JAWTLIB])
8540 AC_SUBST(JAWTLIB)
8542 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8543     case "$host_os" in
8545     aix*)
8546         JAVAINC="-I$JAVA_HOME/include"
8547         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8548         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8549         ;;
8551     cygwin*|wsl*)
8552         JAVAINC="-I$JAVA_HOME/include/win32"
8553         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8554         ;;
8556     darwin*|macos*)
8557         if test -d "$JAVA_HOME/include/darwin"; then
8558             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8559         else
8560             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8561         fi
8562         ;;
8564     dragonfly*)
8565         JAVAINC="-I$JAVA_HOME/include"
8566         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8567         ;;
8569     freebsd*)
8570         JAVAINC="-I$JAVA_HOME/include"
8571         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8572         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8573         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8574         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8575         ;;
8577     k*bsd*-gnu*)
8578         JAVAINC="-I$JAVA_HOME/include"
8579         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8580         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8581         ;;
8583     linux-gnu*)
8584         JAVAINC="-I$JAVA_HOME/include"
8585         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8586         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8587         ;;
8589     *netbsd*)
8590         JAVAINC="-I$JAVA_HOME/include"
8591         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8592         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8593        ;;
8595     openbsd*)
8596         JAVAINC="-I$JAVA_HOME/include"
8597         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8598         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8599         ;;
8601     solaris*)
8602         JAVAINC="-I$JAVA_HOME/include"
8603         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8604         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8605         ;;
8606     esac
8608 SOLARINC="$SOLARINC $JAVAINC"
8610 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8611     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8612     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8613     JDK_FOR_BUILD=$JDK
8616 AC_SUBST(JAVACFLAGS)
8617 AC_SUBST(JAVACOMPILER)
8618 AC_SUBST(JAVAINTERPRETER)
8619 AC_SUBST(JAVAIFLAGS)
8620 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8621 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8622 AC_SUBST(JAVA_HOME)
8623 AC_SUBST(JAVA_HOME_FOR_BUILD)
8624 AC_SUBST(JDK)
8625 AC_SUBST(JDK_FOR_BUILD)
8626 AC_SUBST(JAVA_SOURCE_VER)
8627 AC_SUBST(JAVA_TARGET_VER)
8630 dnl ===================================================================
8631 dnl Export file validation
8632 dnl ===================================================================
8633 AC_MSG_CHECKING([whether to enable export file validation])
8634 if test "$with_export_validation" != "no"; then
8635     if test -z "$ENABLE_JAVA"; then
8636         if test "$with_export_validation" = "yes"; then
8637             AC_MSG_ERROR([requested, but Java is disabled])
8638         else
8639             AC_MSG_RESULT([no, as Java is disabled])
8640         fi
8641     elif ! test -d "${SRC_ROOT}/schema"; then
8642         if test "$with_export_validation" = "yes"; then
8643             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8644         else
8645             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8646         fi
8647     else
8648         AC_MSG_RESULT([yes])
8649         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8651         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8652         if test -z "$ODFVALIDATOR"; then
8653             # remember to download the ODF toolkit with validator later
8654             AC_MSG_NOTICE([no odfvalidator found, will download it])
8655             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8656             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8658             # and fetch name of odfvalidator jar name from download.lst
8659             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8660             AC_SUBST(ODFVALIDATOR_JAR)
8662             if test -z "$ODFVALIDATOR_JAR"; then
8663                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8664             fi
8665         fi
8666         if test "$build_os" = "cygwin"; then
8667             # In case of Cygwin it will be executed from Windows,
8668             # so we need to run bash and absolute path to validator
8669             # so instead of "odfvalidator" it will be
8670             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8671             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8672         else
8673             ODFVALIDATOR="sh $ODFVALIDATOR"
8674         fi
8675         AC_SUBST(ODFVALIDATOR)
8678         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8679         if test -z "$OFFICEOTRON"; then
8680             # remember to download the officeotron with validator later
8681             AC_MSG_NOTICE([no officeotron found, will download it])
8682             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8683             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8685             # and fetch name of officeotron jar name from download.lst
8686             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8687             AC_SUBST(OFFICEOTRON_JAR)
8689             if test -z "$OFFICEOTRON_JAR"; then
8690                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8691             fi
8692         else
8693             # check version of existing officeotron
8694             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8695             if test 0"$OFFICEOTRON_VER" -lt 704; then
8696                 AC_MSG_ERROR([officeotron too old])
8697             fi
8698         fi
8699         if test "$build_os" = "cygwin"; then
8700             # In case of Cygwin it will be executed from Windows,
8701             # so we need to run bash and absolute path to validator
8702             # so instead of "odfvalidator" it will be
8703             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8704             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8705         else
8706             OFFICEOTRON="sh $OFFICEOTRON"
8707         fi
8708     fi
8709     AC_SUBST(OFFICEOTRON)
8710 else
8711     AC_MSG_RESULT([no])
8714 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8715 if test "$with_bffvalidator" != "no"; then
8716     AC_DEFINE(HAVE_BFFVALIDATOR)
8718     if test "$with_export_validation" = "no"; then
8719         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8720     fi
8722     if test "$with_bffvalidator" = "yes"; then
8723         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8724     else
8725         BFFVALIDATOR="$with_bffvalidator"
8726     fi
8728     if test "$build_os" = "cygwin"; then
8729         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8730             AC_MSG_RESULT($BFFVALIDATOR)
8731         else
8732             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8733         fi
8734     elif test -n "$BFFVALIDATOR"; then
8735         # We are not in Cygwin but need to run Windows binary with wine
8736         AC_PATH_PROGS(WINE, wine)
8738         # so swap in a shell wrapper that converts paths transparently
8739         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8740         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8741         AC_SUBST(BFFVALIDATOR_EXE)
8742         AC_MSG_RESULT($BFFVALIDATOR)
8743     else
8744         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8745     fi
8746     AC_SUBST(BFFVALIDATOR)
8747 else
8748     AC_MSG_RESULT([no])
8751 dnl ===================================================================
8752 dnl Check for C preprocessor to use
8753 dnl ===================================================================
8754 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8755 SYSTEM_UCPP_IS_GCC=
8756 if test -n "$with_idlc_cpp"; then
8757     AC_MSG_RESULT([$with_idlc_cpp])
8758     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8759     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8760     # ucpp will accept -v (to output version), warn about the others as unknown
8761     # and return 1 (due to -v)
8762     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8763     # and return 0 (due to --version ) if all options are supported
8764     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8765     if test $? -eq 0;  then
8766         SYSTEM_UCPP_IS_GCC=TRUE
8767         AC_MSG_RESULT([yes])
8768     else
8769         AC_MSG_RESULT([no])
8770     fi
8771 else
8772     AC_MSG_RESULT([ucpp])
8773     AC_MSG_CHECKING([which ucpp to use])
8774     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8775         AC_MSG_RESULT([external])
8776         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8777     else
8778         AC_MSG_RESULT([internal])
8779         BUILD_TYPE="$BUILD_TYPE UCPP"
8780     fi
8782 AC_SUBST(SYSTEM_UCPP)
8783 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8785 dnl ===================================================================
8786 dnl Check for epm (not needed for Windows)
8787 dnl ===================================================================
8788 AC_MSG_CHECKING([whether to enable EPM for packing])
8789 if test "$enable_epm" = "yes"; then
8790     AC_MSG_RESULT([yes])
8791     if test "$_os" != "WINNT"; then
8792         if test $_os = Darwin; then
8793             EPM=internal
8794         elif test -n "$with_epm"; then
8795             EPM=$with_epm
8796         else
8797             AC_PATH_PROG(EPM, epm, no)
8798         fi
8799         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8800             AC_MSG_NOTICE([EPM will be built.])
8801             BUILD_TYPE="$BUILD_TYPE EPM"
8802             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8803         else
8804             # Gentoo has some epm which is something different...
8805             AC_MSG_CHECKING([whether the found epm is the right epm])
8806             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8807                 AC_MSG_RESULT([yes])
8808             else
8809                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8810             fi
8811             AC_MSG_CHECKING([epm version])
8812             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8813             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8814                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8815                 AC_MSG_RESULT([OK, >= 3.7])
8816             else
8817                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8818                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8819             fi
8820         fi
8821     fi
8823     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8824         AC_MSG_CHECKING([for rpm])
8825         for a in "$RPM" rpmbuild rpm; do
8826             $a --usage >/dev/null 2> /dev/null
8827             if test $? -eq 0; then
8828                 RPM=$a
8829                 break
8830             else
8831                 $a --version >/dev/null 2> /dev/null
8832                 if test $? -eq 0; then
8833                     RPM=$a
8834                     break
8835                 fi
8836             fi
8837         done
8838         if test -z "$RPM"; then
8839             AC_MSG_ERROR([not found])
8840         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8841             RPM_PATH=`which $RPM`
8842             AC_MSG_RESULT([$RPM_PATH])
8843             SCPDEFS="$SCPDEFS -DWITH_RPM"
8844         else
8845             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8846         fi
8847     fi
8848     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8849         AC_PATH_PROG(DPKG, dpkg, no)
8850         if test "$DPKG" = "no"; then
8851             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8852         fi
8853     fi
8854     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8855        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8856         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8857             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8858                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8859                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8860                     AC_MSG_RESULT([yes])
8861                 else
8862                     AC_MSG_RESULT([no])
8863                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8864                         _pt="rpm"
8865                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8866                         add_warning "the rpms will need to be installed with --nodeps"
8867                     else
8868                         _pt="pkg"
8869                     fi
8870                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8871                     add_warning "the ${_pt}s will not be relocatable"
8872                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8873                                  relocation will work, you need to patch your epm with the
8874                                  patch in epm/epm-3.7.patch or build with
8875                                  --with-epm=internal which will build a suitable epm])
8876                 fi
8877             fi
8878         fi
8879     fi
8880     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8881         AC_PATH_PROG(PKGMK, pkgmk, no)
8882         if test "$PKGMK" = "no"; then
8883             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8884         fi
8885     fi
8886     AC_SUBST(RPM)
8887     AC_SUBST(DPKG)
8888     AC_SUBST(PKGMK)
8889 else
8890     for i in $PKGFORMAT; do
8891         case "$i" in
8892         aix | bsd | deb | pkg | rpm | native | portable)
8893             AC_MSG_ERROR(
8894                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8895             ;;
8896         esac
8897     done
8898     AC_MSG_RESULT([no])
8899     EPM=NO
8901 AC_SUBST(EPM)
8903 ENABLE_LWP=
8904 if test "$enable_lotuswordpro" = "yes"; then
8905     ENABLE_LWP="TRUE"
8907 AC_SUBST(ENABLE_LWP)
8909 dnl ===================================================================
8910 dnl Check for building ODK
8911 dnl ===================================================================
8912 if test "$enable_odk" != yes; then
8913     unset DOXYGEN
8914 else
8915     if test "$with_doxygen" = no; then
8916         AC_MSG_CHECKING([for doxygen])
8917         unset DOXYGEN
8918         AC_MSG_RESULT([no])
8919     else
8920         if test "$with_doxygen" = yes; then
8921             AC_PATH_PROG([DOXYGEN], [doxygen])
8922             if test -z "$DOXYGEN"; then
8923                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8924             fi
8925             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8926                 if ! dot -V 2>/dev/null; then
8927                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8928                 fi
8929             fi
8930         else
8931             AC_MSG_CHECKING([for doxygen])
8932             DOXYGEN=$with_doxygen
8933             AC_MSG_RESULT([$DOXYGEN])
8934         fi
8935         if test -n "$DOXYGEN"; then
8936             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8937             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8938             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8939                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8940             fi
8941         fi
8942     fi
8944 AC_SUBST([DOXYGEN])
8946 AC_MSG_CHECKING([whether to build the ODK])
8947 if test "$enable_odk" = yes; then
8948     AC_MSG_RESULT([yes])
8949     BUILD_TYPE="$BUILD_TYPE ODK"
8950 else
8951     AC_MSG_RESULT([no])
8954 dnl ===================================================================
8955 dnl Check for system zlib
8956 dnl ===================================================================
8957 if test "$with_system_zlib" = "auto"; then
8958     case "$_os" in
8959     WINNT)
8960         with_system_zlib="$with_system_libs"
8961         ;;
8962     *)
8963         if test "$enable_fuzzers" != "yes"; then
8964             with_system_zlib=yes
8965         else
8966             with_system_zlib=no
8967         fi
8968         ;;
8969     esac
8972 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8973 dnl and has no pkg-config for it at least on some tinderboxes,
8974 dnl so leaving that out for now
8975 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8976 AC_MSG_CHECKING([which zlib to use])
8977 if test "$with_system_zlib" = "yes"; then
8978     AC_MSG_RESULT([external])
8979     SYSTEM_ZLIB=TRUE
8980     AC_CHECK_HEADER(zlib.h, [],
8981         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8982     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8983         [AC_MSG_ERROR(zlib not found or functional)], [])
8984 else
8985     AC_MSG_RESULT([internal])
8986     SYSTEM_ZLIB=
8987     BUILD_TYPE="$BUILD_TYPE ZLIB"
8988     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8989     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8991 AC_SUBST(ZLIB_CFLAGS)
8992 AC_SUBST(ZLIB_LIBS)
8993 AC_SUBST(SYSTEM_ZLIB)
8995 dnl ===================================================================
8996 dnl Check for system jpeg
8997 dnl ===================================================================
8998 AC_MSG_CHECKING([which libjpeg to use])
8999 if test "$with_system_jpeg" = "yes"; then
9000     AC_MSG_RESULT([external])
9001     SYSTEM_LIBJPEG=TRUE
9002     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9003         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9004     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9005         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9006 else
9007     SYSTEM_LIBJPEG=
9008     AC_MSG_RESULT([internal, libjpeg-turbo])
9009     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9011     case "$host_cpu" in
9012     x86_64 | amd64 | i*86 | x86 | ia32)
9013         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9014         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9015             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9016                 NASM="$LODE_HOME/opt/bin/nasm"
9017             elif test -x "/opt/lo/bin/nasm"; then
9018                 NASM="/opt/lo/bin/nasm"
9019             fi
9020         fi
9022         if test -n "$NASM"; then
9023             AC_MSG_CHECKING([for object file format of host system])
9024             case "$host_os" in
9025               cygwin* | mingw* | pw32* | wsl*)
9026                 case "$host_cpu" in
9027                   x86_64)
9028                     objfmt='Win64-COFF'
9029                     ;;
9030                   *)
9031                     objfmt='Win32-COFF'
9032                     ;;
9033                 esac
9034               ;;
9035               msdosdjgpp* | go32*)
9036                 objfmt='COFF'
9037               ;;
9038               os2-emx*) # not tested
9039                 objfmt='MSOMF' # obj
9040               ;;
9041               linux*coff* | linux*oldld*)
9042                 objfmt='COFF' # ???
9043               ;;
9044               linux*aout*)
9045                 objfmt='a.out'
9046               ;;
9047               linux*)
9048                 case "$host_cpu" in
9049                   x86_64)
9050                     objfmt='ELF64'
9051                     ;;
9052                   *)
9053                     objfmt='ELF'
9054                     ;;
9055                 esac
9056               ;;
9057               kfreebsd* | freebsd* | netbsd* | openbsd*)
9058                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9059                   objfmt='BSD-a.out'
9060                 else
9061                   case "$host_cpu" in
9062                     x86_64 | amd64)
9063                       objfmt='ELF64'
9064                       ;;
9065                     *)
9066                       objfmt='ELF'
9067                       ;;
9068                   esac
9069                 fi
9070               ;;
9071               solaris* | sunos* | sysv* | sco*)
9072                 case "$host_cpu" in
9073                   x86_64)
9074                     objfmt='ELF64'
9075                     ;;
9076                   *)
9077                     objfmt='ELF'
9078                     ;;
9079                 esac
9080               ;;
9081               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9082                 case "$host_cpu" in
9083                   x86_64)
9084                     objfmt='Mach-O64'
9085                     ;;
9086                   *)
9087                     objfmt='Mach-O'
9088                     ;;
9089                 esac
9090               ;;
9091               *)
9092                 objfmt='ELF ?'
9093               ;;
9094             esac
9096             AC_MSG_RESULT([$objfmt])
9097             if test "$objfmt" = 'ELF ?'; then
9098               objfmt='ELF'
9099               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9100             fi
9102             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9103             case "$objfmt" in
9104               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9105               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9106               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9107               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9108               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9109               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9110               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9111               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9112               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9113               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9114               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9115             esac
9116             AC_MSG_RESULT([$NAFLAGS])
9118             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9119             cat > conftest.asm << EOF
9120             [%line __oline__ "configure"
9121                     section .text
9122                     global  _main,main
9123             _main:
9124             main:   xor     eax,eax
9125                     ret
9126             ]
9128             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9129             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9130               AC_MSG_RESULT(yes)
9131             else
9132               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9133               cat conftest.asm >&AS_MESSAGE_LOG_FD
9134               rm -rf conftest*
9135               AC_MSG_RESULT(no)
9136               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9137               NASM=""
9138             fi
9140         fi
9142         if test -z "$NASM"; then
9143 cat << _EOS
9144 ****************************************************************************
9145 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9146 To get one please:
9148 _EOS
9149             if test "$build_os" = "cygwin"; then
9150 cat << _EOS
9151 install a pre-compiled binary for Win32
9153 mkdir -p /opt/lo/bin
9154 cd /opt/lo/bin
9155 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9156 chmod +x nasm
9158 or get and install one from http://www.nasm.us/
9160 Then re-run autogen.sh
9162 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9163 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9165 _EOS
9166             else
9167 cat << _EOS
9168 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9170 _EOS
9171             fi
9172             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9173             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9174         fi
9175       ;;
9176     esac
9179 AC_SUBST(NASM)
9180 AC_SUBST(NAFLAGS)
9181 AC_SUBST(LIBJPEG_CFLAGS)
9182 AC_SUBST(LIBJPEG_LIBS)
9183 AC_SUBST(SYSTEM_LIBJPEG)
9185 dnl ===================================================================
9186 dnl Check for system clucene
9187 dnl ===================================================================
9188 dnl we should rather be using
9189 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9190 dnl but the contribs-lib check seems tricky
9191 if test "$enable_xmlhelp" = yes -o "$enable_extension_integration" = yes; then
9192 AC_MSG_CHECKING([which clucene to use])
9193 if test "$with_system_clucene" = "yes"; then
9194     AC_MSG_RESULT([external])
9195     SYSTEM_CLUCENE=TRUE
9196     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9197     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9198     FilterLibs "${CLUCENE_LIBS}"
9199     CLUCENE_LIBS="${filteredlibs}"
9200     AC_LANG_PUSH([C++])
9201     save_CXXFLAGS=$CXXFLAGS
9202     save_CPPFLAGS=$CPPFLAGS
9203     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9204     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9205     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9206     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9207     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9208                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9209     CXXFLAGS=$save_CXXFLAGS
9210     CPPFLAGS=$save_CPPFLAGS
9211     AC_LANG_POP([C++])
9213     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9214 else
9215     AC_MSG_RESULT([internal])
9216     SYSTEM_CLUCENE=
9217     BUILD_TYPE="$BUILD_TYPE CLUCENE"
9220 AC_SUBST(SYSTEM_CLUCENE)
9221 AC_SUBST(CLUCENE_CFLAGS)
9222 AC_SUBST(CLUCENE_LIBS)
9224 dnl ===================================================================
9225 dnl Check for system expat
9226 dnl ===================================================================
9227 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9229 dnl ===================================================================
9230 dnl Check for system xmlsec
9231 dnl ===================================================================
9232 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9234 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9235 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9236     ENABLE_EOT="TRUE"
9237     AC_DEFINE([ENABLE_EOT])
9238     AC_MSG_RESULT([yes])
9240     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9241 else
9242     ENABLE_EOT=
9243     AC_MSG_RESULT([no])
9245 AC_SUBST([ENABLE_EOT])
9247 dnl ===================================================================
9248 dnl Check for DLP libs
9249 dnl ===================================================================
9250 AS_IF([test "$COM" = "MSC"],
9251       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9252       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9254 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9256 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9258 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9260 AS_IF([test "$COM" = "MSC"],
9261       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9262       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9264 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9266 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9268 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9269 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9271 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9273 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9275 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9277 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9278 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.20])
9280 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9281 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9283 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9285 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9286 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9288 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9290 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9292 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9294 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9296 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9297 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9299 dnl ===================================================================
9300 dnl Check for system lcms2
9301 dnl ===================================================================
9302 if test "$with_system_lcms2" != "yes"; then
9303     SYSTEM_LCMS2=
9305 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9306 if test "$GCC" = "yes"; then
9307     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9309 if test "$COM" = "MSC"; then # override the above
9310     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9313 dnl ===================================================================
9314 dnl Check for system cppunit
9315 dnl ===================================================================
9316 if test "$_os" != "Android" ; then
9317     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9320 dnl ===================================================================
9321 dnl Check whether freetype is available
9322 dnl ===================================================================
9323 if test "$using_freetype_fontconfig" = yes; then
9324     AC_MSG_CHECKING([which freetype to use])
9326 if test "$using_freetype_fontconfig" = yes -a "$test_system_freetype" != no; then
9327     AC_MSG_RESULT([external])
9328     # FreeType has 3 different kinds of versions
9329     # * release, like 2.4.10
9330     # * libtool, like 13.0.7 (this what pkg-config returns)
9331     # * soname
9332     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9333     #
9334     # 9.9.3 is 2.2.0
9335     # When the minimal version is at least 2.8.1, remove Skia's check down below.
9336     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9337     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9338     FilterLibs "${FREETYPE_LIBS}"
9339     FREETYPE_LIBS="${filteredlibs}"
9340     SYSTEM_FREETYPE=TRUE
9341 elif test "$using_freetype_fontconfig" = yes; then
9342     AC_MSG_RESULT([internal])
9343     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9344     if test "x$ac_config_site_64bit_host" = xYES; then
9345         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9346     else
9347         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9348     fi
9349     BUILD_TYPE="$BUILD_TYPE FREETYPE"
9351 AC_SUBST(FREETYPE_CFLAGS)
9352 AC_SUBST(FREETYPE_LIBS)
9353 AC_SUBST([SYSTEM_FREETYPE])
9355 # ===================================================================
9356 # Check for system libxslt
9357 # to prevent incompatibilities between internal libxml2 and external libxslt,
9358 # or vice versa, use with_system_libxml here
9359 # ===================================================================
9360 if test "$with_system_libxml" = "auto"; then
9361     case "$_os" in
9362     WINNT|iOS|Android)
9363         with_system_libxml="$with_system_libs"
9364         ;;
9365     Emscripten)
9366         with_system_libxml=no
9367         ;;
9368     *)
9369         if test "$enable_fuzzers" != "yes"; then
9370             with_system_libxml=yes
9371         else
9372             with_system_libxml=no
9373         fi
9374         ;;
9375     esac
9378 AC_MSG_CHECKING([which libxslt to use])
9379 if test "$with_system_libxml" = "yes"; then
9380     AC_MSG_RESULT([external])
9381     SYSTEM_LIBXSLT=TRUE
9382     if test "$_os" = "Darwin"; then
9383         dnl make sure to use SDK path
9384         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9385         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9386         dnl omit -L/usr/lib
9387         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9388         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9389     else
9390         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9391         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9392         FilterLibs "${LIBXSLT_LIBS}"
9393         LIBXSLT_LIBS="${filteredlibs}"
9394         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9395         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9396         FilterLibs "${LIBEXSLT_LIBS}"
9397         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9398     fi
9400     dnl Check for xsltproc
9401     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9402     if test "$XSLTPROC" = "no"; then
9403         AC_MSG_ERROR([xsltproc is required])
9404     fi
9405 else
9406     AC_MSG_RESULT([internal])
9407     SYSTEM_LIBXSLT=
9408     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9410 AC_SUBST(SYSTEM_LIBXSLT)
9411 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9412     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9414 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9416 AC_SUBST(LIBEXSLT_CFLAGS)
9417 AC_SUBST(LIBEXSLT_LIBS)
9418 AC_SUBST(LIBXSLT_CFLAGS)
9419 AC_SUBST(LIBXSLT_LIBS)
9420 AC_SUBST(XSLTPROC)
9422 # ===================================================================
9423 # Check for system libxml
9424 # ===================================================================
9425 AC_MSG_CHECKING([which libxml to use])
9426 if test "$with_system_libxml" = "yes"; then
9427     AC_MSG_RESULT([external])
9428     SYSTEM_LIBXML=TRUE
9429     if test "$_os" = "Darwin"; then
9430         dnl make sure to use SDK path
9431         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9432         dnl omit -L/usr/lib
9433         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9434     elif test $_os = iOS; then
9435         dnl make sure to use SDK path
9436         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9437         LIBXML_CFLAGS="-I$usr/include/libxml2"
9438         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9439     else
9440         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9441         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9442         FilterLibs "${LIBXML_LIBS}"
9443         LIBXML_LIBS="${filteredlibs}"
9444     fi
9446     dnl Check for xmllint
9447     AC_PATH_PROG(XMLLINT, xmllint, no)
9448     if test "$XMLLINT" = "no"; then
9449         AC_MSG_ERROR([xmllint is required])
9450     fi
9451 else
9452     AC_MSG_RESULT([internal])
9453     SYSTEM_LIBXML=
9454     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9455     if test "$COM" = "MSC"; then
9456         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9457     fi
9458     if test "$COM" = "MSC"; then
9459         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9460     else
9461         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9462         if test "$_os" = Android; then
9463             LIBXML_LIBS="$LIBXML_LIBS -lm"
9464         fi
9465     fi
9466     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9468 AC_SUBST(SYSTEM_LIBXML)
9469 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9470     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9472 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9473 AC_SUBST(LIBXML_CFLAGS)
9474 AC_SUBST(LIBXML_LIBS)
9475 AC_SUBST(XMLLINT)
9477 # =====================================================================
9478 # Checking for a Python interpreter with version >= 3.3.
9479 # Optionally user can pass an option to configure, i. e.
9480 # ./configure PYTHON=/usr/bin/python
9481 # =====================================================================
9482 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9483     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9484     # unless PYTHON is defined as above which allows 'system'
9485     enable_python=internal
9487 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9488     if test -n "$PYTHON"; then
9489         PYTHON_FOR_BUILD=$PYTHON
9490     else
9491         # This allows a lack of system python with no error, we use internal one in that case.
9492         AM_PATH_PYTHON([3.3],, [:])
9493         # Clean PYTHON_VERSION checked below if cross-compiling
9494         PYTHON_VERSION=""
9495         if test "$PYTHON" != ":"; then
9496             PYTHON_FOR_BUILD=$PYTHON
9497         fi
9498     fi
9500 AC_SUBST(PYTHON_FOR_BUILD)
9502 # Checks for Python to use for Pyuno
9503 AC_MSG_CHECKING([which Python to use for Pyuno])
9504 case "$enable_python" in
9505 no|disable)
9506     if test -z $PYTHON_FOR_BUILD; then
9507         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9508         # requirement from the choice whether to include Python stuff in the installer, but why
9509         # bother?
9510         if test "$cross_compiling" = yes; then
9511             enable_python=system
9512         else
9513             AC_MSG_ERROR([Python is required at build time.])
9514         fi
9515     fi
9516     enable_python=no
9517     AC_MSG_RESULT([none])
9518     ;;
9519 ""|yes|auto)
9520     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9521         AC_MSG_RESULT([no, overridden by --disable-scripting])
9522         enable_python=no
9523     elif test $build_os = cygwin; then
9524         dnl When building on Windows we don't attempt to use any installed
9525         dnl "system"  Python.
9526         AC_MSG_RESULT([fully internal])
9527         enable_python=internal
9528     elif test "$cross_compiling" = yes; then
9529         AC_MSG_RESULT([system])
9530         enable_python=system
9531     else
9532         # Unset variables set by the above AM_PATH_PYTHON so that
9533         # we actually do check anew.
9534         AC_MSG_RESULT([])
9535         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
9536         AM_PATH_PYTHON([3.3],, [:])
9537         AC_MSG_CHECKING([which Python to use for Pyuno])
9538         if test "$PYTHON" = ":"; then
9539             if test -z "$PYTHON_FOR_BUILD"; then
9540                 AC_MSG_RESULT([fully internal])
9541             else
9542                 AC_MSG_RESULT([internal])
9543             fi
9544             enable_python=internal
9545         else
9546             AC_MSG_RESULT([system])
9547             enable_python=system
9548         fi
9549     fi
9550     ;;
9551 internal)
9552     AC_MSG_RESULT([internal])
9553     ;;
9554 fully-internal)
9555     AC_MSG_RESULT([fully internal])
9556     enable_python=internal
9557     ;;
9558 system)
9559     AC_MSG_RESULT([system])
9560     if test "$_os" = Darwin -a -z "$PYTHON"; then
9561         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9562     fi
9563     ;;
9565     AC_MSG_ERROR([Incorrect --enable-python option])
9566     ;;
9567 esac
9569 if test $enable_python != no; then
9570     BUILD_TYPE="$BUILD_TYPE PYUNO"
9573 if test $enable_python = system; then
9574     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9575         # Fallback: Accept these in the environment, or as set above
9576         # for MacOSX.
9577         :
9578     elif test "$cross_compiling" != yes; then
9579         # Unset variables set by the above AM_PATH_PYTHON so that
9580         # we actually do check anew.
9581         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
9582         # This causes an error if no python command is found
9583         AM_PATH_PYTHON([3.3])
9584         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9585         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9586         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9587         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9588         if test -z "$PKG_CONFIG"; then
9589             PYTHON_CFLAGS="-I$python_include"
9590             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9591         elif $PKG_CONFIG --exists python-$python_version-embed; then
9592             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9593             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9594         elif $PKG_CONFIG --exists python-$python_version; then
9595             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9596             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9597         else
9598             PYTHON_CFLAGS="-I$python_include"
9599             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9600         fi
9601         FilterLibs "${PYTHON_LIBS}"
9602         PYTHON_LIBS="${filteredlibs}"
9603     else
9604         dnl How to find out the cross-compilation Python installation path?
9605         AC_MSG_CHECKING([for python version])
9606         AS_IF([test -n "$PYTHON_VERSION"],
9607               [AC_MSG_RESULT([$PYTHON_VERSION])],
9608               [AC_MSG_RESULT([not found])
9609                AC_MSG_ERROR([no usable python found])])
9610         test -n "$PYTHON_CFLAGS" && break
9611     fi
9613     dnl Check if the headers really work
9614     save_CPPFLAGS="$CPPFLAGS"
9615     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9616     AC_CHECK_HEADER(Python.h)
9617     CPPFLAGS="$save_CPPFLAGS"
9619     # let the PYTHON_FOR_BUILD match the same python installation that
9620     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9621     # better for PythonTests.
9622     PYTHON_FOR_BUILD=$PYTHON
9625 if test "$with_lxml" != no; then
9626     if test -z "$PYTHON_FOR_BUILD"; then
9627         case $build_os in
9628             cygwin)
9629                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9630                 ;;
9631             *)
9632                 if test "$cross_compiling" != yes ; then
9633                     BUILD_TYPE="$BUILD_TYPE LXML"
9634                 fi
9635                 ;;
9636         esac
9637     else
9638         AC_MSG_CHECKING([for python lxml])
9639         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9640             AC_MSG_RESULT([yes])
9641         else
9642             case $build_os in
9643                 cygwin)
9644                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9645                     ;;
9646                 *)
9647                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9648                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9649                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9650                         else
9651                             BUILD_TYPE="$BUILD_TYPE LXML"
9652                             AC_MSG_RESULT([no, using internal lxml])
9653                         fi
9654                     else
9655                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9656                     fi
9657                     ;;
9658             esac
9659         fi
9660     fi
9663 dnl By now enable_python should be "system", "internal" or "no"
9664 case $enable_python in
9665 system)
9666     SYSTEM_PYTHON=TRUE
9668     if test "x$ac_cv_header_Python_h" != "xyes"; then
9669        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9670     fi
9672     AC_LANG_PUSH(C)
9673     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9674     AC_MSG_CHECKING([for correct python library version])
9675        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9676 #include <Python.h>
9678 int main(int argc, char **argv) {
9679    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9680    else return 1;
9682        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9683     AC_LANG_POP(C)
9685     dnl FIXME Check if the Python library can be linked with, too?
9686     ;;
9688 internal)
9689     SYSTEM_PYTHON=
9690     PYTHON_VERSION_MAJOR=3
9691     PYTHON_VERSION_MINOR=8
9692     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
9693     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9694         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9695     fi
9696     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9697     BUILD_TYPE="$BUILD_TYPE PYTHON"
9698     if test "$OS" = LINUX -o "$OS" = WNT ; then
9699         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9700     fi
9701     # Embedded Python dies without Home set
9702     if test "$HOME" = ""; then
9703         export HOME=""
9704     fi
9705     ;;
9707     DISABLE_PYTHON=TRUE
9708     SYSTEM_PYTHON=
9709     ;;
9711     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9712     ;;
9713 esac
9715 AC_SUBST(DISABLE_PYTHON)
9716 AC_SUBST(SYSTEM_PYTHON)
9717 AC_SUBST(PYTHON_CFLAGS)
9718 AC_SUBST(PYTHON_LIBS)
9719 AC_SUBST(PYTHON_VERSION)
9720 AC_SUBST(PYTHON_VERSION_MAJOR)
9721 AC_SUBST(PYTHON_VERSION_MINOR)
9723 AC_MSG_CHECKING([whether to build LibreLogo])
9724 case "$enable_python" in
9725 no|disable)
9726     AC_MSG_RESULT([no; Python disabled])
9727     ;;
9729     if test "${enable_librelogo}" = "no"; then
9730         AC_MSG_RESULT([no])
9731     else
9732         AC_MSG_RESULT([yes])
9733         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9734         AC_DEFINE([ENABLE_LIBRELOGO],1)
9735     fi
9736     ;;
9737 esac
9738 AC_SUBST(ENABLE_LIBRELOGO)
9740 ENABLE_MARIADBC=
9741 MARIADBC_MAJOR=1
9742 MARIADBC_MINOR=0
9743 MARIADBC_MICRO=2
9744 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9745 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9746     ENABLE_MARIADBC=TRUE
9747     AC_MSG_RESULT([yes])
9748     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9749 else
9750     AC_MSG_RESULT([no])
9752 AC_SUBST(ENABLE_MARIADBC)
9753 AC_SUBST(MARIADBC_MAJOR)
9754 AC_SUBST(MARIADBC_MINOR)
9755 AC_SUBST(MARIADBC_MICRO)
9757 if test "$ENABLE_MARIADBC" = "TRUE"; then
9758     dnl ===================================================================
9759     dnl Check for system MariaDB
9760     dnl ===================================================================
9761     AC_MSG_CHECKING([which MariaDB to use])
9762     if test "$with_system_mariadb" = "yes"; then
9763         AC_MSG_RESULT([external])
9764         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9765         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9766         if test -z "$MARIADBCONFIG"; then
9767             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9768             if test -z "$MARIADBCONFIG"; then
9769                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9770                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9771             fi
9772         fi
9773         AC_MSG_CHECKING([MariaDB version])
9774         MARIADB_VERSION=`$MARIADBCONFIG --version`
9775         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9776         if test "$MARIADB_MAJOR" -ge "5"; then
9777             AC_MSG_RESULT([OK])
9778         else
9779             AC_MSG_ERROR([too old, use 5.0.x or later])
9780         fi
9781         AC_MSG_CHECKING([for MariaDB Client library])
9782         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9783         if test "$COM_IS_CLANG" = TRUE; then
9784             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9785         fi
9786         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9787         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9788         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9789         dnl linux32:
9790         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9791             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9792             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9793                 | sed -e 's|/lib64/|/lib/|')
9794         fi
9795         FilterLibs "${MARIADB_LIBS}"
9796         MARIADB_LIBS="${filteredlibs}"
9797         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9798         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9799         if test "$enable_bundle_mariadb" = "yes"; then
9800             AC_MSG_RESULT([yes])
9801             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9802             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9804 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9806 /g' | grep -E '(mysqlclient|mariadb)')
9807             if test "$_os" = "Darwin"; then
9808                 LIBMARIADB=${LIBMARIADB}.dylib
9809             elif test "$_os" = "WINNT"; then
9810                 LIBMARIADB=${LIBMARIADB}.dll
9811             else
9812                 LIBMARIADB=${LIBMARIADB}.so
9813             fi
9814             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9815             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9816             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9817                 AC_MSG_RESULT([found.])
9818                 PathFormat "$LIBMARIADB_PATH"
9819                 LIBMARIADB_PATH="$formatted_path"
9820             else
9821                 AC_MSG_ERROR([not found.])
9822             fi
9823         else
9824             AC_MSG_RESULT([no])
9825             BUNDLE_MARIADB_CONNECTOR_C=
9826         fi
9827     else
9828         AC_MSG_RESULT([internal])
9829         SYSTEM_MARIADB_CONNECTOR_C=
9830         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9831         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9832         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9833     fi
9835     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9836     AC_SUBST(MARIADB_CFLAGS)
9837     AC_SUBST(MARIADB_LIBS)
9838     AC_SUBST(LIBMARIADB)
9839     AC_SUBST(LIBMARIADB_PATH)
9840     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9843 dnl ===================================================================
9844 dnl Check for system hsqldb
9845 dnl ===================================================================
9846 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9847     HSQLDB_USE_JDBC_4_1=
9848     AC_MSG_CHECKING([which hsqldb to use])
9849     if test "$with_system_hsqldb" = "yes"; then
9850         AC_MSG_RESULT([external])
9851         SYSTEM_HSQLDB=TRUE
9852         if test -z $HSQLDB_JAR; then
9853             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9854         fi
9855         if ! test -f $HSQLDB_JAR; then
9856                AC_MSG_ERROR(hsqldb.jar not found.)
9857         fi
9858         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9859         export HSQLDB_JAR
9860         if $PERL -e \
9861            'use Archive::Zip;
9862             my $file = "$ENV{'HSQLDB_JAR'}";
9863             my $zip = Archive::Zip->new( $file );
9864             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9865             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9866             {
9867                 push @l, split(/\n/, $mf);
9868                 foreach my $line (@l)
9869                 {
9870                     if ($line =~ m/Specification-Version:/)
9871                     {
9872                         ($t, $version) = split (/:/,$line);
9873                         $version =~ s/^\s//;
9874                         ($a, $b, $c, $d) = split (/\./,$version);
9875                         if ($c == "0" && $d > "8")
9876                         {
9877                             exit 0;
9878                         }
9879                         else
9880                         {
9881                             exit 1;
9882                         }
9883                     }
9884                 }
9885             }
9886             else
9887             {
9888                 exit 1;
9889             }'; then
9890             AC_MSG_RESULT([yes])
9891         else
9892             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9893         fi
9894     else
9895         AC_MSG_RESULT([internal])
9896         SYSTEM_HSQLDB=
9897         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9898         NEED_ANT=TRUE
9899         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9900         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9901         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9902             AC_MSG_RESULT([yes])
9903             HSQLDB_USE_JDBC_4_1=TRUE
9904         else
9905             AC_MSG_RESULT([no])
9906         fi
9907     fi
9908 else
9909     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9910         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9911     fi
9913 AC_SUBST(SYSTEM_HSQLDB)
9914 AC_SUBST(HSQLDB_JAR)
9915 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9917 dnl ===================================================================
9918 dnl Check for PostgreSQL stuff
9919 dnl ===================================================================
9920 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9921 if test "x$enable_postgresql_sdbc" != "xno"; then
9922     AC_MSG_RESULT([yes])
9923     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9925     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9926         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9927     fi
9928     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9929         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9930     fi
9932     postgres_interface=""
9933     if test "$with_system_postgresql" = "yes"; then
9934         postgres_interface="external PostgreSQL"
9935         SYSTEM_POSTGRESQL=TRUE
9936         if test "$_os" = Darwin; then
9937             supp_path=''
9938             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9939                 pg_supp_path="$P_SEP$d$pg_supp_path"
9940             done
9941         fi
9942         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9943         if test -n "$PGCONFIG"; then
9944             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9945             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9946         else
9947             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9948               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9949               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9950             ],[
9951               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9952             ])
9953         fi
9954         FilterLibs "${POSTGRESQL_LIB}"
9955         POSTGRESQL_LIB="${filteredlibs}"
9956     else
9957         # if/when anything else than PostgreSQL uses Kerberos,
9958         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9959         WITH_KRB5=
9960         WITH_GSSAPI=
9961         case "$_os" in
9962         Darwin)
9963             # macOS has system MIT Kerberos 5 since 10.4
9964             if test "$with_krb5" != "no"; then
9965                 WITH_KRB5=TRUE
9966                 save_LIBS=$LIBS
9967                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9968                 # that the libraries where these functions are located on macOS will change, is it?
9969                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9970                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9971                 KRB5_LIBS=$LIBS
9972                 LIBS=$save_LIBS
9973                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9974                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9975                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9976                 LIBS=$save_LIBS
9977             fi
9978             if test "$with_gssapi" != "no"; then
9979                 WITH_GSSAPI=TRUE
9980                 save_LIBS=$LIBS
9981                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9982                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9983                 GSSAPI_LIBS=$LIBS
9984                 LIBS=$save_LIBS
9985             fi
9986             ;;
9987         WINNT)
9988             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9989                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9990             fi
9991             ;;
9992         Linux|GNU|*BSD|DragonFly)
9993             if test "$with_krb5" != "no"; then
9994                 WITH_KRB5=TRUE
9995                 save_LIBS=$LIBS
9996                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9997                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9998                 KRB5_LIBS=$LIBS
9999                 LIBS=$save_LIBS
10000                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10001                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10002                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10003                 LIBS=$save_LIBS
10004             fi
10005             if test "$with_gssapi" != "no"; then
10006                 WITH_GSSAPI=TRUE
10007                 save_LIBS=$LIBS
10008                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10009                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10010                 GSSAPI_LIBS=$LIBS
10011                 LIBS=$save_LIBS
10012             fi
10013             ;;
10014         *)
10015             if test "$with_krb5" = "yes"; then
10016                 WITH_KRB5=TRUE
10017                 save_LIBS=$LIBS
10018                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10019                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10020                 KRB5_LIBS=$LIBS
10021                 LIBS=$save_LIBS
10022                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10023                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10024                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10025                 LIBS=$save_LIBS
10026             fi
10027             if test "$with_gssapi" = "yes"; then
10028                 WITH_GSSAPI=TRUE
10029                 save_LIBS=$LIBS
10030                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10031                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10032                 LIBS=$save_LIBS
10033                 GSSAPI_LIBS=$LIBS
10034             fi
10035         esac
10037         if test -n "$with_libpq_path"; then
10038             SYSTEM_POSTGRESQL=TRUE
10039             postgres_interface="external libpq"
10040             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10041             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10042         else
10043             SYSTEM_POSTGRESQL=
10044             postgres_interface="internal"
10045             POSTGRESQL_LIB=""
10046             POSTGRESQL_INC="%OVERRIDE_ME%"
10047             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10048         fi
10049     fi
10051     AC_MSG_CHECKING([PostgreSQL C interface])
10052     AC_MSG_RESULT([$postgres_interface])
10054     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10055         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10056         save_CFLAGS=$CFLAGS
10057         save_CPPFLAGS=$CPPFLAGS
10058         save_LIBS=$LIBS
10059         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10060         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10061         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10062         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10063             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10064         CFLAGS=$save_CFLAGS
10065         CPPFLAGS=$save_CPPFLAGS
10066         LIBS=$save_LIBS
10067     fi
10068     BUILD_POSTGRESQL_SDBC=TRUE
10069 else
10070     AC_MSG_RESULT([no])
10072 AC_SUBST(WITH_KRB5)
10073 AC_SUBST(WITH_GSSAPI)
10074 AC_SUBST(GSSAPI_LIBS)
10075 AC_SUBST(KRB5_LIBS)
10076 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10077 AC_SUBST(SYSTEM_POSTGRESQL)
10078 AC_SUBST(POSTGRESQL_INC)
10079 AC_SUBST(POSTGRESQL_LIB)
10081 dnl ===================================================================
10082 dnl Check for Firebird stuff
10083 dnl ===================================================================
10084 ENABLE_FIREBIRD_SDBC=
10085 if test "$enable_firebird_sdbc" = "yes" ; then
10086     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10088     dnl ===================================================================
10089     dnl Check for system Firebird
10090     dnl ===================================================================
10091     AC_MSG_CHECKING([which Firebird to use])
10092     if test "$with_system_firebird" = "yes"; then
10093         AC_MSG_RESULT([external])
10094         SYSTEM_FIREBIRD=TRUE
10095         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10096         if test -z "$FIREBIRDCONFIG"; then
10097             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10098             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10099                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10100             ])
10101             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10102         else
10103             AC_MSG_NOTICE([fb_config found])
10104             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10105             AC_MSG_CHECKING([for Firebird Client library])
10106             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10107             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10108             FilterLibs "${FIREBIRD_LIBS}"
10109             FIREBIRD_LIBS="${filteredlibs}"
10110         fi
10111         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10112         AC_MSG_CHECKING([Firebird version])
10113         if test -n "${FIREBIRD_VERSION}"; then
10114             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10115             if test "$FIREBIRD_MAJOR" -ge "3"; then
10116                 AC_MSG_RESULT([OK])
10117             else
10118                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10119             fi
10120         else
10121             save_CFLAGS="${CFLAGS}"
10122             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10123             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10124 #if defined(FB_API_VER) && FB_API_VER == 30
10125 int fb_api_is_30(void) { return 0; }
10126 #else
10127 #error "Wrong Firebird API version"
10128 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10129             CFLAGS="$save_CFLAGS"
10130         fi
10131         ENABLE_FIREBIRD_SDBC=TRUE
10132         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10133     elif test "$enable_database_connectivity" = no; then
10134         AC_MSG_RESULT([none])
10135     elif test "$cross_compiling" = "yes"; then
10136         AC_MSG_RESULT([none])
10137     else
10138         dnl Embedded Firebird has version 3.0
10139         dnl We need libatomic_ops for any non X86/X64 system
10140         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10141             dnl ===================================================================
10142             dnl Check for system libatomic_ops
10143             dnl ===================================================================
10144             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10145             if test "$with_system_libatomic_ops" = "yes"; then
10146                 SYSTEM_LIBATOMIC_OPS=TRUE
10147                 AC_CHECK_HEADERS(atomic_ops.h, [],
10148                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10149             else
10150                 SYSTEM_LIBATOMIC_OPS=
10151                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10152                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10153                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10154             fi
10155         fi
10157         AC_MSG_RESULT([internal])
10158         SYSTEM_FIREBIRD=
10159         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10160         FIREBIRD_LIBS="-lfbclient"
10162         if test "$with_system_libtommath" = "yes"; then
10163             SYSTEM_LIBTOMMATH=TRUE
10164             dnl check for tommath presence
10165             save_LIBS=$LIBS
10166             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10167             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10168             LIBS=$save_LIBS
10169         else
10170             SYSTEM_LIBTOMMATH=
10171             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10172             LIBTOMMATH_LIBS="-ltommath"
10173             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10174         fi
10176         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10177         ENABLE_FIREBIRD_SDBC=TRUE
10178         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10179     fi
10181 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10182 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10183 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10184 AC_SUBST(LIBATOMIC_OPS_LIBS)
10185 AC_SUBST(SYSTEM_FIREBIRD)
10186 AC_SUBST(FIREBIRD_CFLAGS)
10187 AC_SUBST(FIREBIRD_LIBS)
10188 AC_SUBST(SYSTEM_LIBTOMMATH)
10189 AC_SUBST(LIBTOMMATH_CFLAGS)
10190 AC_SUBST(LIBTOMMATH_LIBS)
10192 dnl ===================================================================
10193 dnl Check for system curl
10194 dnl ===================================================================
10195 AC_MSG_CHECKING([which libcurl to use])
10196 if test "$with_system_curl" = "auto"; then
10197     with_system_curl="$with_system_libs"
10200 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10201     AC_MSG_RESULT([external])
10202     SYSTEM_CURL=TRUE
10204     # First try PKGCONFIG and then fall back
10205     PKG_CHECK_MODULES(CURL, libcurl >= 7.63.0,, [:])
10207     if test -n "$CURL_PKG_ERRORS"; then
10208         AC_PATH_PROG(CURLCONFIG, curl-config)
10209         if test -z "$CURLCONFIG"; then
10210             AC_MSG_ERROR([curl development files not found])
10211         fi
10212         CURL_LIBS=`$CURLCONFIG --libs`
10213         FilterLibs "${CURL_LIBS}"
10214         CURL_LIBS="${filteredlibs}"
10215         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10216         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10218         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10219         case $curl_version in
10220         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10221         dnl so they need to be doubled to end up in the configure script
10222         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10223             AC_MSG_RESULT([yes])
10224             ;;
10225         *)
10226             AC_MSG_ERROR([no, you have $curl_version])
10227             ;;
10228         esac
10229     fi
10231     ENABLE_CURL=TRUE
10232 elif test "$enable_curl" = "no"; then
10233     AC_MSG_RESULT([none])
10234 else
10235     AC_MSG_RESULT([internal])
10236     SYSTEM_CURL=
10237     BUILD_TYPE="$BUILD_TYPE CURL"
10238     ENABLE_CURL=TRUE
10240 AC_SUBST(SYSTEM_CURL)
10241 AC_SUBST(CURL_CFLAGS)
10242 AC_SUBST(CURL_LIBS)
10243 AC_SUBST(ENABLE_CURL)
10245 dnl ===================================================================
10246 dnl Check for system boost
10247 dnl ===================================================================
10248 AC_MSG_CHECKING([which boost to use])
10249 if test "$with_system_boost" = "yes"; then
10250     AC_MSG_RESULT([external])
10251     SYSTEM_BOOST=TRUE
10252     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10253     AX_BOOST_DATE_TIME
10254     AX_BOOST_FILESYSTEM
10255     AX_BOOST_IOSTREAMS
10256     AX_BOOST_LOCALE
10257     AC_LANG_PUSH([C++])
10258     save_CXXFLAGS=$CXXFLAGS
10259     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10260     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10261        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10262     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10263        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10264     CXXFLAGS=$save_CXXFLAGS
10265     AC_LANG_POP([C++])
10266     # this is in m4/ax_boost_base.m4
10267     FilterLibs "${BOOST_LDFLAGS}"
10268     BOOST_LDFLAGS="${filteredlibs}"
10269 else
10270     AC_MSG_RESULT([internal])
10271     BUILD_TYPE="$BUILD_TYPE BOOST"
10272     SYSTEM_BOOST=
10273     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10274         # use warning-suppressing wrapper headers
10275         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10276     else
10277         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10278     fi
10280 AC_SUBST(SYSTEM_BOOST)
10282 dnl ===================================================================
10283 dnl Check for system mdds
10284 dnl ===================================================================
10285 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10287 dnl ===================================================================
10288 dnl Check for system cuckoo
10289 dnl ===================================================================
10290 AC_MSG_CHECKING([which cuckoo to use])
10291 if test "$with_system_cuckoo" = "yes"; then
10292     AC_MSG_RESULT([external])
10293     SYSTEM_CUCKOO=TRUE
10294     AC_LANG_PUSH([C++])
10295     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10296        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10297     AC_LANG_POP([C++])
10298 else
10299     AC_MSG_RESULT([internal])
10300     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10301     SYSTEM_CUCKOO=
10302     CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
10304 AC_SUBST([CUCKOO_CFLAGS])
10305 AC_SUBST([SYSTEM_CUCKOO])
10307 dnl ===================================================================
10308 dnl Check for system glm
10309 dnl ===================================================================
10310 AC_MSG_CHECKING([which glm to use])
10311 if test "$with_system_glm" = "yes"; then
10312     AC_MSG_RESULT([external])
10313     SYSTEM_GLM=TRUE
10314     AC_LANG_PUSH([C++])
10315     AC_CHECK_HEADER([glm/glm.hpp], [],
10316        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10317     AC_LANG_POP([C++])
10318 else
10319     AC_MSG_RESULT([internal])
10320     BUILD_TYPE="$BUILD_TYPE GLM"
10321     SYSTEM_GLM=
10322     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10324 AC_SUBST([GLM_CFLAGS])
10325 AC_SUBST([SYSTEM_GLM])
10327 dnl ===================================================================
10328 dnl Check for system odbc
10329 dnl ===================================================================
10330 AC_MSG_CHECKING([which odbc headers to use])
10331 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
10332     AC_MSG_RESULT([external])
10333     SYSTEM_ODBC_HEADERS=TRUE
10335     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10336         save_CPPFLAGS=$CPPFLAGS
10337         find_winsdk
10338         PathFormat "$winsdktest"
10339         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"
10340         AC_CHECK_HEADER(sqlext.h, [],
10341             [AC_MSG_ERROR(odbc not found. install odbc)],
10342             [#include <windows.h>])
10343         CPPFLAGS=$save_CPPFLAGS
10344     else
10345         AC_CHECK_HEADER(sqlext.h, [],
10346             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10347     fi
10348 elif test "$enable_database_connectivity" = no; then
10349     AC_MSG_RESULT([none])
10350 else
10351     AC_MSG_RESULT([internal])
10352     SYSTEM_ODBC_HEADERS=
10354 AC_SUBST(SYSTEM_ODBC_HEADERS)
10356 dnl ===================================================================
10357 dnl Check for system NSS
10358 dnl ===================================================================
10359 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10360     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10361     AC_DEFINE(HAVE_FEATURE_NSS)
10362     ENABLE_NSS=TRUE
10363 elif test $_os != iOS ; then
10364     with_tls=openssl
10366 AC_SUBST(ENABLE_NSS)
10368 dnl ===================================================================
10369 dnl Enable LDAP support
10370 dnl ===================================================================
10372 if test "$test_openldap" = yes; then
10373     AC_MSG_CHECKING([whether to enable LDAP support])
10374     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10375         AC_MSG_RESULT([yes])
10376         ENABLE_LDAP=TRUE
10377     else
10378         if test "$enable_ldap" != "yes"; then
10379             AC_MSG_RESULT([no])
10380         else
10381             AC_MSG_RESULT([no (needs NSS or system openldap)])
10382         fi
10383     fi
10385 dnl ===================================================================
10386 dnl Check for system openldap
10387 dnl ===================================================================
10389     if test "$ENABLE_LDAP" = TRUE; then
10390         AC_MSG_CHECKING([which openldap library to use])
10391         if test "$with_system_openldap" = yes; then
10392             AC_MSG_RESULT([external])
10393             SYSTEM_OPENLDAP=TRUE
10394             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10395             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10396             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10397         else
10398             AC_MSG_RESULT([internal])
10399             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10400         fi
10401     fi
10404 AC_SUBST(ENABLE_LDAP)
10405 AC_SUBST(SYSTEM_OPENLDAP)
10407 dnl ===================================================================
10408 dnl Check for TLS/SSL and cryptographic implementation to use
10409 dnl ===================================================================
10410 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10411 if test -n "$with_tls"; then
10412     case $with_tls in
10413     openssl)
10414         AC_DEFINE(USE_TLS_OPENSSL)
10415         TLS=OPENSSL
10416         AC_MSG_RESULT([$TLS])
10418         if test "$enable_openssl" != "yes"; then
10419             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10420         fi
10422         # warn that OpenSSL has been selected but not all TLS code has this option
10423         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10424         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10425         ;;
10426     nss)
10427         AC_DEFINE(USE_TLS_NSS)
10428         TLS=NSS
10429         AC_MSG_RESULT([$TLS])
10430         ;;
10431     no)
10432         AC_MSG_RESULT([none])
10433         AC_MSG_WARN([Skipping TLS/SSL])
10434         ;;
10435     *)
10436         AC_MSG_RESULT([])
10437         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10438 openssl - OpenSSL
10439 nss - Mozilla's Network Security Services (NSS)
10440     ])
10441         ;;
10442     esac
10443 else
10444     # default to using NSS, it results in smaller oox lib
10445     AC_DEFINE(USE_TLS_NSS)
10446     TLS=NSS
10447     AC_MSG_RESULT([$TLS])
10449 AC_SUBST(TLS)
10451 dnl ===================================================================
10452 dnl Check for system sane
10453 dnl ===================================================================
10454 AC_MSG_CHECKING([which sane header to use])
10455 if test "$with_system_sane" = "yes"; then
10456     AC_MSG_RESULT([external])
10457     AC_CHECK_HEADER(sane/sane.h, [],
10458       [AC_MSG_ERROR(sane not found. install sane)], [])
10459 else
10460     AC_MSG_RESULT([internal])
10461     BUILD_TYPE="$BUILD_TYPE SANE"
10464 dnl ===================================================================
10465 dnl Check for system icu
10466 dnl ===================================================================
10467 SYSTEM_GENBRK=
10468 SYSTEM_GENCCODE=
10469 SYSTEM_GENCMN=
10471 ICU_MAJOR=69
10472 ICU_MINOR=1
10473 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10474 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10475 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10476 AC_MSG_CHECKING([which icu to use])
10477 if test "$with_system_icu" = "yes"; then
10478     AC_MSG_RESULT([external])
10479     SYSTEM_ICU=TRUE
10480     AC_LANG_PUSH([C++])
10481     AC_MSG_CHECKING([for unicode/rbbi.h])
10482     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10483     AC_LANG_POP([C++])
10485     if test "$cross_compiling" != "yes"; then
10486         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10487         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10488         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10489         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10490     fi
10492     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10493         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10494         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10495         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10496         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10497         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10498             AC_MSG_RESULT([yes])
10499         else
10500             AC_MSG_RESULT([no])
10501             if test "$with_system_icu_for_build" != "force"; then
10502                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10503 You can use --with-system-icu-for-build=force to use it anyway.])
10504             fi
10505         fi
10506     fi
10508     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10509         # using the system icu tools can lead to version confusion, use the
10510         # ones from the build environment when cross-compiling
10511         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10512         if test -z "$SYSTEM_GENBRK"; then
10513             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10514         fi
10515         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10516         if test -z "$SYSTEM_GENCCODE"; then
10517             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10518         fi
10519         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10520         if test -z "$SYSTEM_GENCMN"; then
10521             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10522         fi
10523         if test "$ICU_MAJOR" -ge "49"; then
10524             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10525             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10526             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10527         else
10528             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10529             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10530             ICU_RECLASSIFIED_HEBREW_LETTER=
10531         fi
10532     fi
10534     if test "$cross_compiling" = "yes"; then
10535         if test "$ICU_MAJOR" -ge "50"; then
10536             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10537             ICU_MINOR=""
10538         fi
10539     fi
10540 else
10541     AC_MSG_RESULT([internal])
10542     SYSTEM_ICU=
10543     BUILD_TYPE="$BUILD_TYPE ICU"
10544     # surprisingly set these only for "internal" (to be used by various other
10545     # external libs): the system icu-config is quite unhelpful and spits out
10546     # dozens of weird flags and also default path -I/usr/include
10547     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10548     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10550 if test "$ICU_MAJOR" -ge "59"; then
10551     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10552     # with -std=c++11 but not all external libraries can be built with that,
10553     # for those use a bit-compatible typedef uint16_t UChar; see
10554     # icu/source/common/unicode/umachine.h
10555     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10556 else
10557     ICU_UCHAR_TYPE=""
10559 AC_SUBST(SYSTEM_ICU)
10560 AC_SUBST(SYSTEM_GENBRK)
10561 AC_SUBST(SYSTEM_GENCCODE)
10562 AC_SUBST(SYSTEM_GENCMN)
10563 AC_SUBST(ICU_MAJOR)
10564 AC_SUBST(ICU_MINOR)
10565 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10566 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10567 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10568 AC_SUBST(ICU_CFLAGS)
10569 AC_SUBST(ICU_LIBS)
10570 AC_SUBST(ICU_UCHAR_TYPE)
10572 dnl ==================================================================
10573 dnl Breakpad
10574 dnl ==================================================================
10575 DEFAULT_CRASHDUMP_VALUE="true"
10576 AC_MSG_CHECKING([whether to enable breakpad])
10577 if test "$enable_breakpad" != yes; then
10578     AC_MSG_RESULT([no])
10579 else
10580     AC_MSG_RESULT([yes])
10581     ENABLE_BREAKPAD="TRUE"
10582     AC_DEFINE(ENABLE_BREAKPAD)
10583     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10584     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10586     AC_MSG_CHECKING([for disable crash dump])
10587     if test "$enable_crashdump" = no; then
10588         DEFAULT_CRASHDUMP_VALUE="false"
10589         AC_MSG_RESULT([yes])
10590     else
10591        AC_MSG_RESULT([no])
10592     fi
10594     AC_MSG_CHECKING([for crashreport config])
10595     if test "$with_symbol_config" = "no"; then
10596         BREAKPAD_SYMBOL_CONFIG="invalid"
10597         AC_MSG_RESULT([no])
10598     else
10599         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10600         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10601         AC_MSG_RESULT([yes])
10602     fi
10603     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10605 AC_SUBST(ENABLE_BREAKPAD)
10606 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10608 dnl ==================================================================
10609 dnl libfuzzer
10610 dnl ==================================================================
10611 AC_MSG_CHECKING([whether to enable fuzzers])
10612 if test "$enable_fuzzers" != yes; then
10613     AC_MSG_RESULT([no])
10614 else
10615     if test -z $LIB_FUZZING_ENGINE; then
10616       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10617     fi
10618     AC_MSG_RESULT([yes])
10619     ENABLE_FUZZERS="TRUE"
10620     AC_DEFINE([ENABLE_FUZZERS],1)
10621     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10623 AC_SUBST(LIB_FUZZING_ENGINE)
10624 AC_SUBST(ENABLE_FUZZERS)
10626 dnl ===================================================================
10627 dnl Orcus
10628 dnl ===================================================================
10629 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.0])
10630 if test "$with_system_orcus" != "yes"; then
10631     if test "$SYSTEM_BOOST" = "TRUE"; then
10632         dnl Link with Boost.System
10633         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10634         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10635         dnl in documentation has no effect.
10636         AX_BOOST_SYSTEM
10637     fi
10639 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10640 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10641 AC_SUBST([BOOST_SYSTEM_LIB])
10642 AC_SUBST(SYSTEM_LIBORCUS)
10644 dnl ===================================================================
10645 dnl HarfBuzz
10646 dnl ===================================================================
10647 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10648                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10649                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10651 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10652                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10653                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10655 if test "$COM" = "MSC"; then # override the above
10656     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10657     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10660 if test "$with_system_harfbuzz" = "yes"; then
10661     if test "$with_system_graphite" = "no"; then
10662         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10663     fi
10664     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10665     save_LIBS="$LIBS"
10666     save_CFLAGS="$CFLAGS"
10667     LIBS="$LIBS $HARFBUZZ_LIBS"
10668     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10669     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10670     LIBS="$save_LIBS"
10671     CFLAGS="$save_CFLAGS"
10672 else
10673     if test "$with_system_graphite" = "yes"; then
10674         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10675     fi
10678 if test "$USING_X11" = TRUE; then
10679     AC_PATH_X
10680     AC_PATH_XTRA
10681     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10683     if test -z "$x_includes"; then
10684         x_includes="default_x_includes"
10685     fi
10686     if test -z "$x_libraries"; then
10687         x_libraries="default_x_libraries"
10688     fi
10689     CFLAGS="$CFLAGS $X_CFLAGS"
10690     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10691     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10692 else
10693     x_includes="no_x_includes"
10694     x_libraries="no_x_libraries"
10697 if test "$USING_X11" = TRUE; then
10698     dnl ===================================================================
10699     dnl Check for extension headers
10700     dnl ===================================================================
10701     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10702      [#include <X11/extensions/shape.h>])
10704     # vcl needs ICE and SM
10705     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10706     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10707         [AC_MSG_ERROR(ICE library not found)])
10708     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10709     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10710         [AC_MSG_ERROR(SM library not found)])
10713 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10714     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10715     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10718 dnl ===================================================================
10719 dnl Check for system Xrender
10720 dnl ===================================================================
10721 AC_MSG_CHECKING([whether to use Xrender])
10722 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10723     AC_MSG_RESULT([yes])
10724     PKG_CHECK_MODULES(XRENDER, xrender)
10725     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10726     FilterLibs "${XRENDER_LIBS}"
10727     XRENDER_LIBS="${filteredlibs}"
10728     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10729       [AC_MSG_ERROR(libXrender not found or functional)], [])
10730     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10731       [AC_MSG_ERROR(Xrender not found. install X)], [])
10732 else
10733     AC_MSG_RESULT([no])
10735 AC_SUBST(XRENDER_CFLAGS)
10736 AC_SUBST(XRENDER_LIBS)
10738 dnl ===================================================================
10739 dnl Check for XRandr
10740 dnl ===================================================================
10741 AC_MSG_CHECKING([whether to enable RandR support])
10742 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10743     AC_MSG_RESULT([yes])
10744     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10745     if test "$ENABLE_RANDR" != "TRUE"; then
10746         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10747                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10748         XRANDR_CFLAGS=" "
10749         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10750           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10751         XRANDR_LIBS="-lXrandr "
10752         ENABLE_RANDR="TRUE"
10753     fi
10754     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10755     FilterLibs "${XRANDR_LIBS}"
10756     XRANDR_LIBS="${filteredlibs}"
10757 else
10758     ENABLE_RANDR=""
10759     AC_MSG_RESULT([no])
10761 AC_SUBST(XRANDR_CFLAGS)
10762 AC_SUBST(XRANDR_LIBS)
10763 AC_SUBST(ENABLE_RANDR)
10765 if test "$test_webdav" = yes; then
10766     if test -z "$with_webdav"; then
10767         WITH_WEBDAV=neon
10768         if test "$enable_mpl_subset" = yes; then
10769             WITH_WEBDAV=serf
10770         fi
10771     else
10772         WITH_WEBDAV="$with_webdav"
10773     fi
10776 AC_MSG_CHECKING([for webdav library])
10777 case "$WITH_WEBDAV" in
10778 curl)
10779     AC_MSG_RESULT([curl])
10780     # curl is already mandatory (almost) and checked elsewhere
10781     if test "$enable_curl" = "no"; then
10782         AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10783     fi
10784     ;;
10785 serf)
10786     AC_MSG_RESULT([serf])
10787     # Check for system apr-util
10788     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10789                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10790                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10791     if test "$COM" = "MSC"; then
10792         APR_LIB_DIR="LibR"
10793         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10794         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10795     fi
10797     # Check for system serf
10798     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10799     ;;
10800 neon)
10801     AC_MSG_RESULT([neon])
10802     # Check for system neon
10803     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10804     if test "$with_system_neon" = "yes"; then
10805         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10806     else
10807         NEON_VERSION=0312
10808     fi
10809     AC_SUBST(NEON_VERSION)
10810     ;;
10812     AC_MSG_RESULT([none, disabled])
10813     WITH_WEBDAV=""
10814     ;;
10815 esac
10816 AC_SUBST(WITH_WEBDAV)
10818 dnl ===================================================================
10819 dnl Check for disabling cve_tests
10820 dnl ===================================================================
10821 AC_MSG_CHECKING([whether to execute CVE tests])
10822 # If not explicitly enabled or disabled, default
10823 if test -z "$enable_cve_tests"; then
10824     case "$OS" in
10825     WNT)
10826         # Default cves off for Windows with its wild and wonderful
10827         # variety of AV software kicking in and panicking
10828         enable_cve_tests=no
10829         ;;
10830     *)
10831         # otherwise yes
10832         enable_cve_tests=yes
10833         ;;
10834     esac
10836 if test "$enable_cve_tests" = "no"; then
10837     AC_MSG_RESULT([no])
10838     DISABLE_CVE_TESTS=TRUE
10839     AC_SUBST(DISABLE_CVE_TESTS)
10840 else
10841     AC_MSG_RESULT([yes])
10844 dnl ===================================================================
10845 dnl Check for enabling chart XShape tests
10846 dnl ===================================================================
10847 AC_MSG_CHECKING([whether to execute chart XShape tests])
10848 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10849     AC_MSG_RESULT([yes])
10850     ENABLE_CHART_TESTS=TRUE
10851     AC_SUBST(ENABLE_CHART_TESTS)
10852 else
10853     AC_MSG_RESULT([no])
10856 dnl ===================================================================
10857 dnl Check for system openssl
10858 dnl ===================================================================
10859 ENABLE_OPENSSL=
10860 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10861 if test "$enable_openssl" = "yes"; then
10862     AC_MSG_RESULT([no])
10863     ENABLE_OPENSSL=TRUE
10864     if test "$_os" = Darwin ; then
10865         # OpenSSL is deprecated when building for 10.7 or later.
10866         #
10867         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10868         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10870         with_system_openssl=no
10871         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10872     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10873             && test "$with_system_openssl" != "no"; then
10874         with_system_openssl=yes
10875         SYSTEM_OPENSSL=TRUE
10876         OPENSSL_CFLAGS=
10877         OPENSSL_LIBS="-lssl -lcrypto"
10878     else
10879         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10880     fi
10881     if test "$with_system_openssl" = "yes"; then
10882         AC_MSG_CHECKING([whether openssl supports SHA512])
10883         AC_LANG_PUSH([C])
10884         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10885             SHA512_CTX context;
10886 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10887         AC_LANG_POP(C)
10888     fi
10889 else
10890     AC_MSG_RESULT([yes])
10892     # warn that although OpenSSL is disabled, system libraries may depend on it
10893     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10894     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10897 AC_SUBST([ENABLE_OPENSSL])
10899 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10900     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10901         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10902         enable_cipher_openssl_backend=no
10903     else
10904         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10905     fi
10907 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10908 ENABLE_CIPHER_OPENSSL_BACKEND=
10909 if test "$enable_cipher_openssl_backend" = yes; then
10910     AC_MSG_RESULT([yes])
10911     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10912 else
10913     AC_MSG_RESULT([no])
10915 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10917 dnl ===================================================================
10918 dnl Select the crypto backends used by LO
10919 dnl ===================================================================
10921 if test "$build_crypto" = yes; then
10922     if test "$OS" = WNT; then
10923         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10924         AC_DEFINE([USE_CRYPTO_MSCAPI])
10925     elif test "$ENABLE_NSS" = TRUE; then
10926         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10927         AC_DEFINE([USE_CRYPTO_NSS])
10928     fi
10931 dnl ===================================================================
10932 dnl Check for building gnutls
10933 dnl ===================================================================
10934 AC_MSG_CHECKING([whether to use gnutls])
10935 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10936     AC_MSG_RESULT([yes])
10937     AM_PATH_LIBGCRYPT()
10938     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10939         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10940                       available in the system to use as replacement.]]))
10941     FilterLibs "${LIBGCRYPT_LIBS}"
10942     LIBGCRYPT_LIBS="${filteredlibs}"
10943 else
10944     AC_MSG_RESULT([no])
10947 AC_SUBST([LIBGCRYPT_CFLAGS])
10948 AC_SUBST([LIBGCRYPT_LIBS])
10950 dnl ===================================================================
10951 dnl Check for system redland
10952 dnl ===================================================================
10953 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10954 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10955 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10956 if test "$with_system_redland" = "yes"; then
10957     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10958             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10959 else
10960     RAPTOR_MAJOR="0"
10961     RASQAL_MAJOR="3"
10962     REDLAND_MAJOR="0"
10964 AC_SUBST(RAPTOR_MAJOR)
10965 AC_SUBST(RASQAL_MAJOR)
10966 AC_SUBST(REDLAND_MAJOR)
10968 dnl ===================================================================
10969 dnl Check for system hunspell
10970 dnl ===================================================================
10971 AC_MSG_CHECKING([which libhunspell to use])
10972 if test "$with_system_hunspell" = "yes"; then
10973     AC_MSG_RESULT([external])
10974     SYSTEM_HUNSPELL=TRUE
10975     AC_LANG_PUSH([C++])
10976     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10977     if test "$HUNSPELL_PC" != "TRUE"; then
10978         AC_CHECK_HEADER(hunspell.hxx, [],
10979             [
10980             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10981             [AC_MSG_ERROR(hunspell headers not found.)], [])
10982             ], [])
10983         AC_CHECK_LIB([hunspell], [main], [:],
10984            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10985         HUNSPELL_LIBS=-lhunspell
10986     fi
10987     AC_LANG_POP([C++])
10988     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10989     FilterLibs "${HUNSPELL_LIBS}"
10990     HUNSPELL_LIBS="${filteredlibs}"
10991 else
10992     AC_MSG_RESULT([internal])
10993     SYSTEM_HUNSPELL=
10994     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10995     if test "$COM" = "MSC"; then
10996         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10997     else
10998         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10999     fi
11000     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11002 AC_SUBST(SYSTEM_HUNSPELL)
11003 AC_SUBST(HUNSPELL_CFLAGS)
11004 AC_SUBST(HUNSPELL_LIBS)
11006 dnl ===================================================================
11007 dnl Check for system zxing
11008 dnl ===================================================================
11009 AC_MSG_CHECKING([whether to use zxing])
11010 if test "$enable_zxing" = "no"; then
11011     AC_MSG_RESULT([no])
11012     ENABLE_ZXING=
11013     SYSTEM_ZXING=
11014 else
11015     AC_MSG_RESULT([yes])
11016     ENABLE_ZXING=TRUE
11017     AC_MSG_CHECKING([which libzxing to use])
11018     if test "$with_system_zxing" = "yes"; then
11019         AC_MSG_RESULT([external])
11020         SYSTEM_ZXING=TRUE
11021         AC_LANG_PUSH([C++])
11022         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11023             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11024         ZXING_CFLAGS=-I/usr/include/ZXing
11025         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11026             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11027             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11028         AC_LANG_POP([C++])
11029         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11030         FilterLibs "${ZXING_LIBS}"
11031         ZXING_LIBS="${filteredlibs}"
11032     else
11033         AC_MSG_RESULT([internal])
11034         SYSTEM_ZXING=
11035         BUILD_TYPE="$BUILD_TYPE ZXING"
11036     fi
11037     if test "$ENABLE_ZXING" = TRUE; then
11038         AC_DEFINE(ENABLE_ZXING)
11039     fi
11041 AC_SUBST(SYSTEM_ZXING)
11042 AC_SUBST(ENABLE_ZXING)
11043 AC_SUBST(ZXING_CFLAGS)
11044 AC_SUBST(ZXING_LIBS)
11046 dnl ===================================================================
11047 dnl Check for system box2d
11048 dnl ===================================================================
11049 AC_MSG_CHECKING([which box2d to use])
11050 if test "$with_system_box2d" = "yes"; then
11051     AC_MSG_RESULT([external])
11052     SYSTEM_BOX2D=TRUE
11053     AC_LANG_PUSH([C++])
11054     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11055         [BOX2D_H_FOUND='FALSE'])
11056     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11057         _BOX2D_LIB=box2d
11058         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11059     else
11060         # fail this. there's no other alternative to check when we are here.
11061         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11062             [AC_MSG_ERROR(box2d headers not found.)])
11063         _BOX2D_LIB=Box2D
11064         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11065     fi
11066     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11067         [ AC_MSG_ERROR(box2d library not found.) ], [])
11068     BOX2D_LIBS=-l$_BOX2D_LIB
11069     AC_LANG_POP([C++])
11070     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11071     FilterLibs "${BOX2D_LIBS}"
11072     BOX2D_LIBS="${filteredlibs}"
11073 else
11074     AC_MSG_RESULT([internal])
11075     SYSTEM_BOX2D=
11076     BUILD_TYPE="$BUILD_TYPE BOX2D"
11078 AC_SUBST(SYSTEM_BOX2D)
11079 AC_SUBST(BOX2D_CFLAGS)
11080 AC_SUBST(BOX2D_LIBS)
11082 dnl ===================================================================
11083 dnl Checking for altlinuxhyph
11084 dnl ===================================================================
11085 AC_MSG_CHECKING([which altlinuxhyph to use])
11086 if test "$with_system_altlinuxhyph" = "yes"; then
11087     AC_MSG_RESULT([external])
11088     SYSTEM_HYPH=TRUE
11089     AC_CHECK_HEADER(hyphen.h, [],
11090        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11091     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11092        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11093        [#include <hyphen.h>])
11094     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11095         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11096     if test -z "$HYPHEN_LIB"; then
11097         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11098            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11099     fi
11100     if test -z "$HYPHEN_LIB"; then
11101         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11102            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11103     fi
11104 else
11105     AC_MSG_RESULT([internal])
11106     SYSTEM_HYPH=
11107     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11108     if test "$COM" = "MSC"; then
11109         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11110     else
11111         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11112     fi
11114 AC_SUBST(SYSTEM_HYPH)
11115 AC_SUBST(HYPHEN_LIB)
11117 dnl ===================================================================
11118 dnl Checking for mythes
11119 dnl ===================================================================
11120 AC_MSG_CHECKING([which mythes to use])
11121 if test "$with_system_mythes" = "yes"; then
11122     AC_MSG_RESULT([external])
11123     SYSTEM_MYTHES=TRUE
11124     AC_LANG_PUSH([C++])
11125     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11126     if test "$MYTHES_PKGCONFIG" = "no"; then
11127         AC_CHECK_HEADER(mythes.hxx, [],
11128             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11129         AC_CHECK_LIB([mythes-1.2], [main], [:],
11130             [ MYTHES_FOUND=no], [])
11131     if test "$MYTHES_FOUND" = "no"; then
11132         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11133                 [ MYTHES_FOUND=no], [])
11134     fi
11135     if test "$MYTHES_FOUND" = "no"; then
11136         AC_MSG_ERROR([mythes library not found!.])
11137     fi
11138     fi
11139     AC_LANG_POP([C++])
11140     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11141     FilterLibs "${MYTHES_LIBS}"
11142     MYTHES_LIBS="${filteredlibs}"
11143 else
11144     AC_MSG_RESULT([internal])
11145     SYSTEM_MYTHES=
11146     BUILD_TYPE="$BUILD_TYPE MYTHES"
11147     if test "$COM" = "MSC"; then
11148         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11149     else
11150         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11151     fi
11153 AC_SUBST(SYSTEM_MYTHES)
11154 AC_SUBST(MYTHES_CFLAGS)
11155 AC_SUBST(MYTHES_LIBS)
11157 dnl ===================================================================
11158 dnl How should we build the linear programming solver ?
11159 dnl ===================================================================
11161 ENABLE_COINMP=
11162 AC_MSG_CHECKING([whether to build with CoinMP])
11163 if test "$enable_coinmp" != "no"; then
11164     ENABLE_COINMP=TRUE
11165     AC_MSG_RESULT([yes])
11166     if test "$with_system_coinmp" = "yes"; then
11167         SYSTEM_COINMP=TRUE
11168         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11169         FilterLibs "${COINMP_LIBS}"
11170         COINMP_LIBS="${filteredlibs}"
11171     else
11172         BUILD_TYPE="$BUILD_TYPE COINMP"
11173     fi
11174 else
11175     AC_MSG_RESULT([no])
11177 AC_SUBST(ENABLE_COINMP)
11178 AC_SUBST(SYSTEM_COINMP)
11179 AC_SUBST(COINMP_CFLAGS)
11180 AC_SUBST(COINMP_LIBS)
11182 ENABLE_LPSOLVE=
11183 AC_MSG_CHECKING([whether to build with lpsolve])
11184 if test "$enable_lpsolve" != "no"; then
11185     ENABLE_LPSOLVE=TRUE
11186     AC_MSG_RESULT([yes])
11187 else
11188     AC_MSG_RESULT([no])
11190 AC_SUBST(ENABLE_LPSOLVE)
11192 if test "$ENABLE_LPSOLVE" = TRUE; then
11193     AC_MSG_CHECKING([which lpsolve to use])
11194     if test "$with_system_lpsolve" = "yes"; then
11195         AC_MSG_RESULT([external])
11196         SYSTEM_LPSOLVE=TRUE
11197         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11198            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11199         save_LIBS=$LIBS
11200         # some systems need this. Like Ubuntu...
11201         AC_CHECK_LIB(m, floor)
11202         AC_CHECK_LIB(dl, dlopen)
11203         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11204             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11205         LIBS=$save_LIBS
11206     else
11207         AC_MSG_RESULT([internal])
11208         SYSTEM_LPSOLVE=
11209         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11210     fi
11212 AC_SUBST(SYSTEM_LPSOLVE)
11214 dnl ===================================================================
11215 dnl Checking for libexttextcat
11216 dnl ===================================================================
11217 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11218 if test "$with_system_libexttextcat" = "yes"; then
11219     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11221 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11223 dnl ===================================================================
11224 dnl Checking for libnumbertext
11225 dnl ===================================================================
11226 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11227 if test "$with_system_libnumbertext" = "yes"; then
11228     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11229     SYSTEM_LIBNUMBERTEXT=YES
11230 else
11231     SYSTEM_LIBNUMBERTEXT=
11232     AC_LANG_PUSH([C++])
11233     save_CPPFLAGS=$CPPFLAGS
11234     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11235     AC_CHECK_HEADERS([codecvt regex])
11236     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11237             [ LIBNUMBERTEXT_CFLAGS=''
11238               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11239                            Enable libnumbertext fallback (missing number to number name conversion).])
11240             ])
11241     CPPFLAGS=$save_CPPFLAGS
11242     AC_LANG_POP([C++])
11244 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11245 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11246 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11248 dnl ***************************************
11249 dnl testing libc version for Linux...
11250 dnl ***************************************
11251 if test "$_os" = "Linux"; then
11252     AC_MSG_CHECKING([whether the libc is recent enough])
11253     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11254     #include <features.h>
11255     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11256     #error glibc >= 2.1 is required
11257     #endif
11258     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11261 dnl =========================================
11262 dnl Check for uuidgen
11263 dnl =========================================
11264 if test "$_os" = "WINNT"; then
11265     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11266     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11267     UUIDGEN=uuidgen.exe
11268     AC_SUBST(UUIDGEN)
11269 else
11270     AC_PATH_PROG([UUIDGEN], [uuidgen])
11271     if test -z "$UUIDGEN"; then
11272         AC_MSG_WARN([uuid is needed for building installation sets])
11273     fi
11276 dnl ***************************************
11277 dnl Checking for bison and flex
11278 dnl ***************************************
11279 AC_PATH_PROG(BISON, bison)
11280 if test -z "$BISON"; then
11281     AC_MSG_ERROR([no bison found in \$PATH, install it])
11282 else
11283     AC_MSG_CHECKING([the bison version])
11284     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11285     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11286     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11287     dnl cause
11288     dnl
11289     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]
11290     dnl   typedef union YYSTYPE
11291     dnl           ~~~~~~^~~~~~~
11292     dnl
11293     dnl while at least 3.4.1 is know to be good:
11294     if test "$COMPILER_PLUGINS" = TRUE; then
11295         if test "$_bison_longver" -lt 2004; then
11296             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11297         fi
11298     else
11299         if test "$_bison_longver" -lt 2000; then
11300             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11301         fi
11302     fi
11304 AC_SUBST([BISON])
11306 AC_PATH_PROG(FLEX, flex)
11307 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11308     FLEX=`cygpath -m $FLEX`
11310 if test -z "$FLEX"; then
11311     AC_MSG_ERROR([no flex found in \$PATH, install it])
11312 else
11313     AC_MSG_CHECKING([the flex version])
11314     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11315     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11316         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11317     fi
11319 AC_SUBST([FLEX])
11320 dnl ***************************************
11321 dnl Checking for patch
11322 dnl ***************************************
11323 AC_PATH_PROG(PATCH, patch)
11324 if test -z "$PATCH"; then
11325     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11328 dnl On Solaris or macOS, check if --with-gnu-patch was used
11329 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11330     if test -z "$with_gnu_patch"; then
11331         GNUPATCH=$PATCH
11332     else
11333         if test -x "$with_gnu_patch"; then
11334             GNUPATCH=$with_gnu_patch
11335         else
11336             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11337         fi
11338     fi
11340     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11341     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11342         AC_MSG_RESULT([yes])
11343     else
11344         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11345     fi
11346 else
11347     GNUPATCH=$PATCH
11350 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11351     GNUPATCH=`cygpath -m $GNUPATCH`
11354 dnl We also need to check for --with-gnu-cp
11356 if test -z "$with_gnu_cp"; then
11357     # check the place where the good stuff is hidden on Solaris...
11358     if test -x /usr/gnu/bin/cp; then
11359         GNUCP=/usr/gnu/bin/cp
11360     else
11361         AC_PATH_PROGS(GNUCP, gnucp cp)
11362     fi
11363     if test -z $GNUCP; then
11364         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11365     fi
11366 else
11367     if test -x "$with_gnu_cp"; then
11368         GNUCP=$with_gnu_cp
11369     else
11370         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11371     fi
11374 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11375     GNUCP=`cygpath -m $GNUCP`
11378 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11379 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11380     AC_MSG_RESULT([yes])
11381 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11382     AC_MSG_RESULT([yes])
11383 else
11384     case "$build_os" in
11385     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11386         x_GNUCP=[\#]
11387         GNUCP=''
11388         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11389         ;;
11390     *)
11391         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11392         ;;
11393     esac
11396 AC_SUBST(GNUPATCH)
11397 AC_SUBST(GNUCP)
11398 AC_SUBST(x_GNUCP)
11400 dnl ***************************************
11401 dnl testing assembler path
11402 dnl ***************************************
11403 ML_EXE=""
11404 if test "$_os" = "WINNT"; then
11405     case "$WIN_HOST_ARCH" in
11406     x86) assembler=ml.exe ;;
11407     x64) assembler=ml64.exe ;;
11408     arm64) assembler=armasm64.exe ;;
11409     esac
11411     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11412     if test -f "$MSVC_HOST_PATH/$assembler"; then
11413         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11414         AC_MSG_RESULT([$ML_EXE])
11415     else
11416         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11417     fi
11420 AC_SUBST(ML_EXE)
11422 dnl ===================================================================
11423 dnl We need zip and unzip
11424 dnl ===================================================================
11425 AC_PATH_PROG(ZIP, zip)
11426 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11427 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11428     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],,)
11431 AC_PATH_PROG(UNZIP, unzip)
11432 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11434 dnl ===================================================================
11435 dnl Zip must be a specific type for different build types.
11436 dnl ===================================================================
11437 if test $build_os = cygwin; then
11438     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11439         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11440     fi
11443 dnl ===================================================================
11444 dnl We need touch with -h option support.
11445 dnl ===================================================================
11446 AC_PATH_PROG(TOUCH, touch)
11447 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11448 touch "$WARNINGS_FILE"
11449 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11450     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],,)
11453 dnl ===================================================================
11454 dnl Check for system epoxy
11455 dnl ===================================================================
11456 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11458 dnl ===================================================================
11459 dnl Set vcl option: coordinate device in double or sal_Int32
11460 dnl ===================================================================
11462 dnl disabled for now, we don't want subtle differences between OSs
11463 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11464 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11465 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11466 dnl     AC_MSG_RESULT([double])
11467 dnl else
11468 dnl     AC_MSG_RESULT([sal_Int32])
11469 dnl fi
11471 dnl ===================================================================
11472 dnl Show which vclplugs will be built.
11473 dnl ===================================================================
11474 R=""
11475 if test "$USING_X11" != TRUE; then
11476     enable_gtk3=no
11479 ENABLE_GTK3=""
11480 if test "x$enable_gtk3" = "xyes"; then
11481     ENABLE_GTK3="TRUE"
11482     AC_DEFINE(ENABLE_GTK3)
11483     R="$R gtk3"
11485 AC_SUBST(ENABLE_GTK3)
11487 ENABLE_GTK3_KDE5=""
11488 if test "x$enable_gtk3_kde5" = "xyes"; then
11489     ENABLE_GTK3_KDE5="TRUE"
11490     AC_DEFINE(ENABLE_GTK3_KDE5)
11491     R="$R gtk3_kde5"
11493 AC_SUBST(ENABLE_GTK3_KDE5)
11495 ENABLE_GTK4=""
11496 if test "x$enable_gtk4" = "xyes"; then
11497     ENABLE_GTK4="TRUE"
11498     AC_DEFINE(ENABLE_GTK4)
11499     R="$R gtk4"
11501 AC_SUBST(ENABLE_GTK4)
11503 ENABLE_QT5=""
11504 if test "x$enable_qt5" = "xyes"; then
11505     ENABLE_QT5="TRUE"
11506     AC_DEFINE(ENABLE_QT5)
11507     R="$R qt5"
11509 AC_SUBST(ENABLE_QT5)
11511 ENABLE_QT6=""
11512 if test "x$enable_qt6" = "xyes"; then
11513     ENABLE_QT6="TRUE"
11514     AC_DEFINE(ENABLE_QT6)
11515     R="$R qt6"
11517 AC_SUBST(ENABLE_QT6)
11520 ENABLE_KF5=""
11521 if test "x$enable_kf5" = "xyes"; then
11522     ENABLE_KF5="TRUE"
11523     AC_DEFINE(ENABLE_KF5)
11524     R="$R kf5"
11526 AC_SUBST(ENABLE_KF5)
11528 if test "x$USING_X11" = "xyes"; then
11529     R="$R gen"
11532 if test "$_os" = "WINNT"; then
11533     R="$R win"
11534 elif test "$_os" = "Darwin"; then
11535     R="$R osx"
11536 elif test "$_os" = "iOS"; then
11537     R="ios"
11538 elif test "$_os" = Android; then
11539     R="android"
11542 build_vcl_plugins="$R"
11543 if test -z "$build_vcl_plugins"; then
11544     build_vcl_plugins=" none"
11546 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11547 VCL_PLUGIN_INFO=$R
11548 AC_SUBST([VCL_PLUGIN_INFO])
11550 dnl ===================================================================
11551 dnl Check for GTK libraries
11552 dnl ===================================================================
11554 GTK3_CFLAGS=""
11555 GTK3_LIBS=""
11556 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11557     if test "$with_system_cairo" = no; then
11558         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11559     fi
11560     : ${with_system_cairo:=yes}
11561     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)
11562     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11563     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11564     FilterLibs "${GTK3_LIBS}"
11565     GTK3_LIBS="${filteredlibs}"
11567     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11568     if test "$with_system_epoxy" != "yes"; then
11569         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11570         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11571                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11572     fi
11574 AC_SUBST(GTK3_LIBS)
11575 AC_SUBST(GTK3_CFLAGS)
11577 GTK4_CFLAGS=""
11578 GTK4_LIBS=""
11579 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11580     if test "$with_system_cairo" = no; then
11581         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11582     fi
11583     : ${with_system_cairo:=yes}
11584     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11585     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11586     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11587     FilterLibs "${GTK4_LIBS}"
11588     GTK4_LIBS="${filteredlibs}"
11590     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11591     if test "$with_system_epoxy" != "yes"; then
11592         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11593         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11594                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11595     fi
11597 AC_SUBST(GTK4_LIBS)
11598 AC_SUBST(GTK4_CFLAGS)
11600 if test "$enable_introspection" = yes; then
11601     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11602         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11603     else
11604         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11605     fi
11608 dnl ===================================================================
11609 dnl check for dbus support
11610 dnl ===================================================================
11611 ENABLE_DBUS=""
11612 DBUS_CFLAGS=""
11613 DBUS_LIBS=""
11614 DBUS_GLIB_CFLAGS=""
11615 DBUS_GLIB_LIBS=""
11616 DBUS_HAVE_GLIB=""
11618 if test "$enable_dbus" = "no"; then
11619     test_dbus=no
11622 AC_MSG_CHECKING([whether to enable DBUS support])
11623 if test "$test_dbus" = "yes"; then
11624     ENABLE_DBUS="TRUE"
11625     AC_MSG_RESULT([yes])
11626     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11627     AC_DEFINE(ENABLE_DBUS)
11628     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11629     FilterLibs "${DBUS_LIBS}"
11630     DBUS_LIBS="${filteredlibs}"
11632     # Glib is needed for BluetoothServer
11633     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11634     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11635         [
11636             DBUS_HAVE_GLIB="TRUE"
11637             AC_DEFINE(DBUS_HAVE_GLIB,1)
11638         ],
11639         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11640     )
11641 else
11642     AC_MSG_RESULT([no])
11645 AC_SUBST(ENABLE_DBUS)
11646 AC_SUBST(DBUS_CFLAGS)
11647 AC_SUBST(DBUS_LIBS)
11648 AC_SUBST(DBUS_GLIB_CFLAGS)
11649 AC_SUBST(DBUS_GLIB_LIBS)
11650 AC_SUBST(DBUS_HAVE_GLIB)
11652 AC_MSG_CHECKING([whether to enable Impress remote control])
11653 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11654     AC_MSG_RESULT([yes])
11655     ENABLE_SDREMOTE=TRUE
11656     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11658     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11659         # The Bluetooth code doesn't compile with macOS SDK 10.15
11660         if test "$enable_sdremote_bluetooth" = yes; then
11661             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11662         fi
11663         enable_sdremote_bluetooth=no
11664     fi
11665     # If not explicitly enabled or disabled, default
11666     if test -z "$enable_sdremote_bluetooth"; then
11667         case "$OS" in
11668         LINUX|MACOSX|WNT)
11669             # Default to yes for these
11670             enable_sdremote_bluetooth=yes
11671             ;;
11672         *)
11673             # otherwise no
11674             enable_sdremote_bluetooth=no
11675             ;;
11676         esac
11677     fi
11678     # $enable_sdremote_bluetooth is guaranteed non-empty now
11680     if test "$enable_sdremote_bluetooth" != "no"; then
11681         if test "$OS" = "LINUX"; then
11682             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11683                 AC_MSG_RESULT([yes])
11684                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11685                 dnl ===================================================================
11686                 dnl Check for system bluez
11687                 dnl ===================================================================
11688                 AC_MSG_CHECKING([which Bluetooth header to use])
11689                 if test "$with_system_bluez" = "yes"; then
11690                     AC_MSG_RESULT([external])
11691                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11692                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11693                     SYSTEM_BLUEZ=TRUE
11694                 else
11695                     AC_MSG_RESULT([internal])
11696                     SYSTEM_BLUEZ=
11697                 fi
11698             else
11699                 AC_MSG_RESULT([no, dbus disabled])
11700                 ENABLE_SDREMOTE_BLUETOOTH=
11701                 SYSTEM_BLUEZ=
11702             fi
11703         else
11704             AC_MSG_RESULT([yes])
11705             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11706             SYSTEM_BLUEZ=
11707         fi
11708     else
11709         AC_MSG_RESULT([no])
11710         ENABLE_SDREMOTE_BLUETOOTH=
11711         SYSTEM_BLUEZ=
11712     fi
11713 else
11714     ENABLE_SDREMOTE=
11715     SYSTEM_BLUEZ=
11716     AC_MSG_RESULT([no])
11718 AC_SUBST(ENABLE_SDREMOTE)
11719 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11720 AC_SUBST(SYSTEM_BLUEZ)
11722 dnl ===================================================================
11723 dnl Check whether to enable GIO support
11724 dnl ===================================================================
11725 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11726     AC_MSG_CHECKING([whether to enable GIO support])
11727     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11728         dnl Need at least 2.26 for the dbus support.
11729         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11730                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11731         if test "$ENABLE_GIO" = "TRUE"; then
11732             AC_DEFINE(ENABLE_GIO)
11733             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11734             FilterLibs "${GIO_LIBS}"
11735             GIO_LIBS="${filteredlibs}"
11736         fi
11737     else
11738         AC_MSG_RESULT([no])
11739     fi
11741 AC_SUBST(ENABLE_GIO)
11742 AC_SUBST(GIO_CFLAGS)
11743 AC_SUBST(GIO_LIBS)
11746 dnl ===================================================================
11748 SPLIT_APP_MODULES=""
11749 if test "$enable_split_app_modules" = "yes"; then
11750     SPLIT_APP_MODULES="TRUE"
11752 AC_SUBST(SPLIT_APP_MODULES)
11754 SPLIT_OPT_FEATURES=""
11755 if test "$enable_split_opt_features" = "yes"; then
11756     SPLIT_OPT_FEATURES="TRUE"
11758 AC_SUBST(SPLIT_OPT_FEATURES)
11760 dnl ===================================================================
11761 dnl Check whether the GStreamer libraries are available.
11762 dnl ===================================================================
11764 ENABLE_GSTREAMER_1_0=""
11766 if test "$test_gstreamer_1_0" = yes; then
11768     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11769     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11770         ENABLE_GSTREAMER_1_0="TRUE"
11771         AC_MSG_RESULT([yes])
11772         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11773         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11774         FilterLibs "${GSTREAMER_1_0_LIBS}"
11775         GSTREAMER_1_0_LIBS="${filteredlibs}"
11776         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11777     else
11778         AC_MSG_RESULT([no])
11779     fi
11781 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11782 AC_SUBST(GSTREAMER_1_0_LIBS)
11783 AC_SUBST(ENABLE_GSTREAMER_1_0)
11785 ENABLE_OPENGL_TRANSITIONS=
11786 ENABLE_OPENGL_CANVAS=
11787 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11788    : # disable
11789 elif test "$_os" = "Darwin"; then
11790     # We use frameworks on macOS, no need for detail checks
11791     ENABLE_OPENGL_TRANSITIONS=TRUE
11792     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11793     ENABLE_OPENGL_CANVAS=TRUE
11794 elif test $_os = WINNT; then
11795     ENABLE_OPENGL_TRANSITIONS=TRUE
11796     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11797     ENABLE_OPENGL_CANVAS=TRUE
11798 else
11799     if test "$USING_X11" = TRUE; then
11800         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11801         ENABLE_OPENGL_TRANSITIONS=TRUE
11802         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11803         ENABLE_OPENGL_CANVAS=TRUE
11804     fi
11807 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11808 AC_SUBST(ENABLE_OPENGL_CANVAS)
11810 dnl =================================================
11811 dnl Check whether to build with OpenCL support.
11812 dnl =================================================
11814 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11815     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11816     # platform (optional at run-time, used through clew).
11817     BUILD_TYPE="$BUILD_TYPE OPENCL"
11818     AC_DEFINE(HAVE_FEATURE_OPENCL)
11821 dnl =================================================
11822 dnl Check whether to build with dconf support.
11823 dnl =================================================
11825 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11826     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11827         if test "$enable_dconf" = yes; then
11828             AC_MSG_ERROR([dconf not found])
11829         else
11830             enable_dconf=no
11831         fi])
11833 AC_MSG_CHECKING([whether to enable dconf])
11834 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11835     DCONF_CFLAGS=
11836     DCONF_LIBS=
11837     ENABLE_DCONF=
11838     AC_MSG_RESULT([no])
11839 else
11840     ENABLE_DCONF=TRUE
11841     AC_DEFINE(ENABLE_DCONF)
11842     AC_MSG_RESULT([yes])
11844 AC_SUBST([DCONF_CFLAGS])
11845 AC_SUBST([DCONF_LIBS])
11846 AC_SUBST([ENABLE_DCONF])
11848 # pdf import?
11849 AC_MSG_CHECKING([whether to build the PDF import feature])
11850 ENABLE_PDFIMPORT=
11851 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11852     AC_MSG_RESULT([yes])
11853     ENABLE_PDFIMPORT=TRUE
11854     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11855 else
11856     AC_MSG_RESULT([no])
11859 # Pdfium?
11860 AC_MSG_CHECKING([whether to build PDFium])
11861 ENABLE_PDFIUM=
11862 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11863     AC_MSG_RESULT([yes])
11864     ENABLE_PDFIUM=TRUE
11865     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11866 else
11867     AC_MSG_RESULT([no])
11869 AC_SUBST(ENABLE_PDFIUM)
11871 dnl ===================================================================
11872 dnl Check for poppler
11873 dnl ===================================================================
11874 ENABLE_POPPLER=
11875 AC_MSG_CHECKING([whether to build Poppler])
11876 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11877     AC_MSG_RESULT([yes])
11878     ENABLE_POPPLER=TRUE
11879     AC_DEFINE(HAVE_FEATURE_POPPLER)
11880 else
11881     AC_MSG_RESULT([no])
11883 AC_SUBST(ENABLE_POPPLER)
11885 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11886     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11889 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11890     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11893 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11894     dnl ===================================================================
11895     dnl Check for system poppler
11896     dnl ===================================================================
11897     AC_MSG_CHECKING([which PDF import poppler to use])
11898     if test "$with_system_poppler" = "yes"; then
11899         AC_MSG_RESULT([external])
11900         SYSTEM_POPPLER=TRUE
11901         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11902         AC_LANG_PUSH([C++])
11903         save_CXXFLAGS=$CXXFLAGS
11904         save_CPPFLAGS=$CPPFLAGS
11905         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11906         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11907         AC_CHECK_HEADER([cpp/poppler-version.h],
11908             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11909             [])
11910         CXXFLAGS=$save_CXXFLAGS
11911         CPPFLAGS=$save_CPPFLAGS
11912         AC_LANG_POP([C++])
11913         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11915         FilterLibs "${POPPLER_LIBS}"
11916         POPPLER_LIBS="${filteredlibs}"
11917     else
11918         AC_MSG_RESULT([internal])
11919         SYSTEM_POPPLER=
11920         BUILD_TYPE="$BUILD_TYPE POPPLER"
11921         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11922     fi
11923     AC_DEFINE([ENABLE_PDFIMPORT],1)
11925 AC_SUBST(ENABLE_PDFIMPORT)
11926 AC_SUBST(SYSTEM_POPPLER)
11927 AC_SUBST(POPPLER_CFLAGS)
11928 AC_SUBST(POPPLER_LIBS)
11930 # Skia?
11931 ENABLE_SKIA=
11932 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
11933     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
11934     if test "$SYSTEM_FREETYPE" = TRUE; then
11935         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
11936             [skia_freetype_ok=yes],
11937             [skia_freetype_ok=no])
11938     else # internal is ok
11939         skia_freetype_ok=yes
11940     fi
11941     AC_MSG_CHECKING([whether to build Skia])
11942     if test "$skia_freetype_ok" = "yes"; then
11943         if test "$enable_skia" = "debug"; then
11944             AC_MSG_RESULT([yes (debug)])
11945             ENABLE_SKIA_DEBUG=TRUE
11946         else
11947             AC_MSG_RESULT([yes])
11948             ENABLE_SKIA_DEBUG=
11949         fi
11950         ENABLE_SKIA=TRUE
11951         AC_DEFINE(HAVE_FEATURE_SKIA)
11952         BUILD_TYPE="$BUILD_TYPE SKIA"
11954         if test "$OS" = "MACOSX"; then
11955             AC_DEFINE(SK_SUPPORT_GPU,1)
11956             AC_DEFINE(SK_METAL,1)
11957             SKIA_GPU=METAL
11958             AC_SUBST(SKIA_GPU)
11959         else
11960             AC_DEFINE(SK_SUPPORT_GPU,1)
11961             AC_DEFINE(SK_VULKAN,1)
11962             SKIA_GPU=VULKAN
11963             AC_SUBST(SKIA_GPU)
11964         fi
11966         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
11967             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
11968             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
11969         fi
11970     else
11971         AC_MSG_RESULT([no (freetype too old)])
11972         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
11973     fi
11975 else
11976     AC_MSG_CHECKING([whether to build Skia])
11977     AC_MSG_RESULT([no])
11979 AC_SUBST(ENABLE_SKIA)
11980 AC_SUBST(ENABLE_SKIA_DEBUG)
11982 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11983 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11984 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11985 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11986 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11987 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11988 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11989 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
11990 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11991 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11992 HAVE_LO_CLANG_DLLEXPORTINLINES=
11994 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
11995     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11996         AC_MSG_CHECKING([for Clang])
11997         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11998     else
11999         if test "$_os" = "WINNT"; then
12000             AC_MSG_CHECKING([for clang-cl])
12001             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12002                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12003                 dnl explicitly set -m32/-m64
12004                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12005                 LO_CLANG_CXX="$LO_CLANG_CC"
12006                 AC_MSG_RESULT([$LO_CLANG_CC])
12007             else
12008                 AC_MSG_RESULT([no])
12009             fi
12010         else
12011             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12012             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12013         fi
12014     fi
12015     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12016         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12017         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12018         if test "$clang2_ver" -lt 50002; then
12019             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12020             LO_CLANG_CC=
12021             LO_CLANG_CXX=
12022         fi
12023     fi
12024     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12025         save_CXX="$CXX"
12026         CXX="$LO_CLANG_CXX"
12027         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12028         AC_LANG_PUSH([C++])
12029         save_CXXFLAGS=$CXXFLAGS
12030         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12031         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12032                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12033                 AC_MSG_RESULT([yes])
12034             ], [AC_MSG_RESULT([no])])
12035         CXXFLAGS=$save_CXXFLAGS
12036         AC_LANG_POP([C++])
12037         CXX="$save_CXX"
12038         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12039             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.])
12040         fi
12041     fi
12042     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12043         # Skia is the default on Windows, so hard-require Clang.
12044         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12045         if test "$_os" = "WINNT"; then
12046             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
12047         else
12048             AC_MSG_WARN([Clang compiler not found.])
12049         fi
12050     else
12052         save_CXX="$CXX"
12053         CXX="$LO_CLANG_CXX"
12054         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12055         flag_sse2=-msse2
12056         flag_ssse3=-mssse3
12057         flag_sse41=-msse4.1
12058         flag_sse42=-msse4.2
12059         flag_avx=-mavx
12060         flag_avx2=-mavx2
12061         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12062         flag_avx512f=-mavx512f
12063         flag_f16c=-mf16c
12064         flag_fma=-mfma
12066         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12067         AC_LANG_PUSH([C++])
12068         save_CXXFLAGS=$CXXFLAGS
12069         CXXFLAGS="$CXXFLAGS $flag_sse2"
12070         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12071             #include <emmintrin.h>
12072             int main () {
12073                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12074                 c = _mm_xor_si128 (a, b);
12075                 return 0;
12076             }
12077             ])],
12078             [can_compile_sse2=yes],
12079             [can_compile_sse2=no])
12080         AC_LANG_POP([C++])
12081         CXXFLAGS=$save_CXXFLAGS
12082         AC_MSG_RESULT([${can_compile_sse2}])
12083         if test "${can_compile_sse2}" = "yes" ; then
12084             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12085         fi
12087         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12088         AC_LANG_PUSH([C++])
12089         save_CXXFLAGS=$CXXFLAGS
12090         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12091         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12092             #include <tmmintrin.h>
12093             int main () {
12094                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12095                 c = _mm_maddubs_epi16 (a, b);
12096                 return 0;
12097             }
12098             ])],
12099             [can_compile_ssse3=yes],
12100             [can_compile_ssse3=no])
12101         AC_LANG_POP([C++])
12102         CXXFLAGS=$save_CXXFLAGS
12103         AC_MSG_RESULT([${can_compile_ssse3}])
12104         if test "${can_compile_ssse3}" = "yes" ; then
12105             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12106         fi
12108         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12109         AC_LANG_PUSH([C++])
12110         save_CXXFLAGS=$CXXFLAGS
12111         CXXFLAGS="$CXXFLAGS $flag_sse41"
12112         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12113             #include <smmintrin.h>
12114             int main () {
12115                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12116                 c = _mm_cmpeq_epi64 (a, b);
12117                 return 0;
12118             }
12119             ])],
12120             [can_compile_sse41=yes],
12121             [can_compile_sse41=no])
12122         AC_LANG_POP([C++])
12123         CXXFLAGS=$save_CXXFLAGS
12124         AC_MSG_RESULT([${can_compile_sse41}])
12125         if test "${can_compile_sse41}" = "yes" ; then
12126             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12127         fi
12129         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12130         AC_LANG_PUSH([C++])
12131         save_CXXFLAGS=$CXXFLAGS
12132         CXXFLAGS="$CXXFLAGS $flag_sse42"
12133         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12134             #include <nmmintrin.h>
12135             int main () {
12136                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12137                 c = _mm_cmpgt_epi64 (a, b);
12138                 return 0;
12139             }
12140             ])],
12141             [can_compile_sse42=yes],
12142             [can_compile_sse42=no])
12143         AC_LANG_POP([C++])
12144         CXXFLAGS=$save_CXXFLAGS
12145         AC_MSG_RESULT([${can_compile_sse42}])
12146         if test "${can_compile_sse42}" = "yes" ; then
12147             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12148         fi
12150         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12151         AC_LANG_PUSH([C++])
12152         save_CXXFLAGS=$CXXFLAGS
12153         CXXFLAGS="$CXXFLAGS $flag_avx"
12154         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12155             #include <immintrin.h>
12156             int main () {
12157                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12158                 c = _mm256_xor_ps(a, b);
12159                 return 0;
12160             }
12161             ])],
12162             [can_compile_avx=yes],
12163             [can_compile_avx=no])
12164         AC_LANG_POP([C++])
12165         CXXFLAGS=$save_CXXFLAGS
12166         AC_MSG_RESULT([${can_compile_avx}])
12167         if test "${can_compile_avx}" = "yes" ; then
12168             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12169         fi
12171         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12172         AC_LANG_PUSH([C++])
12173         save_CXXFLAGS=$CXXFLAGS
12174         CXXFLAGS="$CXXFLAGS $flag_avx2"
12175         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12176             #include <immintrin.h>
12177             int main () {
12178                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12179                 c = _mm256_maddubs_epi16(a, b);
12180                 return 0;
12181             }
12182             ])],
12183             [can_compile_avx2=yes],
12184             [can_compile_avx2=no])
12185         AC_LANG_POP([C++])
12186         CXXFLAGS=$save_CXXFLAGS
12187         AC_MSG_RESULT([${can_compile_avx2}])
12188         if test "${can_compile_avx2}" = "yes" ; then
12189             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12190         fi
12192         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12193         AC_LANG_PUSH([C++])
12194         save_CXXFLAGS=$CXXFLAGS
12195         CXXFLAGS="$CXXFLAGS $flag_avx512"
12196         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12197             #include <immintrin.h>
12198             int main () {
12199                 __m512i a = _mm512_loadu_si512(0);
12200                 __m512d v1 = _mm512_load_pd(0);
12201                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12202                 __m512d v2 = _mm512_abs_pd(v1);
12203                 return 0;
12204             }
12205             ])],
12206             [can_compile_avx512=yes],
12207             [can_compile_avx512=no])
12208         AC_LANG_POP([C++])
12209         CXXFLAGS=$save_CXXFLAGS
12210         AC_MSG_RESULT([${can_compile_avx512}])
12211         if test "${can_compile_avx512}" = "yes" ; then
12212             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12213             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12214         fi
12216         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12217         AC_LANG_PUSH([C++])
12218         save_CXXFLAGS=$CXXFLAGS
12219         CXXFLAGS="$CXXFLAGS $flag_f16c"
12220         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12221             #include <immintrin.h>
12222             int main () {
12223                 __m128i a = _mm_set1_epi32 (0);
12224                 __m128 c;
12225                 c = _mm_cvtph_ps(a);
12226                 return 0;
12227             }
12228             ])],
12229             [can_compile_f16c=yes],
12230             [can_compile_f16c=no])
12231         AC_LANG_POP([C++])
12232         CXXFLAGS=$save_CXXFLAGS
12233         AC_MSG_RESULT([${can_compile_f16c}])
12234         if test "${can_compile_f16c}" = "yes" ; then
12235             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12236         fi
12238         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12239         AC_LANG_PUSH([C++])
12240         save_CXXFLAGS=$CXXFLAGS
12241         CXXFLAGS="$CXXFLAGS $flag_fma"
12242         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12243             #include <immintrin.h>
12244             int main () {
12245                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12246                 d = _mm256_fmadd_ps(a, b, c);
12247                 return 0;
12248             }
12249             ])],
12250             [can_compile_fma=yes],
12251             [can_compile_fma=no])
12252         AC_LANG_POP([C++])
12253         CXXFLAGS=$save_CXXFLAGS
12254         AC_MSG_RESULT([${can_compile_fma}])
12255         if test "${can_compile_fma}" = "yes" ; then
12256             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12257         fi
12259         CXX="$save_CXX"
12260     fi
12263 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12265 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12266     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12267     AC_LANG_PUSH([C])
12268     save_CC="$CC"
12269     CC="$LO_CLANG_CC"
12270     save_CFLAGS=$CFLAGS
12271     CFLAGS="$CFLAGS --ccache-skip -O2"
12272     dnl an empty program will do, we're checking the compiler flags
12273     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12274                       [use_ccache=yes], [use_ccache=no])
12275     CFLAGS=$save_CFLAGS
12276     CC=$save_CC
12277     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12278         AC_MSG_RESULT([yes])
12279     else
12280         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12281         AC_MSG_RESULT([no])
12282     fi
12283     AC_LANG_POP([C])
12285     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12286     AC_LANG_PUSH([C++])
12287     save_CXX="$CXX"
12288     CXX="$LO_CLANG_CXX"
12289     save_CXXFLAGS=$CXXFLAGS
12290     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12291     dnl an empty program will do, we're checking the compiler flags
12292     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12293                       [use_ccache=yes], [use_ccache=no])
12294     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12295         AC_MSG_RESULT([yes])
12296     else
12297         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12298         AC_MSG_RESULT([no])
12299     fi
12300     CXXFLAGS=$save_CXXFLAGS
12301     CXX=$save_CXX
12302     AC_LANG_POP([C++])
12305 AC_SUBST(LO_CLANG_CC)
12306 AC_SUBST(LO_CLANG_CXX)
12307 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12308 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12309 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12310 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12311 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12312 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12313 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12314 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12315 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12316 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12317 AC_SUBST(CLANG_USE_LD)
12318 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12320 SYSTEM_GPGMEPP=
12322 if test "$enable_gpgmepp" = no; then
12323     AC_MSG_CHECKING([whether to enable gpgmepp])
12324     AC_MSG_RESULT([no])
12325 elif test "$enable_mpl_subset" = "yes"; then
12326     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12327     AC_MSG_RESULT([yes])
12328 elif test "$enable_fuzzers" = "yes"; then
12329     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12330     AC_MSG_RESULT([yes])
12331 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12332     dnl ===================================================================
12333     dnl Check for system gpgme
12334     dnl ===================================================================
12335     AC_MSG_CHECKING([which gpgmepp to use])
12336     if test "$with_system_gpgmepp" = "yes"; then
12337         AC_MSG_RESULT([external])
12338         SYSTEM_GPGMEPP=TRUE
12340         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12341         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12342             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12343         # progress_callback is the only func with plain C linkage
12344         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12345         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12346             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12347         AC_CHECK_HEADER(gpgme.h, [],
12348             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12349     else
12350         AC_MSG_RESULT([internal])
12351         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12352         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12354         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12355         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12356         if test "$_os" != "WINNT"; then
12357             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12358             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12359         fi
12360     fi
12361     ENABLE_GPGMEPP=TRUE
12362     AC_DEFINE([HAVE_FEATURE_GPGME])
12363     AC_PATH_PROG(GPG, gpg)
12364     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12365     # so let's exclude that manually for the moment
12366     if test -n "$GPG" -a "$_os" != "WINNT"; then
12367         # make sure we not only have a working gpgme, but a full working
12368         # gpg installation to run OpenPGP signature verification
12369         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12370     fi
12371     if test "$_os" = "Linux"; then
12372       uid=`id -u`
12373       AC_MSG_CHECKING([for /run/user/$uid])
12374       if test -d /run/user/$uid; then
12375         AC_MSG_RESULT([yes])
12376         AC_PATH_PROG(GPGCONF, gpgconf)
12378         # Older versions of gpgconf are not working as expected, since
12379         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12380         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12381         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12382         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12383         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12384         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12385         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12386           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12387           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12388           if $GPGCONF --dump-options > /dev/null ; then
12389             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12390               AC_MSG_RESULT([yes])
12391               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12392               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12393             else
12394               AC_MSG_RESULT([no])
12395             fi
12396           else
12397             AC_MSG_RESULT([no. missing or broken gpgconf?])
12398           fi
12399         else
12400           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12401         fi
12402       else
12403         AC_MSG_RESULT([no])
12404      fi
12405    fi
12407 AC_SUBST(ENABLE_GPGMEPP)
12408 AC_SUBST(SYSTEM_GPGMEPP)
12409 AC_SUBST(GPG_ERROR_CFLAGS)
12410 AC_SUBST(GPG_ERROR_LIBS)
12411 AC_SUBST(LIBASSUAN_CFLAGS)
12412 AC_SUBST(LIBASSUAN_LIBS)
12413 AC_SUBST(GPGMEPP_CFLAGS)
12414 AC_SUBST(GPGMEPP_LIBS)
12416 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12417 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12418     AC_MSG_RESULT([yes])
12419     ENABLE_MEDIAWIKI=TRUE
12420     BUILD_TYPE="$BUILD_TYPE XSLTML"
12421     if test  "x$with_java" = "xno"; then
12422         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12423     fi
12424 else
12425     AC_MSG_RESULT([no])
12426     ENABLE_MEDIAWIKI=
12427     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12429 AC_SUBST(ENABLE_MEDIAWIKI)
12431 AC_MSG_CHECKING([whether to build the Report Builder])
12432 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12433     AC_MSG_RESULT([yes])
12434     ENABLE_REPORTBUILDER=TRUE
12435     AC_MSG_CHECKING([which jfreereport libs to use])
12436     if test "$with_system_jfreereport" = "yes"; then
12437         SYSTEM_JFREEREPORT=TRUE
12438         AC_MSG_RESULT([external])
12439         if test -z $SAC_JAR; then
12440             SAC_JAR=/usr/share/java/sac.jar
12441         fi
12442         if ! test -f $SAC_JAR; then
12443              AC_MSG_ERROR(sac.jar not found.)
12444         fi
12446         if test -z $LIBXML_JAR; then
12447             if test -f /usr/share/java/libxml-1.0.0.jar; then
12448                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12449             elif test -f /usr/share/java/libxml.jar; then
12450                 LIBXML_JAR=/usr/share/java/libxml.jar
12451             else
12452                 AC_MSG_ERROR(libxml.jar replacement not found.)
12453             fi
12454         elif ! test -f $LIBXML_JAR; then
12455             AC_MSG_ERROR(libxml.jar not found.)
12456         fi
12458         if test -z $FLUTE_JAR; then
12459             if test -f /usr/share/java/flute-1.3.0.jar; then
12460                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12461             elif test -f /usr/share/java/flute.jar; then
12462                 FLUTE_JAR=/usr/share/java/flute.jar
12463             else
12464                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12465             fi
12466         elif ! test -f $FLUTE_JAR; then
12467             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12468         fi
12470         if test -z $JFREEREPORT_JAR; then
12471             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12472                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12473             elif test -f /usr/share/java/flow-engine.jar; then
12474                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12475             else
12476                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12477             fi
12478         elif ! test -f  $JFREEREPORT_JAR; then
12479                 AC_MSG_ERROR(jfreereport.jar not found.)
12480         fi
12482         if test -z $LIBLAYOUT_JAR; then
12483             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12484                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12485             elif test -f /usr/share/java/liblayout.jar; then
12486                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12487             else
12488                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12489             fi
12490         elif ! test -f $LIBLAYOUT_JAR; then
12491                 AC_MSG_ERROR(liblayout.jar not found.)
12492         fi
12494         if test -z $LIBLOADER_JAR; then
12495             if test -f /usr/share/java/libloader-1.0.0.jar; then
12496                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12497             elif test -f /usr/share/java/libloader.jar; then
12498                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12499             else
12500                 AC_MSG_ERROR(libloader.jar replacement not found.)
12501             fi
12502         elif ! test -f  $LIBLOADER_JAR; then
12503             AC_MSG_ERROR(libloader.jar not found.)
12504         fi
12506         if test -z $LIBFORMULA_JAR; then
12507             if test -f /usr/share/java/libformula-0.2.0.jar; then
12508                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12509             elif test -f /usr/share/java/libformula.jar; then
12510                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12511             else
12512                 AC_MSG_ERROR(libformula.jar replacement not found.)
12513             fi
12514         elif ! test -f $LIBFORMULA_JAR; then
12515                 AC_MSG_ERROR(libformula.jar not found.)
12516         fi
12518         if test -z $LIBREPOSITORY_JAR; then
12519             if test -f /usr/share/java/librepository-1.0.0.jar; then
12520                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12521             elif test -f /usr/share/java/librepository.jar; then
12522                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12523             else
12524                 AC_MSG_ERROR(librepository.jar replacement not found.)
12525             fi
12526         elif ! test -f $LIBREPOSITORY_JAR; then
12527             AC_MSG_ERROR(librepository.jar not found.)
12528         fi
12530         if test -z $LIBFONTS_JAR; then
12531             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12532                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12533             elif test -f /usr/share/java/libfonts.jar; then
12534                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12535             else
12536                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12537             fi
12538         elif ! test -f $LIBFONTS_JAR; then
12539                 AC_MSG_ERROR(libfonts.jar not found.)
12540         fi
12542         if test -z $LIBSERIALIZER_JAR; then
12543             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12544                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12545             elif test -f /usr/share/java/libserializer.jar; then
12546                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12547             else
12548                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12549             fi
12550         elif ! test -f $LIBSERIALIZER_JAR; then
12551                 AC_MSG_ERROR(libserializer.jar not found.)
12552         fi
12554         if test -z $LIBBASE_JAR; then
12555             if test -f /usr/share/java/libbase-1.0.0.jar; then
12556                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12557             elif test -f /usr/share/java/libbase.jar; then
12558                 LIBBASE_JAR=/usr/share/java/libbase.jar
12559             else
12560                 AC_MSG_ERROR(libbase.jar replacement not found.)
12561             fi
12562         elif ! test -f $LIBBASE_JAR; then
12563             AC_MSG_ERROR(libbase.jar not found.)
12564         fi
12566     else
12567         AC_MSG_RESULT([internal])
12568         SYSTEM_JFREEREPORT=
12569         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12570         NEED_ANT=TRUE
12571     fi
12572 else
12573     AC_MSG_RESULT([no])
12574     ENABLE_REPORTBUILDER=
12575     SYSTEM_JFREEREPORT=
12577 AC_SUBST(ENABLE_REPORTBUILDER)
12578 AC_SUBST(SYSTEM_JFREEREPORT)
12579 AC_SUBST(SAC_JAR)
12580 AC_SUBST(LIBXML_JAR)
12581 AC_SUBST(FLUTE_JAR)
12582 AC_SUBST(JFREEREPORT_JAR)
12583 AC_SUBST(LIBBASE_JAR)
12584 AC_SUBST(LIBLAYOUT_JAR)
12585 AC_SUBST(LIBLOADER_JAR)
12586 AC_SUBST(LIBFORMULA_JAR)
12587 AC_SUBST(LIBREPOSITORY_JAR)
12588 AC_SUBST(LIBFONTS_JAR)
12589 AC_SUBST(LIBSERIALIZER_JAR)
12591 # scripting provider for BeanShell?
12592 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12593 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12594     AC_MSG_RESULT([yes])
12595     ENABLE_SCRIPTING_BEANSHELL=TRUE
12597     dnl ===================================================================
12598     dnl Check for system beanshell
12599     dnl ===================================================================
12600     AC_MSG_CHECKING([which beanshell to use])
12601     if test "$with_system_beanshell" = "yes"; then
12602         AC_MSG_RESULT([external])
12603         SYSTEM_BSH=TRUE
12604         if test -z $BSH_JAR; then
12605             BSH_JAR=/usr/share/java/bsh.jar
12606         fi
12607         if ! test -f $BSH_JAR; then
12608             AC_MSG_ERROR(bsh.jar not found.)
12609         fi
12610     else
12611         AC_MSG_RESULT([internal])
12612         SYSTEM_BSH=
12613         BUILD_TYPE="$BUILD_TYPE BSH"
12614     fi
12615 else
12616     AC_MSG_RESULT([no])
12617     ENABLE_SCRIPTING_BEANSHELL=
12618     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12620 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12621 AC_SUBST(SYSTEM_BSH)
12622 AC_SUBST(BSH_JAR)
12624 # scripting provider for JavaScript?
12625 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12626 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12627     AC_MSG_RESULT([yes])
12628     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12630     dnl ===================================================================
12631     dnl Check for system rhino
12632     dnl ===================================================================
12633     AC_MSG_CHECKING([which rhino to use])
12634     if test "$with_system_rhino" = "yes"; then
12635         AC_MSG_RESULT([external])
12636         SYSTEM_RHINO=TRUE
12637         if test -z $RHINO_JAR; then
12638             RHINO_JAR=/usr/share/java/js.jar
12639         fi
12640         if ! test -f $RHINO_JAR; then
12641             AC_MSG_ERROR(js.jar not found.)
12642         fi
12643     else
12644         AC_MSG_RESULT([internal])
12645         SYSTEM_RHINO=
12646         BUILD_TYPE="$BUILD_TYPE RHINO"
12647         NEED_ANT=TRUE
12648     fi
12649 else
12650     AC_MSG_RESULT([no])
12651     ENABLE_SCRIPTING_JAVASCRIPT=
12652     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12654 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12655 AC_SUBST(SYSTEM_RHINO)
12656 AC_SUBST(RHINO_JAR)
12658 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12659 # paths should be added to library search path. So lets put all 64-bit
12660 # platforms there.
12661 supports_multilib=
12662 case "$host_cpu" in
12663 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12664     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12665         supports_multilib="yes"
12666     fi
12667     ;;
12669     ;;
12670 esac
12672 dnl ===================================================================
12673 dnl QT5 Integration
12674 dnl ===================================================================
12676 QT5_CFLAGS=""
12677 QT5_LIBS=""
12678 QMAKE5="qmake"
12679 MOC5="moc"
12680 QT5_GOBJECT_CFLAGS=""
12681 QT5_GOBJECT_LIBS=""
12682 QT5_HAVE_GOBJECT=""
12683 QT5_PLATFORMS_SRCDIR=""
12684 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12685         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12686         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12687 then
12688     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12689     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12691     if test -n "$supports_multilib"; then
12692         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12693     fi
12695     qt5_test_include="QtWidgets/qapplication.h"
12696     if test "$_os" = "Emscripten"; then
12697         qt5_test_library="libQt5Widgets.a"
12698     else
12699         qt5_test_library="libQt5Widgets.so"
12700     fi
12702     dnl Check for qmake5
12703     if test -n "$QT5DIR"; then
12704         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12705     else
12706         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12707     fi
12708     if test "$QMAKE5" = "no"; then
12709         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12710     else
12711         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12712         if test -z "$qmake5_test_ver"; then
12713             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12714         fi
12715         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12716         qt5_minimal_minor="6"
12717         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12718             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12719         else
12720             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12721         fi
12722     fi
12724     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12725     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12726     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12727     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12729     AC_MSG_CHECKING([for Qt5 headers])
12730     qt5_incdir="no"
12731     for inc_dir in $qt5_incdirs; do
12732         if test -r "$inc_dir/$qt5_test_include"; then
12733             qt5_incdir="$inc_dir"
12734             break
12735         fi
12736     done
12737     AC_MSG_RESULT([$qt5_incdir])
12738     if test "x$qt5_incdir" = "xno"; then
12739         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12740     fi
12741     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12742     AC_LANG_PUSH([C++])
12743     save_CPPFLAGS=$CPPFLAGS
12744     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12745     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12746         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12747     CPPFLAGS=$save_CPPFLAGS
12748     AC_LANG_POP([C++])
12750     AC_MSG_CHECKING([for Qt5 libraries])
12751     qt5_libdir="no"
12752     for lib_dir in $qt5_libdirs; do
12753         if test -r "$lib_dir/$qt5_test_library"; then
12754             qt5_libdir="$lib_dir"
12755             break
12756         fi
12757     done
12758     AC_MSG_RESULT([$qt5_libdir])
12759     if test "x$qt5_libdir" = "xno"; then
12760         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12761     fi
12763     if test "$_os" = "Emscripten"; then
12764         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12765             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12766         fi
12767         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12768             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12769         fi
12770     fi
12772     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12773     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12774     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12775     if test "$_os" = "Emscripten"; then
12776         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12777     fi
12779     if test "$USING_X11" = TRUE; then
12780         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12781         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12782             QT5_HAVE_XCB_ICCCM=1
12783             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12784         ],[
12785             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)])
12786             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12787         ])
12788         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12789         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12790         QT5_USING_X11=1
12791         AC_DEFINE(QT5_USING_X11)
12792     fi
12794     dnl Check for Meta Object Compiler
12796     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12797     if test "$MOC5" = "no"; then
12798         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12799 the root of your Qt installation by exporting QT5DIR before running "configure".])
12800     fi
12802     if test "$test_gstreamer_1_0" = yes; then
12803         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12804                 QT5_HAVE_GOBJECT=1
12805                 AC_DEFINE(QT5_HAVE_GOBJECT)
12806             ],
12807             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12808         )
12809     fi
12811 AC_SUBST(QT5_CFLAGS)
12812 AC_SUBST(QT5_LIBS)
12813 AC_SUBST(MOC5)
12814 AC_SUBST(QT5_GOBJECT_CFLAGS)
12815 AC_SUBST(QT5_GOBJECT_LIBS)
12816 AC_SUBST(QT5_HAVE_GOBJECT)
12817 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12819 dnl ===================================================================
12820 dnl QT6 Integration
12821 dnl ===================================================================
12823 QT6_CFLAGS=""
12824 QT6_LIBS=""
12825 QMAKE6="qmake"
12826 MOC6="moc"
12827 QT6_PLATFORMS_SRCDIR=""
12828 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12829 then
12830     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12831     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12833     if test -n "$supports_multilib"; then
12834         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12835     fi
12837     qt6_test_include="QtWidgets/qapplication.h"
12838     if test "$_os" = "Emscripten"; then
12839         qt6_test_library="libQt6Widgets.a"
12840     else
12841         qt6_test_library="libQt6Widgets.so"
12842     fi
12844     dnl Check for qmake6
12845     if test -n "$QT6DIR"; then
12846         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12847     else
12848         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12849     fi
12850     if test "$QMAKE6" = "no"; then
12851         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12852     else
12853         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12854         if test -z "$qmake6_test_ver"; then
12855             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12856         fi
12857         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12858     fi
12860     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12861     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12862     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12863     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12865     AC_MSG_CHECKING([for Qt6 headers])
12866     qt6_incdir="no"
12867     for inc_dir in $qt6_incdirs; do
12868         if test -r "$inc_dir/$qt6_test_include"; then
12869             qt6_incdir="$inc_dir"
12870             break
12871         fi
12872     done
12873     AC_MSG_RESULT([$qt6_incdir])
12874     if test "x$qt6_incdir" = "xno"; then
12875         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12876     fi
12877     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
12878     AC_LANG_PUSH([C++])
12879     save_CPPFLAGS=$CPPFLAGS
12880     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
12881     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12882         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12883     CPPFLAGS=$save_CPPFLAGS
12884     AC_LANG_POP([C++])
12886     AC_MSG_CHECKING([for Qt6 libraries])
12887     qt6_libdir="no"
12888     for lib_dir in $qt6_libdirs; do
12889         if test -r "$lib_dir/$qt6_test_library"; then
12890             qt6_libdir="$lib_dir"
12891             break
12892         fi
12893     done
12894     AC_MSG_RESULT([$qt6_libdir])
12895     if test "x$qt6_libdir" = "xno"; then
12896         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12897     fi
12899     if test "$_os" = "Emscripten"; then
12900         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12901             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12902         fi
12903         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
12904             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
12905         fi
12906     fi
12908     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12909     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12910     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
12911     if test "$_os" = "Emscripten"; then
12912         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
12913     fi
12915     if test "$USING_X11" = TRUE; then
12916         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
12917         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
12918         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
12919         QT6_USING_X11=1
12920         AC_DEFINE(QT6_USING_X11)
12921     fi
12923     dnl Check for Meta Object Compiler
12925     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
12926     if test "$MOC6" = "no"; then
12927         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12928 the root of your Qt installation by exporting QT6DIR before running "configure".])
12929     fi
12931 AC_SUBST(QT6_CFLAGS)
12932 AC_SUBST(QT6_LIBS)
12933 AC_SUBST(MOC6)
12934 AC_SUBST(QT6_PLATFORMS_SRCDIR)
12936 dnl ===================================================================
12937 dnl KF5 Integration
12938 dnl ===================================================================
12940 KF5_CFLAGS=""
12941 KF5_LIBS=""
12942 KF5_CONFIG="kf5-config"
12943 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12944         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12945 then
12946     if test "$OS" = "HAIKU"; then
12947         haiku_arch="`echo $RTL_ARCH | tr X x`"
12948         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12949         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12950     fi
12952     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12953     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12954     if test -n "$supports_multilib"; then
12955         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12956     fi
12958     kf5_test_include="KF5/kcoreaddons_version.h"
12959     kf5_test_library="libKF5CoreAddons.so"
12960     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12962     dnl kf5 KDE4 support compatibility installed
12963     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12964     if test "$KF5_CONFIG" != "no"; then
12965         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12966         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12967     fi
12969     dnl Check for KF5 headers
12970     AC_MSG_CHECKING([for KF5 headers])
12971     kf5_incdir="no"
12972     for kf5_check in $kf5_incdirs; do
12973         if test -r "$kf5_check/$kf5_test_include"; then
12974             kf5_incdir="$kf5_check/KF5"
12975             break
12976         fi
12977     done
12978     AC_MSG_RESULT([$kf5_incdir])
12979     if test "x$kf5_incdir" = "xno"; then
12980         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12981     fi
12983     dnl Check for KF5 libraries
12984     AC_MSG_CHECKING([for KF5 libraries])
12985     kf5_libdir="no"
12986     for kf5_check in $kf5_libdirs; do
12987         if test -r "$kf5_check/$kf5_test_library"; then
12988             kf5_libdir="$kf5_check"
12989             break
12990         fi
12991     done
12993     AC_MSG_RESULT([$kf5_libdir])
12994     if test "x$kf5_libdir" = "xno"; then
12995         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12996     fi
12998     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"
12999     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13000     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13002     if test "$USING_X11" = TRUE; then
13003         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13004     fi
13006     AC_LANG_PUSH([C++])
13007     save_CXXFLAGS=$CXXFLAGS
13008     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13009     AC_MSG_CHECKING([whether KDE is >= 5.0])
13010        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13011 #include <kcoreaddons_version.h>
13013 int main(int argc, char **argv) {
13014        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13015        else return 1;
13017        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13018     CXXFLAGS=$save_CXXFLAGS
13019     AC_LANG_POP([C++])
13021 AC_SUBST(KF5_CFLAGS)
13022 AC_SUBST(KF5_LIBS)
13024 dnl ===================================================================
13025 dnl Test whether to include Evolution 2 support
13026 dnl ===================================================================
13027 AC_MSG_CHECKING([whether to enable evolution 2 support])
13028 if test "$enable_evolution2" = yes; then
13029     AC_MSG_RESULT([yes])
13030     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13031     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13032     FilterLibs "${GOBJECT_LIBS}"
13033     GOBJECT_LIBS="${filteredlibs}"
13034     ENABLE_EVOAB2="TRUE"
13035 else
13036     AC_MSG_RESULT([no])
13038 AC_SUBST(ENABLE_EVOAB2)
13039 AC_SUBST(GOBJECT_CFLAGS)
13040 AC_SUBST(GOBJECT_LIBS)
13042 dnl ===================================================================
13043 dnl Test which themes to include
13044 dnl ===================================================================
13045 AC_MSG_CHECKING([which themes to include])
13046 # if none given use default subset of available themes
13047 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13048     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"
13051 WITH_THEMES=""
13052 if test "x$with_theme" != "xno"; then
13053     for theme in $with_theme; do
13054         case $theme in
13055         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" ;;
13056         default) real_theme=colibre ;;
13057         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13058         esac
13059         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13060     done
13062 AC_MSG_RESULT([$WITH_THEMES])
13063 AC_SUBST([WITH_THEMES])
13064 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13065 for theme in $with_theme; do
13066     case $theme in
13067     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13068     *) ;;
13069     esac
13070 done
13072 ###############################################################################
13073 # Extensions checking
13074 ###############################################################################
13075 AC_MSG_CHECKING([for extensions integration])
13076 if test "x$enable_extension_integration" != "xno"; then
13077     WITH_EXTENSION_INTEGRATION=TRUE
13078     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13079     AC_MSG_RESULT([yes, use integration])
13080 else
13081     WITH_EXTENSION_INTEGRATION=
13082     AC_MSG_RESULT([no, do not integrate])
13084 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13086 dnl Should any extra extensions be included?
13087 dnl There are standalone tests for each of these below.
13088 WITH_EXTRA_EXTENSIONS=
13089 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13091 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13092 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13093 if test "x$with_java" != "xno"; then
13094     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13095     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13098 AC_MSG_CHECKING([whether to build opens___.ttf])
13099 if test "$enable_build_opensymbol" = "yes"; then
13100     AC_MSG_RESULT([yes])
13101     AC_PATH_PROG(FONTFORGE, fontforge)
13102     if test -z "$FONTFORGE"; then
13103         AC_MSG_ERROR([fontforge not installed])
13104     fi
13105 else
13106     AC_MSG_RESULT([no])
13107     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13109 AC_SUBST(FONTFORGE)
13111 dnl ===================================================================
13112 dnl Test whether to include fonts
13113 dnl ===================================================================
13114 AC_MSG_CHECKING([whether to include third-party fonts])
13115 if test "$with_fonts" != "no"; then
13116     AC_MSG_RESULT([yes])
13117     WITH_FONTS=TRUE
13118     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13119     AC_DEFINE(HAVE_MORE_FONTS)
13120 else
13121     AC_MSG_RESULT([no])
13122     WITH_FONTS=
13123     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13125 AC_SUBST(WITH_FONTS)
13128 dnl ===================================================================
13129 dnl Test whether to enable online update service
13130 dnl ===================================================================
13131 AC_MSG_CHECKING([whether to enable online update])
13132 ENABLE_ONLINE_UPDATE=
13133 ENABLE_ONLINE_UPDATE_MAR=
13134 UPDATE_CONFIG=
13135 if test "$enable_online_update" = ""; then
13136     AC_MSG_RESULT([no])
13137 else
13138     if test "$enable_online_update" = "mar"; then
13139         AC_MSG_RESULT([yes - MAR-based online update])
13140         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13141         if test "$with_update_config" = ""; then
13142             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13143         fi
13144         UPDATE_CONFIG="$with_update_config"
13145         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13146     elif test "$enable_online_update" = "yes"; then
13147         AC_MSG_RESULT([yes])
13148         ENABLE_ONLINE_UPDATE="TRUE"
13149     else
13150         AC_MSG_RESULT([no])
13151     fi
13153 AC_SUBST(ENABLE_ONLINE_UPDATE)
13154 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13155 AC_SUBST(UPDATE_CONFIG)
13158 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13159 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13160     if test "x$with_privacy_policy_url" = "xundefined"; then
13161         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13162     fi
13164 AC_SUBST(PRIVACY_POLICY_URL)
13165 dnl ===================================================================
13166 dnl Test whether we need bzip2
13167 dnl ===================================================================
13168 SYSTEM_BZIP2=
13169 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13170     AC_MSG_CHECKING([whether to use system bzip2])
13171     if test "$with_system_bzip2" = yes; then
13172         SYSTEM_BZIP2=TRUE
13173         AC_MSG_RESULT([yes])
13174         PKG_CHECK_MODULES(BZIP2, bzip2)
13175         FilterLibs "${BZIP2_LIBS}"
13176         BZIP2_LIBS="${filteredlibs}"
13177     else
13178         AC_MSG_RESULT([no])
13179         BUILD_TYPE="$BUILD_TYPE BZIP2"
13180     fi
13182 AC_SUBST(SYSTEM_BZIP2)
13183 AC_SUBST(BZIP2_CFLAGS)
13184 AC_SUBST(BZIP2_LIBS)
13186 dnl ===================================================================
13187 dnl Test whether to enable extension update
13188 dnl ===================================================================
13189 AC_MSG_CHECKING([whether to enable extension update])
13190 ENABLE_EXTENSION_UPDATE=
13191 if test "x$enable_extension_update" = "xno"; then
13192     AC_MSG_RESULT([no])
13193 else
13194     AC_MSG_RESULT([yes])
13195     ENABLE_EXTENSION_UPDATE="TRUE"
13196     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13197     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13199 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13202 dnl ===================================================================
13203 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13204 dnl ===================================================================
13205 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13206 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13207     AC_MSG_RESULT([no])
13208     ENABLE_SILENT_MSI=
13209 else
13210     AC_MSG_RESULT([yes])
13211     ENABLE_SILENT_MSI=TRUE
13212     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13214 AC_SUBST(ENABLE_SILENT_MSI)
13216 AC_MSG_CHECKING([whether and how to use Xinerama])
13217 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13218     if test "$x_libraries" = "default_x_libraries"; then
13219         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13220         if test "x$XINERAMALIB" = x; then
13221            XINERAMALIB="/usr/lib"
13222         fi
13223     else
13224         XINERAMALIB="$x_libraries"
13225     fi
13226     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13227         # we have both versions, let the user decide but use the dynamic one
13228         # per default
13229         USE_XINERAMA=TRUE
13230         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13231             XINERAMA_LINK=dynamic
13232         else
13233             XINERAMA_LINK=static
13234         fi
13235     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13236         # we have only the dynamic version
13237         USE_XINERAMA=TRUE
13238         XINERAMA_LINK=dynamic
13239     elif test -e "$XINERAMALIB/libXinerama.a"; then
13240         # static version
13241         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13242             USE_XINERAMA=TRUE
13243             XINERAMA_LINK=static
13244         else
13245             USE_XINERAMA=
13246             XINERAMA_LINK=none
13247         fi
13248     else
13249         # no Xinerama
13250         USE_XINERAMA=
13251         XINERAMA_LINK=none
13252     fi
13253     if test "$USE_XINERAMA" = "TRUE"; then
13254         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13255         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13256             [AC_MSG_ERROR(Xinerama header not found.)], [])
13257         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13258         if test "x$XEXTLIB" = x; then
13259            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13260         fi
13261         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13262         if test "$_os" = "FreeBSD"; then
13263             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13264         fi
13265         if test "$_os" = "Linux"; then
13266             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13267         fi
13268         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13269             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13270     else
13271         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13272     fi
13273 else
13274     USE_XINERAMA=
13275     XINERAMA_LINK=none
13276     AC_MSG_RESULT([no])
13278 AC_SUBST(USE_XINERAMA)
13279 AC_SUBST(XINERAMA_LINK)
13281 dnl ===================================================================
13282 dnl Test whether to build cairo or rely on the system version
13283 dnl ===================================================================
13285 if test "$test_cairo" = "yes"; then
13286     AC_MSG_CHECKING([whether to use the system cairo])
13288     : ${with_system_cairo:=$with_system_libs}
13289     if test "$with_system_cairo" = "yes"; then
13290         SYSTEM_CAIRO=TRUE
13291         AC_MSG_RESULT([yes])
13293         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13294         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13295         FilterLibs "${CAIRO_LIBS}"
13296         CAIRO_LIBS="${filteredlibs}"
13298         if test "$test_xrender" = "yes"; then
13299             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13300             AC_LANG_PUSH([C])
13301             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13302 #ifdef PictStandardA8
13303 #else
13304       return fail;
13305 #endif
13306 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13308             AC_LANG_POP([C])
13309         fi
13310     else
13311         AC_MSG_RESULT([no])
13312         BUILD_TYPE="$BUILD_TYPE CAIRO"
13313     fi
13315     if test "$enable_cairo_canvas" != no; then
13316         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13317         ENABLE_CAIRO_CANVAS=TRUE
13318     fi
13321 AC_SUBST(CAIRO_CFLAGS)
13322 AC_SUBST(CAIRO_LIBS)
13323 AC_SUBST(ENABLE_CAIRO_CANVAS)
13324 AC_SUBST(SYSTEM_CAIRO)
13326 dnl ===================================================================
13327 dnl Test whether to use avahi
13328 dnl ===================================================================
13329 if test "$_os" = "WINNT"; then
13330     # Windows uses bundled mDNSResponder
13331     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13332 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13333     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13334                       [ENABLE_AVAHI="TRUE"])
13335     AC_DEFINE(HAVE_FEATURE_AVAHI)
13336     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13337     FilterLibs "${AVAHI_LIBS}"
13338     AVAHI_LIBS="${filteredlibs}"
13341 AC_SUBST(ENABLE_AVAHI)
13342 AC_SUBST(AVAHI_CFLAGS)
13343 AC_SUBST(AVAHI_LIBS)
13345 dnl ===================================================================
13346 dnl Test whether to use liblangtag
13347 dnl ===================================================================
13348 SYSTEM_LIBLANGTAG=
13349 AC_MSG_CHECKING([whether to use system liblangtag])
13350 if test "$with_system_liblangtag" = yes; then
13351     SYSTEM_LIBLANGTAG=TRUE
13352     AC_MSG_RESULT([yes])
13353     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13354     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13355     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13356     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13357     FilterLibs "${LIBLANGTAG_LIBS}"
13358     LIBLANGTAG_LIBS="${filteredlibs}"
13359 else
13360     SYSTEM_LIBLANGTAG=
13361     AC_MSG_RESULT([no])
13362     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13363     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13364     if test "$COM" = "MSC"; then
13365         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13366     else
13367         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13368     fi
13370 AC_SUBST(SYSTEM_LIBLANGTAG)
13371 AC_SUBST(LIBLANGTAG_CFLAGS)
13372 AC_SUBST(LIBLANGTAG_LIBS)
13374 dnl ===================================================================
13375 dnl Test whether to build libpng or rely on the system version
13376 dnl ===================================================================
13378 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13380 dnl ===================================================================
13381 dnl Check for runtime JVM search path
13382 dnl ===================================================================
13383 if test "$ENABLE_JAVA" != ""; then
13384     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13385     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13386         AC_MSG_RESULT([yes])
13387         if ! test -d "$with_jvm_path"; then
13388             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13389         fi
13390         if ! test -d "$with_jvm_path"jvm; then
13391             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13392         fi
13393         JVM_ONE_PATH_CHECK="$with_jvm_path"
13394         AC_SUBST(JVM_ONE_PATH_CHECK)
13395     else
13396         AC_MSG_RESULT([no])
13397     fi
13400 dnl ===================================================================
13401 dnl Test for the presence of Ant and that it works
13402 dnl ===================================================================
13404 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13405     ANT_HOME=; export ANT_HOME
13406     WITH_ANT_HOME=; export WITH_ANT_HOME
13407     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13408         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13409             if test "$_os" = "WINNT"; then
13410                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13411             else
13412                 with_ant_home="$LODE_HOME/opt/ant"
13413             fi
13414         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13415             with_ant_home="$LODE_HOME/opt/ant"
13416         fi
13417     fi
13418     if test -z "$with_ant_home"; then
13419         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13420     else
13421         if test "$_os" = "WINNT"; then
13422             # AC_PATH_PROGS needs unix path
13423             with_ant_home=`cygpath -u "$with_ant_home"`
13424         fi
13425         AbsolutePath "$with_ant_home"
13426         with_ant_home=$absolute_path
13427         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13428         WITH_ANT_HOME=$with_ant_home
13429         ANT_HOME=$with_ant_home
13430     fi
13432     if test -z "$ANT"; then
13433         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13434     else
13435         # resolve relative or absolute symlink
13436         while test -h "$ANT"; do
13437             a_cwd=`pwd`
13438             a_basename=`basename "$ANT"`
13439             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13440             cd "`dirname "$ANT"`"
13441             cd "`dirname "$a_script"`"
13442             ANT="`pwd`"/"`basename "$a_script"`"
13443             cd "$a_cwd"
13444         done
13446         AC_MSG_CHECKING([if $ANT works])
13447         mkdir -p conftest.dir
13448         a_cwd=$(pwd)
13449         cd conftest.dir
13450         cat > conftest.java << EOF
13451         public class conftest {
13452             int testmethod(int a, int b) {
13453                     return a + b;
13454             }
13455         }
13458         cat > conftest.xml << EOF
13459         <project name="conftest" default="conftest">
13460         <target name="conftest">
13461             <javac srcdir="." includes="conftest.java">
13462             </javac>
13463         </target>
13464         </project>
13467         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13468         if test $? = 0 -a -f ./conftest.class; then
13469             AC_MSG_RESULT([Ant works])
13470             if test -z "$WITH_ANT_HOME"; then
13471                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13472                 if test -z "$ANT_HOME"; then
13473                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13474                 fi
13475             else
13476                 ANT_HOME="$WITH_ANT_HOME"
13477             fi
13478         else
13479             echo "configure: Ant test failed" >&5
13480             cat conftest.java >&5
13481             cat conftest.xml >&5
13482             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13483         fi
13484         cd "$a_cwd"
13485         rm -fr conftest.dir
13486     fi
13487     if test -z "$ANT_HOME"; then
13488         ANT_HOME="NO_ANT_HOME"
13489     else
13490         PathFormat "$ANT_HOME"
13491         ANT_HOME="$formatted_path"
13492         PathFormat "$ANT"
13493         ANT="$formatted_path"
13494     fi
13496     dnl Checking for ant.jar
13497     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13498         AC_MSG_CHECKING([Ant lib directory])
13499         if test -f $ANT_HOME/lib/ant.jar; then
13500             ANT_LIB="$ANT_HOME/lib"
13501         else
13502             if test -f $ANT_HOME/ant.jar; then
13503                 ANT_LIB="$ANT_HOME"
13504             else
13505                 if test -f /usr/share/java/ant.jar; then
13506                     ANT_LIB=/usr/share/java
13507                 else
13508                     if test -f /usr/share/ant-core/lib/ant.jar; then
13509                         ANT_LIB=/usr/share/ant-core/lib
13510                     else
13511                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13512                             ANT_LIB="$ANT_HOME/lib/ant"
13513                         else
13514                             if test -f /usr/share/lib/ant/ant.jar; then
13515                                 ANT_LIB=/usr/share/lib/ant
13516                             else
13517                                 AC_MSG_ERROR([Ant libraries not found!])
13518                             fi
13519                         fi
13520                     fi
13521                 fi
13522             fi
13523         fi
13524         PathFormat "$ANT_LIB"
13525         ANT_LIB="$formatted_path"
13526         AC_MSG_RESULT([Ant lib directory found.])
13527     fi
13529     ant_minver=1.6.0
13530     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13532     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13533     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13534     ant_version_major=`echo $ant_version | cut -d. -f1`
13535     ant_version_minor=`echo $ant_version | cut -d. -f2`
13536     echo "configure: ant_version $ant_version " >&5
13537     echo "configure: ant_version_major $ant_version_major " >&5
13538     echo "configure: ant_version_minor $ant_version_minor " >&5
13539     if test "$ant_version_major" -ge "2"; then
13540         AC_MSG_RESULT([yes, $ant_version])
13541     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13542         AC_MSG_RESULT([yes, $ant_version])
13543     else
13544         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13545     fi
13547     rm -f conftest* core core.* *.core
13549 AC_SUBST(ANT)
13550 AC_SUBST(ANT_HOME)
13551 AC_SUBST(ANT_LIB)
13553 OOO_JUNIT_JAR=
13554 HAMCREST_JAR=
13555 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13556     AC_MSG_CHECKING([for JUnit 4])
13557     if test "$with_junit" = "yes"; then
13558         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13559             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13560         elif test -e /usr/share/java/junit4.jar; then
13561             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13562         else
13563            if test -e /usr/share/lib/java/junit.jar; then
13564               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13565            else
13566               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13567            fi
13568         fi
13569     else
13570         OOO_JUNIT_JAR=$with_junit
13571     fi
13572     if test "$_os" = "WINNT"; then
13573         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13574     fi
13575     printf 'import org.junit.Before;' > conftest.java
13576     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13577         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13578     else
13579         AC_MSG_ERROR(
13580 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13581  specify its pathname via --with-junit=..., or disable it via --without-junit])
13582     fi
13583     rm -f conftest.class conftest.java
13584     if test $OOO_JUNIT_JAR != ""; then
13585         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13586     fi
13588     AC_MSG_CHECKING([for included Hamcrest])
13589     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13590     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13591         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13592     else
13593         AC_MSG_RESULT([Not included])
13594         AC_MSG_CHECKING([for standalone hamcrest jar.])
13595         if test "$with_hamcrest" = "yes"; then
13596             if test -e /usr/share/lib/java/hamcrest.jar; then
13597                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13598             elif test -e /usr/share/java/hamcrest/core.jar; then
13599                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13600             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13601                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13602             else
13603                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13604             fi
13605         else
13606             HAMCREST_JAR=$with_hamcrest
13607         fi
13608         if test "$_os" = "WINNT"; then
13609             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13610         fi
13611         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13612             AC_MSG_RESULT([$HAMCREST_JAR])
13613         else
13614             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),
13615                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13616         fi
13617     fi
13618     rm -f conftest.class conftest.java
13620 AC_SUBST(OOO_JUNIT_JAR)
13621 AC_SUBST(HAMCREST_JAR)
13624 AC_SUBST(SCPDEFS)
13627 # check for wget and curl
13629 WGET=
13630 CURL=
13632 if test "$enable_fetch_external" != "no"; then
13634 CURL=`which curl 2>/dev/null`
13636 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13637     # wget new enough?
13638     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13639     if test $? -eq 0; then
13640         WGET=$i
13641         break
13642     fi
13643 done
13645 if test -z "$WGET" -a -z "$CURL"; then
13646     AC_MSG_ERROR([neither wget nor curl found!])
13651 AC_SUBST(WGET)
13652 AC_SUBST(CURL)
13655 # check for sha256sum
13657 SHA256SUM=
13659 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13660     eval "$i -a 256 --version" > /dev/null 2>&1
13661     ret=$?
13662     if test $ret -eq 0; then
13663         SHA256SUM="$i -a 256"
13664         break
13665     fi
13666 done
13668 if test -z "$SHA256SUM"; then
13669     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13670         eval "$i --version" > /dev/null 2>&1
13671         ret=$?
13672         if test $ret -eq 0; then
13673             SHA256SUM=$i
13674             break
13675         fi
13676     done
13679 if test -z "$SHA256SUM"; then
13680     AC_MSG_ERROR([no sha256sum found!])
13683 AC_SUBST(SHA256SUM)
13685 dnl ===================================================================
13686 dnl Dealing with l10n options
13687 dnl ===================================================================
13688 AC_MSG_CHECKING([which languages to be built])
13689 # get list of all languages
13690 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13691 # the sed command does the following:
13692 #   + if a line ends with a backslash, append the next line to it
13693 #   + adds " on the beginning of the value (after =)
13694 #   + adds " at the end of the value
13695 #   + removes en-US; we want to put it on the beginning
13696 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13697 [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)]
13698 ALL_LANGS="en-US $completelangiso"
13699 # check the configured localizations
13700 WITH_LANG="$with_lang"
13702 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13703 # (Norwegian is "nb" and "nn".)
13704 if test "$WITH_LANG" = "no"; then
13705     WITH_LANG=
13708 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13709     AC_MSG_RESULT([en-US])
13710 else
13711     AC_MSG_RESULT([$WITH_LANG])
13712     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13713     if test -z "$MSGFMT"; then
13714         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13715             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13716         elif test -x "/opt/lo/bin/msgfmt"; then
13717             MSGFMT="/opt/lo/bin/msgfmt"
13718         else
13719             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13720             if test -z "$MSGFMT"; then
13721                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13722             fi
13723         fi
13724     fi
13725     if test -z "$MSGUNIQ"; then
13726         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13727             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13728         elif test -x "/opt/lo/bin/msguniq"; then
13729             MSGUNIQ="/opt/lo/bin/msguniq"
13730         else
13731             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13732             if test -z "$MSGUNIQ"; then
13733                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13734             fi
13735         fi
13736     fi
13738 AC_SUBST(MSGFMT)
13739 AC_SUBST(MSGUNIQ)
13740 # check that the list is valid
13741 for lang in $WITH_LANG; do
13742     test "$lang" = "ALL" && continue
13743     # need to check for the exact string, so add space before and after the list of all languages
13744     for vl in $ALL_LANGS; do
13745         if test "$vl" = "$lang"; then
13746            break
13747         fi
13748     done
13749     if test "$vl" != "$lang"; then
13750         # if you're reading this - you prolly quoted your languages remove the quotes ...
13751         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13752     fi
13753 done
13754 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13755     echo $WITH_LANG | grep -q en-US
13756     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13758 # list with substituted ALL
13759 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13760 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13761 test "$WITH_LANG" = "en-US" && WITH_LANG=
13762 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13763     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13764     ALL_LANGS=`echo $ALL_LANGS qtz`
13766 AC_SUBST(ALL_LANGS)
13767 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13768 AC_SUBST(WITH_LANG)
13769 AC_SUBST(WITH_LANG_LIST)
13770 AC_SUBST(GIT_NEEDED_SUBMODULES)
13772 WITH_POOR_HELP_LOCALIZATIONS=
13773 if test -d "$SRC_ROOT/translations/source"; then
13774     for l in `ls -1 $SRC_ROOT/translations/source`; do
13775         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13776             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13777         fi
13778     done
13780 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13782 if test -n "$with_locales"; then
13783     WITH_LOCALES="$with_locales"
13785     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13786     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13787     # config_host/config_locales.h.in
13788     for locale in $WITH_LOCALES; do
13789         lang=${locale%_*}
13791         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13793         case $lang in
13794         hi|mr*ne)
13795             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13796             ;;
13797         bg|ru)
13798             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13799             ;;
13800         esac
13801     done
13802 else
13803     AC_DEFINE(WITH_LOCALE_ALL)
13805 AC_SUBST(WITH_LOCALES)
13807 dnl git submodule update --reference
13808 dnl ===================================================================
13809 if test -n "${GIT_REFERENCE_SRC}"; then
13810     for repo in ${GIT_NEEDED_SUBMODULES}; do
13811         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13812             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13813         fi
13814     done
13816 AC_SUBST(GIT_REFERENCE_SRC)
13818 dnl git submodules linked dirs
13819 dnl ===================================================================
13820 if test -n "${GIT_LINK_SRC}"; then
13821     for repo in ${GIT_NEEDED_SUBMODULES}; do
13822         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13823             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13824         fi
13825     done
13827 AC_SUBST(GIT_LINK_SRC)
13829 dnl branding
13830 dnl ===================================================================
13831 AC_MSG_CHECKING([for alternative branding images directory])
13832 # initialize mapped arrays
13833 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13834 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13836 if test -z "$with_branding" -o "$with_branding" = "no"; then
13837     AC_MSG_RESULT([none])
13838     DEFAULT_BRAND_IMAGES="$brand_files"
13839 else
13840     if ! test -d $with_branding ; then
13841         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13842     else
13843         AC_MSG_RESULT([$with_branding])
13844         CUSTOM_BRAND_DIR="$with_branding"
13845         for lfile in $brand_files
13846         do
13847             if ! test -f $with_branding/$lfile ; then
13848                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13849                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13850             else
13851                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13852             fi
13853         done
13854         check_for_progress="yes"
13855     fi
13857 AC_SUBST([BRAND_INTRO_IMAGES])
13858 AC_SUBST([CUSTOM_BRAND_DIR])
13859 AC_SUBST([CUSTOM_BRAND_IMAGES])
13860 AC_SUBST([DEFAULT_BRAND_IMAGES])
13863 AC_MSG_CHECKING([for 'intro' progress settings])
13864 PROGRESSBARCOLOR=
13865 PROGRESSSIZE=
13866 PROGRESSPOSITION=
13867 PROGRESSFRAMECOLOR=
13868 PROGRESSTEXTCOLOR=
13869 PROGRESSTEXTBASELINE=
13871 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13872     source "$with_branding/progress.conf"
13873     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13874 else
13875     AC_MSG_RESULT([none])
13878 AC_SUBST(PROGRESSBARCOLOR)
13879 AC_SUBST(PROGRESSSIZE)
13880 AC_SUBST(PROGRESSPOSITION)
13881 AC_SUBST(PROGRESSFRAMECOLOR)
13882 AC_SUBST(PROGRESSTEXTCOLOR)
13883 AC_SUBST(PROGRESSTEXTBASELINE)
13886 dnl ===================================================================
13887 dnl Custom build version
13888 dnl ===================================================================
13889 AC_MSG_CHECKING([for extra build ID])
13890 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13891     EXTRA_BUILDID="$with_extra_buildid"
13893 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13894 if test -n "$EXTRA_BUILDID" ; then
13895     AC_MSG_RESULT([$EXTRA_BUILDID])
13896 else
13897     AC_MSG_RESULT([not set])
13899 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13901 OOO_VENDOR=
13902 AC_MSG_CHECKING([for vendor])
13903 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13904     OOO_VENDOR="$USERNAME"
13906     if test -z "$OOO_VENDOR"; then
13907         OOO_VENDOR="$USER"
13908     fi
13910     if test -z "$OOO_VENDOR"; then
13911         OOO_VENDOR="`id -u -n`"
13912     fi
13914     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13915 else
13916     OOO_VENDOR="$with_vendor"
13917     AC_MSG_RESULT([$OOO_VENDOR])
13919 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13920 AC_SUBST(OOO_VENDOR)
13922 if test "$_os" = "Android" ; then
13923     ANDROID_PACKAGE_NAME=
13924     AC_MSG_CHECKING([for Android package name])
13925     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13926         if test -n "$ENABLE_DEBUG"; then
13927             # Default to the package name that makes ndk-gdb happy.
13928             ANDROID_PACKAGE_NAME="org.libreoffice"
13929         else
13930             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13931         fi
13933         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13934     else
13935         ANDROID_PACKAGE_NAME="$with_android_package_name"
13936         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13937     fi
13938     AC_SUBST(ANDROID_PACKAGE_NAME)
13941 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13942 if test "$with_compat_oowrappers" = "yes"; then
13943     WITH_COMPAT_OOWRAPPERS=TRUE
13944     AC_MSG_RESULT(yes)
13945 else
13946     WITH_COMPAT_OOWRAPPERS=
13947     AC_MSG_RESULT(no)
13949 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13951 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13952 AC_MSG_CHECKING([for install dirname])
13953 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13954     INSTALLDIRNAME="$with_install_dirname"
13956 AC_MSG_RESULT([$INSTALLDIRNAME])
13957 AC_SUBST(INSTALLDIRNAME)
13959 AC_MSG_CHECKING([for prefix])
13960 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13961 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13962 PREFIXDIR="$prefix"
13963 AC_MSG_RESULT([$PREFIXDIR])
13964 AC_SUBST(PREFIXDIR)
13966 LIBDIR=[$(eval echo $(eval echo $libdir))]
13967 AC_SUBST(LIBDIR)
13969 DATADIR=[$(eval echo $(eval echo $datadir))]
13970 AC_SUBST(DATADIR)
13972 MANDIR=[$(eval echo $(eval echo $mandir))]
13973 AC_SUBST(MANDIR)
13975 DOCDIR=[$(eval echo $(eval echo $docdir))]
13976 AC_SUBST(DOCDIR)
13978 BINDIR=[$(eval echo $(eval echo $bindir))]
13979 AC_SUBST(BINDIR)
13981 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13982 AC_SUBST(INSTALLDIR)
13984 TESTINSTALLDIR="${BUILDDIR}/test-install"
13985 AC_SUBST(TESTINSTALLDIR)
13988 # ===================================================================
13989 # OAuth2 id and secrets
13990 # ===================================================================
13992 AC_MSG_CHECKING([for Google Drive client id and secret])
13993 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13994     AC_MSG_RESULT([not set])
13995     GDRIVE_CLIENT_ID="\"\""
13996     GDRIVE_CLIENT_SECRET="\"\""
13997 else
13998     AC_MSG_RESULT([set])
13999     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14000     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14002 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14003 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14005 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14006 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14007     AC_MSG_RESULT([not set])
14008     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14009     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14010 else
14011     AC_MSG_RESULT([set])
14012     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14013     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14015 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14016 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14018 AC_MSG_CHECKING([for OneDrive client id and secret])
14019 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14020     AC_MSG_RESULT([not set])
14021     ONEDRIVE_CLIENT_ID="\"\""
14022     ONEDRIVE_CLIENT_SECRET="\"\""
14023 else
14024     AC_MSG_RESULT([set])
14025     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14026     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14028 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14029 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14032 dnl ===================================================================
14033 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14034 dnl --enable-dependency-tracking configure option
14035 dnl ===================================================================
14036 AC_MSG_CHECKING([whether to enable dependency tracking])
14037 if test "$enable_dependency_tracking" = "no"; then
14038     nodep=TRUE
14039     AC_MSG_RESULT([no])
14040 else
14041     AC_MSG_RESULT([yes])
14043 AC_SUBST(nodep)
14045 dnl ===================================================================
14046 dnl Number of CPUs to use during the build
14047 dnl ===================================================================
14048 AC_MSG_CHECKING([for number of processors to use])
14049 # plain --with-parallelism is just the default
14050 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14051     if test "$with_parallelism" = "no"; then
14052         PARALLELISM=0
14053     else
14054         PARALLELISM=$with_parallelism
14055     fi
14056 else
14057     if test "$enable_icecream" = "yes"; then
14058         PARALLELISM="40"
14059     else
14060         case `uname -s` in
14062         Darwin|FreeBSD|NetBSD|OpenBSD)
14063             PARALLELISM=`sysctl -n hw.ncpu`
14064             ;;
14066         Linux)
14067             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14068         ;;
14069         # what else than above does profit here *and* has /proc?
14070         *)
14071             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14072             ;;
14073         esac
14075         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14076         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14077     fi
14080 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14081     if test -z "$with_parallelism"; then
14082             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14083             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14084             PARALLELISM="1"
14085     else
14086         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."
14087     fi
14090 if test $PARALLELISM -eq 0; then
14091     AC_MSG_RESULT([explicit make -j option needed])
14092 else
14093     AC_MSG_RESULT([$PARALLELISM])
14095 AC_SUBST(PARALLELISM)
14097 IWYU_PATH="$with_iwyu"
14098 AC_SUBST(IWYU_PATH)
14099 if test ! -z "$IWYU_PATH"; then
14100     if test ! -f "$IWYU_PATH"; then
14101         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14102     fi
14106 # Set up ILIB for MSVC build
14108 ILIB1=
14109 if test "$build_os" = "cygwin"; then
14110     ILIB="."
14111     if test -n "$JAVA_HOME"; then
14112         ILIB="$ILIB;$JAVA_HOME/lib"
14113     fi
14114     ILIB1=-link
14115     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14116     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14117     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14118     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14119     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14120         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14121         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14122     fi
14123     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14124     ucrtlibpath_formatted=$formatted_path
14125     ILIB="$ILIB;$ucrtlibpath_formatted"
14126     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14127     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14128         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14129     else
14130         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14131     fi
14133     if test "$cross_compiling" != "yes"; then
14134         ILIB_FOR_BUILD="$ILIB"
14135     fi
14137 AC_SUBST(ILIB)
14138 AC_SUBST(ILIB_FOR_BUILD)
14140 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14141 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14142 dnl from consteval constructor initializing const variable",
14143 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14144 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14145 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14146 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14147 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14148 dnl constructor in ternary expression (/std:c++latest)":
14149 AC_LANG_PUSH([C++])
14150 save_CXX=$CXX
14151 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14152     CXX="env LIB=$ILIB $CXX"
14154 save_CXXFLAGS=$CXXFLAGS
14155 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14156 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14157         struct S {
14158             consteval S() { i = 1; }
14159             int i = 0;
14160         };
14161         S const s;
14163         struct S1 { consteval S1(int) {} };
14164         struct S2 {
14165             S1 x;
14166             S2(): x(0) {}
14167         };
14169         struct S3 {
14170             consteval S3() {}
14171             union {
14172                 int a;
14173                 unsigned b = 0;
14174             };
14175         };
14176         void f() { S3(); }
14178         struct S4 { consteval S4() = default; };
14179         void f4(bool b) { b ? S4() : S4(); }
14180     ], [
14181         return (s.i == 1) ? 0 : 1;
14182     ])], [
14183         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14184         AC_MSG_RESULT([yes])
14185     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14186 CXX=$save_CXX
14187 CXXFLAGS=$save_CXXFLAGS
14188 AC_LANG_POP([C++])
14190 # ===================================================================
14191 # Creating bigger shared library to link against
14192 # ===================================================================
14193 AC_MSG_CHECKING([whether to create huge library])
14194 MERGELIBS=
14196 if test $_os = iOS -o $_os = Android; then
14197     # Never any point in mergelibs for these as we build just static
14198     # libraries anyway...
14199     enable_mergelibs=no
14202 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14203     if test $_os != Linux -a $_os != WINNT; then
14204         add_warning "--enable-mergelibs is not tested for this platform"
14205     fi
14206     MERGELIBS="TRUE"
14207     AC_MSG_RESULT([yes])
14208     AC_DEFINE(ENABLE_MERGELIBS)
14209 else
14210     AC_MSG_RESULT([no])
14212 AC_SUBST([MERGELIBS])
14214 dnl ===================================================================
14215 dnl icerun is a wrapper that stops us spawning tens of processes
14216 dnl locally - for tools that can't be executed on the compile cluster
14217 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14218 dnl ===================================================================
14219 AC_MSG_CHECKING([whether to use icerun wrapper])
14220 ICECREAM_RUN=
14221 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14222     ICECREAM_RUN=icerun
14223     AC_MSG_RESULT([yes])
14224 else
14225     AC_MSG_RESULT([no])
14227 AC_SUBST(ICECREAM_RUN)
14229 dnl ===================================================================
14230 dnl Setup the ICECC_VERSION for the build the same way it was set for
14231 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14232 dnl ===================================================================
14233 x_ICECC_VERSION=[\#]
14234 if test -n "$ICECC_VERSION" ; then
14235     x_ICECC_VERSION=
14237 AC_SUBST(x_ICECC_VERSION)
14238 AC_SUBST(ICECC_VERSION)
14240 dnl ===================================================================
14242 AC_MSG_CHECKING([MPL subset])
14243 MPL_SUBSET=
14245 if test "$enable_mpl_subset" = "yes"; then
14246     warn_report=false
14247     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14248         warn_report=true
14249     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14250         warn_report=true
14251     fi
14252     if test "$warn_report" = "true"; then
14253         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14254     fi
14255     if test "x$enable_postgresql_sdbc" != "xno"; then
14256         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14257     fi
14258     if test "$enable_lotuswordpro" = "yes"; then
14259         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14260     fi
14261     if test "$WITH_WEBDAV" = "neon"; then
14262         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14263     fi
14264     if test -n "$ENABLE_POPPLER"; then
14265         if test "x$SYSTEM_POPPLER" = "x"; then
14266             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14267         fi
14268     fi
14269     # cf. m4/libo_check_extension.m4
14270     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14271         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14272     fi
14273     for theme in $WITH_THEMES; do
14274         case $theme in
14275         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14276             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14277         *) : ;;
14278         esac
14279     done
14281     ENABLE_OPENGL_TRANSITIONS=
14283     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14284         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14285     fi
14287     MPL_SUBSET="TRUE"
14288     AC_DEFINE(MPL_HAVE_SUBSET)
14289     AC_MSG_RESULT([only])
14290 else
14291     AC_MSG_RESULT([no restrictions])
14293 AC_SUBST(MPL_SUBSET)
14295 dnl ===================================================================
14297 AC_MSG_CHECKING([formula logger])
14298 ENABLE_FORMULA_LOGGER=
14300 if test "x$enable_formula_logger" = "xyes"; then
14301     AC_MSG_RESULT([yes])
14302     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14303     ENABLE_FORMULA_LOGGER=TRUE
14304 elif test -n "$ENABLE_DBGUTIL" ; then
14305     AC_MSG_RESULT([yes])
14306     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14307     ENABLE_FORMULA_LOGGER=TRUE
14308 else
14309     AC_MSG_RESULT([no])
14312 AC_SUBST(ENABLE_FORMULA_LOGGER)
14314 dnl ===================================================================
14315 dnl Checking for active Antivirus software.
14316 dnl ===================================================================
14318 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14319     AC_MSG_CHECKING([for active Antivirus software])
14320     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14321     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14322         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14323             AC_MSG_RESULT([found])
14324             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14325             echo $EICAR_STRING > $SRC_ROOT/eicar
14326             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14327             rm $SRC_ROOT/eicar
14328             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14329                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14330             fi
14331             echo $EICAR_STRING > $BUILDDIR/eicar
14332             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14333             rm $BUILDDIR/eicar
14334             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14335                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14336             fi
14337             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"
14338         else
14339             AC_MSG_RESULT([not found])
14340         fi
14341     else
14342         AC_MSG_RESULT([n/a])
14343     fi
14346 dnl ===================================================================
14347 dnl Setting up the environment.
14348 dnl ===================================================================
14349 AC_MSG_NOTICE([setting up the build environment variables...])
14351 AC_SUBST(COMPATH)
14353 if test "$build_os" = "cygwin"; then
14354     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14355         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14356         ATL_INCLUDE="$COMPATH/atlmfc/include"
14357     elif test -d "$COMPATH/atlmfc/lib"; then
14358         ATL_LIB="$COMPATH/atlmfc/lib"
14359         ATL_INCLUDE="$COMPATH/atlmfc/include"
14360     else
14361         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14362         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14363     fi
14364     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14365     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14366     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14368     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14369     PathFormat "/usr/bin/find.exe"
14370     FIND="$formatted_path"
14371     PathFormat "/usr/bin/sort.exe"
14372     SORT="$formatted_path"
14373     PathFormat "/usr/bin/grep.exe"
14374     WIN_GREP="$formatted_path"
14375     PathFormat "/usr/bin/ls.exe"
14376     WIN_LS="$formatted_path"
14377     PathFormat "/usr/bin/touch.exe"
14378     WIN_TOUCH="$formatted_path"
14379 else
14380     FIND=find
14381     SORT=sort
14384 AC_SUBST(ATL_INCLUDE)
14385 AC_SUBST(ATL_LIB)
14386 AC_SUBST(FIND)
14387 AC_SUBST(SORT)
14388 AC_SUBST(WIN_GREP)
14389 AC_SUBST(WIN_LS)
14390 AC_SUBST(WIN_TOUCH)
14392 AC_SUBST(BUILD_TYPE)
14394 AC_SUBST(SOLARINC)
14396 PathFormat "$PERL"
14397 PERL="$formatted_path"
14398 AC_SUBST(PERL)
14400 if test -n "$TMPDIR"; then
14401     TEMP_DIRECTORY="$TMPDIR"
14402 else
14403     TEMP_DIRECTORY="/tmp"
14405 if test "$build_os" = "cygwin"; then
14406     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14408 AC_SUBST(TEMP_DIRECTORY)
14410 # setup the PATH for the environment
14411 if test -n "$LO_PATH_FOR_BUILD"; then
14412     LO_PATH="$LO_PATH_FOR_BUILD"
14413     case "$host_os" in
14414     cygwin*|wsl*)
14415         pathmunge "$MSVC_HOST_PATH" "before"
14416         ;;
14417     esac
14418 else
14419     LO_PATH="$PATH"
14421     case "$host_os" in
14423     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14424         if test "$ENABLE_JAVA" != ""; then
14425             pathmunge "$JAVA_HOME/bin" "after"
14426         fi
14427         ;;
14429     cygwin*|wsl*)
14430         # Win32 make needs native paths
14431         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14432             LO_PATH=`cygpath -p -m "$PATH"`
14433         fi
14434         if test "$WIN_BUILD_ARCH" = "x64"; then
14435             # needed for msi packaging
14436             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14437         fi
14438         # .NET 4.6 and higher don't have bin directory
14439         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14440             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14441         fi
14442         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14443         pathmunge "$CSC_PATH" "before"
14444         pathmunge "$MIDL_PATH" "before"
14445         pathmunge "$AL_PATH" "before"
14446         pathmunge "$MSVC_MULTI_PATH" "before"
14447         pathmunge "$MSVC_BUILD_PATH" "before"
14448         if test -n "$MSBUILD_PATH" ; then
14449             pathmunge "$MSBUILD_PATH" "before"
14450         fi
14451         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14452         if test "$ENABLE_JAVA" != ""; then
14453             if test -d "$JAVA_HOME/jre/bin/client"; then
14454                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14455             fi
14456             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14457                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14458             fi
14459             pathmunge "$JAVA_HOME/bin" "before"
14460         fi
14461         pathmunge "$MSVC_HOST_PATH" "before"
14462         ;;
14464     solaris*)
14465         pathmunge "/usr/css/bin" "before"
14466         if test "$ENABLE_JAVA" != ""; then
14467             pathmunge "$JAVA_HOME/bin" "after"
14468         fi
14469         ;;
14470     esac
14473 AC_SUBST(LO_PATH)
14475 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14476 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14477     x_LO_ELFCHECK_ALLOWLIST=
14478 else
14479     x_LO_ELFCHECK_ALLOWLIST=[\#]
14481 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14482 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14484 libo_FUZZ_SUMMARY
14486 # Generate a configuration sha256 we can use for deps
14487 if test -f config_host.mk; then
14488     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14490 if test -f config_host_lang.mk; then
14491     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14494 CFLAGS=$my_original_CFLAGS
14495 CXXFLAGS=$my_original_CXXFLAGS
14496 CPPFLAGS=$my_original_CPPFLAGS
14498 AC_CONFIG_LINKS([include:include])
14500 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14501 # BUILD platform configuration] - otherwise breaks cross building
14502 AC_CONFIG_FILES([config_host.mk
14503                  config_host_lang.mk
14504                  Makefile
14505                  bin/bffvalidator.sh
14506                  bin/odfvalidator.sh
14507                  bin/officeotron.sh
14508                  hardened_runtime.xcent
14509                  instsetoo_native/util/openoffice.lst
14510                  sysui/desktop/macosx/Info.plist
14511                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14512 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14513 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14514 AC_CONFIG_HEADERS([config_host/config_clang.h])
14515 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14516 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14517 AC_CONFIG_HEADERS([config_host/config_eot.h])
14518 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14519 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14520 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14521 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14522 AC_CONFIG_HEADERS([config_host/config_features.h])
14523 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14524 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14525 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14526 AC_CONFIG_HEADERS([config_host/config_folders.h])
14527 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14528 AC_CONFIG_HEADERS([config_host/config_gio.h])
14529 AC_CONFIG_HEADERS([config_host/config_global.h])
14530 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14531 AC_CONFIG_HEADERS([config_host/config_java.h])
14532 AC_CONFIG_HEADERS([config_host/config_langs.h])
14533 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14534 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14535 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14536 AC_CONFIG_HEADERS([config_host/config_locales.h])
14537 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14538 AC_CONFIG_HEADERS([config_host/config_oox.h])
14539 AC_CONFIG_HEADERS([config_host/config_options.h])
14540 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14541 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14542 AC_CONFIG_HEADERS([config_host/config_skia.h])
14543 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14544 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14545 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14546 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14547 AC_CONFIG_HEADERS([config_host/config_version.h])
14548 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14549 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14550 AC_CONFIG_HEADERS([config_host/config_python.h])
14551 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14552 AC_OUTPUT
14554 if test "$CROSS_COMPILING" = TRUE; then
14555     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14558 # touch the config timestamp file
14559 if test ! -f config_host.mk.stamp; then
14560     echo > config_host.mk.stamp
14561 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14562     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14563 else
14564     echo > config_host.mk.stamp
14567 # touch the config lang timestamp file
14568 if test ! -f config_host_lang.mk.stamp; then
14569     echo > config_host_lang.mk.stamp
14570 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14571     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14572 else
14573     echo > config_host_lang.mk.stamp
14577 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14578         -a "$build_os" = "cygwin"; then
14580 cat << _EOS
14581 ****************************************************************************
14582 WARNING:
14583 Your make version is known to be horribly slow, and hard to debug
14584 problems with. To get a reasonably functional make please do:
14586 to install a pre-compiled binary make for Win32
14588  mkdir -p /opt/lo/bin
14589  cd /opt/lo/bin
14590  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14591  cp make-4.2.1-msvc.exe make
14592  chmod +x make
14594 to install from source:
14595 place yourself in a working directory of you choice.
14597  git clone git://git.savannah.gnu.org/make.git
14599  [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"]
14600  set PATH=%PATH%;C:\Cygwin\bin
14601  [or Cygwin64, if that is what you have]
14602  cd path-to-make-repo-you-cloned-above
14603  build_w32.bat --without-guile
14605 should result in a WinRel/gnumake.exe.
14606 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14608 Then re-run autogen.sh
14610 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14611 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14613 _EOS
14614 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14615     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14620 cat << _EOF
14621 ****************************************************************************
14623 To build, run:
14624 $GNUMAKE
14626 To view some help, run:
14627 $GNUMAKE help
14629 _EOF
14631 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14632     cat << _EOF
14633 After the build has finished successfully, you can immediately run what you built using the command:
14634 _EOF
14636     if test $_os = Darwin; then
14637         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14638     else
14639         echo instdir/program/soffice
14640     fi
14641     cat << _EOF
14643 If you want to run the smoketest, run:
14644 $GNUMAKE check
14646 _EOF
14649 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14650     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14651     cat "$WARNINGS_FILE_FOR_BUILD"
14652     echo
14655 if test -s "$WARNINGS_FILE"; then
14656     echo "HOST config ($WARNINGS_FILE)"
14657     cat "$WARNINGS_FILE"
14660 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: