Colibre: Update dark Save As Template icons
[LibreOffice.git] / configure.ac
blob91fb52cb1a2cd9cd8aa8f6e1231857512fa11ee4
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.4.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
208 have_WARNINGS="no"
209 add_warning()
211     if test "$have_WARNINGS" = "no"; then
212         echo "*************************************" > "$WARNINGS_FILE"
213         have_WARNINGS="yes"
214         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
217         else
218             COLORWARN="* WARNING :"
219         fi
220     fi
221     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
228 dnl from themselves
230 mac_sanitize_path()
232     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235     mac_git_path=`which git 2>/dev/null`
236     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237         mac_path="$mac_path:`dirname $mac_git_path`"
238     fi
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241     mac_gpg_path=`which gpg 2>/dev/null`
242     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243         mac_path="$mac_path:`dirname $mac_gpg_path`"
244     fi
245     PATH="$mac_path"
246     unset mac_path
247     unset mac_git_path
248     unset mac_gpg_path
251 dnl semantically test a three digits version
252 dnl $1 - $3 = minimal version
253 dnl $4 - $6 = current version
255 check_semantic_version_three()
257     test "$4" -gt "$1" \
258         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
259         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
260     return $?
263 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
264 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
265 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
267 check_semantic_version_three_prefixed()
269     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
270     eval local MIN_MINOR="\$${1}_${2}_MINOR"
271     eval local MIN_TINY="\$${1}_${2}_TINY"
272     eval local CUR_MAJOR="\$${1}_MAJOR"
273     eval local CUR_MINOR="\$${1}_MINOR"
274     eval local CUR_TINY="\$${1}_TINY"
275     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
276     return $?
279 echo "********************************************************************"
280 echo "*"
281 echo "*   Running ${PACKAGE_NAME} build configuration."
282 echo "*"
283 echo "********************************************************************"
284 echo ""
286 dnl ===================================================================
287 dnl checks build and host OSes
288 dnl do this before argument processing to allow for platform dependent defaults
289 dnl ===================================================================
291 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
292 # Linux on WSL) trust that.
293 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
294     ac_cv_host="x86_64-pc-wsl"
295     ac_cv_host_cpu="x86_64"
296     ac_cv_host_os="wsl"
297     ac_cv_build="$ac_cv_host"
298     ac_cv_build_cpu="$ac_cv_host_cpu"
299     ac_cv_build_os="$ac_cv_host_os"
301     # Emulation of Cygwin's cygpath command for WSL.
302     cygpath()
303     {
304         if test -n "$UNITTEST_WSL_CYGPATH"; then
305             echo -n cygpath "$@" "==> "
306         fi
308         # Cygwin's real cygpath has a plethora of options but we use only a few here.
309         local args="$@"
310         local opt
311         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
312         OPTIND=1
314         while getopts dmuwlsp opt; do
315             case "$opt" in
316                 \?)
317                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
318                     ;;
319                 ?)
320                     eval opt_$opt=yes
321                     ;;
322             esac
323         done
325         shift $((OPTIND-1))
327         if test $# -ne 1; then
328             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
329         fi
331         local input="$1"
333         local result
335         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
336             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
338             if test -n "$opt_u"; then
339                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
340             fi
342             case "$input" in
343                 /mnt/*)
344                     # A Windows file in WSL format
345                     input=$(wslpath -w "$input")
346                     ;;
347                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
348                     # Already in Windows format
349                     ;;
350                 /*)
351                     input=$(wslpath -w "$input")
352                     ;;
353                 *)
354                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
355                     ;;
356             esac
357             if test -n "$opt_d" -o -n "$opt_s"; then
358                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
359             fi
360             if test -n "$opt_m"; then
361                 input="${input//\\//}"
362             fi
363             echo "$input"
364         else
365             # Print Unix path
367             case "$input" in
368                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
369                     wslpath -u "$input"
370                     ;;
371                 /)
372                     echo "$input"
373                     ;;
374                 *)
375                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
376                     ;;
377             esac
378         fi
379     }
381     if test -n "$UNITTEST_WSL_CYGPATH"; then
382         BUILDDIR=.
384         # Nothing special with these file names, just arbitrary ones picked to test with
385         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
386         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
387         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
388         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
389         # At least on my machine for instance this file does have an 8.3 name
390         cygpath -d /mnt/c/windows/WindowsUpdate.log
391         # But for instance this one doesn't
392         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
393         cygpath -ws /mnt/c/windows/WindowsUpdate.log
394         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
395         cygpath -ms /mnt/c/windows/WindowsUpdate.log
397         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
398         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
400         exit 0
401     fi
404 AC_CANONICAL_HOST
405 AC_CANONICAL_BUILD
407 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
408     BUILDDIR=.
409     GREP=grep
411     # Use of PathFormat must be after AC_CANONICAL_BUILD above
412     PathFormat /
413     printf "$formatted_path , $formatted_path_unix\n"
415     PathFormat $PWD
416     printf "$formatted_path , $formatted_path_unix\n"
418     PathFormat "$PROGRAMFILESX86"
419     printf "$formatted_path , $formatted_path_unix\n"
421     exit 0
424 AC_MSG_CHECKING([for product name])
425 PRODUCTNAME="AC_PACKAGE_NAME"
426 if test -n "$with_product_name" -a "$with_product_name" != no; then
427     PRODUCTNAME="$with_product_name"
429 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
430     PRODUCTNAME="${PRODUCTNAME}Dev"
432 AC_MSG_RESULT([$PRODUCTNAME])
433 AC_SUBST(PRODUCTNAME)
434 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
435 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
437 dnl ===================================================================
438 dnl Our version is defined by the AC_INIT() at the top of this script.
439 dnl ===================================================================
441 AC_MSG_CHECKING([for package version])
442 if test -n "$with_package_version" -a "$with_package_version" != no; then
443     PACKAGE_VERSION="$with_package_version"
445 AC_MSG_RESULT([$PACKAGE_VERSION])
447 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
449 LIBO_VERSION_MAJOR=$1
450 LIBO_VERSION_MINOR=$2
451 LIBO_VERSION_MICRO=$3
452 LIBO_VERSION_PATCH=$4
454 LIBO_VERSION_SUFFIX=$5
456 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
457 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
458 # they get undoubled before actually passed to sed.
459 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
460 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
461 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
462 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
464 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
465 # three non-negative integers. Please find more information about CFBundleVersion at
466 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
468 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
469 # of at most three non-negative integers. Please find more information about
470 # CFBundleShortVersionString at
471 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
473 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
475 if test "$enable_macosx_sandbox" = yes; then
476     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
477     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
478 else
479     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
480     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
483 AC_SUBST(LIBO_VERSION_MAJOR)
484 AC_SUBST(LIBO_VERSION_MINOR)
485 AC_SUBST(LIBO_VERSION_MICRO)
486 AC_SUBST(LIBO_VERSION_PATCH)
487 AC_SUBST(LIBO_VERSION_SUFFIX)
488 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
489 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
490 AC_SUBST(MACOSX_BUNDLE_VERSION)
492 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
493 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
494 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
495 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
497 LIBO_THIS_YEAR=`date +%Y`
498 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
500 dnl ===================================================================
501 dnl Product version
502 dnl ===================================================================
503 AC_MSG_CHECKING([for product version])
504 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
505 AC_MSG_RESULT([$PRODUCTVERSION])
506 AC_SUBST(PRODUCTVERSION)
508 AC_PROG_EGREP
509 # AC_PROG_EGREP doesn't set GREP on all systems as well
510 AC_PATH_PROG(GREP, grep)
512 BUILDDIR=`pwd`
513 cd $srcdir
514 SRC_ROOT=`pwd`
515 cd $BUILDDIR
516 x_Cygwin=[\#]
518 dnl ======================================
519 dnl Required GObject introspection version
520 dnl ======================================
521 INTROSPECTION_REQUIRED_VERSION=1.32.0
523 dnl ===================================================================
524 dnl Search all the common names for GNU Make
525 dnl ===================================================================
526 AC_MSG_CHECKING([for GNU Make])
528 # try to use our own make if it is available and GNUMAKE was not already defined
529 if test -z "$GNUMAKE"; then
530     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
531         GNUMAKE="$LODE_HOME/opt/bin/make"
532     elif test -x "/opt/lo/bin/make"; then
533         GNUMAKE="/opt/lo/bin/make"
534     fi
537 GNUMAKE_WIN_NATIVE=
538 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
539     if test -n "$a"; then
540         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
541         if test $? -eq 0;  then
542             if test "$build_os" = "cygwin"; then
543                 if test -n "$($a -v | grep 'Built for Windows')" ; then
544                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
545                     GNUMAKE_WIN_NATIVE="TRUE"
546                 else
547                     GNUMAKE=`which $a`
548                 fi
549             else
550                 GNUMAKE=`which $a`
551             fi
552             break
553         fi
554     fi
555 done
556 AC_MSG_RESULT($GNUMAKE)
557 if test -z "$GNUMAKE"; then
558     AC_MSG_ERROR([not found. install GNU Make.])
559 else
560     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
561         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
562     fi
565 win_short_path_for_make()
567     local short_path="$1"
568     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
569         cygpath -sm "$short_path"
570     else
571         cygpath -u "$(cygpath -d "$short_path")"
572     fi
576 if test "$build_os" = "cygwin"; then
577     PathFormat "$SRC_ROOT"
578     SRC_ROOT="$formatted_path"
579     PathFormat "$BUILDDIR"
580     BUILDDIR="$formatted_path"
581     x_Cygwin=
582     AC_MSG_CHECKING(for explicit COMSPEC)
583     if test -z "$COMSPEC"; then
584         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
585     else
586         AC_MSG_RESULT([found: $COMSPEC])
587     fi
590 AC_SUBST(SRC_ROOT)
591 AC_SUBST(BUILDDIR)
592 AC_SUBST(x_Cygwin)
593 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
594 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
595 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
597 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
598     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
601 # need sed in os checks...
602 AC_PATH_PROGS(SED, sed)
603 if test -z "$SED"; then
604     AC_MSG_ERROR([install sed to run this script])
607 # Set the ENABLE_LTO variable
608 # ===================================================================
609 AC_MSG_CHECKING([whether to use link-time optimization])
610 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
611     ENABLE_LTO="TRUE"
612     AC_MSG_RESULT([yes])
613 else
614     ENABLE_LTO=""
615     AC_MSG_RESULT([no])
617 AC_SUBST(ENABLE_LTO)
619 AC_ARG_ENABLE(fuzz-options,
620     AS_HELP_STRING([--enable-fuzz-options],
621         [Randomly enable or disable each of those configurable options
622          that are supposed to be freely selectable without interdependencies,
623          or where bad interaction from interdependencies is automatically avoided.])
626 dnl ===================================================================
627 dnl When building for Android, --with-android-ndk,
628 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
629 dnl mandatory
630 dnl ===================================================================
632 AC_ARG_WITH(android-ndk,
633     AS_HELP_STRING([--with-android-ndk],
634         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
637 AC_ARG_WITH(android-ndk-toolchain-version,
638     AS_HELP_STRING([--with-android-ndk-toolchain-version],
639         [Specify which toolchain version to use, of those present in the
640         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
641         with_android_ndk_toolchain_version=clang5.0)
643 AC_ARG_WITH(android-sdk,
644     AS_HELP_STRING([--with-android-sdk],
645         [Specify location of the Android SDK. Mandatory when building for Android.]),
648 AC_ARG_WITH(android-api-level,
649     AS_HELP_STRING([--with-android-api-level],
650         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
653 ANDROID_NDK_HOME=
654 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
655     with_android_ndk="$SRC_ROOT/external/android-ndk"
657 if test -n "$with_android_ndk"; then
658     eval ANDROID_NDK_HOME=$with_android_ndk
660     # Set up a lot of pre-canned defaults
662     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
663         if test ! -f $ANDROID_NDK_HOME/source.properties; then
664             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
665         fi
666         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
667     else
668         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
669     fi
670     if test -z "$ANDROID_NDK_VERSION";  then
671         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
672     fi
673     case $ANDROID_NDK_VERSION in
674     r9*|r10*)
675         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
676         ;;
677     11.1.*|12.1.*|13.1.*|14.1.*)
678         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
679         ;;
680     16.*|17.*|18.*|19.*|20.*)
681         ;;
682     *)
683         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
684         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
685         ;;
686     esac
688     ANDROID_API_LEVEL=16
689     if test -n "$with_android_api_level" ; then
690         ANDROID_API_LEVEL="$with_android_api_level"
691     fi
693     android_cpu=$host_cpu
694     if test $host_cpu = arm; then
695         android_platform_prefix=arm-linux-androideabi
696         android_gnu_prefix=$android_platform_prefix
697         LLVM_TRIPLE=armv7a-linux-androideabi
698         ANDROID_APP_ABI=armeabi-v7a
699         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
700     elif test $host_cpu = aarch64; then
701         android_platform_prefix=aarch64-linux-android
702         android_gnu_prefix=$android_platform_prefix
703         LLVM_TRIPLE=$android_platform_prefix
704         # minimum android version that supports aarch64
705         if test "$ANDROID_API_LEVEL" -lt "21" ; then
706             ANDROID_API_LEVEL=21
707         fi
708         ANDROID_APP_ABI=arm64-v8a
709     elif test $host_cpu = x86_64; then
710         android_platform_prefix=x86_64-linux-android
711         android_gnu_prefix=$android_platform_prefix
712         LLVM_TRIPLE=$android_platform_prefix
713         # minimum android version that supports x86_64
714         ANDROID_API_LEVEL=21
715         ANDROID_APP_ABI=x86_64
716     else
717         # host_cpu is something like "i386" or "i686" I guess, NDK uses
718         # "x86" in some contexts
719         android_cpu=x86
720         android_platform_prefix=$android_cpu
721         android_gnu_prefix=i686-linux-android
722         LLVM_TRIPLE=$android_gnu_prefix
723         ANDROID_APP_ABI=x86
724     fi
726     case "$with_android_ndk_toolchain_version" in
727     clang5.0)
728         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
729         ;;
730     *)
731         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
732     esac
734     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
736     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
737     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
738     # manage to link the (app-specific) single huge .so that is built for the app in
739     # android/source/ if there is debug information in a significant part of the object files.
740     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
741     # all objects have been built with debug information.)
742     case $build_os in
743     linux-gnu*)
744         android_HOST_TAG=linux-x86_64
745         ;;
746     darwin*)
747         android_HOST_TAG=darwin-x86_64
748         ;;
749     *)
750         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
751         # ndk would also support windows and windows-x86_64
752         ;;
753     esac
754     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
755     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
756     dnl TODO: NSS build uses it...
757     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
758     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
760     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
761     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
762     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
763     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
764     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
766     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
767     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
768     if test "$ENABLE_LTO" = TRUE; then
769         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
770         # $CC and $CXX when building external libraries
771         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
772     fi
774     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
776     if test -z "$CC"; then
777         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
778         CC_BASE="clang"
779     fi
780     if test -z "$CXX"; then
781         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
782         CXX_BASE="clang++"
783     fi
785 AC_SUBST(ANDROID_NDK_HOME)
786 AC_SUBST(ANDROID_APP_ABI)
787 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
789 dnl ===================================================================
790 dnl --with-android-sdk
791 dnl ===================================================================
792 ANDROID_SDK_HOME=
793 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
794     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
796 if test -n "$with_android_sdk"; then
797     eval ANDROID_SDK_HOME=$with_android_sdk
798     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
800 AC_SUBST(ANDROID_SDK_HOME)
802 AC_ARG_ENABLE([android-lok],
803     AS_HELP_STRING([--enable-android-lok],
804         [The Android app from the android/ subdir needs several tweaks all
805          over the place that break the LOK when used in the Online-based
806          Android app.  This switch indicates that the intent of this build is
807          actually the Online-based, non-modified LOK.])
809 ENABLE_ANDROID_LOK=
810 if test -n "$ANDROID_NDK_HOME" ; then
811     if test "$enable_android_lok" = yes; then
812         ENABLE_ANDROID_LOK=TRUE
813         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
814         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
815     else
816         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
817     fi
819 AC_SUBST([ENABLE_ANDROID_LOK])
821 libo_FUZZ_ARG_ENABLE([android-editing],
822     AS_HELP_STRING([--enable-android-editing],
823         [Enable the experimental editing feature on Android.])
825 ENABLE_ANDROID_EDITING=
826 if test "$enable_android_editing" = yes; then
827     ENABLE_ANDROID_EDITING=TRUE
829 AC_SUBST([ENABLE_ANDROID_EDITING])
831 disable_database_connectivity_dependencies()
833     enable_evolution2=no
834     enable_firebird_sdbc=no
835     enable_mariadb_sdbc=no
836     enable_postgresql_sdbc=no
837     enable_report_builder=no
840 # ===================================================================
842 # Start initial platform setup
844 # The using_* variables reflect platform support and should not be
845 # changed after the "End initial platform setup" block.
846 # This is also true for most test_* variables.
847 # ===================================================================
848 build_crypto=yes
849 test_clucene=no
850 test_gdb_index=no
851 test_openldap=yes
852 test_split_debug=no
853 test_webdav=yes
854 usable_dlapi=yes
856 # There is currently just iOS not using salplug, so this explicitly enables it.
857 # must: using_freetype_fontconfig
858 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
859 # must: using_x11
861 # Default values, as such probably valid just for Linux, set
862 # differently below just for Mac OSX, but at least better than
863 # hardcoding these as we used to do. Much of this is duplicated also
864 # in solenv for old build system and for gbuild, ideally we should
865 # perhaps define stuff like this only here in configure.ac?
867 LINKFLAGSSHL="-shared"
868 PICSWITCH="-fpic"
869 DLLPOST=".so"
871 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
873 INSTROOTBASESUFFIX=
874 INSTROOTCONTENTSUFFIX=
875 SDKDIRNAME=sdk
877 HOST_PLATFORM="$host"
879 host_cpu_for_clang="$host_cpu"
881 case "$host_os" in
883 solaris*)
884     using_freetype_fontconfig=yes
885     using_x11=yes
886     build_skia=yes
887     _os=SunOS
889     dnl ===========================================================
890     dnl Check whether we're using Solaris 10 - SPARC or Intel.
891     dnl ===========================================================
892     AC_MSG_CHECKING([the Solaris operating system release])
893     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
894     if test "$_os_release" -lt "10"; then
895         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
896     else
897         AC_MSG_RESULT([ok ($_os_release)])
898     fi
900     dnl Check whether we're using a SPARC or i386 processor
901     AC_MSG_CHECKING([the processor type])
902     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
903         AC_MSG_RESULT([ok ($host_cpu)])
904     else
905         AC_MSG_ERROR([only SPARC and i386 processors are supported])
906     fi
907     ;;
909 linux-gnu*|k*bsd*-gnu*|linux-musl*)
910     using_freetype_fontconfig=yes
911     using_x11=yes
912     build_skia=yes
913     test_gdb_index=yes
914     test_split_debug=yes
915     if test "$enable_fuzzers" = yes; then
916         test_system_freetype=no
917     fi
918     _os=Linux
919     ;;
921 gnu)
922     using_freetype_fontconfig=yes
923     using_x11=no
924     _os=GNU
925      ;;
927 cygwin*|wsl*)
928     # When building on Windows normally with MSVC under Cygwin,
929     # configure thinks that the host platform (the platform the
930     # built code will run on) is Cygwin, even if it obviously is
931     # Windows, which in Autoconf terminology is called
932     # "mingw32". (Which is misleading as MinGW is the name of the
933     # tool-chain, not an operating system.)
935     # Somewhat confusing, yes. But this configure script doesn't
936     # look at $host etc that much, it mostly uses its own $_os
937     # variable, set here in this case statement.
939     using_freetype_fontconfig=no
940     using_x11=no
941     test_unix_dlapi=no
942     test_openldap=no
943     test_eot=no
944     enable_pagein=no
945     build_skia=yes
946     _os=WINNT
948     DLLPOST=".dll"
949     LINKFLAGSNOUNDEFS=
951     if test "$host_cpu" = "aarch64"; then
952         build_skia=no
953         enable_gpgmepp=no
954         enable_coinmp=no
955         enable_firebird_sdbc=no
956     fi
957     ;;
959 darwin*) # macOS
960     using_freetype_fontconfig=no
961     using_x11=no
962     build_skia=yes
963     enable_pagein=no
964     test_eot=no
965     if test -n "$LODE_HOME" ; then
966         mac_sanitize_path
967         AC_MSG_NOTICE([sanitized the PATH to $PATH])
968     fi
969     _os=Darwin
970     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
971     INSTROOTCONTENTSUFFIX=/Contents
972     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
973     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
974     LINKFLAGSSHL="-dynamiclib -single_module"
976     # -fPIC is default
977     PICSWITCH=""
979     DLLPOST=".dylib"
981     # -undefined error is the default
982     LINKFLAGSNOUNDEFS=""
983     case "$host_cpu" in
984     aarch64|arm64)
985         # Apple's Clang uses "arm64"
986         host_cpu_for_clang=arm64
987     esac
990 ios*) # iOS
991     using_freetype_fontconfig=no
992     using_x11=no
993     build_crypto=no
994     test_libcmis=no
995     test_openldap=no
996     test_webdav=no
997     if test -n "$LODE_HOME" ; then
998         mac_sanitize_path
999         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1000     fi
1001     enable_gpgmepp=no
1002     _os=iOS
1003     enable_mpl_subset=yes
1004     enable_lotuswordpro=no
1005     disable_database_connectivity_dependencies
1006     enable_coinmp=no
1007     enable_lpsolve=no
1008     enable_extension_integration=no
1009     enable_xmlhelp=no
1010     with_ppds=no
1011     if test "$enable_ios_simulator" = "yes"; then
1012         host=x86_64-apple-darwin
1013     fi
1014     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1015     LINKFLAGSSHL="-dynamiclib -single_module"
1017     # -fPIC is default
1018     PICSWITCH=""
1020     DLLPOST=".dylib"
1022     # -undefined error is the default
1023     LINKFLAGSNOUNDEFS=""
1025     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1026     # part, so use aarch64-apple-darwin for now.
1027     HOST_PLATFORM=aarch64-apple-darwin
1029     # Apple's Clang uses "arm64"
1030     host_cpu_for_clang=arm64
1033 freebsd*)
1034     using_freetype_fontconfig=yes
1035     using_x11=yes
1036     build_skia=yes
1037     AC_MSG_CHECKING([the FreeBSD operating system release])
1038     if test -n "$with_os_version"; then
1039         OSVERSION="$with_os_version"
1040     else
1041         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1042     fi
1043     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1044     AC_MSG_CHECKING([which thread library to use])
1045     if test "$OSVERSION" -lt "500016"; then
1046         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1047         PTHREAD_LIBS="-pthread"
1048     elif test "$OSVERSION" -lt "502102"; then
1049         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1050         PTHREAD_LIBS="-lc_r"
1051     else
1052         PTHREAD_CFLAGS=""
1053         PTHREAD_LIBS="-pthread"
1054     fi
1055     AC_MSG_RESULT([$PTHREAD_LIBS])
1056     _os=FreeBSD
1057     ;;
1059 *netbsd*)
1060     using_freetype_fontconfig=yes
1061     using_x11=yes
1062     test_gtk3_kde5=no
1063     build_skia=yes
1064     PTHREAD_LIBS="-pthread -lpthread"
1065     _os=NetBSD
1066     ;;
1068 aix*)
1069     using_freetype_fontconfig=yes
1070     using_x11=yes
1071     test_randr=no
1072     test_gstreamer_1_0=no
1073     PTHREAD_LIBS=-pthread
1074     _os=AIX
1075     ;;
1077 openbsd*)
1078     using_freetype_fontconfig=yes
1079     using_x11=yes
1080     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1081     PTHREAD_LIBS="-pthread"
1082     _os=OpenBSD
1083     ;;
1085 dragonfly*)
1086     using_freetype_fontconfig=yes
1087     using_x11=yes
1088     build_skia=yes
1089     PTHREAD_LIBS="-pthread"
1090     _os=DragonFly
1091     ;;
1093 linux-android*)
1094     # API exists, but seems not really usable since Android 7 AFAIK
1095     usable_dlapi=no
1096     using_freetype_fontconfig=yes
1097     using_headless_plugin=no
1098     using_x11=no
1099     build_crypto=no
1100     test_openldap=no
1101     test_system_freetype=no
1102     test_webdav=no
1103     disable_database_connectivity_dependencies
1104     enable_lotuswordpro=no
1105     enable_mpl_subset=yes
1106     enable_cairo_canvas=no
1107     enable_coinmp=yes
1108     enable_lpsolve=no
1109     enable_odk=no
1110     enable_python=no
1111     enable_xmlhelp=no
1112     _os=Android
1113     ;;
1115 haiku*)
1116     using_freetype_fontconfig=yes
1117     using_x11=no
1118     test_gtk3=no
1119     test_gtk3_kde5=no
1120     test_kf5=yes
1121     enable_odk=no
1122     enable_coinmp=no
1123     enable_pdfium=no
1124     enable_sdremote=no
1125     enable_postgresql_sdbc=no
1126     enable_firebird_sdbc=no
1127     _os=Haiku
1128     ;;
1130 emscripten)
1131     # API currently just exists in headers, not code
1132     usable_dlapi=no
1133     using_freetype_fontconfig=yes
1134     using_x11=no
1135     test_openldap=no
1136     test_qt5=yes
1137     test_split_debug=yes
1138     test_system_freetype=no
1139     enable_compiler_plugins=no
1140     enable_customtarget_components=yes
1141     enable_qt5=yes
1142     enable_scripting=no
1143     enable_split_debug=yes
1144     enable_wasm_strip=yes
1145     with_system_zlib=no
1146     with_theme="colibre"
1147     _os=Emscripten
1148     ;;
1151     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1152     ;;
1153 esac
1155 AC_SUBST(HOST_PLATFORM)
1157 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1158     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1161 # Set defaults, if not set by platform
1162 test "${test_cups+set}" = set || test_cups="$using_x11"
1163 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1164 test "${test_gen+set}" = set || test_gen="$using_x11"
1165 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1166 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1167 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1168 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1169 # don't handle test_qt5, so it can disable test_kf5 later
1170 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1171 test "${test_randr+set}" = set || test_randr="$using_x11"
1172 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1173 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1175 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1176 # Make sure fontconfig and freetype test both either system or not
1177 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1178 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1180 # convenience / platform overriding "fixes"
1181 # Don't sort!
1182 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1183 test "$test_kf5" = yes && test_qt5=yes
1184 test "$test_gtk3" != yes && enable_gtk3=no
1185 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1186 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1187 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1189 # Keep in sync with the above $using_x11 depending test default list
1190 disable_x11_tests()
1192     test_cups=no
1193     test_dbus=no
1194     test_gen=no
1195     test_gstreamer_1_0=no
1196     test_gtk3_kde5=no
1197     test_gtk3=no
1198     test_gtk4=no
1199     test_kf5=no
1200     test_qt5=no
1201     test_qt6=no
1202     test_randr=no
1203     test_xrender=no
1206 test "$using_x11" = yes && USING_X11=TRUE
1208 if test "$using_freetype_fontconfig" = yes; then
1209     USE_HEADLESS_CODE=TRUE
1210     if test "$using_headless_plugin" = yes; then
1211         AC_DEFINE(ENABLE_HEADLESS)
1212         ENABLE_HEADLESS=TRUE
1213     fi
1214 else
1215     test_fontconfig=no
1216     test_freetype=no
1219 AC_SUBST(ENABLE_HEADLESS)
1220 AC_SUBST(USE_HEADLESS_CODE)
1222 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1223 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1224 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1225 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1227 # ===================================================================
1229 # End initial platform setup
1231 # ===================================================================
1233 if test "$_os" = "Android" ; then
1234     # Verify that the NDK and SDK options are proper
1235     if test -z "$with_android_ndk"; then
1236         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1237     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1238         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1239     fi
1241     if test -z "$ANDROID_SDK_HOME"; then
1242         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1243     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1244         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1245     fi
1247     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1248     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1249         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1250                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1251                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1252         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1253         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1254         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1255     fi
1256     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1257         AC_MSG_WARN([android support repository not found - install with
1258                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1259                      to allow the build to download the specified version of the android support libraries])
1260         add_warning "android support repository not found - install with"
1261         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1262         add_warning "to allow the build to download the specified version of the android support libraries"
1263     fi
1266 if test "$_os" = "AIX"; then
1267     AC_PATH_PROG(GAWK, gawk)
1268     if test -z "$GAWK"; then
1269         AC_MSG_ERROR([gawk not found in \$PATH])
1270     fi
1273 AC_SUBST(SDKDIRNAME)
1275 AC_SUBST(PTHREAD_CFLAGS)
1276 AC_SUBST(PTHREAD_LIBS)
1278 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1279 # By default use the ones specified by our build system,
1280 # but explicit override is possible.
1281 AC_MSG_CHECKING(for explicit AFLAGS)
1282 if test -n "$AFLAGS"; then
1283     AC_MSG_RESULT([$AFLAGS])
1284     x_AFLAGS=
1285 else
1286     AC_MSG_RESULT(no)
1287     x_AFLAGS=[\#]
1289 AC_MSG_CHECKING(for explicit CFLAGS)
1290 if test -n "$CFLAGS"; then
1291     AC_MSG_RESULT([$CFLAGS])
1292     x_CFLAGS=
1293 else
1294     AC_MSG_RESULT(no)
1295     x_CFLAGS=[\#]
1297 AC_MSG_CHECKING(for explicit CXXFLAGS)
1298 if test -n "$CXXFLAGS"; then
1299     AC_MSG_RESULT([$CXXFLAGS])
1300     x_CXXFLAGS=
1301 else
1302     AC_MSG_RESULT(no)
1303     x_CXXFLAGS=[\#]
1305 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1306 if test -n "$OBJCFLAGS"; then
1307     AC_MSG_RESULT([$OBJCFLAGS])
1308     x_OBJCFLAGS=
1309 else
1310     AC_MSG_RESULT(no)
1311     x_OBJCFLAGS=[\#]
1313 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1314 if test -n "$OBJCXXFLAGS"; then
1315     AC_MSG_RESULT([$OBJCXXFLAGS])
1316     x_OBJCXXFLAGS=
1317 else
1318     AC_MSG_RESULT(no)
1319     x_OBJCXXFLAGS=[\#]
1321 AC_MSG_CHECKING(for explicit LDFLAGS)
1322 if test -n "$LDFLAGS"; then
1323     AC_MSG_RESULT([$LDFLAGS])
1324     x_LDFLAGS=
1325 else
1326     AC_MSG_RESULT(no)
1327     x_LDFLAGS=[\#]
1329 AC_SUBST(AFLAGS)
1330 AC_SUBST(CFLAGS)
1331 AC_SUBST(CXXFLAGS)
1332 AC_SUBST(OBJCFLAGS)
1333 AC_SUBST(OBJCXXFLAGS)
1334 AC_SUBST(LDFLAGS)
1335 AC_SUBST(x_AFLAGS)
1336 AC_SUBST(x_CFLAGS)
1337 AC_SUBST(x_CXXFLAGS)
1338 AC_SUBST(x_OBJCFLAGS)
1339 AC_SUBST(x_OBJCXXFLAGS)
1340 AC_SUBST(x_LDFLAGS)
1342 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1343 my_original_CFLAGS=$CFLAGS
1344 my_original_CXXFLAGS=$CXXFLAGS
1345 my_original_CPPFLAGS=$CPPFLAGS
1347 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1348 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1349 dnl AC_PROG_CC internally.
1350 if test "$_os" != "WINNT"; then
1351     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1352     save_CFLAGS=$CFLAGS
1353     AC_PROG_CC
1354     CFLAGS=$save_CFLAGS
1355     if test -z "$CC_BASE"; then
1356         CC_BASE=`first_arg_basename "$CC"`
1357     fi
1360 if test "$_os" != "WINNT"; then
1361     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1362 else
1363     ENDIANNESS=little
1365 AC_SUBST(ENDIANNESS)
1367 if test "$usable_dlapi" != no; then
1368     AC_DEFINE([HAVE_DLAPI])
1369     if test "$test_unix_dlapi" != no; then
1370         save_LIBS="$LIBS"
1371         AC_SEARCH_LIBS([dlsym], [dl],
1372             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1373             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1374         LIBS="$save_LIBS"
1375         AC_DEFINE([HAVE_UNIX_DLAPI])
1376     fi
1378 AC_SUBST(UNIX_DLAPI_LIBS)
1380 # Check for a (GNU) backtrace implementation
1381 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1382 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1383 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1384     save_LIBS="$LIBS"
1385     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1386         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1387         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1388     LIBS="$save_LIBS"
1390 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1391     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1394 dnl ===================================================================
1395 dnl Sanity checks for Emscripten SDK setup
1396 dnl ===================================================================
1398 EMSCRIPTEN_MIN_MAJOR=2
1399 EMSCRIPTEN_MIN_MINOR=0
1400 EMSCRIPTEN_MIN_TINY=31
1401 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1403 if test "$_os" = "Emscripten"; then
1404     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1405     EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1406     EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1407     EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1408     EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1409     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1411     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1412     if test $? -eq 0; then
1413         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1414     else
1415         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1416     fi
1418     EMSCRIPTEN_ERROR=0
1419     if ! which emconfigure >/dev/null 2>&1; then
1420         AC_MSG_WARN([emconfigure must be in your \$PATH])
1421         EMSCRIPTEN_ERROR=1
1422     fi
1423     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1424         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1425         EMSCRIPTEN_ERROR=1
1426     fi
1427     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1428     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1429         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1430         EMSCRIPTEN_ERROR=1
1431     fi
1432     if test $EMSCRIPTEN_ERROR -ne 0; then
1433         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1434     fi
1436 AC_SUBST(EMSDK_FILE_PACKAGER)
1438 ###############################################################################
1439 # Extensions switches --enable/--disable
1440 ###############################################################################
1441 # By default these should be enabled unless having extra dependencies.
1442 # If there is extra dependency over configure options then the enable should
1443 # be automagic based on whether the requiring feature is enabled or not.
1444 # All this options change anything only with --enable-extension-integration.
1446 # The name of this option and its help string makes it sound as if
1447 # extensions are built anyway, just not integrated in the installer,
1448 # if you use --disable-extension-integration. Is that really the
1449 # case?
1451 AC_ARG_ENABLE(ios-simulator,
1452     AS_HELP_STRING([--enable-ios-simulator],
1453         [build for iOS simulator])
1456 libo_FUZZ_ARG_ENABLE(extension-integration,
1457     AS_HELP_STRING([--disable-extension-integration],
1458         [Disable integration of the built extensions in the installer of the
1459          product. Use this switch to disable the integration.])
1462 AC_ARG_ENABLE(avmedia,
1463     AS_HELP_STRING([--disable-avmedia],
1464         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1465 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1467 AC_ARG_ENABLE(database-connectivity,
1468     AS_HELP_STRING([--disable-database-connectivity],
1469         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1472 # This doesn't mean not building (or "integrating") extensions
1473 # (although it probably should; i.e. it should imply
1474 # --disable-extension-integration I guess), it means not supporting
1475 # any extension mechanism at all
1476 libo_FUZZ_ARG_ENABLE(extensions,
1477     AS_HELP_STRING([--disable-extensions],
1478         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1481 AC_ARG_ENABLE(scripting,
1482     AS_HELP_STRING([--disable-scripting],
1483         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1484 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1486 # This is mainly for Android and iOS, but could potentially be used in some
1487 # special case otherwise, too, so factored out as a separate setting
1489 AC_ARG_ENABLE(dynamic-loading,
1490     AS_HELP_STRING([--disable-dynamic-loading],
1491         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1494 libo_FUZZ_ARG_ENABLE(report-builder,
1495     AS_HELP_STRING([--disable-report-builder],
1496         [Disable the Report Builder.])
1499 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1500     AS_HELP_STRING([--enable-ext-wiki-publisher],
1501         [Enable the Wiki Publisher extension.])
1504 libo_FUZZ_ARG_ENABLE(lpsolve,
1505     AS_HELP_STRING([--disable-lpsolve],
1506         [Disable compilation of the lp solve solver ])
1508 libo_FUZZ_ARG_ENABLE(coinmp,
1509     AS_HELP_STRING([--disable-coinmp],
1510         [Disable compilation of the CoinMP solver ])
1513 libo_FUZZ_ARG_ENABLE(pdfimport,
1514     AS_HELP_STRING([--disable-pdfimport],
1515         [Disable building the PDF import feature.])
1518 libo_FUZZ_ARG_ENABLE(pdfium,
1519     AS_HELP_STRING([--disable-pdfium],
1520         [Disable building PDFium. Results in unsecure PDF signature verification.])
1523 libo_FUZZ_ARG_ENABLE(skia,
1524     AS_HELP_STRING([--disable-skia],
1525         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1528 ###############################################################################
1530 dnl ---------- *** ----------
1532 libo_FUZZ_ARG_ENABLE(mergelibs,
1533     AS_HELP_STRING([--enable-mergelibs],
1534         [Merge several of the smaller libraries into one big, "merged", one.])
1537 libo_FUZZ_ARG_ENABLE(breakpad,
1538     AS_HELP_STRING([--enable-breakpad],
1539         [Enables breakpad for crash reporting.])
1542 libo_FUZZ_ARG_ENABLE(crashdump,
1543     AS_HELP_STRING([--disable-crashdump],
1544         [Disable dump.ini and dump-file, when --enable-breakpad])
1547 AC_ARG_ENABLE(fetch-external,
1548     AS_HELP_STRING([--disable-fetch-external],
1549         [Disables fetching external tarballs from web sources.])
1552 AC_ARG_ENABLE(fuzzers,
1553     AS_HELP_STRING([--enable-fuzzers],
1554         [Enables building libfuzzer targets for fuzz testing.])
1557 libo_FUZZ_ARG_ENABLE(pch,
1558     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1559         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1560          Using 'system' will include only external headers, 'base' will add also headers
1561          from base modules, 'normal' will also add all headers except from the module built,
1562          'full' will use all suitable headers even from a module itself.])
1565 libo_FUZZ_ARG_ENABLE(epm,
1566     AS_HELP_STRING([--enable-epm],
1567         [LibreOffice includes self-packaging code, that requires epm, however epm is
1568          useless for large scale package building.])
1571 libo_FUZZ_ARG_ENABLE(odk,
1572     AS_HELP_STRING([--enable-odk],
1573         [Enable building the Office Development Kit, the part that extensions need to build against])
1576 AC_ARG_ENABLE(mpl-subset,
1577     AS_HELP_STRING([--enable-mpl-subset],
1578         [Don't compile any pieces which are not MPL or more liberally licensed])
1581 libo_FUZZ_ARG_ENABLE(evolution2,
1582     AS_HELP_STRING([--enable-evolution2],
1583         [Allows the built-in evolution 2 addressbook connectivity build to be
1584          enabled.])
1587 AC_ARG_ENABLE(avahi,
1588     AS_HELP_STRING([--enable-avahi],
1589         [Determines whether to use Avahi to advertise Impress to remote controls.])
1592 libo_FUZZ_ARG_ENABLE(werror,
1593     AS_HELP_STRING([--enable-werror],
1594         [Turn warnings to errors. (Has no effect in modules where the treating
1595          of warnings as errors is disabled explicitly.)]),
1598 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1599     AS_HELP_STRING([--enable-assert-always-abort],
1600         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1603 libo_FUZZ_ARG_ENABLE(dbgutil,
1604     AS_HELP_STRING([--enable-dbgutil],
1605         [Provide debugging support from --enable-debug and include additional debugging
1606          utilities such as object counting or more expensive checks.
1607          This is the recommended option for developers.
1608          Note that this makes the build ABI incompatible, it is not possible to mix object
1609          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1611 libo_FUZZ_ARG_ENABLE(debug,
1612     AS_HELP_STRING([--enable-debug],
1613         [Include debugging information, disable compiler optimization and inlining plus
1614          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1616 libo_FUZZ_ARG_ENABLE(split-debug,
1617     AS_HELP_STRING([--disable-split-debug],
1618         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1619          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1621 libo_FUZZ_ARG_ENABLE(gdb-index,
1622     AS_HELP_STRING([--disable-gdb-index],
1623         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1624          The feature requires the gold or lld linker.]))
1626 libo_FUZZ_ARG_ENABLE(sal-log,
1627     AS_HELP_STRING([--enable-sal-log],
1628         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1630 libo_FUZZ_ARG_ENABLE(symbols,
1631     AS_HELP_STRING([--enable-symbols],
1632         [Generate debug information.
1633          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1634          otherwise. It is possible to explicitly specify gbuild build targets
1635          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1636          everything in the directory; there is no ordering, more specific overrides
1637          more general, and disabling takes precedence).
1638          Example: --enable-symbols="all -sw/ -Library_sc".]))
1640 libo_FUZZ_ARG_ENABLE(optimized,
1641     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1642         [Whether to compile with optimization flags.
1643          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1644          otherwise. Using 'debug' will try to use only optimizations that should
1645          not interfere with debugging. For Emscripten we default to optimized (-O1)
1646          debug build, as otherwise binaries become too large.]))
1648 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1649     AS_HELP_STRING([--disable-runtime-optimizations],
1650         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1651          JVM JIT) that are known to interact badly with certain dynamic analysis
1652          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1653          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1654          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1656 AC_ARG_WITH(valgrind,
1657     AS_HELP_STRING([--with-valgrind],
1658         [Make availability of Valgrind headers a hard requirement.]))
1660 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1661     AS_HELP_STRING([--enable-compiler-plugins],
1662         [Enable compiler plugins that will perform additional checks during
1663          building. Enabled automatically by --enable-dbgutil.
1664          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1665 COMPILER_PLUGINS_DEBUG=
1666 if test "$enable_compiler_plugins" = debug; then
1667     enable_compiler_plugins=yes
1668     COMPILER_PLUGINS_DEBUG=TRUE
1671 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1672     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1673         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1674          relevant in the --disable-compiler-plugins case.]))
1676 libo_FUZZ_ARG_ENABLE(ooenv,
1677     AS_HELP_STRING([--enable-ooenv],
1678         [Enable ooenv for the instdir installation.]))
1680 AC_ARG_ENABLE(lto,
1681     AS_HELP_STRING([--enable-lto],
1682         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1683          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1684          linker.)]))
1686 AC_ARG_ENABLE(python,
1687     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1688         [Enables or disables Python support at run-time.
1689          Also specifies what Python to use at build-time.
1690          'fully-internal' even forces the internal version for uses of Python
1691          during the build.
1692          On macOS the only choices are
1693          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1694          ]))
1696 libo_FUZZ_ARG_ENABLE(gtk3,
1697     AS_HELP_STRING([--disable-gtk3],
1698         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1699 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1701 AC_ARG_ENABLE(gtk4,
1702     AS_HELP_STRING([--enable-gtk4],
1703         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1705 AC_ARG_ENABLE(introspection,
1706     AS_HELP_STRING([--enable-introspection],
1707         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1708          Linux distributions.)]))
1710 AC_ARG_ENABLE(split-app-modules,
1711     AS_HELP_STRING([--enable-split-app-modules],
1712         [Split file lists for app modules, e.g. base, calc.
1713          Has effect only with make distro-pack-install]),
1716 AC_ARG_ENABLE(split-opt-features,
1717     AS_HELP_STRING([--enable-split-opt-features],
1718         [Split file lists for some optional features, e.g. pyuno, testtool.
1719          Has effect only with make distro-pack-install]),
1722 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1723     AS_HELP_STRING([--disable-cairo-canvas],
1724         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1727 libo_FUZZ_ARG_ENABLE(dbus,
1728     AS_HELP_STRING([--disable-dbus],
1729         [Determines whether to enable features that depend on dbus.
1730          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1731 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1733 libo_FUZZ_ARG_ENABLE(sdremote,
1734     AS_HELP_STRING([--disable-sdremote],
1735         [Determines whether to enable Impress remote control (i.e. the server component).]),
1736 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1738 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1739     AS_HELP_STRING([--disable-sdremote-bluetooth],
1740         [Determines whether to build sdremote with bluetooth support.
1741          Requires dbus on Linux.]))
1743 libo_FUZZ_ARG_ENABLE(gio,
1744     AS_HELP_STRING([--disable-gio],
1745         [Determines whether to use the GIO support.]),
1746 ,test "${enable_gio+set}" = set || enable_gio=yes)
1748 AC_ARG_ENABLE(qt5,
1749     AS_HELP_STRING([--enable-qt5],
1750         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1751          available.]),
1754 AC_ARG_ENABLE(qt6,
1755     AS_HELP_STRING([--enable-qt6],
1756         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1757          available.]),
1760 AC_ARG_ENABLE(kf5,
1761     AS_HELP_STRING([--enable-kf5],
1762         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1763          KF5 are available.]),
1766 AC_ARG_ENABLE(gtk3_kde5,
1767     AS_HELP_STRING([--enable-gtk3-kde5],
1768         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1769          platforms where Gtk3, Qt5 and Plasma is available.]),
1772 AC_ARG_ENABLE(gen,
1773     AS_HELP_STRING([--enable-gen],
1774         [To select the gen backend in case of --disable-dynamic-loading.
1775          Per default auto-enabled when X11 is used.]),
1776 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1778 AC_ARG_ENABLE(gui,
1779     AS_HELP_STRING([--disable-gui],
1780         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1781 ,enable_gui=yes)
1783 libo_FUZZ_ARG_ENABLE(randr,
1784     AS_HELP_STRING([--disable-randr],
1785         [Disable RandR support in the vcl project.]),
1786 ,test "${enable_randr+set}" = set || enable_randr=yes)
1788 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1789     AS_HELP_STRING([--disable-gstreamer-1-0],
1790         [Disable building with the gstreamer 1.0 avmedia backend.]),
1791 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1793 libo_FUZZ_ARG_ENABLE(cve-tests,
1794     AS_HELP_STRING([--disable-cve-tests],
1795         [Prevent CVE tests to be executed]),
1798 libo_FUZZ_ARG_ENABLE(chart-tests,
1799     AS_HELP_STRING([--enable-chart-tests],
1800         [Executes chart XShape tests. In a perfect world these tests would be
1801          stable and everyone could run them, in reality it is best to run them
1802          only on a few machines that are known to work and maintained by people
1803          who can judge if a test failure is a regression or not.]),
1806 AC_ARG_ENABLE(build-opensymbol,
1807     AS_HELP_STRING([--enable-build-opensymbol],
1808         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1809          fontforge installed.]),
1812 AC_ARG_ENABLE(dependency-tracking,
1813     AS_HELP_STRING([--enable-dependency-tracking],
1814         [Do not reject slow dependency extractors.])[
1815   --disable-dependency-tracking
1816                           Disables generation of dependency information.
1817                           Speed up one-time builds.],
1820 AC_ARG_ENABLE(icecream,
1821     AS_HELP_STRING([--enable-icecream],
1822         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1823          It defaults to /opt/icecream for the location of the icecream gcc/g++
1824          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1827 AC_ARG_ENABLE(ld,
1828     AS_HELP_STRING([--enable-ld=<linker>],
1829         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1830          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1831          If <linker> contains any ':', the part before the first ':' is used as the value of
1832          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1833          needed for Clang 12).]),
1836 libo_FUZZ_ARG_ENABLE(cups,
1837     AS_HELP_STRING([--disable-cups],
1838         [Do not build cups support.])
1841 AC_ARG_ENABLE(ccache,
1842     AS_HELP_STRING([--disable-ccache],
1843         [Do not try to use ccache automatically.
1844          By default we will try to detect if ccache is available; in that case if
1845          CC/CXX are not yet set, and --enable-icecream is not given, we
1846          attempt to use ccache. --disable-ccache disables ccache completely.
1847          Additionally ccache's depend mode is enabled if possible,
1848          use --enable-ccache=nodepend to enable ccache without depend mode.
1852 AC_ARG_ENABLE(z7-debug,
1853     AS_HELP_STRING([--enable-z7-debug],
1854         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1855          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1856          Enabled by default if ccache is detected.]))
1858 libo_FUZZ_ARG_ENABLE(online-update,
1859     AS_HELP_STRING([--enable-online-update],
1860         [Enable the online update service that will check for new versions of
1861          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1862          If the value is "mar", the experimental Mozilla-like update will be
1863          enabled instead of the traditional update mechanism.]),
1866 AC_ARG_WITH(update-config,
1867     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1868                    [Path to the update config ini file]))
1870 libo_FUZZ_ARG_ENABLE(extension-update,
1871     AS_HELP_STRING([--disable-extension-update],
1872         [Disable possibility to update installed extensions.]),
1875 libo_FUZZ_ARG_ENABLE(release-build,
1876     AS_HELP_STRING([--enable-release-build],
1877         [Enable release build. Note that the "release build" choice is orthogonal to
1878          whether symbols are present, debug info is generated, or optimization
1879          is done.
1880          See http://wiki.documentfoundation.org/Development/DevBuild]),
1883 AC_ARG_ENABLE(windows-build-signing,
1884     AS_HELP_STRING([--enable-windows-build-signing],
1885         [Enable signing of windows binaries (*.exe, *.dll)]),
1888 AC_ARG_ENABLE(silent-msi,
1889     AS_HELP_STRING([--enable-silent-msi],
1890         [Enable MSI with LIMITUI=1 (silent install).]),
1893 AC_ARG_ENABLE(macosx-code-signing,
1894     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1895         [Sign executables, dylibs, frameworks and the app bundle. If you
1896          don't provide an identity the first suitable certificate
1897          in your keychain is used.]),
1900 AC_ARG_ENABLE(macosx-package-signing,
1901     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1902         [Create a .pkg suitable for uploading to the Mac App Store and sign
1903          it. If you don't provide an identity the first suitable certificate
1904          in your keychain is used.]),
1907 AC_ARG_ENABLE(macosx-sandbox,
1908     AS_HELP_STRING([--enable-macosx-sandbox],
1909         [Make the app bundle run in a sandbox. Requires code signing.
1910          Is required by apps distributed in the Mac App Store, and implies
1911          adherence to App Store rules.]),
1914 AC_ARG_WITH(macosx-bundle-identifier,
1915     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1916         [Define the macOS bundle identifier. Default is the somewhat weird
1917          org.libreoffice.script ("script", huh?).]),
1918 ,with_macosx_bundle_identifier=org.libreoffice.script)
1920 AC_ARG_WITH(product-name,
1921     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1922         [Define the product name. Default is AC_PACKAGE_NAME.]),
1923 ,with_product_name=$PRODUCTNAME)
1925 libo_FUZZ_ARG_ENABLE(community-flavor,
1926     AS_HELP_STRING([--disable-community-flavor],
1927         [Disable the Community branding.]),
1930 AC_ARG_WITH(package-version,
1931     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1932         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1935 libo_FUZZ_ARG_ENABLE(readonly-installset,
1936     AS_HELP_STRING([--enable-readonly-installset],
1937         [Prevents any attempts by LibreOffice to write into its installation. That means
1938          at least that no "system-wide" extensions can be added. Partly experimental work in
1939          progress, probably not fully implemented. Always enabled for macOS.]),
1942 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1943     AS_HELP_STRING([--disable-mariadb-sdbc],
1944         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1947 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1948     AS_HELP_STRING([--disable-postgresql-sdbc],
1949         [Disable the build of the PostgreSQL-SDBC driver.])
1952 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1953     AS_HELP_STRING([--disable-lotuswordpro],
1954         [Disable the build of the Lotus Word Pro filter.]),
1955 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1957 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1958     AS_HELP_STRING([--disable-firebird-sdbc],
1959         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1960 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1962 AC_ARG_ENABLE(bogus-pkg-config,
1963     AS_HELP_STRING([--enable-bogus-pkg-config],
1964         [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.]),
1967 AC_ARG_ENABLE(openssl,
1968     AS_HELP_STRING([--disable-openssl],
1969         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1970          components will use NSS. Work in progress,
1971          use only if you are hacking on it.]),
1972 ,enable_openssl=yes)
1974 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1975     AS_HELP_STRING([--enable-cipher-openssl-backend],
1976         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1977          Requires --enable-openssl.]))
1979 AC_ARG_ENABLE(nss,
1980     AS_HELP_STRING([--disable-nss],
1981         [Disable using NSS. If disabled,
1982          components will use openssl. Work in progress,
1983          use only if you are hacking on it.]),
1984 ,enable_nss=yes)
1986 AC_ARG_ENABLE(library-bin-tar,
1987     AS_HELP_STRING([--enable-library-bin-tar],
1988         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1989         Some libraries can save their build result in a tarball
1990         stored in TARFILE_LOCATION. That binary tarball is
1991         uniquely identified by the source tarball,
1992         the content of the config_host.mk file and the content
1993         of the top-level directory in core for that library
1994         If this option is enabled, then if such a tarfile exist, it will be untarred
1995         instead of the source tarfile, and the build step will be skipped for that
1996         library.
1997         If a proper tarfile does not exist, then the normal source-based
1998         build is done for that library and a proper binary tarfile is created
1999         for the next time.]),
2002 AC_ARG_ENABLE(dconf,
2003     AS_HELP_STRING([--disable-dconf],
2004         [Disable the dconf configuration backend (enabled by default where
2005          available).]))
2007 libo_FUZZ_ARG_ENABLE(formula-logger,
2008     AS_HELP_STRING(
2009         [--enable-formula-logger],
2010         [Enable formula logger for logging formula calculation flow in Calc.]
2011     )
2014 AC_ARG_ENABLE(ldap,
2015     AS_HELP_STRING([--disable-ldap],
2016         [Disable LDAP support.]),
2017 ,enable_ldap=yes)
2019 AC_ARG_ENABLE(opencl,
2020     AS_HELP_STRING([--disable-opencl],
2021         [Disable OpenCL support.]),
2022 ,enable_opencl=yes)
2024 libo_FUZZ_ARG_ENABLE(librelogo,
2025     AS_HELP_STRING([--disable-librelogo],
2026         [Do not build LibreLogo.]),
2027 ,enable_librelogo=yes)
2029 AC_ARG_ENABLE(wasm-strip,
2030     AS_HELP_STRING([--enable-wasm-strip],
2031         [Strip the static build like for WASM/emscripten platform.]),
2034 AC_ARG_ENABLE(wasm-exceptions,
2035     AS_HELP_STRING([--enable-wasm-exceptions],
2036         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2037         matter of fact, this is currently not finished by any implementation)
2038         (see https://webassembly.org/roadmap/ for the current state]),
2041 AC_ARG_ENABLE(xmlhelp,
2042     AS_HELP_STRING([--disable-xmlhelp],
2043         [Disable XML help support]),
2044 ,enable_xmlhelp=yes)
2046 AC_ARG_ENABLE(customtarget-components,
2047     AS_HELP_STRING([--enable-customtarget-components],
2048         [Generates the static UNO object constructor mapping from the build.]))
2050 dnl ===================================================================
2051 dnl Optional Packages (--with/without-)
2052 dnl ===================================================================
2054 AC_ARG_WITH(gcc-home,
2055     AS_HELP_STRING([--with-gcc-home],
2056         [Specify the location of gcc/g++ manually. This can be used in conjunction
2057          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2058          non-default path.]),
2061 AC_ARG_WITH(gnu-patch,
2062     AS_HELP_STRING([--with-gnu-patch],
2063         [Specify location of GNU patch on Solaris or FreeBSD.]),
2066 AC_ARG_WITH(build-platform-configure-options,
2067     AS_HELP_STRING([--with-build-platform-configure-options],
2068         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2071 AC_ARG_WITH(gnu-cp,
2072     AS_HELP_STRING([--with-gnu-cp],
2073         [Specify location of GNU cp on Solaris or FreeBSD.]),
2076 AC_ARG_WITH(external-tar,
2077     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2078         [Specify an absolute path of where to find (and store) tarfiles.]),
2079     TARFILE_LOCATION=$withval ,
2082 AC_ARG_WITH(referenced-git,
2083     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2084         [Specify another checkout directory to reference. This makes use of
2085                  git submodule update --reference, and saves a lot of diskspace
2086                  when having multiple trees side-by-side.]),
2087     GIT_REFERENCE_SRC=$withval ,
2090 AC_ARG_WITH(linked-git,
2091     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2092         [Specify a directory where the repositories of submodules are located.
2093          This uses a method similar to git-new-workdir to get submodules.]),
2094     GIT_LINK_SRC=$withval ,
2097 AC_ARG_WITH(galleries,
2098     AS_HELP_STRING([--with-galleries],
2099         [Specify how galleries should be built. It is possible either to
2100          build these internally from source ("build"),
2101          or to disable them ("no")]),
2104 AC_ARG_WITH(theme,
2105     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2106         [Choose which themes to include. By default those themes with an '*' are included.
2107          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2108          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2109          *elementary, *elementary_svg,
2110          *karasa_jaga, *karasa_jaga_svg,
2111          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2112          *sukapura, *sukapura_svg.]),
2115 libo_FUZZ_ARG_WITH(helppack-integration,
2116     AS_HELP_STRING([--without-helppack-integration],
2117         [It will not integrate the helppacks to the installer
2118          of the product. Please use this switch to use the online help
2119          or separate help packages.]),
2122 libo_FUZZ_ARG_WITH(fonts,
2123     AS_HELP_STRING([--without-fonts],
2124         [LibreOffice includes some third-party fonts to provide a reliable basis for
2125          help content, templates, samples, etc. When these fonts are already
2126          known to be available on the system then you should use this option.]),
2129 AC_ARG_WITH(epm,
2130     AS_HELP_STRING([--with-epm],
2131         [Decides which epm to use. Default is to use the one from the system if
2132          one is built. When either this is not there or you say =internal epm
2133          will be built.]),
2136 AC_ARG_WITH(package-format,
2137     AS_HELP_STRING([--with-package-format],
2138         [Specify package format(s) for LibreOffice installation sets. The
2139          implicit --without-package-format leads to no installation sets being
2140          generated. Possible values: aix, archive, bsd, deb, dmg,
2141          installed, msi, pkg, and rpm.
2142          Example: --with-package-format='deb rpm']),
2145 AC_ARG_WITH(tls,
2146     AS_HELP_STRING([--with-tls],
2147         [Decides which TLS/SSL and cryptographic implementations to use for
2148          LibreOffice's code. Notice that this doesn't apply for depending
2149          libraries like "curl", for example. Default is to use NSS
2150          although OpenSSL is also possible. Notice that selecting NSS restricts
2151          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2152          restrict by now the usage of NSS in LO's code. Possible values:
2153          openssl, nss. Example: --with-tls="nss"]),
2156 AC_ARG_WITH(system-libs,
2157     AS_HELP_STRING([--with-system-libs],
2158         [Use libraries already on system -- enables all --with-system-* flags.]),
2161 AC_ARG_WITH(system-bzip2,
2162     AS_HELP_STRING([--with-system-bzip2],
2163         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2164     [with_system_bzip2="$with_system_libs"])
2166 AC_ARG_WITH(system-headers,
2167     AS_HELP_STRING([--with-system-headers],
2168         [Use headers already on system -- enables all --with-system-* flags for
2169          external packages whose headers are the only entities used i.e.
2170          boost/odbc/sane-header(s).]),,
2171     [with_system_headers="$with_system_libs"])
2173 AC_ARG_WITH(system-jars,
2174     AS_HELP_STRING([--without-system-jars],
2175         [When building with --with-system-libs, also the needed jars are expected
2176          on the system. Use this to disable that]),,
2177     [with_system_jars="$with_system_libs"])
2179 AC_ARG_WITH(system-cairo,
2180     AS_HELP_STRING([--with-system-cairo],
2181         [Use cairo libraries already on system.  Happens automatically for
2182          (implicit) --enable-gtk3.]))
2184 AC_ARG_WITH(system-epoxy,
2185     AS_HELP_STRING([--with-system-epoxy],
2186         [Use epoxy libraries already on system.  Happens automatically for
2187          (implicit) --enable-gtk3.]),,
2188        [with_system_epoxy="$with_system_libs"])
2190 AC_ARG_WITH(myspell-dicts,
2191     AS_HELP_STRING([--with-myspell-dicts],
2192         [Adds myspell dictionaries to the LibreOffice installation set]),
2195 AC_ARG_WITH(system-dicts,
2196     AS_HELP_STRING([--without-system-dicts],
2197         [Do not use dictionaries from system paths.]),
2200 AC_ARG_WITH(external-dict-dir,
2201     AS_HELP_STRING([--with-external-dict-dir],
2202         [Specify external dictionary dir.]),
2205 AC_ARG_WITH(external-hyph-dir,
2206     AS_HELP_STRING([--with-external-hyph-dir],
2207         [Specify external hyphenation pattern dir.]),
2210 AC_ARG_WITH(external-thes-dir,
2211     AS_HELP_STRING([--with-external-thes-dir],
2212         [Specify external thesaurus dir.]),
2215 AC_ARG_WITH(system-zlib,
2216     AS_HELP_STRING([--with-system-zlib],
2217         [Use zlib already on system.]),,
2218     [with_system_zlib=auto])
2220 AC_ARG_WITH(system-jpeg,
2221     AS_HELP_STRING([--with-system-jpeg],
2222         [Use jpeg already on system.]),,
2223     [with_system_jpeg="$with_system_libs"])
2225 AC_ARG_WITH(system-expat,
2226     AS_HELP_STRING([--with-system-expat],
2227         [Use expat already on system.]),,
2228     [with_system_expat="$with_system_libs"])
2230 AC_ARG_WITH(system-libxml,
2231     AS_HELP_STRING([--with-system-libxml],
2232         [Use libxml/libxslt already on system.]),,
2233     [with_system_libxml=auto])
2235 AC_ARG_WITH(system-ucpp,
2236     AS_HELP_STRING([--with-system-ucpp],
2237         [Use ucpp already on system.]),,
2238     [])
2240 AC_ARG_WITH(system-openldap,
2241     AS_HELP_STRING([--with-system-openldap],
2242         [Use the OpenLDAP LDAP SDK already on system.]),,
2243     [with_system_openldap="$with_system_libs"])
2245 libo_FUZZ_ARG_ENABLE(poppler,
2246     AS_HELP_STRING([--disable-poppler],
2247         [Disable building Poppler.])
2250 AC_ARG_WITH(system-poppler,
2251     AS_HELP_STRING([--with-system-poppler],
2252         [Use system poppler (only needed for PDF import).]),,
2253     [with_system_poppler="$with_system_libs"])
2255 AC_ARG_WITH(system-abseil,
2256     AS_HELP_STRING([--with-system-abseil],
2257         [Use the abseil libraries already on system.]),,
2258     [with_system_abseil="$with_system_libs"])
2260 AC_ARG_WITH(system-openjpeg,
2261     AS_HELP_STRING([--with-system-openjpeg],
2262         [Use the OpenJPEG library already on system.]),,
2263     [with_system_openjpeg="$with_system_libs"])
2265 libo_FUZZ_ARG_ENABLE(gpgmepp,
2266     AS_HELP_STRING([--disable-gpgmepp],
2267         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2270 AC_ARG_WITH(system-gpgmepp,
2271     AS_HELP_STRING([--with-system-gpgmepp],
2272         [Use gpgmepp already on system]),,
2273     [with_system_gpgmepp="$with_system_libs"])
2275 AC_ARG_WITH(system-mariadb,
2276     AS_HELP_STRING([--with-system-mariadb],
2277         [Use MariaDB/MySQL libraries already on system.]),,
2278     [with_system_mariadb="$with_system_libs"])
2280 AC_ARG_ENABLE(bundle-mariadb,
2281     AS_HELP_STRING([--enable-bundle-mariadb],
2282         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2285 AC_ARG_WITH(system-postgresql,
2286     AS_HELP_STRING([--with-system-postgresql],
2287         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2288          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2289     [with_system_postgresql="$with_system_libs"])
2291 AC_ARG_WITH(libpq-path,
2292     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2293         [Use this PostgreSQL C interface (libpq) installation for building
2294          the PostgreSQL-SDBC extension.]),
2297 AC_ARG_WITH(system-firebird,
2298     AS_HELP_STRING([--with-system-firebird],
2299         [Use Firebird libraries already on system, for building the Firebird-SDBC
2300          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2301     [with_system_firebird="$with_system_libs"])
2303 AC_ARG_WITH(system-libtommath,
2304             AS_HELP_STRING([--with-system-libtommath],
2305                            [Use libtommath already on system]),,
2306             [with_system_libtommath="$with_system_libs"])
2308 AC_ARG_WITH(system-hsqldb,
2309     AS_HELP_STRING([--with-system-hsqldb],
2310         [Use hsqldb already on system.]))
2312 AC_ARG_WITH(hsqldb-jar,
2313     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2314         [Specify path to jarfile manually.]),
2315     HSQLDB_JAR=$withval)
2317 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2318     AS_HELP_STRING([--disable-scripting-beanshell],
2319         [Disable support for scripts in BeanShell.]),
2323 AC_ARG_WITH(system-beanshell,
2324     AS_HELP_STRING([--with-system-beanshell],
2325         [Use beanshell already on system.]),,
2326     [with_system_beanshell="$with_system_jars"])
2328 AC_ARG_WITH(beanshell-jar,
2329     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2330         [Specify path to jarfile manually.]),
2331     BSH_JAR=$withval)
2333 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2334     AS_HELP_STRING([--disable-scripting-javascript],
2335         [Disable support for scripts in JavaScript.]),
2339 AC_ARG_WITH(system-rhino,
2340     AS_HELP_STRING([--with-system-rhino],
2341         [Use rhino already on system.]),,)
2342 #    [with_system_rhino="$with_system_jars"])
2343 # Above is not used as we have different debug interface
2344 # patched into internal rhino. This code needs to be fixed
2345 # before we can enable it by default.
2347 AC_ARG_WITH(rhino-jar,
2348     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2349         [Specify path to jarfile manually.]),
2350     RHINO_JAR=$withval)
2352 AC_ARG_WITH(system-jfreereport,
2353     AS_HELP_STRING([--with-system-jfreereport],
2354         [Use JFreeReport already on system.]),,
2355     [with_system_jfreereport="$with_system_jars"])
2357 AC_ARG_WITH(sac-jar,
2358     AS_HELP_STRING([--with-sac-jar=JARFILE],
2359         [Specify path to jarfile manually.]),
2360     SAC_JAR=$withval)
2362 AC_ARG_WITH(libxml-jar,
2363     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2364         [Specify path to jarfile manually.]),
2365     LIBXML_JAR=$withval)
2367 AC_ARG_WITH(flute-jar,
2368     AS_HELP_STRING([--with-flute-jar=JARFILE],
2369         [Specify path to jarfile manually.]),
2370     FLUTE_JAR=$withval)
2372 AC_ARG_WITH(jfreereport-jar,
2373     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2374         [Specify path to jarfile manually.]),
2375     JFREEREPORT_JAR=$withval)
2377 AC_ARG_WITH(liblayout-jar,
2378     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2379         [Specify path to jarfile manually.]),
2380     LIBLAYOUT_JAR=$withval)
2382 AC_ARG_WITH(libloader-jar,
2383     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2384         [Specify path to jarfile manually.]),
2385     LIBLOADER_JAR=$withval)
2387 AC_ARG_WITH(libformula-jar,
2388     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2389         [Specify path to jarfile manually.]),
2390     LIBFORMULA_JAR=$withval)
2392 AC_ARG_WITH(librepository-jar,
2393     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2394         [Specify path to jarfile manually.]),
2395     LIBREPOSITORY_JAR=$withval)
2397 AC_ARG_WITH(libfonts-jar,
2398     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2399         [Specify path to jarfile manually.]),
2400     LIBFONTS_JAR=$withval)
2402 AC_ARG_WITH(libserializer-jar,
2403     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2404         [Specify path to jarfile manually.]),
2405     LIBSERIALIZER_JAR=$withval)
2407 AC_ARG_WITH(libbase-jar,
2408     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2409         [Specify path to jarfile manually.]),
2410     LIBBASE_JAR=$withval)
2412 AC_ARG_WITH(system-odbc,
2413     AS_HELP_STRING([--with-system-odbc],
2414         [Use the odbc headers already on system.]),,
2415     [with_system_odbc="auto"])
2417 AC_ARG_WITH(system-sane,
2418     AS_HELP_STRING([--with-system-sane],
2419         [Use sane.h already on system.]),,
2420     [with_system_sane="$with_system_headers"])
2422 AC_ARG_WITH(system-bluez,
2423     AS_HELP_STRING([--with-system-bluez],
2424         [Use bluetooth.h already on system.]),,
2425     [with_system_bluez="$with_system_headers"])
2427 AC_ARG_WITH(system-boost,
2428     AS_HELP_STRING([--with-system-boost],
2429         [Use boost already on system.]),,
2430     [with_system_boost="$with_system_headers"])
2432 AC_ARG_WITH(system-cuckoo,
2433     AS_HELP_STRING([--with-system-cuckoo],
2434         [Use libcuckoo already on system.]),,
2435     [with_system_cuckoo="$with_system_headers"])
2437 AC_ARG_WITH(system-dragonbox,
2438     AS_HELP_STRING([--with-system-dragonbox],
2439         [Use dragonbox already on system.]),,
2440     [with_system_dragonbox="$with_system_headers"])
2442 AC_ARG_WITH(system-libfixmath,
2443     AS_HELP_STRING([--with-system-libfixmath],
2444         [Use libfixmath already on system.]),,
2445     [with_system_libfixmath="$with_system_libs"])
2447 AC_ARG_WITH(system-glm,
2448     AS_HELP_STRING([--with-system-glm],
2449         [Use glm already on system.]),,
2450     [with_system_glm="$with_system_headers"])
2452 AC_ARG_WITH(system-hunspell,
2453     AS_HELP_STRING([--with-system-hunspell],
2454         [Use libhunspell already on system.]),,
2455     [with_system_hunspell="$with_system_libs"])
2457 libo_FUZZ_ARG_ENABLE(zxing,
2458     AS_HELP_STRING([--disable-zxing],
2459        [Disable use of zxing external library.]))
2461 AC_ARG_WITH(system-zxing,
2462     AS_HELP_STRING([--with-system-zxing],
2463         [Use libzxing already on system.]),,
2464     [with_system_zxing="$with_system_libs"])
2466 AC_ARG_WITH(system-box2d,
2467     AS_HELP_STRING([--with-system-box2d],
2468         [Use box2d already on system.]),,
2469     [with_system_box2d="$with_system_libs"])
2471 AC_ARG_WITH(system-mythes,
2472     AS_HELP_STRING([--with-system-mythes],
2473         [Use mythes already on system.]),,
2474     [with_system_mythes="$with_system_libs"])
2476 AC_ARG_WITH(system-altlinuxhyph,
2477     AS_HELP_STRING([--with-system-altlinuxhyph],
2478         [Use ALTLinuxhyph already on system.]),,
2479     [with_system_altlinuxhyph="$with_system_libs"])
2481 AC_ARG_WITH(system-lpsolve,
2482     AS_HELP_STRING([--with-system-lpsolve],
2483         [Use lpsolve already on system.]),,
2484     [with_system_lpsolve="$with_system_libs"])
2486 AC_ARG_WITH(system-coinmp,
2487     AS_HELP_STRING([--with-system-coinmp],
2488         [Use CoinMP already on system.]),,
2489     [with_system_coinmp="$with_system_libs"])
2491 AC_ARG_WITH(system-liblangtag,
2492     AS_HELP_STRING([--with-system-liblangtag],
2493         [Use liblangtag library already on system.]),,
2494     [with_system_liblangtag="$with_system_libs"])
2496 AC_ARG_WITH(system-lockfile,
2497     AS_HELP_STRING([--with-system-lockfile[=file]],
2498         [Detect a system lockfile program or use the \$file argument.]))
2500 AC_ARG_WITH(webdav,
2501     AS_HELP_STRING([--without-webdav],
2502         [Disable WebDAV support in the UCB.]))
2504 AC_ARG_WITH(linker-hash-style,
2505     AS_HELP_STRING([--with-linker-hash-style],
2506         [Use linker with --hash-style=<style> when linking shared objects.
2507          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2508          if supported on the build system, and "sysv" otherwise.]))
2510 AC_ARG_WITH(jdk-home,
2511     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2512         [If you have installed JDK 9 or later on your system please supply the
2513          path here. Note that this is not the location of the java command but the
2514          location of the entire distribution. In case of cross-compiling, this
2515          is the JDK of the host os. Use --with-build-platform-configure-options
2516          to point to a different build platform JDK.]),
2519 AC_ARG_WITH(help,
2520     AS_HELP_STRING([--with-help],
2521         [Enable the build of help. There is a special parameter "common" that
2522          can be used to bundle only the common part, .e.g help-specific icons.
2523          This is useful when you build the helpcontent separately.])
2524     [
2525                           Usage:     --with-help    build the old local help
2526                                  --without-help     no local help (default)
2527                                  --with-help=html   build the new HTML local help
2528                                  --with-help=online build the new HTML online help
2529     ],
2532 AC_ARG_WITH(omindex,
2533    AS_HELP_STRING([--with-omindex],
2534         [Enable the support of xapian-omega index for online help.])
2535    [
2536                          Usage: --with-omindex=server prepare the pages for omindex
2537                                 but let xapian-omega be built in server.
2538                                 --with-omindex=noxap do not prepare online pages
2539                                 for xapian-omega
2540   ],
2543 libo_FUZZ_ARG_WITH(java,
2544     AS_HELP_STRING([--with-java=<java command>],
2545         [Specify the name of the Java interpreter command. Typically "java"
2546          which is the default.
2548          To build without support for Java components, applets, accessibility
2549          or the XML filters written in Java, use --without-java or --with-java=no.]),
2550     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2551     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2554 AC_ARG_WITH(jvm-path,
2555     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2556         [Use a specific JVM search path at runtime.
2557          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2560 AC_ARG_WITH(ant-home,
2561     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2562         [If you have installed Apache Ant on your system, please supply the path here.
2563          Note that this is not the location of the Ant binary but the location
2564          of the entire distribution.]),
2567 AC_ARG_WITH(symbol-config,
2568     AS_HELP_STRING([--with-symbol-config],
2569         [Configuration for the crashreport symbol upload]),
2570         [],
2571         [with_symbol_config=no])
2573 AC_ARG_WITH(export-validation,
2574     AS_HELP_STRING([--without-export-validation],
2575         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2576 ,with_export_validation=auto)
2578 AC_ARG_WITH(bffvalidator,
2579     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2580         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2581          Requires installed Microsoft Office Binary File Format Validator.
2582          Note: export-validation (--with-export-validation) is required to be turned on.
2583          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2584 ,with_bffvalidator=no)
2586 libo_FUZZ_ARG_WITH(junit,
2587     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2588         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2589          --without-junit disables those tests. Not relevant in the --without-java case.]),
2590 ,with_junit=yes)
2592 AC_ARG_WITH(hamcrest,
2593     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2594         [Specifies the hamcrest jar file to use for JUnit-based tests.
2595          --without-junit disables those tests. Not relevant in the --without-java case.]),
2596 ,with_hamcrest=yes)
2598 AC_ARG_WITH(perl-home,
2599     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2600         [If you have installed Perl 5 Distribution, on your system, please
2601          supply the path here. Note that this is not the location of the Perl
2602          binary but the location of the entire distribution.]),
2605 libo_FUZZ_ARG_WITH(doxygen,
2606     AS_HELP_STRING(
2607         [--with-doxygen=<absolute path to doxygen executable>],
2608         [Specifies the doxygen executable to use when generating ODK C/C++
2609          documentation. --without-doxygen disables generation of ODK C/C++
2610          documentation. Not relevant in the --disable-odk case.]),
2611 ,with_doxygen=yes)
2613 AC_ARG_WITH(visual-studio,
2614     AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2615         [Specify which Visual Studio version to use in case several are
2616          installed. Currently 2019 (default) and 2022 are supported.]),
2619 AC_ARG_WITH(windows-sdk,
2620     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2621         [Specify which Windows SDK, or "Windows Kit", version to use
2622          in case the one that came with the selected Visual Studio
2623          is not what you want for some reason. Note that not all compiler/SDK
2624          combinations are supported. The intent is that this option should not
2625          be needed.]),
2628 AC_ARG_WITH(lang,
2629     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2630         [Use this option to build LibreOffice with additional UI language support.
2631          English (US) is always included by default.
2632          Separate multiple languages with space.
2633          For all languages, use --with-lang=ALL.]),
2636 AC_ARG_WITH(locales,
2637     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2638         [Use this option to limit the locale information built in.
2639          Separate multiple locales with space.
2640          Very experimental and might well break stuff.
2641          Just a desperate measure to shrink code and data size.
2642          By default all the locales available is included.
2643          Just works with --disable-dynloading. Defaults to "ALL".
2644          This option is completely unrelated to --with-lang.])
2645     [
2646                           Affects also our character encoding conversion
2647                           tables for encodings mainly targeted for a
2648                           particular locale, like EUC-CN and EUC-TW for
2649                           zh, ISO-2022-JP for ja.
2651                           Affects also our add-on break iterator data for
2652                           some languages.
2654                           For the default, all locales, don't use this switch at all.
2655                           Specifying just the language part of a locale means all matching
2656                           locales will be included.
2657     ],
2660 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2661 libo_FUZZ_ARG_WITH(krb5,
2662     AS_HELP_STRING([--with-krb5],
2663         [Enable MIT Kerberos 5 support in modules that support it.
2664          By default automatically enabled on platforms
2665          where a good system Kerberos 5 is available.]),
2668 libo_FUZZ_ARG_WITH(gssapi,
2669     AS_HELP_STRING([--with-gssapi],
2670         [Enable GSSAPI support in modules that support it.
2671          By default automatically enabled on platforms
2672          where a good system GSSAPI is available.]),
2675 AC_ARG_WITH(iwyu,
2676     AS_HELP_STRING([--with-iwyu],
2677         [Use given IWYU binary path to check unneeded includes instead of building.
2678          Use only if you are hacking on it.]),
2681 libo_FUZZ_ARG_WITH(lxml,
2682     AS_HELP_STRING([--without-lxml],
2683         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2684          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2685          report widget classes and ids.]),
2688 libo_FUZZ_ARG_WITH(latest-c++,
2689     AS_HELP_STRING([--with-latest-c++],
2690         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2691          published standard.]),,
2692         [with_latest_c__=no])
2694 dnl ===================================================================
2695 dnl Branding
2696 dnl ===================================================================
2698 AC_ARG_WITH(branding,
2699     AS_HELP_STRING([--with-branding=/path/to/images],
2700         [Use given path to retrieve branding images set.])
2701     [
2702                           Search for intro.png about.svg and logo.svg.
2703                           If any is missing, default ones will be used instead.
2705                           Search also progress.conf for progress
2706                           settings on intro screen :
2708                           PROGRESSBARCOLOR="255,255,255" Set color of
2709                           progress bar. Comma separated RGB decimal values.
2710                           PROGRESSSIZE="407,6" Set size of progress bar.
2711                           Comma separated decimal values (width, height).
2712                           PROGRESSPOSITION="61,317" Set position of progress
2713                           bar from left,top. Comma separated decimal values.
2714                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2715                           bar frame. Comma separated RGB decimal values.
2716                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2717                           bar text. Comma separated RGB decimal values.
2718                           PROGRESSTEXTBASELINE="287" Set vertical position of
2719                           progress bar text from top. Decimal value.
2721                           Default values will be used if not found.
2722     ],
2726 AC_ARG_WITH(extra-buildid,
2727     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2728         [Show addition build identification in about dialog.]),
2732 AC_ARG_WITH(vendor,
2733     AS_HELP_STRING([--with-vendor="John the Builder"],
2734         [Set vendor of the build.]),
2737 AC_ARG_WITH(privacy-policy-url,
2738     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2739         [The URL to your privacy policy (needed when
2740          enabling online-update or crashreporting via breakpad)]),
2741         [if test "x$with_privacy_policy_url" = "xyes"; then
2742             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2743          elif test "x$with_privacy_policy_url" = "xno"; then
2744             with_privacy_policy_url="undefined"
2745          fi]
2746 ,[with_privacy_policy_url="undefined"])
2748 AC_ARG_WITH(android-package-name,
2749     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2750         [Set Android package name of the build.]),
2753 AC_ARG_WITH(compat-oowrappers,
2754     AS_HELP_STRING([--with-compat-oowrappers],
2755         [Install oo* wrappers in parallel with
2756          lo* ones to keep backward compatibility.
2757          Has effect only with make distro-pack-install]),
2760 AC_ARG_WITH(os-version,
2761     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2762         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2765 AC_ARG_WITH(idlc-cpp,
2766     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2767         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2770 AC_ARG_WITH(parallelism,
2771     AS_HELP_STRING([--with-parallelism],
2772         [Number of jobs to run simultaneously during build. Parallel builds can
2773         save a lot of time on multi-cpu machines. Defaults to the number of
2774         CPUs on the machine, unless you configure --enable-icecream - then to
2775         40.]),
2778 AC_ARG_WITH(all-tarballs,
2779     AS_HELP_STRING([--with-all-tarballs],
2780         [Download all external tarballs unconditionally]))
2782 AC_ARG_WITH(gdrive-client-id,
2783     AS_HELP_STRING([--with-gdrive-client-id],
2784         [Provides the client id of the application for OAuth2 authentication
2785         on Google Drive. If either this or --with-gdrive-client-secret is
2786         empty, the feature will be disabled]),
2789 AC_ARG_WITH(gdrive-client-secret,
2790     AS_HELP_STRING([--with-gdrive-client-secret],
2791         [Provides the client secret of the application for OAuth2
2792         authentication on Google Drive. If either this or
2793         --with-gdrive-client-id is empty, the feature will be disabled]),
2796 AC_ARG_WITH(alfresco-cloud-client-id,
2797     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2798         [Provides the client id of the application for OAuth2 authentication
2799         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2800         empty, the feature will be disabled]),
2803 AC_ARG_WITH(alfresco-cloud-client-secret,
2804     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2805         [Provides the client secret of the application for OAuth2
2806         authentication on Alfresco Cloud. If either this or
2807         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2810 AC_ARG_WITH(onedrive-client-id,
2811     AS_HELP_STRING([--with-onedrive-client-id],
2812         [Provides the client id of the application for OAuth2 authentication
2813         on OneDrive. If either this or --with-onedrive-client-secret is
2814         empty, the feature will be disabled]),
2817 AC_ARG_WITH(onedrive-client-secret,
2818     AS_HELP_STRING([--with-onedrive-client-secret],
2819         [Provides the client secret of the application for OAuth2
2820         authentication on OneDrive. If either this or
2821         --with-onedrive-client-id is empty, the feature will be disabled]),
2823 dnl ===================================================================
2824 dnl Do we want to use pre-build binary tarball for recompile
2825 dnl ===================================================================
2827 if test "$enable_library_bin_tar" = "yes" ; then
2828     USE_LIBRARY_BIN_TAR=TRUE
2829 else
2830     USE_LIBRARY_BIN_TAR=
2832 AC_SUBST(USE_LIBRARY_BIN_TAR)
2834 dnl ===================================================================
2835 dnl Test whether build target is Release Build
2836 dnl ===================================================================
2837 AC_MSG_CHECKING([whether build target is Release Build])
2838 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2839     AC_MSG_RESULT([no])
2840     ENABLE_RELEASE_BUILD=
2841     GET_TASK_ALLOW_ENTITLEMENT='
2842         <!-- We want to be able to debug a hardened process when not building for release -->
2843         <key>com.apple.security.get-task-allow</key>
2844         <true/>'
2845 else
2846     AC_MSG_RESULT([yes])
2847     ENABLE_RELEASE_BUILD=TRUE
2848     GET_TASK_ALLOW_ENTITLEMENT=''
2850 AC_SUBST(ENABLE_RELEASE_BUILD)
2851 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2853 AC_MSG_CHECKING([whether to build a Community flavor])
2854 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2855     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2856     AC_MSG_RESULT([yes])
2857 else
2858     AC_MSG_RESULT([no])
2861 dnl ===================================================================
2862 dnl Test whether to sign Windows Build
2863 dnl ===================================================================
2864 AC_MSG_CHECKING([whether to sign windows build])
2865 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2866     AC_MSG_RESULT([yes])
2867     WINDOWS_BUILD_SIGNING="TRUE"
2868 else
2869     AC_MSG_RESULT([no])
2870     WINDOWS_BUILD_SIGNING="FALSE"
2872 AC_SUBST(WINDOWS_BUILD_SIGNING)
2874 dnl ===================================================================
2875 dnl MacOSX build and runtime environment options
2876 dnl ===================================================================
2878 AC_ARG_WITH(macosx-version-min-required,
2879     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2880         [set the minimum OS version needed to run the built LibreOffice])
2881     [
2882                           e. g.: --with-macosx-version-min-required=10.13
2883     ],
2886 dnl ===================================================================
2887 dnl Check for incompatible options set by fuzzing, and reset those
2888 dnl automatically to working combinations
2889 dnl ===================================================================
2891 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2892         "$enable_dbus" != "$enable_avahi"; then
2893     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2894     enable_avahi=$enable_dbus
2897 add_lopath_after ()
2899     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2900         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2901     fi
2904 add_lopath_before ()
2906     local IFS=${P_SEP}
2907     local path_cleanup
2908     local dir
2909     for dir in $LO_PATH ; do
2910         if test "$dir" != "$1" ; then
2911             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2912         fi
2913     done
2914     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2917 dnl ===================================================================
2918 dnl check for required programs (grep, awk, sed, bash)
2919 dnl ===================================================================
2921 pathmunge ()
2923     local new_path
2924     if test -n "$1"; then
2925         if test "$build_os" = "cygwin"; then
2926             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2927                 PathFormat "$1"
2928                 new_path=`cygpath -sm "$formatted_path"`
2929             else
2930                 PathFormat "$1"
2931                 new_path=`cygpath -u "$formatted_path"`
2932             fi
2933         else
2934             new_path="$1"
2935         fi
2936         if test "$2" = "after"; then
2937             add_lopath_after "$new_path"
2938         else
2939             add_lopath_before "$new_path"
2940         fi
2941     fi
2944 AC_PROG_AWK
2945 AC_PATH_PROG( AWK, $AWK)
2946 if test -z "$AWK"; then
2947     AC_MSG_ERROR([install awk to run this script])
2950 AC_PATH_PROG(BASH, bash)
2951 if test -z "$BASH"; then
2952     AC_MSG_ERROR([bash not found in \$PATH])
2954 AC_SUBST(BASH)
2956 # prefer parallel compression tools, if available
2957 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2958 if test -z "$COMPRESSIONTOOL"; then
2959     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2960     if test -z "$COMPRESSIONTOOL"; then
2961         AC_MSG_ERROR([gzip not found in \$PATH])
2962     fi
2964 AC_SUBST(COMPRESSIONTOOL)
2966 AC_MSG_CHECKING([for GNU or BSD tar])
2967 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2968     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2969     if test $? -eq 0;  then
2970         GNUTAR=$a
2971         break
2972     fi
2973 done
2974 AC_MSG_RESULT($GNUTAR)
2975 if test -z "$GNUTAR"; then
2976     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2978 AC_SUBST(GNUTAR)
2980 AC_MSG_CHECKING([for tar's option to strip components])
2981 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2982 if test $? -eq 0; then
2983     STRIP_COMPONENTS="--strip-components"
2984 else
2985     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2986     if test $? -eq 0; then
2987         STRIP_COMPONENTS="--strip-path"
2988     else
2989         STRIP_COMPONENTS="unsupported"
2990     fi
2992 AC_MSG_RESULT($STRIP_COMPONENTS)
2993 if test x$STRIP_COMPONENTS = xunsupported; then
2994     AC_MSG_ERROR([you need a tar that is able to strip components.])
2996 AC_SUBST(STRIP_COMPONENTS)
2998 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2999 dnl desktop OSes from "mobile" ones.
3001 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3002 dnl In other words, that when building for an OS that is not a
3003 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3005 dnl Note the direction of the implication; there is no assumption that
3006 dnl cross-compiling would imply a non-desktop OS.
3008 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3009     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3010     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3011     if test "$_os" != Emscripten; then
3012         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3013     fi
3016 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3017 # also work with the default gtk3 plugin.
3018 if test "$enable_wasm_strip" = "yes"; then
3019     enable_avmedia=no
3020     enable_cmis=no
3021     enable_coinmp=no
3022     enable_cups=no
3023     test "$_os" = Emscripten && enable_curl=no
3024     enable_database_connectivity=no
3025     enable_dbus=no
3026     enable_dconf=no
3027     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3028     enable_extension_integration=no
3029     enable_extensions=no
3030     enable_extension_update=no
3031     enable_gio=no
3032     enable_gpgmepp=no
3033     enable_ldap=no
3034     enable_lotuswordpro=no
3035     enable_lpsolve=no
3036     enable_nss=no
3037     enable_odk=no
3038     enable_online_update=no
3039     enable_opencl=no
3040     enable_pdfimport=no
3041     enable_randr=no
3042     enable_report_builder=no
3043     enable_scripting=no
3044     enable_sdremote_bluetooth=no
3045     enable_skia=no
3046     enable_xmlhelp=no
3047     enable_zxing=no
3048     test_libepubgen=no
3049     test_libcdr=no
3050     test_libcmis=no
3051     test_libetonyek=no
3052     test_libfreehand=no
3053     test_libmspub=no
3054     test_libpagemaker=no
3055     test_libqxp=no
3056     test_libvisio=no
3057     test_libzmf=no
3058     test_webdav=no
3059     with_galleries=no
3060     with_webdav=no
3061     with_x=no
3063     test "${with_fonts+set}" = set || with_fonts=yes
3064     test "${with_locales+set}" = set || with_locales=en
3066     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3067     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3068 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3069     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3070     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3071     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3072     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3073 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3074     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3075     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3076     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3077     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3078     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3079     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3082 EMSCRIPTEN_NEH_MAJOR=3
3083 EMSCRIPTEN_NEH_MINOR=1
3084 EMSCRIPTEN_NEH_TINY=3
3085 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3087 if test "$enable_wasm_exceptions" = yes; then
3088     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3089     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3090     if test $? -ne 0; then
3091         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3092     else
3093         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3094     fi
3095     ENABLE_WASM_EXCEPTIONS=TRUE
3097 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3099 # Whether to build "avmedia" functionality or not.
3101 if test "$enable_avmedia" = yes; then
3102     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3103     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3104 else
3105     test_gstreamer_1_0=no
3108 # Decide whether to build database connectivity stuff (including Base) or not.
3109 if test "$enable_database_connectivity" != no; then
3110     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3111     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3112 else
3113     if test "$_os" = iOS; then
3114         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3115     fi
3116     disable_database_connectivity_dependencies
3119 if test -z "$enable_extensions"; then
3120     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3121     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3122         enable_extensions=yes
3123     fi
3126 DISABLE_SCRIPTING=''
3127 if test "$enable_scripting" = yes; then
3128     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3129     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3130 else
3131     DISABLE_SCRIPTING='TRUE'
3132     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3135 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3136     # Disable dynamic_loading always for iOS and Android
3137     enable_dynamic_loading=no
3138 elif test -z "$enable_dynamic_loading"; then
3139     # Otherwise enable it unless specifically disabled
3140     enable_dynamic_loading=yes
3143 DISABLE_DYNLOADING=''
3144 if test "$enable_dynamic_loading" = yes; then
3145     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3146 else
3147     DISABLE_DYNLOADING='TRUE'
3148     if test $_os != iOS -a $_os != Android; then
3149         enable_database_connectivity=no
3150         enable_nss=no
3151         enable_odk=no
3152         enable_python=no
3153         enable_skia=no
3154         with_java=no
3155     fi
3157 AC_SUBST(DISABLE_DYNLOADING)
3159 ENABLE_CUSTOMTARGET_COMPONENTS=
3160 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3161     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3162     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3163         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3164     fi
3166 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3168 if test "$enable_extensions" = yes; then
3169     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3170     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3171 else
3172     enable_extension_integration=no
3173     enable_extension_update=no
3176 # remember SYSBASE value
3177 AC_SUBST(SYSBASE)
3179 dnl ===================================================================
3180 dnl  Sort out various gallery compilation options
3181 dnl ===================================================================
3182 WITH_GALLERY_BUILD=TRUE
3183 AC_MSG_CHECKING([how to build and package galleries])
3184 if test -n "${with_galleries}"; then
3185     if test "$with_galleries" = "build"; then
3186         if test "$enable_database_connectivity" = no; then
3187             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3188         fi
3189         AC_MSG_RESULT([build from source images internally])
3190     elif test "$with_galleries" = "no"; then
3191         WITH_GALLERY_BUILD=
3192         AC_MSG_RESULT([disable non-internal gallery build])
3193     else
3194         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3195     fi
3196 else
3197     if test $_os != iOS -a $_os != Android; then
3198         AC_MSG_RESULT([internal src images for desktop])
3199     else
3200         WITH_GALLERY_BUILD=
3201         AC_MSG_RESULT([disable src image build])
3202     fi
3204 AC_SUBST(WITH_GALLERY_BUILD)
3206 dnl ===================================================================
3207 dnl  Checks if ccache is available
3208 dnl ===================================================================
3209 CCACHE_DEPEND_MODE=
3210 if test "$enable_ccache" = "no"; then
3211     CCACHE=""
3212 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3213     case "%$CC%$CXX%" in
3214     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3215     # assume that's good then
3216     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3217         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3218         CCACHE_DEPEND_MODE=1
3219         ;;
3220     *)
3221         # try to use our own ccache if it is available and CCACHE was not already defined
3222         if test -z "$CCACHE"; then
3223             if test "$_os" = "WINNT"; then
3224                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3225             fi
3226             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3227                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3228             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3229                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3230             fi
3231         fi
3232         AC_PATH_PROG([CCACHE],[ccache],[not found])
3233         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3234             CCACHE=`win_short_path_for_make "$CCACHE"`
3235             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3236             rm -f conftest.txt
3237             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3238             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3239             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3240                 AC_MSG_RESULT(yes)
3241             else
3242                 AC_MSG_RESULT(no)
3243                 CCACHE="not found"
3244             fi
3245             rm -f conftest.txt
3246         fi
3247         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3248             # on windows/VC perhaps sccache is around?
3249             case "%$CC%$CXX%" in
3250             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3251             # assume that's good then
3252             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3253                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3254                 CCACHE_DEPEND_MODE=1
3255                 SCCACHE=1
3256                 ;;
3257             *)
3258                 # for sharing code below, reuse CCACHE env var
3259                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3260                 if test "$CCACHE" != "not found"; then
3261                     CCACHE=`win_short_path_for_make "$CCACHE"`
3262                     SCCACHE=1
3263                     CCACHE_DEPEND_MODE=1
3264                 fi
3265                 ;;
3266             esac
3267         fi
3268         if test "$CCACHE" = "not found"; then
3269             CCACHE=""
3270         fi
3271         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3272             CCACHE_DEPEND_MODE=1
3273             # Need to check for ccache version: otherwise prevents
3274             # caching of the results (like "-x objective-c++" for Mac)
3275             if test $_os = Darwin -o $_os = iOS; then
3276                 # Check ccache version
3277                 AC_MSG_CHECKING([whether version of ccache is suitable])
3278                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3279                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3280                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3281                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3282                 else
3283                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3284                     CCACHE=""
3285                     CCACHE_DEPEND_MODE=
3286                 fi
3287             fi
3288         fi
3289         ;;
3290     esac
3291 else
3292     CCACHE=""
3294 if test "$enable_ccache" = "nodepend"; then
3295     CCACHE_DEPEND_MODE=""
3297 AC_SUBST(CCACHE_DEPEND_MODE)
3299 # sccache defaults are good enough
3300 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3301     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3302     # -p works with both 4.2 and 4.4
3303     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3304     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3305     if test "$ccache_size" = ""; then
3306         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3307         if test "$ccache_size" = ""; then
3308             ccache_size=0
3309         fi
3310         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3311         if test $ccache_size -lt 1024; then
3312             CCACHE=""
3313             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3314             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3315         else
3316             # warn that ccache may be too small for debug build
3317             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3318             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3319         fi
3320     else
3321         if test $ccache_size -lt 5; then
3322             #warn that ccache may be too small for debug build
3323             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3324             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3325         fi
3326     fi
3329 ENABLE_Z7_DEBUG=
3330 if test "$enable_z7_debug" != no; then
3331     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3332         ENABLE_Z7_DEBUG=TRUE
3333     fi
3334 else
3335     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3336     add_warning "ccache will not work with --disable-z7-debug"
3338 AC_SUBST(ENABLE_Z7_DEBUG)
3340 dnl ===================================================================
3341 dnl  Checks for C compiler,
3342 dnl  The check for the C++ compiler is later on.
3343 dnl ===================================================================
3344 if test "$_os" != "WINNT"; then
3345     GCC_HOME_SET="true"
3346     AC_MSG_CHECKING([gcc home])
3347     if test -z "$with_gcc_home"; then
3348         if test "$enable_icecream" = "yes"; then
3349             if test -d "/usr/lib/icecc/bin"; then
3350                 GCC_HOME="/usr/lib/icecc/"
3351             elif test -d "/usr/libexec/icecc/bin"; then
3352                 GCC_HOME="/usr/libexec/icecc/"
3353             elif test -d "/opt/icecream/bin"; then
3354                 GCC_HOME="/opt/icecream/"
3355             else
3356                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3358             fi
3359         else
3360             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3361             GCC_HOME_SET="false"
3362         fi
3363     else
3364         GCC_HOME="$with_gcc_home"
3365     fi
3366     AC_MSG_RESULT($GCC_HOME)
3367     AC_SUBST(GCC_HOME)
3369     if test "$GCC_HOME_SET" = "true"; then
3370         if test -z "$CC"; then
3371             CC="$GCC_HOME/bin/gcc"
3372             CC_BASE="gcc"
3373         fi
3374         if test -z "$CXX"; then
3375             CXX="$GCC_HOME/bin/g++"
3376             CXX_BASE="g++"
3377         fi
3378     fi
3381 COMPATH=`dirname "$CC"`
3382 if test "$COMPATH" = "."; then
3383     AC_PATH_PROGS(COMPATH, $CC)
3384     dnl double square bracket to get single because of M4 quote...
3385     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3387 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3389 dnl ===================================================================
3390 dnl Java support
3391 dnl ===================================================================
3392 AC_MSG_CHECKING([whether to build with Java support])
3393 if test "$with_java" != "no"; then
3394     if test "$DISABLE_SCRIPTING" = TRUE; then
3395         AC_MSG_RESULT([no, overridden by --disable-scripting])
3396         ENABLE_JAVA=""
3397         with_java=no
3398     else
3399         AC_MSG_RESULT([yes])
3400         ENABLE_JAVA="TRUE"
3401         AC_DEFINE(HAVE_FEATURE_JAVA)
3402     fi
3403 else
3404     AC_MSG_RESULT([no])
3405     ENABLE_JAVA=""
3408 AC_SUBST(ENABLE_JAVA)
3410 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3412 dnl ENABLE_JAVA="" indicate no Java support at all
3414 dnl ===================================================================
3415 dnl Check macOS SDK and compiler
3416 dnl ===================================================================
3418 if test $_os = Darwin; then
3420     # The SDK in the currently selected Xcode should be found.
3422     AC_MSG_CHECKING([what macOS SDK to use])
3423     for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3424         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3425         if test -d "$MACOSX_SDK_PATH"; then
3426             break
3427         else
3428             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3429             if test -d "$MACOSX_SDK_PATH"; then
3430                 break
3431             fi
3432         fi
3433     done
3434     if test ! -d "$MACOSX_SDK_PATH"; then
3435         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3436     fi
3438     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3440     case $macosx_sdk in
3441     10.13)
3442         MACOSX_SDK_VERSION=101300
3443         ;;
3444     10.14)
3445         MACOSX_SDK_VERSION=101400
3446         ;;
3447     10.15)
3448         MACOSX_SDK_VERSION=101500
3449         ;;
3450     11.0)
3451         MACOSX_SDK_VERSION=110000
3452         ;;
3453     11.1)
3454         MACOSX_SDK_VERSION=110100
3455         ;;
3456     11.3)
3457         MACOSX_SDK_VERSION=110300
3458         ;;
3459     12.0)
3460         MACOSX_SDK_VERSION=120000
3461         ;;
3462     12.1)
3463         MACOSX_SDK_VERSION=120100
3464         ;;
3465     12.3)
3466         MACOSX_SDK_VERSION=120300
3467         ;;
3468     *)
3469         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3470         ;;
3471     esac
3473     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3474         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3475     fi
3477     if test "$with_macosx_version_min_required" = "" ; then
3478         if test "$host_cpu" = x86_64; then
3479             with_macosx_version_min_required="10.13";
3480         else
3481             with_macosx_version_min_required="11.0";
3482         fi
3483     fi
3485     # export this so that "xcrun" invocations later return matching values
3486     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3487     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3488     export DEVELOPER_DIR
3489     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3490     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3492     AC_MSG_CHECKING([whether Xcode is new enough])
3493     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3494     my_xcode_ver2=${my_xcode_ver1#Xcode }
3495     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3496     if test "$my_xcode_ver3" -ge 1205; then
3497         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3498     else
3499         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3500     fi
3502     case "$with_macosx_version_min_required" in
3503     10.13)
3504         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3505         ;;
3506     10.14)
3507         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3508         ;;
3509     10.15)
3510         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3511         ;;
3512     10.16)
3513         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3514         ;;
3515     11.0)
3516         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3517         ;;
3518     11.1)
3519         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3520         ;;
3521     11.3)
3522         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3523         ;;
3524     12.0)
3525         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3526         ;;
3527     12.1)
3528         MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3529         ;;
3530     12.3)
3531         MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3532         ;;
3533     *)
3534         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.13--12.3])
3535         ;;
3536     esac
3538     LIBTOOL=/usr/bin/libtool
3539     INSTALL_NAME_TOOL=install_name_tool
3540     if test -z "$save_CC"; then
3541         stdlib=-stdlib=libc++
3543         AC_MSG_CHECKING([what C compiler to use])
3544         CC="`xcrun -find clang`"
3545         CC_BASE=`first_arg_basename "$CC"`
3546         if test "$host_cpu" = x86_64; then
3547             CC+=" -target x86_64-apple-macos"
3548         else
3549             CC+=" -target arm64-apple-macos"
3550         fi
3551         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3552         AC_MSG_RESULT([$CC])
3554         AC_MSG_CHECKING([what C++ compiler to use])
3555         CXX="`xcrun -find clang++`"
3556         CXX_BASE=`first_arg_basename "$CXX"`
3557         if test "$host_cpu" = x86_64; then
3558             CXX+=" -target x86_64-apple-macos"
3559         else
3560             CXX+=" -target arm64-apple-macos"
3561         fi
3562         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3563         AC_MSG_RESULT([$CXX])
3565         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3566         AR=`xcrun -find ar`
3567         NM=`xcrun -find nm`
3568         STRIP=`xcrun -find strip`
3569         LIBTOOL=`xcrun -find libtool`
3570         RANLIB=`xcrun -find ranlib`
3571     fi
3573     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3574     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3575         AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3576     else
3577         AC_MSG_RESULT([ok])
3578     fi
3579     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3581     AC_MSG_CHECKING([whether to do code signing])
3583     if test "$enable_macosx_code_signing" = yes; then
3584         # By default use the first suitable certificate (?).
3586         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3587         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3588         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3589         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3590         # "Developer ID Application" one.
3592         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3593         if test -n "$identity"; then
3594             MACOSX_CODESIGNING_IDENTITY=$identity
3595             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3596             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3597         else
3598             AC_MSG_ERROR([cannot determine identity to use])
3599         fi
3600     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3601         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3602         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3603         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3604     else
3605         AC_MSG_RESULT([no])
3606     fi
3608     AC_MSG_CHECKING([whether to create a Mac App Store package])
3610     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3611         AC_MSG_RESULT([no])
3612     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3613         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3614     elif test "$enable_macosx_package_signing" = yes; then
3615         # By default use the first suitable certificate.
3616         # It should be a "3rd Party Mac Developer Installer" one
3618         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3619         if test -n "$identity"; then
3620             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3621             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3622             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3623         else
3624             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3625         fi
3626     else
3627         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3628         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3629         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3630     fi
3632     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3633         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3634     fi
3636     AC_MSG_CHECKING([whether to sandbox the application])
3638     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3639         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3640     elif test "$enable_macosx_sandbox" = yes; then
3641         ENABLE_MACOSX_SANDBOX=TRUE
3642         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3643         AC_MSG_RESULT([yes])
3644     else
3645         AC_MSG_RESULT([no])
3646     fi
3648     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3649     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3650     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3652 AC_SUBST(MACOSX_SDK_PATH)
3653 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3654 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3655 AC_SUBST(INSTALL_NAME_TOOL)
3656 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3657 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3658 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3659 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3660 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3662 dnl ===================================================================
3663 dnl Check iOS SDK and compiler
3664 dnl ===================================================================
3666 if test $_os = iOS; then
3667     AC_MSG_CHECKING([what iOS SDK to use])
3668     current_sdk_ver=15.4
3669     older_sdk_vers="15.2 15.0 14.5"
3670     if test "$enable_ios_simulator" = "yes"; then
3671         platform=iPhoneSimulator
3672         versionmin=-mios-simulator-version-min=13.6
3673     else
3674         platform=iPhoneOS
3675         versionmin=-miphoneos-version-min=13.6
3676     fi
3677     xcode_developer=`xcode-select -print-path`
3679     for sdkver in $current_sdk_ver $older_sdk_vers; do
3680         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3681         if test -d $t; then
3682             sysroot=$t
3683             break
3684         fi
3685     done
3687     if test -z "$sysroot"; then
3688         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3689     fi
3691     AC_MSG_RESULT($sysroot)
3693     stdlib="-stdlib=libc++"
3695     AC_MSG_CHECKING([what C compiler to use])
3696     CC="`xcrun -find clang`"
3697     CC_BASE=`first_arg_basename "$CC"`
3698     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3699     AC_MSG_RESULT([$CC])
3701     AC_MSG_CHECKING([what C++ compiler to use])
3702     CXX="`xcrun -find clang++`"
3703     CXX_BASE=`first_arg_basename "$CXX"`
3704     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3705     AC_MSG_RESULT([$CXX])
3707     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3708     AR=`xcrun -find ar`
3709     NM=`xcrun -find nm`
3710     STRIP=`xcrun -find strip`
3711     LIBTOOL=`xcrun -find libtool`
3712     RANLIB=`xcrun -find ranlib`
3715 AC_MSG_CHECKING([whether to treat the installation as read-only])
3717 if test $_os = Darwin; then
3718     enable_readonly_installset=yes
3719 elif test "$enable_extensions" != yes; then
3720     enable_readonly_installset=yes
3722 if test "$enable_readonly_installset" = yes; then
3723     AC_MSG_RESULT([yes])
3724     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3725 else
3726     AC_MSG_RESULT([no])
3729 dnl ===================================================================
3730 dnl Structure of install set
3731 dnl ===================================================================
3733 if test $_os = Darwin; then
3734     LIBO_BIN_FOLDER=MacOS
3735     LIBO_ETC_FOLDER=Resources
3736     LIBO_LIBEXEC_FOLDER=MacOS
3737     LIBO_LIB_FOLDER=Frameworks
3738     LIBO_LIB_PYUNO_FOLDER=Resources
3739     LIBO_SHARE_FOLDER=Resources
3740     LIBO_SHARE_HELP_FOLDER=Resources/help
3741     LIBO_SHARE_JAVA_FOLDER=Resources/java
3742     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3743     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3744     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3745     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3746     LIBO_URE_BIN_FOLDER=MacOS
3747     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3748     LIBO_URE_LIB_FOLDER=Frameworks
3749     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3750     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3751 elif test $_os = WINNT; then
3752     LIBO_BIN_FOLDER=program
3753     LIBO_ETC_FOLDER=program
3754     LIBO_LIBEXEC_FOLDER=program
3755     LIBO_LIB_FOLDER=program
3756     LIBO_LIB_PYUNO_FOLDER=program
3757     LIBO_SHARE_FOLDER=share
3758     LIBO_SHARE_HELP_FOLDER=help
3759     LIBO_SHARE_JAVA_FOLDER=program/classes
3760     LIBO_SHARE_PRESETS_FOLDER=presets
3761     LIBO_SHARE_READMES_FOLDER=readmes
3762     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3763     LIBO_SHARE_SHELL_FOLDER=program/shell
3764     LIBO_URE_BIN_FOLDER=program
3765     LIBO_URE_ETC_FOLDER=program
3766     LIBO_URE_LIB_FOLDER=program
3767     LIBO_URE_MISC_FOLDER=program
3768     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3769 else
3770     LIBO_BIN_FOLDER=program
3771     LIBO_ETC_FOLDER=program
3772     LIBO_LIBEXEC_FOLDER=program
3773     LIBO_LIB_FOLDER=program
3774     LIBO_LIB_PYUNO_FOLDER=program
3775     LIBO_SHARE_FOLDER=share
3776     LIBO_SHARE_HELP_FOLDER=help
3777     LIBO_SHARE_JAVA_FOLDER=program/classes
3778     LIBO_SHARE_PRESETS_FOLDER=presets
3779     LIBO_SHARE_READMES_FOLDER=readmes
3780     if test "$enable_fuzzers" != yes; then
3781         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3782     else
3783         LIBO_SHARE_RESOURCE_FOLDER=resource
3784     fi
3785     LIBO_SHARE_SHELL_FOLDER=program/shell
3786     LIBO_URE_BIN_FOLDER=program
3787     LIBO_URE_ETC_FOLDER=program
3788     LIBO_URE_LIB_FOLDER=program
3789     LIBO_URE_MISC_FOLDER=program
3790     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3792 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3793 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3794 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3795 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3796 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3797 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3798 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3799 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3800 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3801 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3802 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3803 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3804 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3805 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3806 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3807 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3809 # Not all of them needed in config_host.mk, add more if need arises
3810 AC_SUBST(LIBO_BIN_FOLDER)
3811 AC_SUBST(LIBO_ETC_FOLDER)
3812 AC_SUBST(LIBO_LIB_FOLDER)
3813 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3814 AC_SUBST(LIBO_SHARE_FOLDER)
3815 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3816 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3817 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3818 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3819 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3820 AC_SUBST(LIBO_URE_BIN_FOLDER)
3821 AC_SUBST(LIBO_URE_ETC_FOLDER)
3822 AC_SUBST(LIBO_URE_LIB_FOLDER)
3823 AC_SUBST(LIBO_URE_MISC_FOLDER)
3824 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3826 dnl ===================================================================
3827 dnl Windows specific tests and stuff
3828 dnl ===================================================================
3830 reg_get_value()
3832     # Return value: $regvalue
3833     unset regvalue
3835     if test "$build_os" = "wsl"; then
3836         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3837         return
3838     fi
3840     local _regentry="/proc/registry${1}/${2}"
3841     if test -f "$_regentry"; then
3842         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3843         # Registry keys read via /proc/registry* are always \0 terminated!
3844         local _regvalue=$(tr -d '\0' < "$_regentry")
3845         if test $? -eq 0; then
3846             regvalue=$_regvalue
3847         fi
3848     fi
3851 # Get a value from the 32-bit side of the Registry
3852 reg_get_value_32()
3854     reg_get_value "32" "$1"
3857 # Get a value from the 64-bit side of the Registry
3858 reg_get_value_64()
3860     reg_get_value "64" "$1"
3863 case "$host_os" in
3864 cygwin*|wsl*)
3865     COM=MSC
3866     OS=WNT
3867     RTL_OS=Windows
3868     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3869         P_SEP=";"
3870     else
3871         P_SEP=:
3872     fi
3873     case "$host_cpu" in
3874     x86_64)
3875         CPUNAME=X86_64
3876         RTL_ARCH=X86_64
3877         PLATFORMID=windows_x86_64
3878         WINDOWS_X64=1
3879         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3880         WIN_HOST_ARCH="x64"
3881         WIN_MULTI_ARCH="x86"
3882         WIN_HOST_BITS=64
3883         ;;
3884     i*86)
3885         CPUNAME=INTEL
3886         RTL_ARCH=x86
3887         PLATFORMID=windows_x86
3888         WIN_HOST_ARCH="x86"
3889         WIN_HOST_BITS=32
3890         WIN_OTHER_ARCH="x64"
3891         ;;
3892     aarch64)
3893         CPUNAME=AARCH64
3894         RTL_ARCH=AARCH64
3895         PLATFORMID=windows_aarch64
3896         WINDOWS_X64=1
3897         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3898         WIN_HOST_ARCH="arm64"
3899         WIN_HOST_BITS=64
3900         with_ucrt_dir=no
3901         ;;
3902     *)
3903         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3904         ;;
3905     esac
3907     case "$build_cpu" in
3908     x86_64) WIN_BUILD_ARCH="x64" ;;
3909     i*86) WIN_BUILD_ARCH="x86" ;;
3910     aarch64) WIN_BUILD_ARCH="arm64" ;;
3911     *)
3912         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3913         ;;
3914     esac
3916     SCPDEFS="$SCPDEFS -D_MSC_VER"
3917     ;;
3918 esac
3920 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3921 # other-arch won't, but wouldn't break the build (x64 on x86).
3922 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3923     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3927 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3928     # To allow building Windows multi-arch releases without cross-tooling
3929     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3930         cross_compiling="yes"
3931     fi
3934 if test "$cross_compiling" = "yes"; then
3935     export CROSS_COMPILING=TRUE
3936     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3937         ENABLE_WASM_STRIP=TRUE
3938     fi
3939 else
3940     CROSS_COMPILING=
3941     BUILD_TYPE="$BUILD_TYPE NATIVE"
3943 AC_SUBST(CROSS_COMPILING)
3944 AC_SUBST(ENABLE_WASM_STRIP)
3946 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3947 # NOTE: must _not_ be used for bundled external libraries!
3948 ISYSTEM=
3949 if test "$GCC" = "yes"; then
3950     AC_MSG_CHECKING( for -isystem )
3951     save_CFLAGS=$CFLAGS
3952     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3953     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3954     CFLAGS=$save_CFLAGS
3955     if test -n "$ISYSTEM"; then
3956         AC_MSG_RESULT(yes)
3957     else
3958         AC_MSG_RESULT(no)
3959     fi
3961 if test -z "$ISYSTEM"; then
3962     # fall back to using -I
3963     ISYSTEM=-I
3965 AC_SUBST(ISYSTEM)
3967 dnl ===================================================================
3968 dnl  Check which Visual Studio compiler is used
3969 dnl ===================================================================
3971 map_vs_year_to_version()
3973     # Return value: $vsversion
3975     unset vsversion
3977     case $1 in
3978     2019)
3979         vsversion=16;;
3980     2022)
3981         vsversion=17;;
3982     *)
3983         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3984     esac
3987 vs_versions_to_check()
3989     # Args: $1 (optional) : versions to check, in the order of preference
3990     # Return value: $vsversions
3992     unset vsversions
3994     if test -n "$1"; then
3995         map_vs_year_to_version "$1"
3996         vsversions=$vsversion
3997     else
3998         # Default version is 2019
3999         vsversions="16"
4000     fi
4003 win_get_env_from_vsvars32bat()
4005     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4006     # Also seems to be located in another directory under the same name: vsvars32.bat
4007     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4008     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4009     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4010     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4011     local result
4012     if test "$build_os" = "wsl"; then
4013         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4014     else
4015         chmod +x $WRAPPERBATCHFILEPATH
4016         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4017     fi
4018     rm -f $WRAPPERBATCHFILEPATH
4019     printf '%s' "$result"
4022 find_ucrt()
4024     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4025     if test -n "$regvalue"; then
4026         PathFormat "$regvalue"
4027         UCRTSDKDIR=$formatted_path_unix
4028         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4029         UCRTVERSION=$regvalue
4030         # Rest if not exist
4031         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4032           UCRTSDKDIR=
4033         fi
4034     fi
4035     if test -z "$UCRTSDKDIR"; then
4036         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4037         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4038         if test -f "$ide_env_file"; then
4039             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4040             UCRTSDKDIR=$formatted_path
4041             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4042             dnl Hack needed at least by tml:
4043             if test "$UCRTVERSION" = 10.0.15063.0 \
4044                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4045                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4046             then
4047                 UCRTVERSION=10.0.14393.0
4048             fi
4049         else
4050           AC_MSG_ERROR([No UCRT found])
4051         fi
4052     fi
4055 find_msvc()
4057     # Find Visual C++
4058     # Args: $1 (optional) : The VS version year
4059     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4061     unset vctest vctoolset vcnumwithdot vcbuildnumber
4063     vs_versions_to_check "$1"
4064     if test "$build_os" = wsl; then
4065         vswhere="$PROGRAMFILESX86"
4066     else
4067         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4068     fi
4069     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4070     PathFormat "$vswhere"
4071     vswhere=$formatted_path_unix
4072     for ver in $vsversions; do
4073         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4074         if test -z "$vswhereoutput"; then
4075             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4076         fi
4077         # Fall back to all MS products (this includes VC++ Build Tools)
4078         if ! test -n "$vswhereoutput"; then
4079             AC_MSG_CHECKING([VC++ Build Tools and similar])
4080             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4081         fi
4082         if test -n "$vswhereoutput"; then
4083             PathFormat "$vswhereoutput"
4084             vctest=$formatted_path_unix
4085             break
4086         fi
4087     done
4089     if test -n "$vctest"; then
4090         vcnumwithdot="$ver.0"
4091         case "$vcnumwithdot" in
4092         16.0)
4093             vcyear=2019
4094             vctoolset=v142
4095             ;;
4096         17.0)
4097             vcyear=2022
4098             vctoolset=v143
4099             ;;
4100         esac
4101         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4103     fi
4106 test_cl_exe()
4108     AC_MSG_CHECKING([$1 compiler])
4110     CL_EXE_PATH="$2/cl.exe"
4112     if test ! -f "$CL_EXE_PATH"; then
4113         if test "$1" = "multi-arch"; then
4114             AC_MSG_WARN([no compiler (cl.exe) in $2])
4115             return 1
4116         else
4117             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4118         fi
4119     fi
4121     dnl ===========================================================
4122     dnl  Check for the corresponding mspdb*.dll
4123     dnl ===========================================================
4125     # MSVC 15.0 has libraries from 14.0?
4126     mspdbnum="140"
4128     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4129         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4130     fi
4132     # The compiles has to find its shared libraries
4133     OLD_PATH="$PATH"
4134     TEMP_PATH=`cygpath -d "$2"`
4135     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4137     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4138         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4139     fi
4141     PATH="$OLD_PATH"
4143     AC_MSG_RESULT([$CL_EXE_PATH])
4146 SOLARINC=
4147 MSBUILD_PATH=
4148 DEVENV=
4149 if test "$_os" = "WINNT"; then
4150     AC_MSG_CHECKING([Visual C++])
4151     find_msvc "$with_visual_studio"
4152     if test -z "$vctest"; then
4153         if test -n "$with_visual_studio"; then
4154             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4155         else
4156             AC_MSG_ERROR([no Visual Studio installation found])
4157         fi
4158     fi
4159     AC_MSG_RESULT([])
4161     VC_PRODUCT_DIR="$vctest/VC"
4162     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4164     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4165     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4166         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4167         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4168         if test $? -ne 0; then
4169             WIN_MULTI_ARCH=""
4170             WIN_OTHER_ARCH=""
4171         fi
4172     fi
4174     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4175         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4176         test_cl_exe "build" "$MSVC_BUILD_PATH"
4177     fi
4179     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4180         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4181         test_cl_exe "host" "$MSVC_HOST_PATH"
4182     else
4183         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4184     fi
4186     AC_MSG_CHECKING([for short pathname of VC product directory])
4187     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4188     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4190     UCRTSDKDIR=
4191     UCRTVERSION=
4193     AC_MSG_CHECKING([for UCRT location])
4194     find_ucrt
4195     # find_ucrt errors out if it doesn't find it
4196     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4197     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4198     ucrtincpath_formatted=$formatted_path
4199     # SOLARINC is used for external modules and must be set too.
4200     # And no, it's not sufficient to set SOLARINC only, as configure
4201     # itself doesn't honour it.
4202     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4203     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4204     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4205     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4207     AC_SUBST(UCRTSDKDIR)
4208     AC_SUBST(UCRTVERSION)
4210     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4211     # Find the proper version of MSBuild.exe to use based on the VS version
4212     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4213     if test -z "$regvalue" ; then
4214         if test "$WIN_BUILD_ARCH" != "x64"; then
4215             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4216         else
4217             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4218         fi
4219     fi
4220     if test -d "$regvalue" ; then
4221         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4222         AC_MSG_RESULT([$regvalue])
4223     else
4224         AC_MSG_ERROR([MSBuild.exe location not found])
4225     fi
4227     # Find the version of devenv.exe
4228     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4229     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4230     DEVENV_unix=$(cygpath -u "$DEVENV")
4231     if test ! -e "$DEVENV_unix"; then
4232         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4233     fi
4235     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4236     dnl needed when building CLR code:
4237     if test -z "$MSVC_CXX"; then
4238         # This gives us a posix path with 8.3 filename restrictions
4239         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4240     fi
4242     if test -z "$CC"; then
4243         CC=$MSVC_CXX
4244         CC_BASE=`first_arg_basename "$CC"`
4245     fi
4246     if test -z "$CXX"; then
4247         CXX=$MSVC_CXX
4248         CXX_BASE=`first_arg_basename "$CXX"`
4249     fi
4251     if test -n "$CC"; then
4252         # Remove /cl.exe from CC case insensitive
4253         AC_MSG_NOTICE([found Visual C++ $vcyear])
4255         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4256         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4258         PathFormat "$COMPATH"
4259         COMPATH=`win_short_path_for_make "$formatted_path"`
4261         VCVER=$vcnumwithdot
4262         VCTOOLSET=$vctoolset
4264         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4265         # are always "better", we list them in reverse chronological order.
4267         case "$vcnumwithdot" in
4268         16.0 | 17.0)
4269             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4270             ;;
4271         esac
4273         # The expectation is that --with-windows-sdk should not need to be used
4274         if test -n "$with_windows_sdk"; then
4275             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4276             *" "$with_windows_sdk" "*)
4277                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4278                 ;;
4279             *)
4280                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4281                 ;;
4282             esac
4283         fi
4285         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4286         ac_objext=obj
4287         ac_exeext=exe
4289     else
4290         AC_MSG_ERROR([Visual C++ not found after all, huh])
4291     fi
4293     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4294     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4295         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4296         // between Visual Studio versions and _MSC_VER:
4297         #if _MSC_VER < 1925
4298         #error
4299         #endif
4300     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4302     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4303     # version of the Explorer extension (and maybe other small
4304     # bits, too) needed when installing a 32-bit LibreOffice on a
4305     # 64-bit OS. The 64-bit Explorer extension is a feature that
4306     # has been present since long in OOo. Don't confuse it with
4307     # building LibreOffice itself as 64-bit code.
4309     BUILD_X64=
4310     CXX_X64_BINARY=
4312     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4313         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4314         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4315              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4316         then
4317             BUILD_X64=TRUE
4318             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4319             AC_MSG_RESULT([found])
4320         else
4321             AC_MSG_RESULT([not found])
4322             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4323         fi
4324     elif test "$WIN_HOST_ARCH" = "x64"; then
4325         CXX_X64_BINARY=$CXX
4326     fi
4327     AC_SUBST(BUILD_X64)
4329     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4330     AC_SUBST(CXX_X64_BINARY)
4332     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4333     # needed to support TWAIN scan on both 32- and 64-bit systems
4335     case "$WIN_HOST_ARCH" in
4336     x64)
4337         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4338         if test -n "$CXX_X86_BINARY"; then
4339             BUILD_X86=TRUE
4340             AC_MSG_RESULT([preset])
4341         elif test -n "$WIN_MULTI_ARCH"; then
4342             BUILD_X86=TRUE
4343             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4344             AC_MSG_RESULT([found])
4345         else
4346             AC_MSG_RESULT([not found])
4347             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4348         fi
4349         ;;
4350     x86)
4351         BUILD_X86=TRUE
4352         CXX_X86_BINARY=$MSVC_CXX
4353         ;;
4354     esac
4355     AC_SUBST(BUILD_X86)
4356     AC_SUBST(CXX_X86_BINARY)
4358 AC_SUBST(VCVER)
4359 AC_SUBST(VCTOOLSET)
4360 AC_SUBST(DEVENV)
4361 AC_SUBST(MSVC_CXX)
4363 COM_IS_CLANG=
4364 AC_MSG_CHECKING([whether the compiler is actually Clang])
4365 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4366     #ifndef __clang__
4367     you lose
4368     #endif
4369     int foo=42;
4370     ]])],
4371     [AC_MSG_RESULT([yes])
4372      COM_IS_CLANG=TRUE],
4373     [AC_MSG_RESULT([no])])
4374 AC_SUBST(COM_IS_CLANG)
4376 CLANGVER=
4377 if test "$COM_IS_CLANG" = TRUE; then
4378     AC_MSG_CHECKING([whether Clang is new enough])
4379     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4380         #if !defined __apple_build_version__
4381         #error
4382         #endif
4383         ]])],
4384         [my_apple_clang=yes],[my_apple_clang=])
4385     if test "$my_apple_clang" = yes; then
4386         AC_MSG_RESULT([assumed yes (Apple Clang)])
4387     elif test "$_os" = Emscripten; then
4388         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4389     else
4390         if test "$_os" = WINNT; then
4391             dnl In which case, assume clang-cl:
4392             my_args="/EP /TC"
4393         else
4394             my_args="-E -P"
4395         fi
4396         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4397         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4398         CLANGVER=`echo $clang_version \
4399             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4400         if test "$CLANGVER" -ge 80001; then
4401             AC_MSG_RESULT([yes ($clang_version)])
4402         else
4403             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4404         fi
4405         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4406         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4407     fi
4410 SHOWINCLUDES_PREFIX=
4411 if test "$_os" = WINNT; then
4412     dnl We need to guess the prefix of the -showIncludes output, it can be
4413     dnl localized
4414     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4415     echo "#include <stdlib.h>" > conftest.c
4416     SHOWINCLUDES_PREFIX=`$CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4417         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4418     rm -f conftest.c conftest.obj
4419     if test -z "$SHOWINCLUDES_PREFIX"; then
4420         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4421     else
4422         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4423     fi
4425 AC_SUBST(SHOWINCLUDES_PREFIX)
4428 # prefix C with ccache if needed
4430 if test "$CCACHE" != ""; then
4431     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4433     AC_LANG_PUSH([C])
4434     save_CFLAGS=$CFLAGS
4435     CFLAGS="$CFLAGS --ccache-skip -O2"
4436     # msvc does not fail on unknown options, check stdout
4437     if test "$COM" = MSC; then
4438         CFLAGS="$CFLAGS -nologo"
4439     fi
4440     save_ac_c_werror_flag=$ac_c_werror_flag
4441     ac_c_werror_flag=yes
4442     dnl an empty program will do, we're checking the compiler flags
4443     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4444                       [use_ccache=yes], [use_ccache=no])
4445     CFLAGS=$save_CFLAGS
4446     ac_c_werror_flag=$save_ac_c_werror_flag
4447     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4448         AC_MSG_RESULT([yes])
4449     else
4450         CC="$CCACHE $CC"
4451         CC_BASE="ccache $CC_BASE"
4452         AC_MSG_RESULT([no])
4453     fi
4454     AC_LANG_POP([C])
4457 # ===================================================================
4458 # check various GCC options that Clang does not support now but maybe
4459 # will somewhen in the future, check them even for GCC, so that the
4460 # flags are set
4461 # ===================================================================
4463 HAVE_GCC_GGDB2=
4464 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4465     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4466     save_CFLAGS=$CFLAGS
4467     CFLAGS="$CFLAGS -Werror -ggdb2"
4468     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4469     CFLAGS=$save_CFLAGS
4470     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4471         AC_MSG_RESULT([yes])
4472     else
4473         AC_MSG_RESULT([no])
4474     fi
4476     if test "$host_cpu" = "m68k"; then
4477         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4478         save_CFLAGS=$CFLAGS
4479         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4480         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4481         CFLAGS=$save_CFLAGS
4482         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4483             AC_MSG_RESULT([yes])
4484         else
4485             AC_MSG_ERROR([no])
4486         fi
4487     fi
4489 AC_SUBST(HAVE_GCC_GGDB2)
4491 dnl ===================================================================
4492 dnl  Test the gcc version
4493 dnl ===================================================================
4494 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4495     AC_MSG_CHECKING([the GCC version])
4496     _gcc_version=`$CC -dumpfullversion`
4497     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4498         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4499     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4501     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4503     if test "$gcc_full_version" -lt 70000; then
4504         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4505     fi
4506 else
4507     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4508     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4509     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4510     # (which reports itself as GCC 4.2.1).
4511     GCC_VERSION=
4513 AC_SUBST(GCC_VERSION)
4515 dnl Set the ENABLE_DBGUTIL variable
4516 dnl ===================================================================
4517 AC_MSG_CHECKING([whether to build with additional debug utilities])
4518 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4519     ENABLE_DBGUTIL="TRUE"
4520     # this is an extra var so it can have different default on different MSVC
4521     # versions (in case there are version specific problems with it)
4522     MSVC_USE_DEBUG_RUNTIME="TRUE"
4524     AC_MSG_RESULT([yes])
4525     # cppunit and graphite expose STL in public headers
4526     if test "$with_system_cppunit" = "yes"; then
4527         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4528     else
4529         with_system_cppunit=no
4530     fi
4531     if test "$with_system_graphite" = "yes"; then
4532         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4533     else
4534         with_system_graphite=no
4535     fi
4536     if test "$with_system_orcus" = "yes"; then
4537         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4538     else
4539         with_system_orcus=no
4540     fi
4541     if test "$with_system_libcmis" = "yes"; then
4542         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4543     else
4544         with_system_libcmis=no
4545     fi
4546     if test "$with_system_hunspell" = "yes"; then
4547         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4548     else
4549         with_system_hunspell=no
4550     fi
4551     if test "$with_system_gpgmepp" = "yes"; then
4552         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4553     else
4554         with_system_gpgmepp=no
4555     fi
4556     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4557     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4558     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4559     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4560     # of those two is using the system variant:
4561     if test "$with_system_libnumbertext" = "yes"; then
4562         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4563     else
4564         with_system_libnumbertext=no
4565     fi
4566     if test "$with_system_libwps" = "yes"; then
4567         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4568     else
4569         with_system_libwps=no
4570     fi
4571 else
4572     ENABLE_DBGUTIL=""
4573     MSVC_USE_DEBUG_RUNTIME=""
4574     AC_MSG_RESULT([no])
4576 AC_SUBST(ENABLE_DBGUTIL)
4577 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4579 dnl Set the ENABLE_DEBUG variable.
4580 dnl ===================================================================
4581 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4582     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4584 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4585     if test -z "$libo_fuzzed_enable_debug"; then
4586         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4587     else
4588         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4589         enable_debug=yes
4590     fi
4593 AC_MSG_CHECKING([whether to do a debug build])
4594 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4595     ENABLE_DEBUG="TRUE"
4596     if test -n "$ENABLE_DBGUTIL" ; then
4597         AC_MSG_RESULT([yes (dbgutil)])
4598     else
4599         AC_MSG_RESULT([yes])
4600     fi
4601 else
4602     ENABLE_DEBUG=""
4603     AC_MSG_RESULT([no])
4605 AC_SUBST(ENABLE_DEBUG)
4607 dnl ===================================================================
4608 dnl Select the linker to use (gold/lld/ld.bfd).
4609 dnl This is done only after compiler checks (need to know if Clang is
4610 dnl used, for different defaults) and after checking if a debug build
4611 dnl is wanted (non-debug builds get the default linker if not explicitly
4612 dnl specified otherwise).
4613 dnl All checks for linker features/options should come after this.
4614 dnl ===================================================================
4615 check_use_ld()
4617     use_ld=-fuse-ld=${1%%:*}
4618     use_ld_path=${1#*:}
4619     if test "$use_ld_path" != "$1"; then
4620         if test "$COM_IS_CLANG" = TRUE; then
4621             if test "$CLANGVER" -ge 120000; then
4622                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4623             else
4624                 use_ld="-fuse-ld=${use_ld_path}"
4625             fi
4626         else
4627             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4628             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4629             # pickup the alternative linker, when called by libtool for linking.
4630             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4631             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4632         fi
4633     fi
4634     use_ld_fail_if_error=$2
4635     use_ld_ok=
4636     AC_MSG_CHECKING([for $use_ld linker support])
4637     use_ld_ldflags_save="$LDFLAGS"
4638     LDFLAGS="$LDFLAGS $use_ld"
4639     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4640 #include <stdio.h>
4641         ],[
4642 printf ("hello world\n");
4643         ])], USE_LD=$use_ld, [])
4644     if test -n "$USE_LD"; then
4645         AC_MSG_RESULT( yes )
4646         use_ld_ok=yes
4647     else
4648         if test -n "$use_ld_fail_if_error"; then
4649             AC_MSG_ERROR( no )
4650         else
4651             AC_MSG_RESULT( no )
4652         fi
4653     fi
4654     if test -n "$use_ld_ok"; then
4655         dnl keep the value of LDFLAGS
4656         return 0
4657     fi
4658     LDFLAGS="$use_ld_ldflags_save"
4659     return 1
4661 USE_LD=
4662 if test "$enable_ld" != "no"; then
4663     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4664         if test -n "$enable_ld"; then
4665             check_use_ld "$enable_ld" fail_if_error
4666         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4667             dnl non-debug builds default to the default linker
4668             true
4669         elif test -n "$COM_IS_CLANG"; then
4670             check_use_ld lld
4671             if test $? -ne 0; then
4672                 check_use_ld gold
4673             fi
4674         else
4675             # For gcc first try gold, new versions also support lld.
4676             check_use_ld gold
4677             if test $? -ne 0; then
4678                 check_use_ld lld
4679             fi
4680         fi
4681         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4682         rm conftest.out
4683         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4684         if test -z "$ld_used"; then
4685             ld_used="unknown"
4686         fi
4687         AC_MSG_CHECKING([for linker that is used])
4688         AC_MSG_RESULT([$ld_used])
4689         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4690             if echo "$ld_used" | grep -q "^GNU ld"; then
4691                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4692                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4693             fi
4694         fi
4695     else
4696         if test "$enable_ld" = "yes"; then
4697             AC_MSG_ERROR([--enable-ld not supported])
4698         fi
4699     fi
4701 AC_SUBST(USE_LD)
4702 AC_SUBST(LD)
4704 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4705 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4706     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4707     bsymbolic_functions_ldflags_save=$LDFLAGS
4708     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4709     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4710 #include <stdio.h>
4711         ],[
4712 printf ("hello world\n");
4713         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4714     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4715         AC_MSG_RESULT( found )
4716     else
4717         AC_MSG_RESULT( not found )
4718     fi
4719     LDFLAGS=$bsymbolic_functions_ldflags_save
4721 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4723 LD_GC_SECTIONS=
4724 if test "$GCC" = "yes"; then
4725     for flag in "--gc-sections" "-dead_strip"; do
4726         AC_MSG_CHECKING([for $flag linker support])
4727         ldflags_save=$LDFLAGS
4728         LDFLAGS="$LDFLAGS -Wl,$flag"
4729         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4730 #include <stdio.h>
4731             ],[
4732 printf ("hello world\n");
4733             ])],[
4734             LD_GC_SECTIONS="-Wl,$flag"
4735             AC_MSG_RESULT( found )
4736             ], [
4737             AC_MSG_RESULT( not found )
4738             ])
4739         LDFLAGS=$ldflags_save
4740         if test -n "$LD_GC_SECTIONS"; then
4741             break
4742         fi
4743     done
4745 AC_SUBST(LD_GC_SECTIONS)
4747 HAVE_EXTERNAL_DWARF=
4748 if test "$enable_split_debug" != no; then
4749     use_split_debug=
4750     if test -n "$ENABLE_LTO"; then
4751         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4752     elif test "$enable_split_debug" = yes; then
4753         use_split_debug=1
4754     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4755     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4756         use_split_debug=1
4757     fi
4758     if test -n "$use_split_debug"; then
4759         if test "$_os" = "Emscripten"; then
4760             TEST_CC_FLAG=-gseparate-dwarf
4761         else
4762             TEST_CC_FLAG=-gsplit-dwarf
4763         fi
4764         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4765         save_CFLAGS=$CFLAGS
4766         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4767         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4768         CFLAGS=$save_CFLAGS
4769         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4770             AC_MSG_RESULT([yes])
4771         else
4772             if test "$enable_split_debug" = yes; then
4773                 AC_MSG_ERROR([no])
4774             else
4775                 AC_MSG_RESULT([no])
4776             fi
4777         fi
4778     fi
4779     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4780         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4781         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4782     fi
4784 AC_SUBST(HAVE_EXTERNAL_DWARF)
4786 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4787 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4788 save_CFLAGS=$CFLAGS
4789 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4790 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4791 CFLAGS=$save_CFLAGS
4792 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4793     AC_MSG_RESULT([yes])
4794 else
4795     AC_MSG_RESULT([no])
4797 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4799 ENABLE_GDB_INDEX=
4800 if test "$enable_gdb_index" != "no"; then
4801     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4802     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4803         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4804         save_CFLAGS=$CFLAGS
4805         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4806         have_ggnu_pubnames=
4807         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4808         if test "$have_ggnu_pubnames" != "TRUE"; then
4809             if test "$enable_gdb_index" = "yes"; then
4810                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4811             else
4812                 AC_MSG_RESULT( no )
4813             fi
4814         else
4815             AC_MSG_RESULT( yes )
4816             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4817             ldflags_save=$LDFLAGS
4818             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4819             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4820 #include <stdio.h>
4821                 ],[
4822 printf ("hello world\n");
4823                 ])], ENABLE_GDB_INDEX=TRUE, [])
4824             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4825                 AC_MSG_RESULT( yes )
4826             else
4827                 if test "$enable_gdb_index" = "yes"; then
4828                     AC_MSG_ERROR( no )
4829                 else
4830                     AC_MSG_RESULT( no )
4831                 fi
4832             fi
4833             LDFLAGS=$ldflags_save
4834         fi
4835         CFLAGS=$save_CFLAGS
4836         fi
4837     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4838         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4839         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4840     fi
4842 AC_SUBST(ENABLE_GDB_INDEX)
4844 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4845     enable_sal_log=yes
4847 if test "$enable_sal_log" = yes; then
4848     ENABLE_SAL_LOG=TRUE
4850 AC_SUBST(ENABLE_SAL_LOG)
4852 dnl Check for enable symbols option
4853 dnl ===================================================================
4854 AC_MSG_CHECKING([whether to generate debug information])
4855 if test -z "$enable_symbols"; then
4856     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4857         enable_symbols=yes
4858     else
4859         enable_symbols=no
4860     fi
4862 if test "$enable_symbols" = yes; then
4863     ENABLE_SYMBOLS_FOR=all
4864     AC_MSG_RESULT([yes])
4865 elif test "$enable_symbols" = no; then
4866     ENABLE_SYMBOLS_FOR=
4867     AC_MSG_RESULT([no])
4868 else
4869     # Selective debuginfo.
4870     ENABLE_SYMBOLS_FOR="$enable_symbols"
4871     AC_MSG_RESULT([for "$enable_symbols"])
4873 AC_SUBST(ENABLE_SYMBOLS_FOR)
4875 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4876     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4877     AC_MSG_CHECKING([whether enough memory is available for linking])
4878     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4879     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4880     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4881         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4882     else
4883         AC_MSG_RESULT([yes])
4884     fi
4887 ENABLE_OPTIMIZED=
4888 ENABLE_OPTIMIZED_DEBUG=
4889 AC_MSG_CHECKING([whether to compile with optimization flags])
4890 if test -z "$enable_optimized"; then
4891     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4892         enable_optimized=no
4893     else
4894         enable_optimized=yes
4895     fi
4897 if test "$enable_optimized" = yes; then
4898     ENABLE_OPTIMIZED=TRUE
4899     AC_MSG_RESULT([yes])
4900 elif test "$enable_optimized" = debug; then
4901     ENABLE_OPTIMIZED_DEBUG=TRUE
4902     AC_MSG_RESULT([yes (debug)])
4903     HAVE_GCC_OG=
4904     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4905         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4906         save_CFLAGS=$CFLAGS
4907         CFLAGS="$CFLAGS -Werror -Og"
4908         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4909         CFLAGS=$save_CFLAGS
4910         if test "$HAVE_GCC_OG" = "TRUE"; then
4911             AC_MSG_RESULT([yes])
4912         else
4913             AC_MSG_RESULT([no])
4914         fi
4915     fi
4916     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4917         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4918     fi
4919 else
4920     AC_MSG_RESULT([no])
4922 AC_SUBST(ENABLE_OPTIMIZED)
4923 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4926 # determine CPUNAME, OS, ...
4928 case "$host_os" in
4930 aix*)
4931     COM=GCC
4932     CPUNAME=POWERPC
4933     OS=AIX
4934     RTL_OS=AIX
4935     RTL_ARCH=PowerPC
4936     PLATFORMID=aix_powerpc
4937     P_SEP=:
4938     ;;
4940 cygwin*|wsl*)
4941     # Already handled
4942     ;;
4944 darwin*)
4945     COM=GCC
4946     OS=MACOSX
4947     RTL_OS=MacOSX
4948     P_SEP=:
4950     case "$host_cpu" in
4951     aarch64|arm64)
4952         if test "$enable_ios_simulator" = "yes"; then
4953             OS=iOS
4954         else
4955             CPUNAME=AARCH64
4956             RTL_ARCH=AARCH64
4957             PLATFORMID=macosx_aarch64
4958         fi
4959         ;;
4960     x86_64)
4961         if test "$enable_ios_simulator" = "yes"; then
4962             OS=iOS
4963         fi
4964         CPUNAME=X86_64
4965         RTL_ARCH=X86_64
4966         PLATFORMID=macosx_x86_64
4967         ;;
4968     *)
4969         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4970         ;;
4971     esac
4972     ;;
4974 ios*)
4975     COM=GCC
4976     OS=iOS
4977     RTL_OS=iOS
4978     P_SEP=:
4980     case "$host_cpu" in
4981     aarch64|arm64)
4982         if test "$enable_ios_simulator" = "yes"; then
4983             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4984         fi
4985         ;;
4986     *)
4987         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4988         ;;
4989     esac
4990     CPUNAME=AARCH64
4991     RTL_ARCH=AARCH64
4992     PLATFORMID=ios_arm64
4993     ;;
4995 dragonfly*)
4996     COM=GCC
4997     OS=DRAGONFLY
4998     RTL_OS=DragonFly
4999     P_SEP=:
5001     case "$host_cpu" in
5002     i*86)
5003         CPUNAME=INTEL
5004         RTL_ARCH=x86
5005         PLATFORMID=dragonfly_x86
5006         ;;
5007     x86_64)
5008         CPUNAME=X86_64
5009         RTL_ARCH=X86_64
5010         PLATFORMID=dragonfly_x86_64
5011         ;;
5012     *)
5013         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5014         ;;
5015     esac
5016     ;;
5018 freebsd*)
5019     COM=GCC
5020     RTL_OS=FreeBSD
5021     OS=FREEBSD
5022     P_SEP=:
5024     case "$host_cpu" in
5025     aarch64)
5026         CPUNAME=AARCH64
5027         PLATFORMID=freebsd_aarch64
5028         RTL_ARCH=AARCH64
5029         ;;
5030     i*86)
5031         CPUNAME=INTEL
5032         RTL_ARCH=x86
5033         PLATFORMID=freebsd_x86
5034         ;;
5035     x86_64|amd64)
5036         CPUNAME=X86_64
5037         RTL_ARCH=X86_64
5038         PLATFORMID=freebsd_x86_64
5039         ;;
5040     powerpc64)
5041         CPUNAME=POWERPC64
5042         RTL_ARCH=PowerPC_64
5043         PLATFORMID=freebsd_powerpc64
5044         ;;
5045     powerpc|powerpcspe)
5046         CPUNAME=POWERPC
5047         RTL_ARCH=PowerPC
5048         PLATFORMID=freebsd_powerpc
5049         ;;
5050     *)
5051         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5052         ;;
5053     esac
5054     ;;
5056 haiku*)
5057     COM=GCC
5058     GUIBASE=haiku
5059     RTL_OS=Haiku
5060     OS=HAIKU
5061     P_SEP=:
5063     case "$host_cpu" in
5064     i*86)
5065         CPUNAME=INTEL
5066         RTL_ARCH=x86
5067         PLATFORMID=haiku_x86
5068         ;;
5069     x86_64|amd64)
5070         CPUNAME=X86_64
5071         RTL_ARCH=X86_64
5072         PLATFORMID=haiku_x86_64
5073         ;;
5074     *)
5075         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5076         ;;
5077     esac
5078     ;;
5080 kfreebsd*)
5081     COM=GCC
5082     OS=LINUX
5083     RTL_OS=kFreeBSD
5084     P_SEP=:
5086     case "$host_cpu" in
5088     i*86)
5089         CPUNAME=INTEL
5090         RTL_ARCH=x86
5091         PLATFORMID=kfreebsd_x86
5092         ;;
5093     x86_64)
5094         CPUNAME=X86_64
5095         RTL_ARCH=X86_64
5096         PLATFORMID=kfreebsd_x86_64
5097         ;;
5098     *)
5099         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5100         ;;
5101     esac
5102     ;;
5104 linux-gnu*|linux-musl*)
5105     COM=GCC
5106     OS=LINUX
5107     RTL_OS=Linux
5108     P_SEP=:
5110     case "$host_cpu" in
5112     aarch64)
5113         CPUNAME=AARCH64
5114         PLATFORMID=linux_aarch64
5115         RTL_ARCH=AARCH64
5116         EPM_FLAGS="-a arm64"
5117         ;;
5118     alpha)
5119         CPUNAME=AXP
5120         RTL_ARCH=ALPHA
5121         PLATFORMID=linux_alpha
5122         ;;
5123     arm*)
5124         CPUNAME=ARM
5125         EPM_FLAGS="-a arm"
5126         RTL_ARCH=ARM_EABI
5127         PLATFORMID=linux_arm_eabi
5128         case "$host_cpu" in
5129         arm*-linux)
5130             RTL_ARCH=ARM_OABI
5131             PLATFORMID=linux_arm_oabi
5132             ;;
5133         esac
5134         ;;
5135     hppa)
5136         CPUNAME=HPPA
5137         RTL_ARCH=HPPA
5138         EPM_FLAGS="-a hppa"
5139         PLATFORMID=linux_hppa
5140         ;;
5141     i*86)
5142         CPUNAME=INTEL
5143         RTL_ARCH=x86
5144         PLATFORMID=linux_x86
5145         ;;
5146     ia64)
5147         CPUNAME=IA64
5148         RTL_ARCH=IA64
5149         PLATFORMID=linux_ia64
5150         ;;
5151     mips)
5152         CPUNAME=GODSON
5153         RTL_ARCH=MIPS_EB
5154         EPM_FLAGS="-a mips"
5155         PLATFORMID=linux_mips_eb
5156         ;;
5157     mips64)
5158         CPUNAME=GODSON64
5159         RTL_ARCH=MIPS64_EB
5160         EPM_FLAGS="-a mips64"
5161         PLATFORMID=linux_mips64_eb
5162         ;;
5163     mips64el)
5164         CPUNAME=GODSON64
5165         RTL_ARCH=MIPS64_EL
5166         EPM_FLAGS="-a mips64el"
5167         PLATFORMID=linux_mips64_el
5168         ;;
5169     mipsel)
5170         CPUNAME=GODSON
5171         RTL_ARCH=MIPS_EL
5172         EPM_FLAGS="-a mipsel"
5173         PLATFORMID=linux_mips_el
5174         ;;
5175     m68k)
5176         CPUNAME=M68K
5177         RTL_ARCH=M68K
5178         PLATFORMID=linux_m68k
5179         ;;
5180     powerpc)
5181         CPUNAME=POWERPC
5182         RTL_ARCH=PowerPC
5183         PLATFORMID=linux_powerpc
5184         ;;
5185     powerpc64)
5186         CPUNAME=POWERPC64
5187         RTL_ARCH=PowerPC_64
5188         PLATFORMID=linux_powerpc64
5189         ;;
5190     powerpc64le)
5191         CPUNAME=POWERPC64
5192         RTL_ARCH=PowerPC_64_LE
5193         PLATFORMID=linux_powerpc64_le
5194         ;;
5195     sparc)
5196         CPUNAME=SPARC
5197         RTL_ARCH=SPARC
5198         PLATFORMID=linux_sparc
5199         ;;
5200     sparc64)
5201         CPUNAME=SPARC64
5202         RTL_ARCH=SPARC64
5203         PLATFORMID=linux_sparc64
5204         ;;
5205     s390)
5206         CPUNAME=S390
5207         RTL_ARCH=S390
5208         PLATFORMID=linux_s390
5209         ;;
5210     s390x)
5211         CPUNAME=S390X
5212         RTL_ARCH=S390x
5213         PLATFORMID=linux_s390x
5214         ;;
5215     x86_64)
5216         CPUNAME=X86_64
5217         RTL_ARCH=X86_64
5218         PLATFORMID=linux_x86_64
5219         ;;
5220     *)
5221         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5222         ;;
5223     esac
5224     ;;
5226 linux-android*)
5227     COM=GCC
5228     OS=ANDROID
5229     RTL_OS=Android
5230     P_SEP=:
5232     case "$host_cpu" in
5234     arm|armel)
5235         CPUNAME=ARM
5236         RTL_ARCH=ARM_EABI
5237         PLATFORMID=android_arm_eabi
5238         ;;
5239     aarch64)
5240         CPUNAME=AARCH64
5241         RTL_ARCH=AARCH64
5242         PLATFORMID=android_aarch64
5243         ;;
5244     i*86)
5245         CPUNAME=INTEL
5246         RTL_ARCH=x86
5247         PLATFORMID=android_x86
5248         ;;
5249     x86_64)
5250         CPUNAME=X86_64
5251         RTL_ARCH=X86_64
5252         PLATFORMID=android_x86_64
5253         ;;
5254     *)
5255         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5256         ;;
5257     esac
5258     ;;
5260 *netbsd*)
5261     COM=GCC
5262     OS=NETBSD
5263     RTL_OS=NetBSD
5264     P_SEP=:
5266     case "$host_cpu" in
5267     i*86)
5268         CPUNAME=INTEL
5269         RTL_ARCH=x86
5270         PLATFORMID=netbsd_x86
5271         ;;
5272     powerpc)
5273         CPUNAME=POWERPC
5274         RTL_ARCH=PowerPC
5275         PLATFORMID=netbsd_powerpc
5276         ;;
5277     sparc)
5278         CPUNAME=SPARC
5279         RTL_ARCH=SPARC
5280         PLATFORMID=netbsd_sparc
5281         ;;
5282     x86_64)
5283         CPUNAME=X86_64
5284         RTL_ARCH=X86_64
5285         PLATFORMID=netbsd_x86_64
5286         ;;
5287     *)
5288         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5289         ;;
5290     esac
5291     ;;
5293 openbsd*)
5294     COM=GCC
5295     OS=OPENBSD
5296     RTL_OS=OpenBSD
5297     P_SEP=:
5299     case "$host_cpu" in
5300     i*86)
5301         CPUNAME=INTEL
5302         RTL_ARCH=x86
5303         PLATFORMID=openbsd_x86
5304         ;;
5305     x86_64)
5306         CPUNAME=X86_64
5307         RTL_ARCH=X86_64
5308         PLATFORMID=openbsd_x86_64
5309         ;;
5310     *)
5311         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5312         ;;
5313     esac
5314     SOLARINC="$SOLARINC -I/usr/local/include"
5315     ;;
5317 solaris*)
5318     COM=GCC
5319     OS=SOLARIS
5320     RTL_OS=Solaris
5321     P_SEP=:
5323     case "$host_cpu" in
5324     i*86)
5325         CPUNAME=INTEL
5326         RTL_ARCH=x86
5327         PLATFORMID=solaris_x86
5328         ;;
5329     sparc)
5330         CPUNAME=SPARC
5331         RTL_ARCH=SPARC
5332         PLATFORMID=solaris_sparc
5333         ;;
5334     sparc64)
5335         CPUNAME=SPARC64
5336         RTL_ARCH=SPARC64
5337         PLATFORMID=solaris_sparc64
5338         ;;
5339     *)
5340         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5341         ;;
5342     esac
5343     SOLARINC="$SOLARINC -I/usr/local/include"
5344     ;;
5346 emscripten*)
5347     COM=GCC
5348     OS=EMSCRIPTEN
5349     RTL_OS=Emscripten
5350     P_SEP=:
5352     case "$host_cpu" in
5353     wasm32|wasm64)
5354         ;;
5355     *)
5356         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5357         ;;
5358     esac
5359     CPUNAME=INTEL
5360     RTL_ARCH=x86
5361     PLATFORMID=linux_x86
5362     ;;
5365     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5366     ;;
5367 esac
5369 DISABLE_GUI=""
5370 if test "$enable_gui" = "no"; then
5371     if test "$using_x11" != yes; then
5372         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5373     fi
5374     USING_X11=
5375     DISABLE_GUI=TRUE
5376     test_epoxy=no
5377 else
5378     AC_DEFINE(HAVE_FEATURE_UI)
5380 AC_SUBST(DISABLE_GUI)
5382 if test "$with_x" = "no"; then
5383     USING_X11=
5386 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5387     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5390 if test "$using_x11" = yes; then
5391     if test "$USING_X11" = TRUE; then
5392         AC_DEFINE(USING_X11)
5393     else
5394         disable_x11_tests
5395         if test "$DISABLE_DYNLOADING" = TRUE; then
5396             test_qt5=yes
5397         fi
5398     fi
5399 else
5400     if test "$USING_X11" = TRUE; then
5401         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5402     fi
5405 WORKDIR="${BUILDDIR}/workdir"
5406 INSTDIR="${BUILDDIR}/instdir"
5407 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5408 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5409 AC_SUBST(COM)
5410 AC_SUBST(CPUNAME)
5411 AC_SUBST(RTL_OS)
5412 AC_SUBST(RTL_ARCH)
5413 AC_SUBST(EPM_FLAGS)
5414 AC_SUBST(USING_X11)
5415 AC_SUBST([INSTDIR])
5416 AC_SUBST([INSTROOT])
5417 AC_SUBST([INSTROOTBASE])
5418 AC_SUBST(OS)
5419 AC_SUBST(P_SEP)
5420 AC_SUBST(WORKDIR)
5421 AC_SUBST(PLATFORMID)
5422 AC_SUBST(WINDOWS_X64)
5423 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5424 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5426 if test "$OS" = WNT -a "$COM" = MSC; then
5427     case "$CPUNAME" in
5428     INTEL) CPPU_ENV=msci ;;
5429     X86_64) CPPU_ENV=mscx ;;
5430     AARCH64) CPPU_ENV=msca ;;
5431     *)
5432         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5433         ;;
5434     esac
5435 else
5436     CPPU_ENV=gcc3
5438 AC_SUBST(CPPU_ENV)
5440 dnl ===================================================================
5441 dnl Test which package format to use
5442 dnl ===================================================================
5443 AC_MSG_CHECKING([which package format to use])
5444 if test -n "$with_package_format" -a "$with_package_format" != no; then
5445     for i in $with_package_format; do
5446         case "$i" in
5447         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5448             ;;
5449         *)
5450             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5451 aix - AIX software distribution
5452 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5453 deb - Debian software distribution
5454 pkg - Solaris software distribution
5455 rpm - RedHat software distribution
5457 LibreOffice additionally supports:
5458 archive - .tar.gz or .zip
5459 dmg - macOS .dmg
5460 installed - installation tree
5461 msi - Windows .msi
5462         ])
5463             ;;
5464         esac
5465     done
5466     # fakeroot is needed to ensure correct file ownerships/permissions
5467     # inside deb packages and tar archives created on Linux and Solaris.
5468     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5469         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5470         if test "$FAKEROOT" = "no"; then
5471             AC_MSG_ERROR(
5472                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5473         fi
5474     fi
5475     PKGFORMAT="$with_package_format"
5476     AC_MSG_RESULT([$PKGFORMAT])
5477 else
5478     PKGFORMAT=
5479     AC_MSG_RESULT([none])
5481 AC_SUBST(PKGFORMAT)
5483 dnl ===================================================================
5484 dnl handle help related options
5486 dnl If you change help related options, please update README.help
5487 dnl ===================================================================
5489 ENABLE_HTMLHELP=
5490 HELP_OMINDEX_PAGE=
5491 HELP_ONLINE=
5492 WITH_HELPPACKS=
5494 AC_MSG_CHECKING([which help to build])
5495 if test -n "$with_help" -a "$with_help" != "no"; then
5496     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5497     BUILD_TYPE="$BUILD_TYPE HELP"
5498     case "$with_help" in
5499     "html")
5500         ENABLE_HTMLHELP=TRUE
5501         WITH_HELPPACKS=TRUE
5502         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5503         AC_MSG_RESULT([HTML (local)])
5504         ;;
5505     "online")
5506         ENABLE_HTMLHELP=TRUE
5507         HELP_ONLINE=TRUE
5508         AC_MSG_RESULT([HTML (online)])
5509         ;;
5510     yes)
5511         WITH_HELPPACKS=TRUE
5512         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5513         AC_MSG_RESULT([XML (local)])
5514         ;;
5515     *)
5516         AC_MSG_ERROR([Unknown --with-help=$with_help])
5517         ;;
5518     esac
5519 else
5520     AC_MSG_RESULT([no])
5523 AC_MSG_CHECKING([if we need to build the help index tooling])
5524 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5525     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5526     test_clucene=yes
5527     AC_MSG_RESULT([yes])
5528 else
5529     AC_MSG_RESULT([no])
5532 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5533 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5534     if test "$HELP_ONLINE" != TRUE; then
5535         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5536     fi
5537     case "$with_omindex" in
5538     "server")
5539         HELP_OMINDEX_PAGE=TRUE
5540         AC_MSG_RESULT([SERVER])
5541         ;;
5542     "noxap")
5543         AC_MSG_RESULT([NOXAP])
5544         ;;
5545     *)
5546         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5547         ;;
5548     esac
5549 else
5550     AC_MSG_RESULT([no])
5553 AC_MSG_CHECKING([whether to include the XML-help support])
5554 if test "$enable_xmlhelp" = yes; then
5555     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5556     test_clucene=yes
5557     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5558     AC_MSG_RESULT([yes])
5559 else
5560     if test "$with_help" = yes; then
5561         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5562     fi
5563     AC_MSG_RESULT([no])
5566 dnl Test whether to integrate helppacks into the product's installer
5567 AC_MSG_CHECKING([for helppack integration])
5568 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5569     AC_MSG_RESULT([no integration])
5570 else
5571     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5572     AC_MSG_RESULT([integration])
5575 AC_SUBST([ENABLE_HTMLHELP])
5576 AC_SUBST([HELP_OMINDEX_PAGE])
5577 AC_SUBST([HELP_ONLINE])
5578 # WITH_HELPPACKS is used only in configure
5580 dnl ===================================================================
5581 dnl Set up a different compiler to produce tools to run on the build
5582 dnl machine when doing cross-compilation
5583 dnl ===================================================================
5585 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5586 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5587 if test "$cross_compiling" = "yes"; then
5588     AC_MSG_CHECKING([for BUILD platform configuration])
5589     echo
5590     rm -rf CONF-FOR-BUILD config_build.mk
5591     mkdir CONF-FOR-BUILD
5592     # Here must be listed all files needed when running the configure script. In particular, also
5593     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5594     # keep them in the same order as there.
5595     (cd $SRC_ROOT && tar cf - \
5596         config.guess \
5597         bin/get_config_variables \
5598         solenv/bin/getcompver.awk \
5599         solenv/inc/langlist.mk \
5600         download.lst \
5601         config_host.mk.in \
5602         config_host_lang.mk.in \
5603         Makefile.in \
5604         bin/bffvalidator.sh.in \
5605         bin/odfvalidator.sh.in \
5606         bin/officeotron.sh.in \
5607         hardened_runtime.xcent.in \
5608         instsetoo_native/util/openoffice.lst.in \
5609         config_host/*.in \
5610         sysui/desktop/macosx/Info.plist.in \
5611         .vscode/vs-code-template.code-workspace.in \
5612         solenv/lockfile/autoconf.h.in \
5613         ) \
5614     | (cd CONF-FOR-BUILD && tar xf -)
5615     cp configure CONF-FOR-BUILD
5616     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5617     (
5618     unset COM USING_X11 OS CPUNAME
5619     unset CC CXX SYSBASE CFLAGS
5620     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5621     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5622     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5623     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5624     if test -n "$CC_FOR_BUILD"; then
5625         export CC="$CC_FOR_BUILD"
5626         CC_BASE=`first_arg_basename "$CC"`
5627     fi
5628     if test -n "$CXX_FOR_BUILD"; then
5629         export CXX="$CXX_FOR_BUILD"
5630         CXX_BASE=`first_arg_basename "$CXX"`
5631     fi
5632     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5633     cd CONF-FOR-BUILD
5635     # Handle host configuration, which affects the cross-toolset too
5636     sub_conf_opts=""
5637     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5638     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5639     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5640     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5641     if test -n "$ENABLE_JAVA"; then
5642         case "$_os" in
5643         Android)
5644             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5645             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5646             ;;
5647         *)
5648             if test -z "$with_jdk_home"; then
5649                 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.])
5650             fi
5651             ;;
5652         esac
5653     else
5654         sub_conf_opts="$sub_conf_opts --disable-scripting"
5655     fi
5656     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5657     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5658     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5659     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5660     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5661     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5662     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5663     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5664     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5665     if test "$_os" = "Emscripten"; then
5666         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5667     fi
5669     # Don't bother having configure look for stuff not needed for the build platform anyway
5670     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5671     sub_conf_defaults=" \
5672         --build="$build_alias" \
5673         --disable-cairo-canvas \
5674         --disable-cups \
5675         --disable-customtarget-components \
5676         --disable-firebird-sdbc \
5677         --disable-gpgmepp \
5678         --disable-gstreamer-1-0 \
5679         --disable-gtk3 \
5680         --disable-gtk4 \
5681         --disable-libcmis \
5682         --disable-mariadb-sdbc \
5683         --disable-nss \
5684         --disable-online-update \
5685         --disable-opencl \
5686         --disable-pdfimport \
5687         --disable-postgresql-sdbc \
5688         --disable-skia \
5689         --disable-xmlhelp \
5690         --enable-dynamic-loading \
5691         --enable-icecream="$enable_icecream" \
5692         --without-doxygen \
5693         --without-webdav \
5694         --without-x \
5695         --with-tls=openssl \
5697     # single quotes added for better readability in case of spaces
5698     echo "    Running CONF-FOR-BUILD/configure" \
5699         $sub_conf_defaults \
5700         --with-parallelism="'$with_parallelism'" \
5701         --with-theme="'$with_theme'" \
5702         $sub_conf_opts \
5703         $with_build_platform_configure_options \
5704         --srcdir=$srcdir
5706     ./configure \
5707         $sub_conf_defaults \
5708         --with-parallelism="$with_parallelism" \
5709         --with-theme="$with_theme" \
5710         $sub_conf_opts \
5711         $with_build_platform_configure_options \
5712         --srcdir=$srcdir \
5713         2>&1 | sed -e 's/^/    /'
5714     if test [${PIPESTATUS[0]}] -ne 0; then
5715         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5716     fi
5718     # filter permitted build targets
5719     PERMITTED_BUILD_TARGETS="
5720         AVMEDIA
5721         BOOST
5722         CAIRO
5723         CLUCENE
5724         CUCKOO
5725         CURL
5726         DBCONNECTIVITY
5727         DESKTOP
5728         DRAGONBOX
5729         DYNLOADING
5730         EPOXY
5731         EXPAT
5732         GLM
5733         GRAPHITE
5734         HARFBUZZ
5735         HELPTOOLS
5736         ICU
5737         LCMS2
5738         LIBJPEG_TURBO
5739         LIBLANGTAG
5740         LibO
5741         LIBFFI
5742         LIBPN
5743         LIBWEBP
5744         LIBXML2
5745         LIBXSLT
5746         MDDS
5747         NATIVE
5748         OPENSSL
5749         ORCUS
5750         PYTHON
5751         SCRIPTING
5752         ZLIB
5754     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5755     # newlined lists, to use grep as a filter
5756     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5757     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5758     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5759     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5761     cp config_host.mk ../config_build.mk
5762     cp config_host_lang.mk ../config_build_lang.mk
5763     mv config.log ../config.Build.log
5764     mkdir -p ../config_build
5765     mv config_host/*.h ../config_build
5766     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5768     # all these will get a _FOR_BUILD postfix
5769     DIRECT_FOR_BUILD_SETTINGS="
5770         CC
5771         CPPU_ENV
5772         CXX
5773         ILIB
5774         JAVA_HOME
5775         JAVAIFLAGS
5776         JDK
5777         LIBO_BIN_FOLDER
5778         LIBO_LIB_FOLDER
5779         LIBO_URE_LIB_FOLDER
5780         LIBO_URE_MISC_FOLDER
5781         OS
5782         SDKDIRNAME
5783         SYSTEM_LIBXML
5784         SYSTEM_LIBXSLT
5786     # these overwrite host config with build config
5787     OVERWRITING_SETTINGS="
5788         ANT
5789         ANT_HOME
5790         ANT_LIB
5791         HSQLDB_USE_JDBC_4_1
5792         JAVA_CLASSPATH_NOT_SET
5793         JAVA_SOURCE_VER
5794         JAVA_TARGET_VER
5795         JAVACFLAGS
5796         JAVACOMPILER
5797         JAVADOC
5798         JAVADOCISGJDOC
5799         LOCKFILE
5800         SYSTEM_GENBRK
5801         SYSTEM_GENCCODE
5802         SYSTEM_GENCMN
5804     # these need some special handling
5805     EXTRA_HANDLED_SETTINGS="
5806         INSTDIR
5807         INSTROOT
5808         PATH
5809         WORKDIR
5811     OLD_PATH=$PATH
5812     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5813     BUILD_PATH=$PATH
5814     PATH=$OLD_PATH
5816     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5817     echo "$line" >>build-config
5819     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5820         VV='$'$V
5821         VV=`eval "echo $VV"`
5822         if test -n "$VV"; then
5823             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5824             echo "$line" >>build-config
5825         fi
5826     done
5828     for V in $OVERWRITING_SETTINGS; do
5829         VV='$'$V
5830         VV=`eval "echo $VV"`
5831         if test -n "$VV"; then
5832             line=${V}='${'${V}:-$VV'}'
5833             echo "$line" >>build-config
5834         fi
5835     done
5837     for V in INSTDIR INSTROOT WORKDIR; do
5838         VV='$'$V
5839         VV=`eval "echo $VV"`
5840         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5841         if test -n "$VV"; then
5842             line="${V}_FOR_BUILD='$VV'"
5843             echo "$line" >>build-config
5844         fi
5845     done
5847     )
5848     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5849     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])
5850     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5851              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5853     eval `cat CONF-FOR-BUILD/build-config`
5855     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5857     rm -rf CONF-FOR-BUILD
5858 else
5859     OS_FOR_BUILD="$OS"
5860     CC_FOR_BUILD="$CC"
5861     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5862     CXX_FOR_BUILD="$CXX"
5863     INSTDIR_FOR_BUILD="$INSTDIR"
5864     INSTROOT_FOR_BUILD="$INSTROOT"
5865     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5866     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5867     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5868     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5869     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5870     WORKDIR_FOR_BUILD="$WORKDIR"
5872 AC_SUBST(OS_FOR_BUILD)
5873 AC_SUBST(INSTDIR_FOR_BUILD)
5874 AC_SUBST(INSTROOT_FOR_BUILD)
5875 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5876 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5877 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5878 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5879 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5880 AC_SUBST(WORKDIR_FOR_BUILD)
5881 AC_SUBST(CC_FOR_BUILD)
5882 AC_SUBST(CXX_FOR_BUILD)
5883 AC_SUBST(CPPU_ENV_FOR_BUILD)
5885 dnl ===================================================================
5886 dnl Check for lockfile deps
5887 dnl ===================================================================
5888 if test -z "$CROSS_COMPILING"; then
5889     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5890     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5891     AC_MSG_CHECKING([which lockfile binary to use])
5892     case "$with_system_lockfile" in
5893     yes)
5894         AC_MSG_RESULT([external])
5895         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5896         ;;
5897     no)
5898         AC_MSG_RESULT([internal])
5899         ;;
5900     *)
5901         if test -x "$with_system_lockfile"; then
5902             LOCKFILE="$with_system_lockfile"
5903         else
5904             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5905         fi
5906         AC_MSG_RESULT([$with_system_lockfile])
5907         ;;
5908     esac
5911 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5912     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5915 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5916 AC_CHECK_FUNCS([utime utimes])
5917 AC_SUBST(LOCKFILE)
5919 dnl ===================================================================
5920 dnl Check for syslog header
5921 dnl ===================================================================
5922 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5924 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5925 dnl ===================================================================
5926 AC_MSG_CHECKING([whether to turn warnings to errors])
5927 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5928     ENABLE_WERROR="TRUE"
5929     PYTHONWARNINGS="error"
5930     AC_MSG_RESULT([yes])
5931 else
5932     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5933         ENABLE_WERROR="TRUE"
5934         PYTHONWARNINGS="error"
5935         AC_MSG_RESULT([yes])
5936     else
5937         AC_MSG_RESULT([no])
5938     fi
5940 AC_SUBST(ENABLE_WERROR)
5941 AC_SUBST(PYTHONWARNINGS)
5943 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5944 dnl ===================================================================
5945 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5946 if test -z "$enable_assert_always_abort"; then
5947    if test "$ENABLE_DEBUG" = TRUE; then
5948        enable_assert_always_abort=yes
5949    else
5950        enable_assert_always_abort=no
5951    fi
5953 if test "$enable_assert_always_abort" = "yes"; then
5954     ASSERT_ALWAYS_ABORT="TRUE"
5955     AC_MSG_RESULT([yes])
5956 else
5957     ASSERT_ALWAYS_ABORT="FALSE"
5958     AC_MSG_RESULT([no])
5960 AC_SUBST(ASSERT_ALWAYS_ABORT)
5962 # Determine whether to use ooenv for the instdir installation
5963 # ===================================================================
5964 if test $_os != "WINNT" -a $_os != "Darwin"; then
5965     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5966     if test -z "$enable_ooenv"; then
5967         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5968             enable_ooenv=yes
5969         else
5970             enable_ooenv=no
5971         fi
5972     fi
5973     if test "$enable_ooenv" = "no"; then
5974         AC_MSG_RESULT([no])
5975     else
5976         ENABLE_OOENV="TRUE"
5977         AC_MSG_RESULT([yes])
5978     fi
5980 AC_SUBST(ENABLE_OOENV)
5982 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5983     if test "$enable_qt5" = "no"; then
5984         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5985     else
5986         enable_qt5=yes
5987     fi
5990 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
5991 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
5992     AC_MSG_RESULT([yes])
5993     ENABLE_PAGEIN=TRUE
5994     AC_DEFINE(HAVE_FEATURE_PAGEIN)
5995 else
5996     AC_MSG_RESULT([no])
5998 AC_SUBST(ENABLE_PAGEIN)
6000 dnl ===================================================================
6001 dnl check for cups support
6002 dnl ===================================================================
6004 AC_MSG_CHECKING([whether to enable CUPS support])
6005 if test "$test_cups" = yes -a "$enable_cups" != no; then
6006     ENABLE_CUPS=TRUE
6007     AC_MSG_RESULT([yes])
6009     AC_MSG_CHECKING([whether cups support is present])
6010     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6011     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6012     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6013         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6014     fi
6015 else
6016     AC_MSG_RESULT([no])
6019 AC_SUBST(ENABLE_CUPS)
6021 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6023 dnl whether to find & fetch external tarballs?
6024 dnl ===================================================================
6025 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6026    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6027        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6028    else
6029        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6030    fi
6032 if test -z "$TARFILE_LOCATION"; then
6033     if test -d "$SRC_ROOT/src" ; then
6034         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6035         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6036     fi
6037     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6038 else
6039     AbsolutePath "$TARFILE_LOCATION"
6040     PathFormat "${absolute_path}"
6041     TARFILE_LOCATION="${formatted_path}"
6043 AC_SUBST(TARFILE_LOCATION)
6045 AC_MSG_CHECKING([whether we want to fetch tarballs])
6046 if test "$enable_fetch_external" != "no"; then
6047     if test "$with_all_tarballs" = "yes"; then
6048         AC_MSG_RESULT([yes, all of them])
6049         DO_FETCH_TARBALLS="ALL"
6050     else
6051         AC_MSG_RESULT([yes, if we use them])
6052         DO_FETCH_TARBALLS="TRUE"
6053     fi
6054 else
6055     AC_MSG_RESULT([no])
6056     DO_FETCH_TARBALLS=
6058 AC_SUBST(DO_FETCH_TARBALLS)
6060 dnl Test whether to include MySpell dictionaries
6061 dnl ===================================================================
6062 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6063 if test "$with_myspell_dicts" = "yes"; then
6064     AC_MSG_RESULT([yes])
6065     WITH_MYSPELL_DICTS=TRUE
6066     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6067     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6068 else
6069     AC_MSG_RESULT([no])
6070     WITH_MYSPELL_DICTS=
6072 AC_SUBST(WITH_MYSPELL_DICTS)
6074 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6075 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6076     if test "$with_system_dicts" = yes; then
6077         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6078     fi
6079     with_system_dicts=no
6082 AC_MSG_CHECKING([whether to use dicts from external paths])
6083 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6084     AC_MSG_RESULT([yes])
6085     SYSTEM_DICTS=TRUE
6086     AC_MSG_CHECKING([for spelling dictionary directory])
6087     if test -n "$with_external_dict_dir"; then
6088         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6089     else
6090         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6091         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6092             DICT_SYSTEM_DIR=file:///usr/share/myspell
6093         fi
6094     fi
6095     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6096     AC_MSG_CHECKING([for hyphenation patterns directory])
6097     if test -n "$with_external_hyph_dir"; then
6098         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6099     else
6100         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6101     fi
6102     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6103     AC_MSG_CHECKING([for thesaurus directory])
6104     if test -n "$with_external_thes_dir"; then
6105         THES_SYSTEM_DIR=file://$with_external_thes_dir
6106     else
6107         THES_SYSTEM_DIR=file:///usr/share/mythes
6108     fi
6109     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6110 else
6111     AC_MSG_RESULT([no])
6112     SYSTEM_DICTS=
6114 AC_SUBST(SYSTEM_DICTS)
6115 AC_SUBST(DICT_SYSTEM_DIR)
6116 AC_SUBST(HYPH_SYSTEM_DIR)
6117 AC_SUBST(THES_SYSTEM_DIR)
6119 dnl ===================================================================
6120 dnl Precompiled headers.
6121 ENABLE_PCH=""
6122 AC_MSG_CHECKING([whether to enable pch feature])
6123 if test -z "$enable_pch"; then
6124     if test "$_os" = "WINNT"; then
6125         # Enabled by default on Windows.
6126         enable_pch=yes
6127         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6128         if test -z "$enable_ccache" -a "$SCCACHE"; then
6129             CCACHE=""
6130         fi
6131     else
6132         enable_pch=no
6133     fi
6135 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6136     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6138 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6139     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6141 if test "$enable_pch" = "system"; then
6142     ENABLE_PCH="1"
6143     AC_MSG_RESULT([yes (system headers)])
6144 elif test "$enable_pch" = "base"; then
6145     ENABLE_PCH="2"
6146     AC_MSG_RESULT([yes (system and base headers)])
6147 elif test "$enable_pch" = "normal"; then
6148     ENABLE_PCH="3"
6149     AC_MSG_RESULT([yes (normal)])
6150 elif test "$enable_pch" = "full"; then
6151     ENABLE_PCH="4"
6152     AC_MSG_RESULT([yes (full)])
6153 elif test "$enable_pch" = "yes"; then
6154     # Pick a suitable default.
6155     if test "$GCC" = "yes"; then
6156         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6157         # while making the PCHs larger and rebuilds more likely.
6158         ENABLE_PCH="2"
6159         AC_MSG_RESULT([yes (system and base headers)])
6160     else
6161         # With MSVC the highest level makes a significant difference,
6162         # and it was the default when there used to be no PCH levels.
6163         ENABLE_PCH="4"
6164         AC_MSG_RESULT([yes (full)])
6165     fi
6166 elif test "$enable_pch" = "no"; then
6167     AC_MSG_RESULT([no])
6168 else
6169     AC_MSG_ERROR([Unknown value for --enable-pch])
6171 AC_SUBST(ENABLE_PCH)
6172 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6173 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6174     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6175     if test "$CCACHE_BIN" != "not found"; then
6176         AC_MSG_CHECKING([ccache version])
6177         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6178         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6179         AC_MSG_RESULT([$CCACHE_VERSION])
6180         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6181         if test "$CCACHE_NUMVER" -gt "030701"; then
6182             AC_MSG_RESULT([yes])
6183         else
6184             AC_MSG_RESULT([no (not newer than 3.7.1)])
6185             CCACHE_DEPEND_MODE=
6186         fi
6187     fi
6190 PCH_INSTANTIATE_TEMPLATES=
6191 if test -n "$ENABLE_PCH"; then
6192     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6193     save_CFLAGS=$CFLAGS
6194     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6195     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6196     CFLAGS=$save_CFLAGS
6197     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6198         AC_MSG_RESULT(yes)
6199     else
6200         AC_MSG_RESULT(no)
6201     fi
6203 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6205 BUILDING_PCH_WITH_OBJ=
6206 if test -n "$ENABLE_PCH"; then
6207     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6208     save_CFLAGS=$CFLAGS
6209     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6210     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6211     CFLAGS=$save_CFLAGS
6212     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6213         AC_MSG_RESULT(yes)
6214     else
6215         AC_MSG_RESULT(no)
6216     fi
6218 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6220 PCH_CODEGEN=
6221 PCH_NO_CODEGEN=
6222 fpch_prefix=
6223 if test "$COM" = MSC; then
6224     fpch_prefix="-Xclang "
6226 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6227     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6228     save_CFLAGS=$CFLAGS
6229     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6230     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6231         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6232     CFLAGS=$save_CFLAGS
6233     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6234     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6235         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6236     CFLAGS=$save_CFLAGS
6237     if test -n "$PCH_CODEGEN"; then
6238         AC_MSG_RESULT(yes)
6239     else
6240         AC_MSG_RESULT(no)
6241     fi
6243 AC_SUBST(PCH_CODEGEN)
6244 AC_SUBST(PCH_NO_CODEGEN)
6245 PCH_DEBUGINFO=
6246 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6247     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6248     save_CFLAGS=$CFLAGS
6249     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6250     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6251     CFLAGS=$save_CFLAGS
6252     if test -n "$PCH_DEBUGINFO"; then
6253         AC_MSG_RESULT(yes)
6254     else
6255         AC_MSG_RESULT(no)
6256     fi
6258 AC_SUBST(PCH_DEBUGINFO)
6260 TAB=`printf '\t'`
6262 AC_MSG_CHECKING([the GNU Make version])
6263 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6264 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6265 if test "$_make_longver" -ge "038200"; then
6266     AC_MSG_RESULT([$GNUMAKE $_make_version])
6268 elif test "$_make_longver" -ge "038100"; then
6269     if test "$build_os" = "cygwin"; then
6270         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6271     fi
6272     AC_MSG_RESULT([$GNUMAKE $_make_version])
6274     dnl ===================================================================
6275     dnl Search all the common names for sha1sum
6276     dnl ===================================================================
6277     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6278     if test -z "$SHA1SUM"; then
6279         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6280     elif test "$SHA1SUM" = "openssl"; then
6281         SHA1SUM="openssl sha1"
6282     fi
6283     AC_MSG_CHECKING([for GNU Make bug 20033])
6284     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6285     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6286 A := \$(wildcard *.a)
6288 .PHONY: all
6289 all: \$(A:.a=.b)
6290 <TAB>@echo survived bug20033.
6292 .PHONY: setup
6293 setup:
6294 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6296 define d1
6297 @echo lala \$(1)
6298 @sleep 1
6299 endef
6301 define d2
6302 @echo tyty \$(1)
6303 @sleep 1
6304 endef
6306 %.b : %.a
6307 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6308 <TAB>\$(call d1,\$(CHECKSUM)),\
6309 <TAB>\$(call d2,\$(CHECKSUM)))
6311     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6312         no_parallelism_make="YES"
6313         AC_MSG_RESULT([yes, disable parallelism])
6314     else
6315         AC_MSG_RESULT([no, keep parallelism enabled])
6316     fi
6317     rm -rf $TESTGMAKEBUG20033
6318 else
6319     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6322 # find if gnumake support file function
6323 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6324 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6325 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6326     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6328 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6329 \$(file >test.txt,Success )
6331 .PHONY: all
6332 all:
6333 <TAB>@cat test.txt
6336 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6337 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6338     HAVE_GNUMAKE_FILE_FUNC=TRUE
6339     AC_MSG_RESULT([yes])
6340 else
6341     AC_MSG_RESULT([no])
6343 rm -rf $TESTGMAKEFILEFUNC
6344 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6346 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6347 STALE_MAKE=
6348 if test "$_make_ver_check" = ""; then
6349    STALE_MAKE=TRUE
6352 HAVE_LD_HASH_STYLE=FALSE
6353 WITH_LINKER_HASH_STYLE=
6354 AC_MSG_CHECKING([for --hash-style gcc linker support])
6355 if test "$GCC" = "yes"; then
6356     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6357         hash_styles="gnu sysv"
6358     elif test "$with_linker_hash_style" = "no"; then
6359         hash_styles=
6360     else
6361         hash_styles="$with_linker_hash_style"
6362     fi
6364     for hash_style in $hash_styles; do
6365         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6366         hash_style_ldflags_save=$LDFLAGS
6367         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6369         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6370             [
6371 #include <stdio.h>
6372             ],[
6373 printf ("");
6374             ])],
6375             [
6376                   HAVE_LD_HASH_STYLE=TRUE
6377                   WITH_LINKER_HASH_STYLE=$hash_style
6378             ],
6379             [HAVE_LD_HASH_STYLE=FALSE],
6380             [HAVE_LD_HASH_STYLE=FALSE])
6381         LDFLAGS=$hash_style_ldflags_save
6382     done
6384     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6385         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6386     else
6387         AC_MSG_RESULT( no )
6388     fi
6389     LDFLAGS=$hash_style_ldflags_save
6390 else
6391     AC_MSG_RESULT( no )
6393 AC_SUBST(HAVE_LD_HASH_STYLE)
6394 AC_SUBST(WITH_LINKER_HASH_STYLE)
6396 dnl ===================================================================
6397 dnl Check whether there's a Perl version available.
6398 dnl ===================================================================
6399 if test -z "$with_perl_home"; then
6400     AC_PATH_PROG(PERL, perl)
6401 else
6402     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6403     _perl_path="$with_perl_home/bin/perl"
6404     if test -x "$_perl_path"; then
6405         PERL=$_perl_path
6406     else
6407         AC_MSG_ERROR([$_perl_path not found])
6408     fi
6411 dnl ===================================================================
6412 dnl Testing for Perl version 5 or greater.
6413 dnl $] is the Perl version variable, it is returned as an integer
6414 dnl ===================================================================
6415 if test "$PERL"; then
6416     AC_MSG_CHECKING([the Perl version])
6417     ${PERL} -e "exit($]);"
6418     _perl_version=$?
6419     if test "$_perl_version" -lt 5; then
6420         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6421     fi
6422     AC_MSG_RESULT([Perl $_perl_version])
6423 else
6424     AC_MSG_ERROR([Perl not found, install Perl 5])
6427 dnl ===================================================================
6428 dnl Testing for required Perl modules
6429 dnl ===================================================================
6431 AC_MSG_CHECKING([for required Perl modules])
6432 perl_use_string="use Cwd ; use Digest::MD5"
6433 if test "$_os" = "WINNT"; then
6434     if test -n "$PKGFORMAT"; then
6435         for i in $PKGFORMAT; do
6436             case "$i" in
6437             msi)
6438                 # for getting fonts versions to use in MSI
6439                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6440                 ;;
6441             esac
6442         done
6443     fi
6445 if test "$with_system_hsqldb" = "yes"; then
6446     perl_use_string="$perl_use_string ; use Archive::Zip"
6448 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6449     # OpenSSL needs that to build
6450     perl_use_string="$perl_use_string ; use FindBin"
6452 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6453     AC_MSG_RESULT([all modules found])
6454 else
6455     AC_MSG_RESULT([failed to find some modules])
6456     # Find out which modules are missing.
6457     for i in $perl_use_string; do
6458         if test "$i" != "use" -a "$i" != ";"; then
6459             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6460                 missing_perl_modules="$missing_perl_modules $i"
6461             fi
6462         fi
6463     done
6464     AC_MSG_ERROR([
6465     The missing Perl modules are: $missing_perl_modules
6466     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6469 dnl ===================================================================
6470 dnl Check for pkg-config
6471 dnl ===================================================================
6472 if test "$_os" != "WINNT"; then
6473     PKG_PROG_PKG_CONFIG
6475 AC_SUBST(PKG_CONFIG)
6476 AC_SUBST(PKG_CONFIG_PATH)
6477 AC_SUBST(PKG_CONFIG_LIBDIR)
6479 if test "$_os" != "WINNT"; then
6481     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6482     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6483     # explicitly. Or put /path/to/compiler in PATH yourself.
6485     toolprefix=gcc
6486     if test "$COM_IS_CLANG" = "TRUE"; then
6487         toolprefix=llvm
6488     fi
6489     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6490     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6491     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6492     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6493     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6494     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6496 AC_SUBST(AR)
6497 AC_SUBST(NM)
6498 AC_SUBST(OBJDUMP)
6499 AC_SUBST(RANLIB)
6500 AC_SUBST(READELF)
6501 AC_SUBST(STRIP)
6503 dnl ===================================================================
6504 dnl pkg-config checks on macOS
6505 dnl ===================================================================
6507 if test $_os = Darwin; then
6508     AC_MSG_CHECKING([for bogus pkg-config])
6509     if test -n "$PKG_CONFIG"; then
6510         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6511             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6512         else
6513             if test "$enable_bogus_pkg_config" = "yes"; then
6514                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6515             else
6516                 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.])
6517             fi
6518         fi
6519     else
6520         AC_MSG_RESULT([no, good])
6521     fi
6524 find_csc()
6526     # Return value: $csctest
6528     unset csctest
6530     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6531     if test -n "$regvalue"; then
6532         csctest=$regvalue
6533         return
6534     fi
6537 find_al()
6539     # Return value: $altest
6541     unset altest
6543     # We need this check to detect 4.6.1 or above.
6544     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6545         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6546         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6547             altest=$regvalue
6548             return
6549         fi
6550     done
6552     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6553         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6554         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6555             altest=$regvalue
6556             return
6557         fi
6558     done
6561 find_dotnetsdk46()
6563     unset frametest
6565     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6566         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6567         if test -n "$regvalue"; then
6568             frametest=$regvalue
6569             return
6570         fi
6571     done
6574 find_winsdk_version()
6576     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6577     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6579     unset winsdktest winsdkbinsubdir winsdklibsubdir
6581     case "$1" in
6582     8.0|8.0A)
6583         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6584         if test -n "$regvalue"; then
6585             winsdktest=$regvalue
6586             winsdklibsubdir=win8
6587             return
6588         fi
6589         ;;
6590     8.1|8.1A)
6591         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6592         if test -n "$regvalue"; then
6593             winsdktest=$regvalue
6594             winsdklibsubdir=winv6.3
6595             return
6596         fi
6597         ;;
6598     10.0)
6599         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6600         if test -n "$regvalue"; then
6601             winsdktest=$regvalue
6602             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6603             if test -n "$regvalue"; then
6604                 winsdkbinsubdir="$regvalue".0
6605                 winsdklibsubdir=$winsdkbinsubdir
6606                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6607                 local tmppath_unix=$(cygpath -u "$tmppath")
6608                 # test exist the SDK path
6609                 if test -d "$tmppath_unix"; then
6610                    # when path is convertible to a short path then path is okay
6611                    cygpath -d "$tmppath" >/dev/null 2>&1
6612                    if test $? -ne 0; then
6613                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6614                    fi
6615                 else
6616                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6617                 fi
6618             fi
6619             return
6620         fi
6621         ;;
6622     esac
6625 find_winsdk()
6627     # Return value: From find_winsdk_version
6629     unset winsdktest
6631     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6632         find_winsdk_version $ver
6633         if test -n "$winsdktest"; then
6634             return
6635         fi
6636     done
6639 find_msms()
6641     # Return value: $msmdir
6643     AC_MSG_CHECKING([for MSVC merge modules directory])
6644     local my_msm_files
6645     local my_msm_dir
6647     dnl Order my_msm_files in increasing order. Then check the directories returned
6648     dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6649     dnl the result will be the highest MSM version found in the highest directory.
6651     case "$VCVER" in
6652         16.0 | 17.0)
6653         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6654         ;;
6655     esac
6656     for f in $my_msm_files; do
6657         echo "$as_me:$LINENO: searching for $f" >&5
6658     done
6660     msmdir=
6661     case "$VCVER" in
6662     16.0 | 17.0)
6663         for f in ${my_msm_files}; do
6664             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6665                 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6666                 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6667                 if test -e "$my_msm_dir${f}"; then
6668                     msmdir=$my_msm_dir
6669                 fi
6670             done
6671         done
6672         ;;
6673     esac
6675     if test -n "$msmdir"; then
6676         msmdir=`cygpath -m "$msmdir"`
6677         AC_MSG_RESULT([$msmdir])
6678     else
6679         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6680             AC_MSG_FAILURE([not found])
6681         else
6682             AC_MSG_WARN([not found (check config.log)])
6683             add_warning "MSM none of ${my_msm_files} found"
6684         fi
6685     fi
6688 find_msvc_x64_dlls()
6690     # Return value: $msvcdllpath, $msvcdlls
6692     AC_MSG_CHECKING([for MSVC x64 DLL path])
6694     dnl Order crtver in increasing order. Then check the directories returned by
6695     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6696     dnl the result will be the highest CRT version found in the highest directory.
6698     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6699     case "$VCVER" in
6700     16.0 | 17.0)
6701         for crtver in 141 142 143; do
6702             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6703                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6704                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6705                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6706                 fi
6707             done
6708         done
6709         ;;
6710     esac
6711     AC_MSG_RESULT([$msvcdllpath])
6712     AC_MSG_CHECKING([for MSVC x64 DLLs])
6713     msvcdlls="msvcp140.dll vcruntime140.dll"
6714     for dll in $msvcdlls; do
6715         if ! test -f "$msvcdllpath/$dll"; then
6716             AC_MSG_FAILURE([missing $dll])
6717         fi
6718     done
6719     AC_MSG_RESULT([found all ($msvcdlls)])
6722 dnl =========================================
6723 dnl Check for the Windows  SDK.
6724 dnl =========================================
6725 if test "$_os" = "WINNT"; then
6726     AC_MSG_CHECKING([for Windows SDK])
6727     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6728         find_winsdk
6729         WINDOWS_SDK_HOME=$winsdktest
6731         # normalize if found
6732         if test -n "$WINDOWS_SDK_HOME"; then
6733             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6734             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6735         fi
6737         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6738     fi
6740     if test -n "$WINDOWS_SDK_HOME"; then
6741         # Remove a possible trailing backslash
6742         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6744         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6745              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6746              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6747             have_windows_sdk_headers=yes
6748         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6749              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6750              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6751             have_windows_sdk_headers=yes
6752         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6753              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6754              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6755             have_windows_sdk_headers=yes
6756         else
6757             have_windows_sdk_headers=no
6758         fi
6760         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6761             have_windows_sdk_libs=yes
6762         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6763             have_windows_sdk_libs=yes
6764         else
6765             have_windows_sdk_libs=no
6766         fi
6768         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6769             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6770 the  Windows SDK are installed.])
6771         fi
6772     fi
6774     if test -z "$WINDOWS_SDK_HOME"; then
6775         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6776     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6777         WINDOWS_SDK_VERSION=80
6778         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6779     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6780         WINDOWS_SDK_VERSION=81
6781         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6782     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6783         WINDOWS_SDK_VERSION=10
6784         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6785     else
6786         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6787     fi
6788     PathFormat "$WINDOWS_SDK_HOME"
6789     WINDOWS_SDK_HOME="$formatted_path"
6790     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6791     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6792         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6793         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6794             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6795         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6796             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6797         fi
6798     fi
6800     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6801     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6802     dnl but not in v8.0), so allow this to be overridden with a
6803     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6804     dnl and configuration error if no WiLangId.vbs is found would arguably be
6805     dnl better, but I do not know under which conditions exactly it is needed by
6806     dnl msiglobal.pm:
6807     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6808         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6809         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6810         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6811             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6812             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6813         fi
6814         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6815             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6816             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6817         fi
6818         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6819             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6820             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6821         fi
6822     fi
6823     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6824         if test -n "$with_package_format" -a "$with_package_format" != no; then
6825             for i in "$with_package_format"; do
6826                 if test "$i" = "msi"; then
6827                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6828                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6829                     fi
6830                 fi
6831             done
6832         fi
6833     fi
6835 AC_SUBST(WINDOWS_SDK_HOME)
6836 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6837 AC_SUBST(WINDOWS_SDK_VERSION)
6838 AC_SUBST(WINDOWS_SDK_WILANGID)
6840 if test "$build_os" = "cygwin"; then
6841     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6842     dnl dir, it also determines that dir's path w/o an arch segment if any,
6843     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6844     AC_MSG_CHECKING([for midl.exe])
6846     find_winsdk
6847     if test -n "$winsdkbinsubdir" \
6848         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6849     then
6850         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6851         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6852     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6853         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6854         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6855     elif test -f "$winsdktest/Bin/midl.exe"; then
6856         MIDL_PATH=$winsdktest/Bin
6857         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6858     fi
6859     if test ! -f "$MIDL_PATH/midl.exe"; then
6860         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6861     else
6862         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6863     fi
6865     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6866     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6868     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6869          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6870          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6871          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6872     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6873          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6874          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6875          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6876     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6877          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6878          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6879          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6880     else
6881         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6882     fi
6884     dnl Check csc.exe
6885     AC_MSG_CHECKING([for csc.exe])
6886     find_csc
6887     if test -f "$csctest/csc.exe"; then
6888         CSC_PATH="$csctest"
6889     fi
6890     if test ! -f "$CSC_PATH/csc.exe"; then
6891         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6892     else
6893         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6894     fi
6896     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6898     dnl Check al.exe
6899     AC_MSG_CHECKING([for al.exe])
6900     find_winsdk
6901     if test -n "$winsdkbinsubdir" \
6902         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6903     then
6904         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6905     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6906         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6907     elif test -f "$winsdktest/Bin/al.exe"; then
6908         AL_PATH="$winsdktest/Bin"
6909     fi
6911     if test -z "$AL_PATH"; then
6912         find_al
6913         if test -f "$altest/bin/al.exe"; then
6914             AL_PATH="$altest/bin"
6915         elif test -f "$altest/al.exe"; then
6916             AL_PATH="$altest"
6917         fi
6918     fi
6919     if test ! -f "$AL_PATH/al.exe"; then
6920         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6921     else
6922         AC_MSG_RESULT([$AL_PATH/al.exe])
6923     fi
6925     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6927     dnl Check mscoree.lib / .NET Framework dir
6928     AC_MSG_CHECKING(.NET Framework)
6929     find_dotnetsdk46
6930     PathFormat "$frametest"
6931     frametest="$formatted_path"
6932     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6933         DOTNET_FRAMEWORK_HOME="$frametest"
6934     else
6935         find_winsdk
6936         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6937             DOTNET_FRAMEWORK_HOME="$winsdktest"
6938         fi
6939     fi
6940     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
6941         AC_MSG_ERROR([mscoree.lib not found])
6942     fi
6943     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6945     PathFormat "$MIDL_PATH"
6946     MIDL_PATH="$formatted_path"
6948     PathFormat "$AL_PATH"
6949     AL_PATH="$formatted_path"
6951     PathFormat "$DOTNET_FRAMEWORK_HOME"
6952     DOTNET_FRAMEWORK_HOME="$formatted_path"
6954     PathFormat "$CSC_PATH"
6955     CSC_PATH="$formatted_path"
6958 dnl ===================================================================
6959 dnl Testing for C++ compiler and version...
6960 dnl ===================================================================
6962 if test "$_os" != "WINNT"; then
6963     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6964     save_CXXFLAGS=$CXXFLAGS
6965     AC_PROG_CXX
6966     CXXFLAGS=$save_CXXFLAGS
6967     if test -z "$CXX_BASE"; then
6968         CXX_BASE=`first_arg_basename "$CXX"`
6969     fi
6972 dnl check for GNU C++ compiler version
6973 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6974     AC_MSG_CHECKING([the GNU C++ compiler version])
6976     _gpp_version=`$CXX -dumpversion`
6977     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6979     if test "$_gpp_majmin" -lt "700"; then
6980         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6981     else
6982         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6983     fi
6985     dnl see https://code.google.com/p/android/issues/detail?id=41770
6986         glibcxx_threads=no
6987         AC_LANG_PUSH([C++])
6988         AC_REQUIRE_CPP
6989         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6990         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6991             #include <bits/c++config.h>]],[[
6992             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6993             && !defined(_GLIBCXX__PTHREADS) \
6994             && !defined(_GLIBCXX_HAS_GTHREADS)
6995             choke me
6996             #endif
6997         ]])],[AC_MSG_RESULT([yes])
6998         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6999         AC_LANG_POP([C++])
7000         if test $glibcxx_threads = yes; then
7001             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7002         fi
7004 AC_SUBST(BOOST_CXXFLAGS)
7007 # prefx CXX with ccache if needed
7009 if test "$CCACHE" != ""; then
7010     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7011     AC_LANG_PUSH([C++])
7012     save_CXXFLAGS=$CXXFLAGS
7013     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7014     # msvc does not fail on unknown options, check stdout
7015     if test "$COM" = MSC; then
7016         CXXFLAGS="$CXXFLAGS -nologo"
7017     fi
7018     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7019     ac_cxx_werror_flag=yes
7020     dnl an empty program will do, we're checking the compiler flags
7021     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7022                       [use_ccache=yes], [use_ccache=no])
7023     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7024         AC_MSG_RESULT([yes])
7025     else
7026         CXX="$CCACHE $CXX"
7027         CXX_BASE="ccache $CXX_BASE"
7028         AC_MSG_RESULT([no])
7029     fi
7030     CXXFLAGS=$save_CXXFLAGS
7031     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7032     AC_LANG_POP([C++])
7035 dnl ===================================================================
7036 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7037 dnl ===================================================================
7039 if test "$_os" != "WINNT"; then
7040     AC_PROG_CXXCPP
7042     dnl Check whether there's a C pre-processor.
7043     AC_PROG_CPP
7047 dnl ===================================================================
7048 dnl Find integral type sizes and alignments
7049 dnl ===================================================================
7051 if test "$_os" != "WINNT"; then
7053     AC_CHECK_SIZEOF(long)
7054     AC_CHECK_SIZEOF(short)
7055     AC_CHECK_SIZEOF(int)
7056     AC_CHECK_SIZEOF(long long)
7057     AC_CHECK_SIZEOF(double)
7058     AC_CHECK_SIZEOF(void*)
7059     AC_CHECK_SIZEOF(size_t)
7061     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7062     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7063     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7064     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7065     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7066     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7068     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7069     m4_pattern_allow([AC_CHECK_ALIGNOF])
7070     m4_ifdef([AC_CHECK_ALIGNOF],
7071         [
7072             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7073             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7074             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7075             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7076         ],
7077         [
7078             case "$_os-$host_cpu" in
7079             Linux-i686)
7080                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7081                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7082                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7083                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7084                 ;;
7085             Linux-x86_64)
7086                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7087                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7088                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7089                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7090                 ;;
7091             *)
7092                 if test -z "$ac_cv_alignof_short" -o \
7093                         -z "$ac_cv_alignof_int" -o \
7094                         -z "$ac_cv_alignof_long" -o \
7095                         -z "$ac_cv_alignof_double"; then
7096                    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.])
7097                 fi
7098                 ;;
7099             esac
7100         ])
7102     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7103     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7104     if test $ac_cv_sizeof_long -eq 8; then
7105         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7106     elif test $ac_cv_sizeof_double -eq 8; then
7107         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7108     else
7109         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7110     fi
7112     dnl Check for large file support
7113     AC_SYS_LARGEFILE
7114     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7115         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7116     fi
7117     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7118         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7119     fi
7120 else
7121     # Hardcode for MSVC
7122     SAL_TYPES_SIZEOFSHORT=2
7123     SAL_TYPES_SIZEOFINT=4
7124     SAL_TYPES_SIZEOFLONG=4
7125     SAL_TYPES_SIZEOFLONGLONG=8
7126     if test $WIN_HOST_BITS -eq 32; then
7127         SAL_TYPES_SIZEOFPOINTER=4
7128         SIZEOF_SIZE_T=4
7129     else
7130         SAL_TYPES_SIZEOFPOINTER=8
7131         SIZEOF_SIZE_T=8
7132     fi
7133     SAL_TYPES_ALIGNMENT2=2
7134     SAL_TYPES_ALIGNMENT4=4
7135     SAL_TYPES_ALIGNMENT8=8
7136     LFS_CFLAGS=''
7138 AC_SUBST(LFS_CFLAGS)
7139 AC_SUBST(SIZEOF_SIZE_T)
7141 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7142 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7143 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7144 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7145 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7146 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7147 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7148 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7150 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7151 AC_MSG_CHECKING([whether jumbo sheets are supported])
7152 if test "$_os" != "WINNT"; then
7153     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7154         AC_MSG_RESULT([yes])
7155         ENABLE_JUMBO_SHEETS=TRUE
7156         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7157     else
7158         AC_MSG_RESULT([no])
7159     fi
7160 else
7161     if test $WIN_HOST_BITS -gt 32; then
7162         # 64bit windows is special-cased for tools::Long because long is 32bit
7163         AC_MSG_RESULT([yes])
7164         ENABLE_JUMBO_SHEETS=TRUE
7165         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7166     else
7167         AC_MSG_RESULT([no])
7168     fi
7170 AC_SUBST(ENABLE_JUMBO_SHEETS)
7172 dnl ===================================================================
7173 dnl Check whether to enable runtime optimizations
7174 dnl ===================================================================
7175 ENABLE_RUNTIME_OPTIMIZATIONS=
7176 AC_MSG_CHECKING([whether to enable runtime optimizations])
7177 if test -z "$enable_runtime_optimizations"; then
7178     for i in $CC; do
7179         case $i in
7180         -fsanitize=*)
7181             enable_runtime_optimizations=no
7182             break
7183             ;;
7184         esac
7185     done
7187 if test "$enable_runtime_optimizations" != no; then
7188     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7189     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7190     AC_MSG_RESULT([yes])
7191 else
7192     AC_MSG_RESULT([no])
7194 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7196 dnl ===================================================================
7197 dnl Check if valgrind headers are available
7198 dnl ===================================================================
7199 ENABLE_VALGRIND=
7200 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7201     prev_cppflags=$CPPFLAGS
7202     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7203     # or where does it come from?
7204     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7205     AC_CHECK_HEADER([valgrind/valgrind.h],
7206         [ENABLE_VALGRIND=TRUE])
7207     CPPFLAGS=$prev_cppflags
7209 AC_SUBST([ENABLE_VALGRIND])
7210 if test -z "$ENABLE_VALGRIND"; then
7211     if test "$with_valgrind" = yes; then
7212         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7213     fi
7214     VALGRIND_CFLAGS=
7216 AC_SUBST([VALGRIND_CFLAGS])
7219 dnl ===================================================================
7220 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7221 dnl ===================================================================
7223 # We need at least the sys/sdt.h include header.
7224 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7225 if test "$SDT_H_FOUND" = "TRUE"; then
7226     # Found sys/sdt.h header, now make sure the c++ compiler works.
7227     # Old g++ versions had problems with probes in constructors/destructors.
7228     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7229     AC_LANG_PUSH([C++])
7230     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7231     #include <sys/sdt.h>
7232     class ProbeClass
7233     {
7234     private:
7235       int& ref;
7236       const char *name;
7238     public:
7239       ProbeClass(int& v, const char *n) : ref(v), name(n)
7240       {
7241         DTRACE_PROBE2(_test_, cons, name, ref);
7242       }
7244       void method(int min)
7245       {
7246         DTRACE_PROBE3(_test_, meth, name, ref, min);
7247         ref -= min;
7248       }
7250       ~ProbeClass()
7251       {
7252         DTRACE_PROBE2(_test_, dest, name, ref);
7253       }
7254     };
7255     ]],[[
7256     int i = 64;
7257     DTRACE_PROBE1(_test_, call, i);
7258     ProbeClass inst = ProbeClass(i, "call");
7259     inst.method(24);
7260     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7261           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7262     AC_LANG_POP([C++])
7264 AC_CONFIG_HEADERS([config_host/config_probes.h])
7266 dnl ===================================================================
7267 dnl GCC features
7268 dnl ===================================================================
7269 HAVE_GCC_STACK_CLASH_PROTECTION=
7270 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7271     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7272     save_CFLAGS=$CFLAGS
7273     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7274     AC_LINK_IFELSE(
7275         [AC_LANG_PROGRAM(, [[return 0;]])],
7276         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7277         [AC_MSG_RESULT([no])])
7278     CFLAGS=$save_CFLAGS
7280     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7281     save_CFLAGS=$CFLAGS
7282     CFLAGS="$CFLAGS -Werror -mno-avx"
7283     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7284     CFLAGS=$save_CFLAGS
7285     if test "$HAVE_GCC_AVX" = "TRUE"; then
7286         AC_MSG_RESULT([yes])
7287     else
7288         AC_MSG_RESULT([no])
7289     fi
7291     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7292     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7293     int v = 0;
7294     if (__sync_add_and_fetch(&v, 1) != 1 ||
7295         __sync_sub_and_fetch(&v, 1) != 0)
7296         return 1;
7297     __sync_synchronize();
7298     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7299         v != 1)
7300         return 1;
7301     return 0;
7302 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7303     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7304         AC_MSG_RESULT([yes])
7305         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7306     else
7307         AC_MSG_RESULT([no])
7308     fi
7310     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7311     AC_LANG_PUSH([C++])
7312     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7313             #include <cstddef>
7314             #include <cxxabi.h>
7315             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7316         ])], [
7317             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7318             AC_MSG_RESULT([yes])
7319         ], [AC_MSG_RESULT([no])])
7320     AC_LANG_POP([C++])
7322     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7323     AC_LANG_PUSH([C++])
7324     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7325             #include <cstddef>
7326             #include <cxxabi.h>
7327             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7328         ])], [
7329             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7330             AC_MSG_RESULT([yes])
7331         ], [AC_MSG_RESULT([no])])
7332     AC_LANG_POP([C++])
7334     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7335     AC_LANG_PUSH([C++])
7336     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7337             #include <cxxabi.h>
7338             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7339         ])], [
7340             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7341             AC_MSG_RESULT([yes])
7342         ], [AC_MSG_RESULT([no])])
7343     AC_LANG_POP([C++])
7345     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7346     AC_LANG_PUSH([C++])
7347     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7348             #include <cstddef>
7349             #include <cxxabi.h>
7350             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7351         ])], [
7352             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7353             AC_MSG_RESULT([yes])
7354         ], [AC_MSG_RESULT([no])])
7355     AC_LANG_POP([C++])
7357     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7358     AC_LANG_PUSH([C++])
7359     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7360             #include <cstddef>
7361             #include <cxxabi.h>
7362             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7363         ])], [
7364             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7365             AC_MSG_RESULT([yes])
7366         ], [AC_MSG_RESULT([no])])
7367     AC_LANG_POP([C++])
7369     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7370     AC_LANG_PUSH([C++])
7371     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7372             #include <cxxabi.h>
7373             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7374         ])], [
7375             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7376             AC_MSG_RESULT([yes])
7377         ], [AC_MSG_RESULT([no])])
7378     AC_LANG_POP([C++])
7380     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7381     AC_LANG_PUSH([C++])
7382     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7383             #include <cxxabi.h>
7384             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7385         ])], [
7386             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7387             AC_MSG_RESULT([yes])
7388         ], [AC_MSG_RESULT([no])])
7389     AC_LANG_POP([C++])
7391     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7392     AC_LANG_PUSH([C++])
7393     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7394             #include <cxxabi.h>
7395             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7396         ])], [
7397             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7398             AC_MSG_RESULT([yes])
7399         ], [AC_MSG_RESULT([no])])
7400     AC_LANG_POP([C++])
7402     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7403     AC_LANG_PUSH([C++])
7404     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7405             #include <cstddef>
7406             #include <cxxabi.h>
7407             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7408         ])], [
7409             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7410             AC_MSG_RESULT([yes])
7411         ], [AC_MSG_RESULT([no])])
7412     AC_LANG_POP([C++])
7414     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7415     AC_LANG_PUSH([C++])
7416     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7417             #include <cstddef>
7418             #include <cxxabi.h>
7419             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7420         ])], [
7421             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7422             AC_MSG_RESULT([yes])
7423         ], [AC_MSG_RESULT([no])])
7424     AC_LANG_POP([C++])
7427 AC_SUBST(HAVE_GCC_AVX)
7428 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7429 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7431 dnl ===================================================================
7432 dnl Identify the C++ library
7433 dnl ===================================================================
7435 AC_MSG_CHECKING([what the C++ library is])
7436 HAVE_LIBSTDCPP=
7437 AC_LANG_PUSH([C++])
7438 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7439 #include <utility>
7440 #ifndef __GLIBCXX__
7441 foo bar
7442 #endif
7443 ]])],
7444     [CPP_LIBRARY=GLIBCXX
7445      cpp_library_name="GNU libstdc++"
7446      HAVE_LIBSTDCPP=TRUE
7447     ],
7448     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7449 #include <utility>
7450 #ifndef _LIBCPP_VERSION
7451 foo bar
7452 #endif
7453 ]])],
7454     [CPP_LIBRARY=LIBCPP
7455      cpp_library_name="LLVM libc++"
7456      AC_DEFINE([HAVE_LIBCXX])
7457     ],
7458     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7459 #include <utility>
7460 #ifndef _MSC_VER
7461 foo bar
7462 #endif
7463 ]])],
7464     [CPP_LIBRARY=MSVCRT
7465      cpp_library_name="Microsoft"
7466     ],
7467     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7468 AC_MSG_RESULT([$cpp_library_name])
7469 AC_LANG_POP([C++])
7470 AC_SUBST([HAVE_LIBSTDCPP])
7472 dnl ===================================================================
7473 dnl Check for gperf
7474 dnl ===================================================================
7475 AC_PATH_PROG(GPERF, gperf)
7476 if test -z "$GPERF"; then
7477     AC_MSG_ERROR([gperf not found but needed. Install it.])
7479 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7480     GPERF=`cygpath -m $GPERF`
7482 AC_MSG_CHECKING([whether gperf is new enough])
7483 my_gperf_ver1=$($GPERF --version | head -n 1)
7484 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7485 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7486 if test "$my_gperf_ver3" -ge 301; then
7487     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7488 else
7489     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7491 AC_SUBST(GPERF)
7493 dnl ===================================================================
7494 dnl Check for system libcmis
7495 dnl ===================================================================
7496 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7498 dnl ===================================================================
7499 dnl C++11
7500 dnl ===================================================================
7502 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7503 CXXFLAGS_CXX11=
7504 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7505     if test "$with_latest_c__" = yes; then
7506         CXXFLAGS_CXX11=-std:c++latest
7507     else
7508         CXXFLAGS_CXX11=-std:c++17
7509     fi
7510     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7511 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7512     my_flags='-std=c++17 -std=c++1z'
7513     if test "$with_latest_c__" = yes; then
7514         my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7515     fi
7516     for flag in $my_flags; do
7517         if test "$COM" = MSC; then
7518             flag="-Xclang $flag"
7519         fi
7520         save_CXXFLAGS=$CXXFLAGS
7521         CXXFLAGS="$CXXFLAGS $flag -Werror"
7522         if test "$SYSTEM_LIBCMIS" = TRUE; then
7523             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7524         fi
7525         AC_LANG_PUSH([C++])
7526         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7527             #include <algorithm>
7528             #include <functional>
7529             #include <vector>
7531             #if defined SYSTEM_LIBCMIS
7532             // See ucb/source/ucp/cmis/auth_provider.hxx:
7533             #if !defined __clang__
7534             #pragma GCC diagnostic push
7535             #pragma GCC diagnostic ignored "-Wdeprecated"
7536             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7537             #endif
7538             #include <libcmis/libcmis.hxx>
7539             #if !defined __clang__
7540             #pragma GCC diagnostic pop
7541             #endif
7542             #endif
7544             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7545                 std::sort(v.begin(), v.end(), fn);
7546             }
7547             ]])],[CXXFLAGS_CXX11=$flag])
7548         AC_LANG_POP([C++])
7549         CXXFLAGS=$save_CXXFLAGS
7550         if test -n "$CXXFLAGS_CXX11"; then
7551             break
7552         fi
7553     done
7555 if test -n "$CXXFLAGS_CXX11"; then
7556     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7557 else
7558     AC_MSG_ERROR(no)
7560 AC_SUBST(CXXFLAGS_CXX11)
7562 if test "$GCC" = "yes"; then
7563     save_CXXFLAGS=$CXXFLAGS
7564     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7565     CHECK_L_ATOMIC
7566     CXXFLAGS=$save_CXXFLAGS
7567     AC_SUBST(ATOMIC_LIB)
7570 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7571 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7572 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7573 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7574 dnl again towards 4.7.2:
7575 if test $CPP_LIBRARY = GLIBCXX; then
7576     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7577     AC_LANG_PUSH([C++])
7578     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7579 #include <list>
7580 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7581     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7582     //   GCC 4.7.0: 20120322
7583     //   GCC 4.7.1: 20120614
7584     // and using a range check is not possible as the mapping between
7585     // __GLIBCXX__ values and GCC versions is not monotonic
7586 /* ok */
7587 #else
7588 abi broken
7589 #endif
7590         ]])], [AC_MSG_RESULT(no, ok)],
7591         [AC_MSG_ERROR(yes)])
7592     AC_LANG_POP([C++])
7595 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7596 save_CXXFLAGS=$CXXFLAGS
7597 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7598 AC_LANG_PUSH([C++])
7600 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7601 #include <stddef.h>
7603 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7605 namespace
7607         struct b
7608         {
7609                 int i;
7610                 int j;
7611         };
7613 ]], [[
7614 struct a
7616         int i;
7617         int j;
7619 a thinga[]={{0,0}, {1,1}};
7620 b thingb[]={{0,0}, {1,1}};
7621 size_t i = sizeof(sal_n_array_size(thinga));
7622 size_t j = sizeof(sal_n_array_size(thingb));
7623 return !(i != 0 && j != 0);
7625     ], [ AC_MSG_RESULT(yes) ],
7626     [ AC_MSG_ERROR(no)])
7627 AC_LANG_POP([C++])
7628 CXXFLAGS=$save_CXXFLAGS
7630 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7631 if test "$GCC" = yes; then
7632     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7633     AC_LANG_PUSH([C++])
7634     save_CXXFLAGS=$CXXFLAGS
7635     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7636     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7637     CXXFLAGS=$save_CXXFLAGS
7638     AC_LANG_POP([C++])
7639     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7640         AC_MSG_RESULT([yes])
7641     else
7642         AC_MSG_RESULT([no])
7643     fi
7645 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7647 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7648 AC_LANG_PUSH([C++])
7649 save_CXXFLAGS=$CXXFLAGS
7650 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7651 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7652         #include <algorithm>
7653         #include <initializer_list>
7654         #include <vector>
7655         template<typename T> class S {
7656         private:
7657             std::vector<T> v_;
7658         public:
7659             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7660         };
7661         constinit S<int> s{3, 2, 1};
7662     ])], [
7663         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7664         AC_MSG_RESULT([yes])
7665     ], [AC_MSG_RESULT([no])])
7666 CXXFLAGS=$save_CXXFLAGS
7667 AC_LANG_POP([C++])
7669 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7670 AC_LANG_PUSH([C++])
7671 save_CXXFLAGS=$CXXFLAGS
7672 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7673 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7674         #include <span>
7675         #include <type_traits>
7676         // Don't check size_type directly, as it was called index_type before P1872R0:
7677         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7678     ])], [
7679         AC_DEFINE([HAVE_CPP_SPAN],[1])
7680         AC_MSG_RESULT([yes])
7681     ], [AC_MSG_RESULT([no])])
7682 CXXFLAGS=$save_CXXFLAGS
7683 AC_LANG_POP([C++])
7685 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7686 AC_LANG_PUSH([C++])
7687 save_CXXFLAGS=$CXXFLAGS
7688 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7689 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7690         struct S1 { S1(S1 &&); };
7691         struct S2: S1 {};
7692         S1 f(S2 s) { return s; }
7693     ])], [
7694         AC_DEFINE([HAVE_P1155R3],[1])
7695         AC_MSG_RESULT([yes])
7696     ], [AC_MSG_RESULT([no])])
7697 CXXFLAGS=$save_CXXFLAGS
7698 AC_LANG_POP([C++])
7700 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7701 HAVE_CXX20_ATOMIC_REF=
7702 AC_LANG_PUSH([C++])
7703 save_CXXFLAGS=$CXXFLAGS
7704 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7705 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7706         #include <atomic>
7707         int x;
7708         std::atomic_ref<int> y(x);
7709     ])], [
7710         HAVE_CXX20_ATOMIC_REF=TRUE
7711         AC_MSG_RESULT([yes])
7712     ], [AC_MSG_RESULT([no])])
7713 CXXFLAGS=$save_CXXFLAGS
7714 AC_LANG_POP([C++])
7715 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7717 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7718 dnl which is included in -Wextra anyway):
7719 HAVE_WDEPRECATED_COPY_DTOR=
7720 if test "$GCC" = yes; then
7721     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7722     AC_LANG_PUSH([C++])
7723     save_CXXFLAGS=$CXXFLAGS
7724     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7725     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7726             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7727             AC_MSG_RESULT([yes])
7728         ], [AC_MSG_RESULT([no])])
7729     CXXFLAGS=$save_CXXFLAGS
7730     AC_LANG_POP([C++])
7732 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7734 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7735 dnl uninitialized warning for code like
7737 dnl   OString f();
7738 dnl   boost::optional<OString> * g(bool b) {
7739 dnl       boost::optional<OString> o;
7740 dnl       if (b) o = f();
7741 dnl       return new boost::optional<OString>(o);
7742 dnl   }
7744 dnl (as is e.g. present, in a slightly more elaborate form, in
7745 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7746 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7747 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7748 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7749     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7750     AC_LANG_PUSH([C++])
7751     save_CXXFLAGS=$CXXFLAGS
7752     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7753     if test "$ENABLE_OPTIMIZED" = TRUE; then
7754         CXXFLAGS="$CXXFLAGS -O2"
7755     else
7756         CXXFLAGS="$CXXFLAGS -O0"
7757     fi
7758     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7759             #include <new>
7760             void f1(int);
7761             struct S1 {
7762                 ~S1() { f1(n); }
7763                 int n = 0;
7764             };
7765             struct S2 {
7766                 S2() {}
7767                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7768                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7769                 void set(S1 s) {
7770                     new (stg) S1(s);
7771                     init = true;
7772                 }
7773                 bool init = false;
7774                 char stg[sizeof (S1)];
7775             } ;
7776             S1 f2();
7777             S2 * f3(bool b) {
7778                 S2 o;
7779                 if (b) o.set(f2());
7780                 return new S2(o);
7781             }
7782         ]])], [AC_MSG_RESULT([no])], [
7783             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7784             AC_MSG_RESULT([yes])
7785         ])
7786     CXXFLAGS=$save_CXXFLAGS
7787     AC_LANG_POP([C++])
7789 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7791 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7792 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7793 dnl hits us e.g. with GCC 10 and --enable-optimized at
7795 dnl   In file included from include/rtl/string.hxx:49,
7796 dnl                    from include/rtl/ustring.hxx:43,
7797 dnl                    from include/osl/file.hxx:35,
7798 dnl                    from include/codemaker/global.hxx:28,
7799 dnl                    from include/codemaker/options.hxx:23,
7800 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7801 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7802 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,
7803 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,
7804 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,
7805 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7806 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7807 dnl      78 |         memcpy( buffer, data, length );
7808 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7809 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7810 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7811     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7812     AC_LANG_PUSH([C++])
7813     save_CXXFLAGS=$CXXFLAGS
7814     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7815     if test "$ENABLE_OPTIMIZED" = TRUE; then
7816         CXXFLAGS="$CXXFLAGS -O2"
7817     else
7818         CXXFLAGS="$CXXFLAGS -O0"
7819     fi
7820     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7821     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7822             void fill(char const * begin, char const * end, char c);
7823             struct q {
7824                 char ids[4];
7825                 char username[6];
7826             };
7827             void test(q & c) {
7828                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7829                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7830             }
7831         ]])], [AC_MSG_RESULT([no])], [
7832             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7833             AC_MSG_RESULT([yes])
7834         ])
7835     CXXFLAGS=$save_CXXFLAGS
7836     AC_LANG_POP([C++])
7838 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7840 HAVE_DLLEXPORTINLINES=
7841 if test "$_os" = "WINNT"; then
7842     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7843     AC_LANG_PUSH([C++])
7844     save_CXXFLAGS=$CXXFLAGS
7845     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7846     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7847             HAVE_DLLEXPORTINLINES=TRUE
7848             AC_MSG_RESULT([yes])
7849         ], [AC_MSG_RESULT([no])])
7850     CXXFLAGS=$save_CXXFLAGS
7851     AC_LANG_POP([C++])
7853 AC_SUBST([HAVE_DLLEXPORTINLINES])
7855 dnl ===================================================================
7856 dnl CPU Intrinsics support - SSE, AVX
7857 dnl ===================================================================
7859 CXXFLAGS_INTRINSICS_SSE2=
7860 CXXFLAGS_INTRINSICS_SSSE3=
7861 CXXFLAGS_INTRINSICS_SSE41=
7862 CXXFLAGS_INTRINSICS_SSE42=
7863 CXXFLAGS_INTRINSICS_AVX=
7864 CXXFLAGS_INTRINSICS_AVX2=
7865 CXXFLAGS_INTRINSICS_AVX512=
7866 CXXFLAGS_INTRINSICS_AVX512F=
7867 CXXFLAGS_INTRINSICS_F16C=
7868 CXXFLAGS_INTRINSICS_FMA=
7870 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7871     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7872     flag_sse2=-msse2
7873     flag_ssse3=-mssse3
7874     flag_sse41=-msse4.1
7875     flag_sse42=-msse4.2
7876     flag_avx=-mavx
7877     flag_avx2=-mavx2
7878     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7879     flag_avx512f=-mavx512f
7880     flag_f16c=-mf16c
7881     flag_fma=-mfma
7882 else
7883     # With MSVC using -arch is in fact not necessary for being able
7884     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7885     # even if compiled with -arch:AVX, the -arch option really only affects
7886     # instructions generated for C/C++ code.
7887     # So use the matching same (or lower) -arch options, but only in order
7888     # to generate the best matching instructions for the C++ code surrounding
7889     # the intrinsics.
7890     # SSE2 is the default for x86/x64, so no need to specify the option.
7891     flag_sse2=
7892     # No specific options for these, use the next lower.
7893     flag_ssse3="$flag_sse2"
7894     flag_sse41="$flag_sse2"
7895     flag_sse42="$flag_sse2"
7896     flag_avx=-arch:AVX
7897     flag_avx2=-arch:AVX2
7898     flag_avx512=-arch:AVX512
7899     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7900     flag_avx512f=-arch:AVX2
7901     # No MSVC options for these.
7902     flag_f16c="$flag_sse2"
7903     flag_fma="$flag_sse2"
7906 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7907 AC_LANG_PUSH([C++])
7908 save_CXXFLAGS=$CXXFLAGS
7909 CXXFLAGS="$CXXFLAGS $flag_sse2"
7910 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7911     #include <emmintrin.h>
7912     int main () {
7913         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7914         c = _mm_xor_si128 (a, b);
7915         return 0;
7916     }
7917     ])],
7918     [can_compile_sse2=yes],
7919     [can_compile_sse2=no])
7920 AC_LANG_POP([C++])
7921 CXXFLAGS=$save_CXXFLAGS
7922 AC_MSG_RESULT([${can_compile_sse2}])
7923 if test "${can_compile_sse2}" = "yes" ; then
7924     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7927 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7928 AC_LANG_PUSH([C++])
7929 save_CXXFLAGS=$CXXFLAGS
7930 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7931 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7932     #include <tmmintrin.h>
7933     int main () {
7934         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7935         c = _mm_maddubs_epi16 (a, b);
7936         return 0;
7937     }
7938     ])],
7939     [can_compile_ssse3=yes],
7940     [can_compile_ssse3=no])
7941 AC_LANG_POP([C++])
7942 CXXFLAGS=$save_CXXFLAGS
7943 AC_MSG_RESULT([${can_compile_ssse3}])
7944 if test "${can_compile_ssse3}" = "yes" ; then
7945     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7948 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7949 AC_LANG_PUSH([C++])
7950 save_CXXFLAGS=$CXXFLAGS
7951 CXXFLAGS="$CXXFLAGS $flag_sse41"
7952 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7953     #include <smmintrin.h>
7954     int main () {
7955         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7956         c = _mm_cmpeq_epi64 (a, b);
7957         return 0;
7958     }
7959     ])],
7960     [can_compile_sse41=yes],
7961     [can_compile_sse41=no])
7962 AC_LANG_POP([C++])
7963 CXXFLAGS=$save_CXXFLAGS
7964 AC_MSG_RESULT([${can_compile_sse41}])
7965 if test "${can_compile_sse41}" = "yes" ; then
7966     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7969 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7970 AC_LANG_PUSH([C++])
7971 save_CXXFLAGS=$CXXFLAGS
7972 CXXFLAGS="$CXXFLAGS $flag_sse42"
7973 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7974     #include <nmmintrin.h>
7975     int main () {
7976         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7977         c = _mm_cmpgt_epi64 (a, b);
7978         return 0;
7979     }
7980     ])],
7981     [can_compile_sse42=yes],
7982     [can_compile_sse42=no])
7983 AC_LANG_POP([C++])
7984 CXXFLAGS=$save_CXXFLAGS
7985 AC_MSG_RESULT([${can_compile_sse42}])
7986 if test "${can_compile_sse42}" = "yes" ; then
7987     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7990 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7991 AC_LANG_PUSH([C++])
7992 save_CXXFLAGS=$CXXFLAGS
7993 CXXFLAGS="$CXXFLAGS $flag_avx"
7994 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7995     #include <immintrin.h>
7996     int main () {
7997         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7998         c = _mm256_xor_ps(a, b);
7999         return 0;
8000     }
8001     ])],
8002     [can_compile_avx=yes],
8003     [can_compile_avx=no])
8004 AC_LANG_POP([C++])
8005 CXXFLAGS=$save_CXXFLAGS
8006 AC_MSG_RESULT([${can_compile_avx}])
8007 if test "${can_compile_avx}" = "yes" ; then
8008     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8011 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8012 AC_LANG_PUSH([C++])
8013 save_CXXFLAGS=$CXXFLAGS
8014 CXXFLAGS="$CXXFLAGS $flag_avx2"
8015 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8016     #include <immintrin.h>
8017     int main () {
8018         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8019         c = _mm256_maddubs_epi16(a, b);
8020         return 0;
8021     }
8022     ])],
8023     [can_compile_avx2=yes],
8024     [can_compile_avx2=no])
8025 AC_LANG_POP([C++])
8026 CXXFLAGS=$save_CXXFLAGS
8027 AC_MSG_RESULT([${can_compile_avx2}])
8028 if test "${can_compile_avx2}" = "yes" ; then
8029     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8032 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8033 AC_LANG_PUSH([C++])
8034 save_CXXFLAGS=$CXXFLAGS
8035 CXXFLAGS="$CXXFLAGS $flag_avx512"
8036 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8037     #include <immintrin.h>
8038     int main () {
8039         __m512i a = _mm512_loadu_si512(0);
8040         __m512d v1 = _mm512_load_pd(0);
8041         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8042         __m512d v2 = _mm512_abs_pd(v1);
8043         return 0;
8044     }
8045     ])],
8046     [can_compile_avx512=yes],
8047     [can_compile_avx512=no])
8048 AC_LANG_POP([C++])
8049 CXXFLAGS=$save_CXXFLAGS
8050 AC_MSG_RESULT([${can_compile_avx512}])
8051 if test "${can_compile_avx512}" = "yes" ; then
8052     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8053     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8056 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8057 AC_LANG_PUSH([C++])
8058 save_CXXFLAGS=$CXXFLAGS
8059 CXXFLAGS="$CXXFLAGS $flag_f16c"
8060 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8061     #include <immintrin.h>
8062     int main () {
8063         __m128i a = _mm_set1_epi32 (0);
8064         __m128 c;
8065         c = _mm_cvtph_ps(a);
8066         return 0;
8067     }
8068     ])],
8069     [can_compile_f16c=yes],
8070     [can_compile_f16c=no])
8071 AC_LANG_POP([C++])
8072 CXXFLAGS=$save_CXXFLAGS
8073 AC_MSG_RESULT([${can_compile_f16c}])
8074 if test "${can_compile_f16c}" = "yes" ; then
8075     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8078 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8079 AC_LANG_PUSH([C++])
8080 save_CXXFLAGS=$CXXFLAGS
8081 CXXFLAGS="$CXXFLAGS $flag_fma"
8082 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8083     #include <immintrin.h>
8084     int main () {
8085         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8086         d = _mm256_fmadd_ps(a, b, c);
8087         return 0;
8088     }
8089     ])],
8090     [can_compile_fma=yes],
8091     [can_compile_fma=no])
8092 AC_LANG_POP([C++])
8093 CXXFLAGS=$save_CXXFLAGS
8094 AC_MSG_RESULT([${can_compile_fma}])
8095 if test "${can_compile_fma}" = "yes" ; then
8096     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8099 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8100 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8101 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8102 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8103 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8104 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8105 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8106 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8107 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8108 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8110 dnl ===================================================================
8111 dnl system stl sanity tests
8112 dnl ===================================================================
8113 if test "$_os" != "WINNT"; then
8115     AC_LANG_PUSH([C++])
8117     save_CPPFLAGS="$CPPFLAGS"
8118     if test -n "$MACOSX_SDK_PATH"; then
8119         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8120     fi
8122     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8123     # only.
8124     if test "$CPP_LIBRARY" = GLIBCXX; then
8125         dnl gcc#19664, gcc#22482, rhbz#162935
8126         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8127         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8128         AC_MSG_RESULT([$stlvisok])
8129         if test "$stlvisok" = "no"; then
8130             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8131         fi
8132     fi
8134     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8135     # when we don't make any dynamic libraries?
8136     if test "$DISABLE_DYNLOADING" = ""; then
8137         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8138         cat > conftestlib1.cc <<_ACEOF
8139 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8140 struct S2: S1<int> { virtual ~S2(); };
8141 S2::~S2() {}
8142 _ACEOF
8143         cat > conftestlib2.cc <<_ACEOF
8144 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8145 struct S2: S1<int> { virtual ~S2(); };
8146 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8147 _ACEOF
8148         gccvisinlineshiddenok=yes
8149         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8150             gccvisinlineshiddenok=no
8151         else
8152             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8153             dnl known to not work with -z defs (unsetting which makes the test
8154             dnl moot, though):
8155             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8156             if test "$COM_IS_CLANG" = TRUE; then
8157                 for i in $CXX $CXXFLAGS; do
8158                     case $i in
8159                     -fsanitize=*)
8160                         my_linkflagsnoundefs=
8161                         break
8162                         ;;
8163                     esac
8164                 done
8165             fi
8166             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8167                 gccvisinlineshiddenok=no
8168             fi
8169         fi
8171         rm -fr libconftest*
8172         AC_MSG_RESULT([$gccvisinlineshiddenok])
8173         if test "$gccvisinlineshiddenok" = "no"; then
8174             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8175         fi
8176     fi
8178    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8179     cat >visibility.cxx <<_ACEOF
8180 #pragma GCC visibility push(hidden)
8181 struct __attribute__ ((visibility ("default"))) TestStruct {
8182   static void Init();
8184 __attribute__ ((visibility ("default"))) void TestFunc() {
8185   TestStruct::Init();
8187 _ACEOF
8188     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8189         gccvisbroken=yes
8190     else
8191         case "$host_cpu" in
8192         i?86|x86_64)
8193             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8194                 gccvisbroken=no
8195             else
8196                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8197                     gccvisbroken=no
8198                 else
8199                     gccvisbroken=yes
8200                 fi
8201             fi
8202             ;;
8203         *)
8204             gccvisbroken=no
8205             ;;
8206         esac
8207     fi
8208     rm -f visibility.s visibility.cxx
8210     AC_MSG_RESULT([$gccvisbroken])
8211     if test "$gccvisbroken" = "yes"; then
8212         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8213     fi
8215     CPPFLAGS="$save_CPPFLAGS"
8217     AC_MSG_CHECKING([if CET endbranch is recognized])
8218 cat > endbr.s <<_ACEOF
8219 endbr32
8220 _ACEOF
8221     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8222     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8223         AC_MSG_RESULT([yes])
8224         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8225     else
8226         AC_MSG_RESULT([no])
8227     fi
8228     rm -f endbr.s endbr.o
8229     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8231     AC_LANG_POP([C++])
8234 dnl ===================================================================
8235 dnl  Clang++ tests
8236 dnl ===================================================================
8238 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8239 if test "$GCC" = "yes"; then
8240     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8241     AC_LANG_PUSH([C++])
8242     save_CXXFLAGS=$CXXFLAGS
8243     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8244     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8245     CXXFLAGS=$save_CXXFLAGS
8246     AC_LANG_POP([C++])
8247     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8248         AC_MSG_RESULT([yes])
8249     else
8250         AC_MSG_RESULT([no])
8251     fi
8253 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8255 dnl ===================================================================
8256 dnl Compiler plugins
8257 dnl ===================================================================
8259 COMPILER_PLUGINS=
8260 # currently only Clang
8262 if test "$COM_IS_CLANG" != "TRUE"; then
8263     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8264         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8265         enable_compiler_plugins=no
8266     fi
8269 COMPILER_PLUGINS_COM_IS_CLANG=
8270 if test "$COM_IS_CLANG" = "TRUE"; then
8271     if test -n "$enable_compiler_plugins"; then
8272         compiler_plugins="$enable_compiler_plugins"
8273     elif test -n "$ENABLE_DBGUTIL"; then
8274         compiler_plugins=test
8275     else
8276         compiler_plugins=no
8277     fi
8278     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8279         if test "$CLANGVER" -lt 120001; then
8280             if test "$compiler_plugins" = yes; then
8281                 AC_MSG_ERROR(
8282                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8283             else
8284                 compiler_plugins=no
8285             fi
8286         fi
8287     fi
8288     if test "$compiler_plugins" != "no"; then
8289         dnl The prefix where Clang resides, override to where Clang resides if
8290         dnl using a source build:
8291         if test -z "$CLANGDIR"; then
8292             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8293         fi
8294         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8295         if test -z "$COMPILER_PLUGINS_CXX"; then
8296             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8297         fi
8298         clangbindir=$CLANGDIR/bin
8299         if test "$build_os" = "cygwin"; then
8300             clangbindir=$(cygpath -u "$clangbindir")
8301         fi
8302         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8303         if test -n "$LLVM_CONFIG"; then
8304             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8305             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8306             if test -z "$CLANGLIBDIR"; then
8307                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8308             fi
8309             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8310             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8311             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8312             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8313                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8314             fi
8315             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8316             clangobjdir=$($LLVM_CONFIG --obj-root)
8317             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8318                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8319             fi
8320         fi
8321         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8322         AC_LANG_PUSH([C++])
8323         save_CXX=$CXX
8324         save_CXXCPP=$CXXCPP
8325         save_CPPFLAGS=$CPPFLAGS
8326         save_CXXFLAGS=$CXXFLAGS
8327         save_LDFLAGS=$LDFLAGS
8328         save_LIBS=$LIBS
8329         CXX=$COMPILER_PLUGINS_CXX
8330         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8331         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8332         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8333         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8334             [COMPILER_PLUGINS=TRUE],
8335             [
8336             if test "$compiler_plugins" = "yes"; then
8337                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8338             else
8339                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8340                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8341             fi
8342             ])
8343         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8344         dnl comment in compilerplugins/Makefile-clang.mk:
8345         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8346             LDFLAGS=""
8347             AC_MSG_CHECKING([for clang libraries to use])
8348             if test -z "$CLANGTOOLLIBS"; then
8349                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8350  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8351                 AC_LINK_IFELSE([
8352                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8353                         [[ clang::FullSourceLoc().dump(); ]])
8354                 ],[CLANGTOOLLIBS="$LIBS"],[])
8355             fi
8356             if test -z "$CLANGTOOLLIBS"; then
8357                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8358                 AC_LINK_IFELSE([
8359                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8360                         [[ clang::FullSourceLoc().dump(); ]])
8361                 ],[CLANGTOOLLIBS="$LIBS"],[])
8362             fi
8363             AC_MSG_RESULT([$CLANGTOOLLIBS])
8364             if test -z "$CLANGTOOLLIBS"; then
8365                 if test "$compiler_plugins" = "yes"; then
8366                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8367                 else
8368                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8369                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8370                 fi
8371                 COMPILER_PLUGINS=
8372             fi
8373             if test -n "$COMPILER_PLUGINS"; then
8374                 if test -z "$CLANGSYSINCLUDE"; then
8375                     if test -n "$LLVM_CONFIG"; then
8376                         # Path to the clang system headers (no idea if there's a better way to get it).
8377                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8378                     fi
8379                 fi
8380             fi
8381         fi
8382         CXX=$save_CXX
8383         CXXCPP=$save_CXXCPP
8384         CPPFLAGS=$save_CPPFLAGS
8385         CXXFLAGS=$save_CXXFLAGS
8386         LDFLAGS=$save_LDFLAGS
8387         LIBS="$save_LIBS"
8388         AC_LANG_POP([C++])
8390         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8391         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8392             #ifndef __clang__
8393             you lose
8394             #endif
8395             int foo=42;
8396             ]])],
8397             [AC_MSG_RESULT([yes])
8398              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8399             [AC_MSG_RESULT([no])])
8400         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8401     fi
8402 else
8403     if test "$enable_compiler_plugins" = "yes"; then
8404         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8405     fi
8407 COMPILER_PLUGINS_ANALYZER_PCH=
8408 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8409     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8411 AC_SUBST(COMPILER_PLUGINS)
8412 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8413 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8414 AC_SUBST(COMPILER_PLUGINS_CXX)
8415 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8416 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8417 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8418 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8419 AC_SUBST(CLANGDIR)
8420 AC_SUBST(CLANGLIBDIR)
8421 AC_SUBST(CLANGTOOLLIBS)
8422 AC_SUBST(CLANGSYSINCLUDE)
8424 # Plugin to help linker.
8425 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8426 # This makes --enable-lto build with clang work.
8427 AC_SUBST(LD_PLUGIN)
8429 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8430 AC_SUBST(HAVE_POSIX_FALLOCATE)
8432 JITC_PROCESSOR_TYPE=""
8433 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8434     # IBMs JDK needs this...
8435     JITC_PROCESSOR_TYPE=6
8436     export JITC_PROCESSOR_TYPE
8438 AC_SUBST([JITC_PROCESSOR_TYPE])
8440 # Misc Windows Stuff
8441 AC_ARG_WITH(ucrt-dir,
8442     AS_HELP_STRING([--with-ucrt-dir],
8443         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8444         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8445         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8446             Windows6.1-KB2999226-x64.msu
8447             Windows6.1-KB2999226-x86.msu
8448             Windows8.1-KB2999226-x64.msu
8449             Windows8.1-KB2999226-x86.msu
8450             Windows8-RT-KB2999226-x64.msu
8451             Windows8-RT-KB2999226-x86.msu
8452         A zip archive including those files is available from Microsoft site:
8453         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8456 UCRT_REDISTDIR="$with_ucrt_dir"
8457 if test $_os = "WINNT"; then
8458     find_msvc_x64_dlls
8459     for i in $PKGFORMAT; do
8460         if test "$i" = msi; then
8461             find_msms
8462             break
8463         fi
8464     done
8465     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8466     MSVC_DLLS="$msvcdlls"
8467     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8468     # MSVC 15.3 changed it to VC141
8469     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8470         SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8471     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8472         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8473     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8474         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8475     else
8476         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8477     fi
8479     if test "$UCRT_REDISTDIR" = "no"; then
8480         dnl explicitly disabled
8481         UCRT_REDISTDIR=""
8482     else
8483         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8484                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8485                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8486                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8487                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8488                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8489             UCRT_REDISTDIR=""
8490             if test -n "$PKGFORMAT"; then
8491                for i in $PKGFORMAT; do
8492                    case "$i" in
8493                    msi)
8494                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8495                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8496                        ;;
8497                    esac
8498                done
8499             fi
8500         fi
8501     fi
8504 AC_SUBST(UCRT_REDISTDIR)
8505 AC_SUBST(MSVC_DLL_PATH)
8506 AC_SUBST(MSVC_DLLS)
8507 AC_SUBST(MSM_PATH)
8510 dnl ===================================================================
8511 dnl Checks for Java
8512 dnl ===================================================================
8513 if test "$ENABLE_JAVA" != ""; then
8515     # Windows-specific tests
8516     if test "$build_os" = "cygwin"; then
8517         if test -z "$with_jdk_home"; then
8518             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8519             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8520             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8521             if test -n "$regvalue"; then
8522                 ver=$regvalue
8523                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8524                 with_jdk_home=$regvalue
8525             fi
8526             howfound="found automatically"
8527         else
8528             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8529             howfound="you passed"
8530         fi
8532         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8533             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])
8534         fi
8535     fi
8537     # 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.
8538     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8539     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8540         with_jdk_home=`/usr/libexec/java_home`
8541     fi
8543     JAVA_HOME=; export JAVA_HOME
8544     if test -z "$with_jdk_home"; then
8545         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8546     else
8547         _java_path="$with_jdk_home/bin/$with_java"
8548         dnl Check if there is a Java interpreter at all.
8549         if test -x "$_java_path"; then
8550             JAVAINTERPRETER=$_java_path
8551         else
8552             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8553         fi
8554     fi
8556     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8557     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8558     dnl loaded by java to run JunitTests:
8559     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8560         shortjdkhome=`cygpath -d "$with_jdk_home"`
8561         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
8562             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8563             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8564         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
8565             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8566             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8567         fi
8569         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8570             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8571         fi
8572         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8573     elif test "$cross_compiling" != "yes"; then
8574         case $CPUNAME in
8575             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8576                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8577                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8578                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8579                 fi
8580                 ;;
8581             *) # assumption: everything else 32-bit
8582                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8583                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8584                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8585                 fi
8586                 ;;
8587         esac
8588     fi
8591 dnl ===================================================================
8592 dnl Checks for JDK.
8593 dnl ===================================================================
8595 # Whether all the complexity here actually is needed any more or not, no idea.
8597 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8598     _gij_longver=0
8599     AC_MSG_CHECKING([the installed JDK])
8600     if test -n "$JAVAINTERPRETER"; then
8601         dnl java -version sends output to stderr!
8602         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8603             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8604         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8605             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8606         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8607             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8608         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8609             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8610         else
8611             JDK=sun
8613             dnl Sun JDK specific tests
8614             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8615             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8617             if test "$_jdk_ver" -lt 10900; then
8618                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8619             fi
8620             if test "$_jdk_ver" -gt 10900; then
8621                 JAVA_CLASSPATH_NOT_SET=TRUE
8622             fi
8624             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8625             if test "$_os" = "WINNT"; then
8626                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8627             fi
8628             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8630             # set to limit VM usage for JunitTests
8631             JAVAIFLAGS=-Xmx64M
8632             # set to limit VM usage for javac
8633             JAVACFLAGS=-J-Xmx128M
8634         fi
8635     else
8636         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8637     fi
8638 else
8639     if test -z "$ENABLE_JAVA"; then
8640         dnl Java disabled
8641         JAVA_HOME=
8642         export JAVA_HOME
8643     elif test "$cross_compiling" = "yes"; then
8644         # Just assume compatibility of build and host JDK
8645         JDK=$JDK_FOR_BUILD
8646         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8647     fi
8650 dnl ===================================================================
8651 dnl Checks for javac
8652 dnl ===================================================================
8653 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8654     javacompiler="javac"
8655     : ${JAVA_SOURCE_VER=8}
8656     : ${JAVA_TARGET_VER=8}
8657     if test -z "$with_jdk_home"; then
8658         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8659     else
8660         _javac_path="$with_jdk_home/bin/$javacompiler"
8661         dnl Check if there is a Java compiler at all.
8662         if test -x "$_javac_path"; then
8663             JAVACOMPILER=$_javac_path
8664         fi
8665     fi
8666     if test -z "$JAVACOMPILER"; then
8667         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8668     fi
8669     if test "$build_os" = "cygwin"; then
8670         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8671             JAVACOMPILER="${JAVACOMPILER}.exe"
8672         fi
8673         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8674     fi
8677 dnl ===================================================================
8678 dnl Checks for javadoc
8679 dnl ===================================================================
8680 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8681     if test -z "$with_jdk_home"; then
8682         AC_PATH_PROG(JAVADOC, javadoc)
8683     else
8684         _javadoc_path="$with_jdk_home/bin/javadoc"
8685         dnl Check if there is a javadoc at all.
8686         if test -x "$_javadoc_path"; then
8687             JAVADOC=$_javadoc_path
8688         else
8689             AC_PATH_PROG(JAVADOC, javadoc)
8690         fi
8691     fi
8692     if test -z "$JAVADOC"; then
8693         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8694     fi
8695     if test "$build_os" = "cygwin"; then
8696         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8697             JAVADOC="${JAVADOC}.exe"
8698         fi
8699         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8700     fi
8702     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8703     JAVADOCISGJDOC="yes"
8704     fi
8706 AC_SUBST(JAVADOC)
8707 AC_SUBST(JAVADOCISGJDOC)
8709 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8710     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8711     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8712         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8713            # try to recover first by looking whether we have an alternative
8714            # system as in Debian or newer SuSEs where following /usr/bin/javac
8715            # over /etc/alternatives/javac leads to the right bindir where we
8716            # just need to strip a bit away to get a valid JAVA_HOME
8717            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8718         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8719             # maybe only one level of symlink (e.g. on Mac)
8720             JAVA_HOME=$(readlink $JAVACOMPILER)
8721             if test "$(dirname $JAVA_HOME)" = "."; then
8722                 # we've got no path to trim back
8723                 JAVA_HOME=""
8724             fi
8725         else
8726             # else warn
8727             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8728             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8729             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8730             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8731         fi
8732         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8733         if test "$JAVA_HOME" != "/usr"; then
8734             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8735                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8736                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8737                 dnl Tiger already returns a JDK path...
8738                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8739             else
8740                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8741                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8742                 dnl that checks which version to run
8743                 if test -f "$JAVA_HOME"; then
8744                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8745                 fi
8746             fi
8747         fi
8748     fi
8749     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8751     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8752     if test -z "$JAVA_HOME"; then
8753         if test "x$with_jdk_home" = "x"; then
8754             cat > findhome.java <<_ACEOF
8755 [import java.io.File;
8757 class findhome
8759     public static void main(String args[])
8760     {
8761         String jrelocation = System.getProperty("java.home");
8762         File jre = new File(jrelocation);
8763         System.out.println(jre.getParent());
8764     }
8766 _ACEOF
8767             AC_MSG_CHECKING([if javac works])
8768             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8769             AC_TRY_EVAL(javac_cmd)
8770             if test $? = 0 -a -f ./findhome.class; then
8771                 AC_MSG_RESULT([javac works])
8772             else
8773                 echo "configure: javac test failed" >&5
8774                 cat findhome.java >&5
8775                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8776             fi
8777             AC_MSG_CHECKING([if gij knows its java.home])
8778             JAVA_HOME=`$JAVAINTERPRETER findhome`
8779             if test $? = 0 -a "$JAVA_HOME" != ""; then
8780                 AC_MSG_RESULT([$JAVA_HOME])
8781             else
8782                 echo "configure: java test failed" >&5
8783                 cat findhome.java >&5
8784                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8785             fi
8786             # clean-up after ourselves
8787             rm -f ./findhome.java ./findhome.class
8788         else
8789             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8790         fi
8791     fi
8793     # now check if $JAVA_HOME is really valid
8794     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8795         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8796             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8797             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8798             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8799             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8800             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8801             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8802         fi
8803     fi
8804     PathFormat "$JAVA_HOME"
8805     JAVA_HOME="$formatted_path"
8808 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8809     "$_os" != Darwin
8810 then
8811     AC_MSG_CHECKING([for JAWT lib])
8812     if test "$_os" = WINNT; then
8813         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8814         JAWTLIB=jawt.lib
8815     else
8816         case "$host_cpu" in
8817         arm*)
8818             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8819             JAVA_ARCH=$my_java_arch
8820             ;;
8821         i*86)
8822             my_java_arch=i386
8823             ;;
8824         m68k)
8825             my_java_arch=m68k
8826             ;;
8827         powerpc)
8828             my_java_arch=ppc
8829             ;;
8830         powerpc64)
8831             my_java_arch=ppc64
8832             ;;
8833         powerpc64le)
8834             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8835             JAVA_ARCH=$my_java_arch
8836             ;;
8837         sparc64)
8838             my_java_arch=sparcv9
8839             ;;
8840         x86_64)
8841             my_java_arch=amd64
8842             ;;
8843         *)
8844             my_java_arch=$host_cpu
8845             ;;
8846         esac
8847         # This is where JDK9 puts the library
8848         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8849             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8850         else
8851             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8852         fi
8853         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8854     fi
8855     AC_MSG_RESULT([$JAWTLIB])
8857 AC_SUBST(JAWTLIB)
8859 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8860     case "$host_os" in
8862     aix*)
8863         JAVAINC="-I$JAVA_HOME/include"
8864         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8865         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8866         ;;
8868     cygwin*|wsl*)
8869         JAVAINC="-I$JAVA_HOME/include/win32"
8870         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8871         ;;
8873     darwin*)
8874         if test -d "$JAVA_HOME/include/darwin"; then
8875             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8876         else
8877             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8878         fi
8879         ;;
8881     dragonfly*)
8882         JAVAINC="-I$JAVA_HOME/include"
8883         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8884         ;;
8886     freebsd*)
8887         JAVAINC="-I$JAVA_HOME/include"
8888         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8889         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8890         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8891         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8892         ;;
8894     k*bsd*-gnu*)
8895         JAVAINC="-I$JAVA_HOME/include"
8896         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8897         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8898         ;;
8900     linux-gnu*)
8901         JAVAINC="-I$JAVA_HOME/include"
8902         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8903         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8904         ;;
8906     *netbsd*)
8907         JAVAINC="-I$JAVA_HOME/include"
8908         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8909         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8910        ;;
8912     openbsd*)
8913         JAVAINC="-I$JAVA_HOME/include"
8914         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8915         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8916         ;;
8918     solaris*)
8919         JAVAINC="-I$JAVA_HOME/include"
8920         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8921         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8922         ;;
8923     esac
8925 SOLARINC="$SOLARINC $JAVAINC"
8927 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8928     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8929     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8930     JDK_FOR_BUILD=$JDK
8933 AC_SUBST(JAVACFLAGS)
8934 AC_SUBST(JAVACOMPILER)
8935 AC_SUBST(JAVAINTERPRETER)
8936 AC_SUBST(JAVAIFLAGS)
8937 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8938 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8939 AC_SUBST(JAVA_HOME)
8940 AC_SUBST(JAVA_HOME_FOR_BUILD)
8941 AC_SUBST(JDK)
8942 AC_SUBST(JDK_FOR_BUILD)
8943 AC_SUBST(JAVA_SOURCE_VER)
8944 AC_SUBST(JAVA_TARGET_VER)
8947 dnl ===================================================================
8948 dnl Export file validation
8949 dnl ===================================================================
8950 AC_MSG_CHECKING([whether to enable export file validation])
8951 if test "$with_export_validation" != "no"; then
8952     if test -z "$ENABLE_JAVA"; then
8953         if test "$with_export_validation" = "yes"; then
8954             AC_MSG_ERROR([requested, but Java is disabled])
8955         else
8956             AC_MSG_RESULT([no, as Java is disabled])
8957         fi
8958     elif ! test -d "${SRC_ROOT}/schema"; then
8959         if test "$with_export_validation" = "yes"; then
8960             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8961         else
8962             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8963         fi
8964     else
8965         AC_MSG_RESULT([yes])
8966         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8968         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8969         if test -z "$ODFVALIDATOR"; then
8970             # remember to download the ODF toolkit with validator later
8971             AC_MSG_NOTICE([no odfvalidator found, will download it])
8972             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8973             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8975             # and fetch name of odfvalidator jar name from download.lst
8976             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8977             AC_SUBST(ODFVALIDATOR_JAR)
8979             if test -z "$ODFVALIDATOR_JAR"; then
8980                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8981             fi
8982         fi
8983         if test "$build_os" = "cygwin"; then
8984             # In case of Cygwin it will be executed from Windows,
8985             # so we need to run bash and absolute path to validator
8986             # so instead of "odfvalidator" it will be
8987             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8988             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8989         else
8990             ODFVALIDATOR="sh $ODFVALIDATOR"
8991         fi
8992         AC_SUBST(ODFVALIDATOR)
8995         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8996         if test -z "$OFFICEOTRON"; then
8997             # remember to download the officeotron with validator later
8998             AC_MSG_NOTICE([no officeotron found, will download it])
8999             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9000             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9002             # and fetch name of officeotron jar name from download.lst
9003             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9004             AC_SUBST(OFFICEOTRON_JAR)
9006             if test -z "$OFFICEOTRON_JAR"; then
9007                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9008             fi
9009         else
9010             # check version of existing officeotron
9011             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9012             if test 0"$OFFICEOTRON_VER" -lt 704; then
9013                 AC_MSG_ERROR([officeotron too old])
9014             fi
9015         fi
9016         if test "$build_os" = "cygwin"; then
9017             # In case of Cygwin it will be executed from Windows,
9018             # so we need to run bash and absolute path to validator
9019             # so instead of "odfvalidator" it will be
9020             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9021             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9022         else
9023             OFFICEOTRON="sh $OFFICEOTRON"
9024         fi
9025     fi
9026     AC_SUBST(OFFICEOTRON)
9027 else
9028     AC_MSG_RESULT([no])
9031 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9032 if test "$with_bffvalidator" != "no"; then
9033     AC_DEFINE(HAVE_BFFVALIDATOR)
9035     if test "$with_export_validation" = "no"; then
9036         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9037     fi
9039     if test "$with_bffvalidator" = "yes"; then
9040         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9041     else
9042         BFFVALIDATOR="$with_bffvalidator"
9043     fi
9045     if test "$build_os" = "cygwin"; then
9046         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9047             AC_MSG_RESULT($BFFVALIDATOR)
9048         else
9049             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9050         fi
9051     elif test -n "$BFFVALIDATOR"; then
9052         # We are not in Cygwin but need to run Windows binary with wine
9053         AC_PATH_PROGS(WINE, wine)
9055         # so swap in a shell wrapper that converts paths transparently
9056         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9057         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9058         AC_SUBST(BFFVALIDATOR_EXE)
9059         AC_MSG_RESULT($BFFVALIDATOR)
9060     else
9061         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9062     fi
9063     AC_SUBST(BFFVALIDATOR)
9064 else
9065     AC_MSG_RESULT([no])
9068 dnl ===================================================================
9069 dnl Check for C preprocessor to use
9070 dnl ===================================================================
9071 AC_MSG_CHECKING([which C preprocessor to use in idlc])
9072 SYSTEM_UCPP_IS_GCC=
9073 if test -n "$with_idlc_cpp"; then
9074     AC_MSG_RESULT([$with_idlc_cpp])
9075     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
9076     AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
9077     # ucpp will accept -v (to output version), warn about the others as unknown
9078     # and return 1 (due to -v)
9079     # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
9080     # and return 0 (due to --version ) if all options are supported
9081     $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
9082     if test $? -eq 0;  then
9083         SYSTEM_UCPP_IS_GCC=TRUE
9084         AC_MSG_RESULT([yes])
9085     else
9086         AC_MSG_RESULT([no])
9087     fi
9088 else
9089     AC_MSG_RESULT([ucpp])
9090     AC_MSG_CHECKING([which ucpp to use])
9091     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
9092         AC_MSG_RESULT([external])
9093         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
9094     else
9095         AC_MSG_RESULT([internal])
9096         BUILD_TYPE="$BUILD_TYPE UCPP"
9097     fi
9099 AC_SUBST(SYSTEM_UCPP)
9100 AC_SUBST(SYSTEM_UCPP_IS_GCC)
9102 dnl ===================================================================
9103 dnl Check for epm (not needed for Windows)
9104 dnl ===================================================================
9105 AC_MSG_CHECKING([whether to enable EPM for packing])
9106 if test "$enable_epm" = "yes"; then
9107     AC_MSG_RESULT([yes])
9108     if test "$_os" != "WINNT"; then
9109         if test $_os = Darwin; then
9110             EPM=internal
9111         elif test -n "$with_epm"; then
9112             EPM=$with_epm
9113         else
9114             AC_PATH_PROG(EPM, epm, no)
9115         fi
9116         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9117             AC_MSG_NOTICE([EPM will be built.])
9118             BUILD_TYPE="$BUILD_TYPE EPM"
9119             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9120         else
9121             # Gentoo has some epm which is something different...
9122             AC_MSG_CHECKING([whether the found epm is the right epm])
9123             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9124                 AC_MSG_RESULT([yes])
9125             else
9126                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9127             fi
9128             AC_MSG_CHECKING([epm version])
9129             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9130             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9131                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9132                 AC_MSG_RESULT([OK, >= 3.7])
9133             else
9134                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9135                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9136             fi
9137         fi
9138     fi
9140     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9141         AC_MSG_CHECKING([for rpm])
9142         for a in "$RPM" rpmbuild rpm; do
9143             $a --usage >/dev/null 2> /dev/null
9144             if test $? -eq 0; then
9145                 RPM=$a
9146                 break
9147             else
9148                 $a --version >/dev/null 2> /dev/null
9149                 if test $? -eq 0; then
9150                     RPM=$a
9151                     break
9152                 fi
9153             fi
9154         done
9155         if test -z "$RPM"; then
9156             AC_MSG_ERROR([not found])
9157         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9158             RPM_PATH=`which $RPM`
9159             AC_MSG_RESULT([$RPM_PATH])
9160             SCPDEFS="$SCPDEFS -DWITH_RPM"
9161         else
9162             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9163         fi
9164     fi
9165     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9166         AC_PATH_PROG(DPKG, dpkg, no)
9167         if test "$DPKG" = "no"; then
9168             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9169         fi
9170     fi
9171     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9172        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9173         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9174             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9175                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9176                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9177                     AC_MSG_RESULT([yes])
9178                 else
9179                     AC_MSG_RESULT([no])
9180                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9181                         _pt="rpm"
9182                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9183                         add_warning "the rpms will need to be installed with --nodeps"
9184                     else
9185                         _pt="pkg"
9186                     fi
9187                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9188                     add_warning "the ${_pt}s will not be relocatable"
9189                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9190                                  relocation will work, you need to patch your epm with the
9191                                  patch in epm/epm-3.7.patch or build with
9192                                  --with-epm=internal which will build a suitable epm])
9193                 fi
9194             fi
9195         fi
9196     fi
9197     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9198         AC_PATH_PROG(PKGMK, pkgmk, no)
9199         if test "$PKGMK" = "no"; then
9200             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9201         fi
9202     fi
9203     AC_SUBST(RPM)
9204     AC_SUBST(DPKG)
9205     AC_SUBST(PKGMK)
9206 else
9207     for i in $PKGFORMAT; do
9208         case "$i" in
9209         aix | bsd | deb | pkg | rpm | native | portable)
9210             AC_MSG_ERROR(
9211                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9212             ;;
9213         esac
9214     done
9215     AC_MSG_RESULT([no])
9216     EPM=NO
9218 AC_SUBST(EPM)
9220 ENABLE_LWP=
9221 if test "$enable_lotuswordpro" = "yes"; then
9222     ENABLE_LWP="TRUE"
9224 AC_SUBST(ENABLE_LWP)
9226 dnl ===================================================================
9227 dnl Check for building ODK
9228 dnl ===================================================================
9229 AC_MSG_CHECKING([whether to build the ODK])
9230 if test "$enable_odk" = yes; then
9231     if test "$DISABLE_DYNLOADING" = TRUE; then
9232         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9233     fi
9234     AC_MSG_RESULT([yes])
9235     BUILD_TYPE="$BUILD_TYPE ODK"
9236 else
9237     AC_MSG_RESULT([no])
9240 if test "$enable_odk" != yes; then
9241     unset DOXYGEN
9242 else
9243     if test "$with_doxygen" = no; then
9244         AC_MSG_CHECKING([for doxygen])
9245         unset DOXYGEN
9246         AC_MSG_RESULT([no])
9247     else
9248         if test "$with_doxygen" = yes; then
9249             AC_PATH_PROG([DOXYGEN], [doxygen])
9250             if test -z "$DOXYGEN"; then
9251                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9252             fi
9253             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9254                 if ! dot -V 2>/dev/null; then
9255                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9256                 fi
9257             fi
9258         else
9259             AC_MSG_CHECKING([for doxygen])
9260             DOXYGEN=$with_doxygen
9261             AC_MSG_RESULT([$DOXYGEN])
9262         fi
9263         if test -n "$DOXYGEN"; then
9264             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9265             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9266             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9267                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9268             fi
9269         fi
9270     fi
9272 AC_SUBST([DOXYGEN])
9274 dnl ==================================================================
9275 dnl libfuzzer
9276 dnl ==================================================================
9277 AC_MSG_CHECKING([whether to enable fuzzers])
9278 if test "$enable_fuzzers" != yes; then
9279     AC_MSG_RESULT([no])
9280 else
9281     if test -z $LIB_FUZZING_ENGINE; then
9282       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9283     fi
9284     AC_MSG_RESULT([yes])
9285     ENABLE_FUZZERS="TRUE"
9286     AC_DEFINE([ENABLE_FUZZERS],1)
9287     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9289 AC_SUBST(LIB_FUZZING_ENGINE)
9291 dnl ===================================================================
9292 dnl Check for system zlib
9293 dnl ===================================================================
9294 if test "$with_system_zlib" = "auto"; then
9295     case "$_os" in
9296     WINNT)
9297         with_system_zlib="$with_system_libs"
9298         ;;
9299     *)
9300         if test "$enable_fuzzers" != "yes"; then
9301             with_system_zlib=yes
9302         else
9303             with_system_zlib=no
9304         fi
9305         ;;
9306     esac
9309 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9310 dnl and has no pkg-config for it at least on some tinderboxes,
9311 dnl so leaving that out for now
9312 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9313 AC_MSG_CHECKING([which zlib to use])
9314 if test "$with_system_zlib" = "yes"; then
9315     AC_MSG_RESULT([external])
9316     SYSTEM_ZLIB=TRUE
9317     AC_CHECK_HEADER(zlib.h, [],
9318         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9319     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9320         [AC_MSG_ERROR(zlib not found or functional)], [])
9321 else
9322     AC_MSG_RESULT([internal])
9323     SYSTEM_ZLIB=
9324     BUILD_TYPE="$BUILD_TYPE ZLIB"
9325     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9326     if test "$COM" = "MSC"; then
9327         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9328     else
9329         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9330     fi
9332 AC_SUBST(ZLIB_CFLAGS)
9333 AC_SUBST(ZLIB_LIBS)
9334 AC_SUBST(SYSTEM_ZLIB)
9336 dnl ===================================================================
9337 dnl Check for system jpeg
9338 dnl ===================================================================
9339 AC_MSG_CHECKING([which libjpeg to use])
9340 if test "$with_system_jpeg" = "yes"; then
9341     AC_MSG_RESULT([external])
9342     SYSTEM_LIBJPEG=TRUE
9343     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9344         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9345     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9346         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9347 else
9348     SYSTEM_LIBJPEG=
9349     AC_MSG_RESULT([internal, libjpeg-turbo])
9350     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9352     case "$host_cpu" in
9353     x86_64 | amd64 | i*86 | x86 | ia32)
9354         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9355         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9356             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9357                 NASM="$LODE_HOME/opt/bin/nasm"
9358             elif test -x "/opt/lo/bin/nasm"; then
9359                 NASM="/opt/lo/bin/nasm"
9360             fi
9361         fi
9363         if test -n "$NASM"; then
9364             AC_MSG_CHECKING([for object file format of host system])
9365             case "$host_os" in
9366               cygwin* | mingw* | pw32* | wsl*)
9367                 case "$host_cpu" in
9368                   x86_64)
9369                     objfmt='Win64-COFF'
9370                     ;;
9371                   *)
9372                     objfmt='Win32-COFF'
9373                     ;;
9374                 esac
9375               ;;
9376               msdosdjgpp* | go32*)
9377                 objfmt='COFF'
9378               ;;
9379               os2-emx*) # not tested
9380                 objfmt='MSOMF' # obj
9381               ;;
9382               linux*coff* | linux*oldld*)
9383                 objfmt='COFF' # ???
9384               ;;
9385               linux*aout*)
9386                 objfmt='a.out'
9387               ;;
9388               linux*)
9389                 case "$host_cpu" in
9390                   x86_64)
9391                     objfmt='ELF64'
9392                     ;;
9393                   *)
9394                     objfmt='ELF'
9395                     ;;
9396                 esac
9397               ;;
9398               kfreebsd* | freebsd* | netbsd* | openbsd*)
9399                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9400                   objfmt='BSD-a.out'
9401                 else
9402                   case "$host_cpu" in
9403                     x86_64 | amd64)
9404                       objfmt='ELF64'
9405                       ;;
9406                     *)
9407                       objfmt='ELF'
9408                       ;;
9409                   esac
9410                 fi
9411               ;;
9412               solaris* | sunos* | sysv* | sco*)
9413                 case "$host_cpu" in
9414                   x86_64)
9415                     objfmt='ELF64'
9416                     ;;
9417                   *)
9418                     objfmt='ELF'
9419                     ;;
9420                 esac
9421               ;;
9422               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9423                 case "$host_cpu" in
9424                   x86_64)
9425                     objfmt='Mach-O64'
9426                     ;;
9427                   *)
9428                     objfmt='Mach-O'
9429                     ;;
9430                 esac
9431               ;;
9432               *)
9433                 objfmt='ELF ?'
9434               ;;
9435             esac
9437             AC_MSG_RESULT([$objfmt])
9438             if test "$objfmt" = 'ELF ?'; then
9439               objfmt='ELF'
9440               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9441             fi
9443             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9444             case "$objfmt" in
9445               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9446               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9447               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9448               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9449               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9450               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9451               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9452               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9453               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9454               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9455               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9456             esac
9457             AC_MSG_RESULT([$NAFLAGS])
9459             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9460             cat > conftest.asm << EOF
9461             [%line __oline__ "configure"
9462                     section .text
9463                     global  _main,main
9464             _main:
9465             main:   xor     eax,eax
9466                     ret
9467             ]
9469             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9470             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9471               AC_MSG_RESULT(yes)
9472             else
9473               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9474               cat conftest.asm >&AS_MESSAGE_LOG_FD
9475               rm -rf conftest*
9476               AC_MSG_RESULT(no)
9477               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9478               NASM=""
9479             fi
9481         fi
9483         if test -z "$NASM"; then
9484 cat << _EOS
9485 ****************************************************************************
9486 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9487 To get one please:
9489 _EOS
9490             if test "$build_os" = "cygwin"; then
9491 cat << _EOS
9492 install a pre-compiled binary for Win32
9494 mkdir -p /opt/lo/bin
9495 cd /opt/lo/bin
9496 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9497 chmod +x nasm
9499 or get and install one from http://www.nasm.us/
9501 Then re-run autogen.sh
9503 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9504 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9506 _EOS
9507             else
9508 cat << _EOS
9509 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9511 _EOS
9512             fi
9513             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9514             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9515         fi
9516       ;;
9517     esac
9520 AC_SUBST(NASM)
9521 AC_SUBST(NAFLAGS)
9522 AC_SUBST(LIBJPEG_CFLAGS)
9523 AC_SUBST(LIBJPEG_LIBS)
9524 AC_SUBST(SYSTEM_LIBJPEG)
9526 dnl ===================================================================
9527 dnl Check for system clucene
9528 dnl ===================================================================
9529 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9530 if test "$SYSTEM_CLUCENE" = TRUE; then
9531     AC_LANG_PUSH([C++])
9532     save_CXXFLAGS=$CXXFLAGS
9533     save_CPPFLAGS=$CPPFLAGS
9534     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9535     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9536     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9537     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9538     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9539                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9540     CXXFLAGS=$save_CXXFLAGS
9541     CPPFLAGS=$save_CPPFLAGS
9542     AC_LANG_POP([C++])
9543     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9546 dnl ===================================================================
9547 dnl Check for system expat
9548 dnl ===================================================================
9549 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9551 dnl ===================================================================
9552 dnl Check for system xmlsec
9553 dnl ===================================================================
9554 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9556 libo_CHECK_SYSTEM_MODULE([eot],[LIBEOT],[libeot >= 0.01],disabled)
9558 dnl ===================================================================
9559 dnl Check for DLP libs
9560 dnl ===================================================================
9561 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9562 AS_IF([test "$COM" = "MSC"],
9563       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9564       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9566 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9567 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9569 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9571 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9573 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9574 AS_IF([test "$COM" = "MSC"],
9575       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9576       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9578 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9579 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9581 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9583 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9584 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9586 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9588 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9590 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9592 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9593 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9595 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9596 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9598 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9600 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9601 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9603 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9605 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9607 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9609 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9611 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9612 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9614 dnl ===================================================================
9615 dnl Check for system lcms2
9616 dnl ===================================================================
9617 if test "$with_system_lcms2" != "yes"; then
9618     SYSTEM_LCMS2=
9620 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9621 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9622 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9623 if test "$GCC" = "yes"; then
9624     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9626 if test "$COM" = "MSC"; then # override the above
9627     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9630 dnl ===================================================================
9631 dnl Check for system cppunit
9632 dnl ===================================================================
9633 if test "$_os" != "Android" ; then
9634     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9637 dnl ===================================================================
9638 dnl Check whether freetype is available
9640 dnl FreeType has 3 different kinds of versions
9641 dnl * release, like 2.4.10
9642 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9643 dnl * soname
9644 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9646 dnl 9.9.3 is 2.2.0
9647 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9648 dnl ===================================================================
9649 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9650 if test "x$ac_config_site_64bit_host" = xYES; then
9651     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9652 else
9653     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9655 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9657 # ===================================================================
9658 # Check for system libxslt
9659 # to prevent incompatibilities between internal libxml2 and external libxslt,
9660 # or vice versa, use with_system_libxml here
9661 # ===================================================================
9662 if test "$with_system_libxml" = "auto"; then
9663     case "$_os" in
9664     WINNT|iOS|Android)
9665         with_system_libxml="$with_system_libs"
9666         ;;
9667     Emscripten)
9668         with_system_libxml=no
9669         ;;
9670     *)
9671         if test "$enable_fuzzers" != "yes"; then
9672             with_system_libxml=yes
9673         else
9674             with_system_libxml=no
9675         fi
9676         ;;
9677     esac
9680 AC_MSG_CHECKING([which libxslt to use])
9681 if test "$with_system_libxml" = "yes"; then
9682     AC_MSG_RESULT([external])
9683     SYSTEM_LIBXSLT=TRUE
9684     if test "$_os" = "Darwin"; then
9685         dnl make sure to use SDK path
9686         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9687         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9688         dnl omit -L/usr/lib
9689         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9690         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9691     else
9692         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9693         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9694         FilterLibs "${LIBXSLT_LIBS}"
9695         LIBXSLT_LIBS="${filteredlibs}"
9696         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9697         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9698         FilterLibs "${LIBEXSLT_LIBS}"
9699         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9700     fi
9702     dnl Check for xsltproc
9703     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9704     if test "$XSLTPROC" = "no"; then
9705         AC_MSG_ERROR([xsltproc is required])
9706     fi
9707 else
9708     AC_MSG_RESULT([internal])
9709     SYSTEM_LIBXSLT=
9710     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9712 AC_SUBST(SYSTEM_LIBXSLT)
9713 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9714     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9716 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9718 AC_SUBST(LIBEXSLT_CFLAGS)
9719 AC_SUBST(LIBEXSLT_LIBS)
9720 AC_SUBST(LIBXSLT_CFLAGS)
9721 AC_SUBST(LIBXSLT_LIBS)
9722 AC_SUBST(XSLTPROC)
9724 # ===================================================================
9725 # Check for system libxml
9726 # ===================================================================
9727 AC_MSG_CHECKING([which libxml to use])
9728 if test "$with_system_libxml" = "yes"; then
9729     AC_MSG_RESULT([external])
9730     SYSTEM_LIBXML=TRUE
9731     if test "$_os" = "Darwin"; then
9732         dnl make sure to use SDK path
9733         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9734         dnl omit -L/usr/lib
9735         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9736     elif test $_os = iOS; then
9737         dnl make sure to use SDK path
9738         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9739         LIBXML_CFLAGS="-I$usr/include/libxml2"
9740         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9741     else
9742         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9743         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9744         FilterLibs "${LIBXML_LIBS}"
9745         LIBXML_LIBS="${filteredlibs}"
9746     fi
9748     dnl Check for xmllint
9749     AC_PATH_PROG(XMLLINT, xmllint, no)
9750     if test "$XMLLINT" = "no"; then
9751         AC_MSG_ERROR([xmllint is required])
9752     fi
9753 else
9754     AC_MSG_RESULT([internal])
9755     SYSTEM_LIBXML=
9756     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9757     if test "$COM" = "MSC"; then
9758         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9759     fi
9760     if test "$COM" = "MSC"; then
9761         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9762     else
9763         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9764         if test "$DISABLE_DYNLOADING" = TRUE; then
9765             LIBXML_LIBS="$LIBXML_LIBS -lm"
9766         fi
9767     fi
9768     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9770 AC_SUBST(SYSTEM_LIBXML)
9771 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9772     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9774 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9775 AC_SUBST(LIBXML_CFLAGS)
9776 AC_SUBST(LIBXML_LIBS)
9777 AC_SUBST(XMLLINT)
9779 # =====================================================================
9780 # Checking for a Python interpreter with version >= 3.3.
9781 # Optionally user can pass an option to configure, i. e.
9782 # ./configure PYTHON=/usr/bin/python
9783 # =====================================================================
9784 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9785     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9786     # unless PYTHON is defined as above which allows 'system'
9787     enable_python=internal
9789 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9790     if test -n "$PYTHON"; then
9791         PYTHON_FOR_BUILD=$PYTHON
9792     else
9793         # This allows a lack of system python with no error, we use internal one in that case.
9794         AM_PATH_PYTHON([3.3],, [:])
9795         # Clean PYTHON_VERSION checked below if cross-compiling
9796         PYTHON_VERSION=""
9797         if test "$PYTHON" != ":"; then
9798             PYTHON_FOR_BUILD=$PYTHON
9799         fi
9800     fi
9803 # Checks for Python to use for Pyuno
9804 AC_MSG_CHECKING([which Python to use for Pyuno])
9805 case "$enable_python" in
9806 no|disable)
9807     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9808         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9809         # requirement from the choice whether to include Python stuff in the installer, but why
9810         # bother?
9811         AC_MSG_ERROR([Python is required at build time.])
9812     fi
9813     enable_python=no
9814     AC_MSG_RESULT([none])
9815     ;;
9816 ""|yes|auto)
9817     if test "$DISABLE_SCRIPTING" = TRUE; then
9818         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9819             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9820         fi
9821         AC_MSG_RESULT([none, overridden by --disable-scripting])
9822         enable_python=no
9823     elif test $build_os = cygwin; then
9824         dnl When building on Windows we don't attempt to use any installed
9825         dnl "system"  Python.
9826         AC_MSG_RESULT([fully internal])
9827         enable_python=internal
9828     elif test "$cross_compiling" = yes; then
9829         AC_MSG_RESULT([system])
9830         enable_python=system
9831     else
9832         # Unset variables set by the above AM_PATH_PYTHON so that
9833         # we actually do check anew.
9834         AC_MSG_RESULT([])
9835         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
9836         AM_PATH_PYTHON([3.3],, [:])
9837         AC_MSG_CHECKING([which Python to use for Pyuno])
9838         if test "$PYTHON" = ":"; then
9839             if test -z "$PYTHON_FOR_BUILD"; then
9840                 AC_MSG_RESULT([fully internal])
9841             else
9842                 AC_MSG_RESULT([internal])
9843             fi
9844             enable_python=internal
9845         else
9846             AC_MSG_RESULT([system])
9847             enable_python=system
9848         fi
9849     fi
9850     ;;
9851 internal)
9852     AC_MSG_RESULT([internal])
9853     ;;
9854 fully-internal)
9855     AC_MSG_RESULT([fully internal])
9856     enable_python=internal
9857     ;;
9858 system)
9859     AC_MSG_RESULT([system])
9860     if test "$_os" = Darwin -a -z "$PYTHON"; then
9861         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9862     fi
9863     ;;
9865     AC_MSG_ERROR([Incorrect --enable-python option])
9866     ;;
9867 esac
9869 if test $enable_python != no; then
9870     BUILD_TYPE="$BUILD_TYPE PYUNO"
9873 if test $enable_python = system; then
9874     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9875         # Fallback: Accept these in the environment, or as set above
9876         # for MacOSX.
9877         :
9878     elif test "$cross_compiling" != yes; then
9879         # Unset variables set by the above AM_PATH_PYTHON so that
9880         # we actually do check anew.
9881         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
9882         # This causes an error if no python command is found
9883         AM_PATH_PYTHON([3.3])
9884         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9885         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9886         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9887         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9888         if test -z "$PKG_CONFIG"; then
9889             PYTHON_CFLAGS="-I$python_include"
9890             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9891         elif $PKG_CONFIG --exists python-$python_version-embed; then
9892             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9893             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9894         elif $PKG_CONFIG --exists python-$python_version; then
9895             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9896             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9897         else
9898             PYTHON_CFLAGS="-I$python_include"
9899             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9900         fi
9901         FilterLibs "${PYTHON_LIBS}"
9902         PYTHON_LIBS="${filteredlibs}"
9903     else
9904         dnl How to find out the cross-compilation Python installation path?
9905         AC_MSG_CHECKING([for python version])
9906         AS_IF([test -n "$PYTHON_VERSION"],
9907               [AC_MSG_RESULT([$PYTHON_VERSION])],
9908               [AC_MSG_RESULT([not found])
9909                AC_MSG_ERROR([no usable python found])])
9910         test -n "$PYTHON_CFLAGS" && break
9911     fi
9913     dnl Check if the headers really work
9914     save_CPPFLAGS="$CPPFLAGS"
9915     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9916     AC_CHECK_HEADER(Python.h)
9917     CPPFLAGS="$save_CPPFLAGS"
9919     # let the PYTHON_FOR_BUILD match the same python installation that
9920     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9921     # better for PythonTests.
9922     PYTHON_FOR_BUILD=$PYTHON
9925 if test "$with_lxml" != no; then
9926     if test -z "$PYTHON_FOR_BUILD"; then
9927         case $build_os in
9928             cygwin)
9929                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9930                 ;;
9931             *)
9932                 if test "$cross_compiling" != yes ; then
9933                     BUILD_TYPE="$BUILD_TYPE LXML"
9934                 fi
9935                 ;;
9936         esac
9937     else
9938         AC_MSG_CHECKING([for python lxml])
9939         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9940             AC_MSG_RESULT([yes])
9941         else
9942             case $build_os in
9943                 cygwin)
9944                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9945                     ;;
9946                 *)
9947                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9948                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9949                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9950                         else
9951                             BUILD_TYPE="$BUILD_TYPE LXML"
9952                             AC_MSG_RESULT([no, using internal lxml])
9953                         fi
9954                     else
9955                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9956                     fi
9957                     ;;
9958             esac
9959         fi
9960     fi
9963 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9964     SYSTEM_PYTHON=
9965     PYTHON_VERSION_MAJOR=3
9966     PYTHON_VERSION_MINOR=8
9967     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.12
9968     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9969         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9970     fi
9971     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9973     # Embedded Python dies without Home set
9974     if test "$HOME" = ""; then
9975         export HOME=""
9976     fi
9979 dnl By now enable_python should be "system", "internal" or "no"
9980 case $enable_python in
9981 system)
9982     SYSTEM_PYTHON=TRUE
9984     if test "x$ac_cv_header_Python_h" != "xyes"; then
9985        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9986     fi
9988     AC_LANG_PUSH(C)
9989     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9990     AC_MSG_CHECKING([for correct python library version])
9991        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9992 #include <Python.h>
9994 int main(int argc, char **argv) {
9995    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9996    else return 1;
9998        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9999     AC_LANG_POP(C)
10001     dnl FIXME Check if the Python library can be linked with, too?
10002     ;;
10004 internal)
10005     BUILD_TYPE="$BUILD_TYPE PYTHON"
10006     if test "$OS" = LINUX -o "$OS" = WNT ; then
10007         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10008     fi
10009     ;;
10011     DISABLE_PYTHON=TRUE
10012     SYSTEM_PYTHON=
10013     ;;
10015     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10016     ;;
10017 esac
10019 AC_SUBST(DISABLE_PYTHON)
10020 AC_SUBST(SYSTEM_PYTHON)
10021 AC_SUBST(PYTHON_CFLAGS)
10022 AC_SUBST(PYTHON_FOR_BUILD)
10023 AC_SUBST(PYTHON_LIBS)
10024 AC_SUBST(PYTHON_VERSION)
10025 AC_SUBST(PYTHON_VERSION_MAJOR)
10026 AC_SUBST(PYTHON_VERSION_MINOR)
10028 AC_MSG_CHECKING([whether to build LibreLogo])
10029 case "$enable_python" in
10030 no|disable)
10031     AC_MSG_RESULT([no; Python disabled])
10032     ;;
10034     if test "${enable_librelogo}" = "no"; then
10035         AC_MSG_RESULT([no])
10036     else
10037         AC_MSG_RESULT([yes])
10038         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10039         AC_DEFINE([ENABLE_LIBRELOGO],1)
10040     fi
10041     ;;
10042 esac
10043 AC_SUBST(ENABLE_LIBRELOGO)
10045 ENABLE_MARIADBC=
10046 MARIADBC_MAJOR=1
10047 MARIADBC_MINOR=0
10048 MARIADBC_MICRO=2
10049 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10050 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10051     ENABLE_MARIADBC=TRUE
10052     AC_MSG_RESULT([yes])
10053     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10054 else
10055     AC_MSG_RESULT([no])
10057 AC_SUBST(ENABLE_MARIADBC)
10058 AC_SUBST(MARIADBC_MAJOR)
10059 AC_SUBST(MARIADBC_MINOR)
10060 AC_SUBST(MARIADBC_MICRO)
10062 if test "$ENABLE_MARIADBC" = "TRUE"; then
10063     dnl ===================================================================
10064     dnl Check for system MariaDB
10065     dnl ===================================================================
10066     AC_MSG_CHECKING([which MariaDB to use])
10067     if test "$with_system_mariadb" = "yes"; then
10068         AC_MSG_RESULT([external])
10069         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10070         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10071         if test -z "$MARIADBCONFIG"; then
10072             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10073             if test -z "$MARIADBCONFIG"; then
10074                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10075                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10076             fi
10077         fi
10078         AC_MSG_CHECKING([MariaDB version])
10079         MARIADB_VERSION=`$MARIADBCONFIG --version`
10080         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10081         if test "$MARIADB_MAJOR" -ge "5"; then
10082             AC_MSG_RESULT([OK])
10083         else
10084             AC_MSG_ERROR([too old, use 5.0.x or later])
10085         fi
10086         AC_MSG_CHECKING([for MariaDB Client library])
10087         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10088         if test "$COM_IS_CLANG" = TRUE; then
10089             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10090         fi
10091         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10092         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10093         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10094         dnl linux32:
10095         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10096             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10097             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10098                 | sed -e 's|/lib64/|/lib/|')
10099         fi
10100         FilterLibs "${MARIADB_LIBS}"
10101         MARIADB_LIBS="${filteredlibs}"
10102         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10103         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10104         if test "$enable_bundle_mariadb" = "yes"; then
10105             AC_MSG_RESULT([yes])
10106             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10107             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10109 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10111 /g' | grep -E '(mysqlclient|mariadb)')
10112             if test "$_os" = "Darwin"; then
10113                 LIBMARIADB=${LIBMARIADB}.dylib
10114             elif test "$_os" = "WINNT"; then
10115                 LIBMARIADB=${LIBMARIADB}.dll
10116             else
10117                 LIBMARIADB=${LIBMARIADB}.so
10118             fi
10119             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10120             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10121             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10122                 AC_MSG_RESULT([found.])
10123                 PathFormat "$LIBMARIADB_PATH"
10124                 LIBMARIADB_PATH="$formatted_path"
10125             else
10126                 AC_MSG_ERROR([not found.])
10127             fi
10128         else
10129             AC_MSG_RESULT([no])
10130             BUNDLE_MARIADB_CONNECTOR_C=
10131         fi
10132     else
10133         AC_MSG_RESULT([internal])
10134         SYSTEM_MARIADB_CONNECTOR_C=
10135         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10136         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10137         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10138     fi
10140     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10141     AC_SUBST(MARIADB_CFLAGS)
10142     AC_SUBST(MARIADB_LIBS)
10143     AC_SUBST(LIBMARIADB)
10144     AC_SUBST(LIBMARIADB_PATH)
10145     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10148 dnl ===================================================================
10149 dnl Check for system hsqldb
10150 dnl ===================================================================
10151 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10152     HSQLDB_USE_JDBC_4_1=
10153     AC_MSG_CHECKING([which hsqldb to use])
10154     if test "$with_system_hsqldb" = "yes"; then
10155         AC_MSG_RESULT([external])
10156         SYSTEM_HSQLDB=TRUE
10157         if test -z $HSQLDB_JAR; then
10158             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10159         fi
10160         if ! test -f $HSQLDB_JAR; then
10161                AC_MSG_ERROR(hsqldb.jar not found.)
10162         fi
10163         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10164         export HSQLDB_JAR
10165         if $PERL -e \
10166            'use Archive::Zip;
10167             my $file = "$ENV{'HSQLDB_JAR'}";
10168             my $zip = Archive::Zip->new( $file );
10169             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10170             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10171             {
10172                 push @l, split(/\n/, $mf);
10173                 foreach my $line (@l)
10174                 {
10175                     if ($line =~ m/Specification-Version:/)
10176                     {
10177                         ($t, $version) = split (/:/,$line);
10178                         $version =~ s/^\s//;
10179                         ($a, $b, $c, $d) = split (/\./,$version);
10180                         if ($c == "0" && $d > "8")
10181                         {
10182                             exit 0;
10183                         }
10184                         else
10185                         {
10186                             exit 1;
10187                         }
10188                     }
10189                 }
10190             }
10191             else
10192             {
10193                 exit 1;
10194             }'; then
10195             AC_MSG_RESULT([yes])
10196         else
10197             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10198         fi
10199     else
10200         AC_MSG_RESULT([internal])
10201         SYSTEM_HSQLDB=
10202         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10203         NEED_ANT=TRUE
10204         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
10205         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
10206         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
10207             AC_MSG_RESULT([yes])
10208             HSQLDB_USE_JDBC_4_1=TRUE
10209         else
10210             AC_MSG_RESULT([no])
10211         fi
10212     fi
10213 else
10214     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10215         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10216     fi
10218 AC_SUBST(SYSTEM_HSQLDB)
10219 AC_SUBST(HSQLDB_JAR)
10220 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10222 dnl ===================================================================
10223 dnl Check for PostgreSQL stuff
10224 dnl ===================================================================
10225 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10226 if test "x$enable_postgresql_sdbc" != "xno"; then
10227     AC_MSG_RESULT([yes])
10228     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10230     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10231         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10232     fi
10233     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10234         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10235     fi
10237     postgres_interface=""
10238     if test "$with_system_postgresql" = "yes"; then
10239         postgres_interface="external PostgreSQL"
10240         SYSTEM_POSTGRESQL=TRUE
10241         if test "$_os" = Darwin; then
10242             supp_path=''
10243             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10244                 pg_supp_path="$P_SEP$d$pg_supp_path"
10245             done
10246         fi
10247         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10248         if test -n "$PGCONFIG"; then
10249             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10250             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10251         else
10252             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10253               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10254               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10255             ],[
10256               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10257             ])
10258         fi
10259         FilterLibs "${POSTGRESQL_LIB}"
10260         POSTGRESQL_LIB="${filteredlibs}"
10261     else
10262         # if/when anything else than PostgreSQL uses Kerberos,
10263         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10264         WITH_KRB5=
10265         WITH_GSSAPI=
10266         case "$_os" in
10267         Darwin)
10268             # macOS has system MIT Kerberos 5 since 10.4
10269             if test "$with_krb5" != "no"; then
10270                 WITH_KRB5=TRUE
10271                 save_LIBS=$LIBS
10272                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10273                 # that the libraries where these functions are located on macOS will change, is it?
10274                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10275                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10276                 KRB5_LIBS=$LIBS
10277                 LIBS=$save_LIBS
10278                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10279                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10280                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10281                 LIBS=$save_LIBS
10282             fi
10283             if test "$with_gssapi" != "no"; then
10284                 WITH_GSSAPI=TRUE
10285                 save_LIBS=$LIBS
10286                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10287                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10288                 GSSAPI_LIBS=$LIBS
10289                 LIBS=$save_LIBS
10290             fi
10291             ;;
10292         WINNT)
10293             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10294                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10295             fi
10296             ;;
10297         Linux|GNU|*BSD|DragonFly)
10298             if test "$with_krb5" != "no"; then
10299                 WITH_KRB5=TRUE
10300                 save_LIBS=$LIBS
10301                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10302                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10303                 KRB5_LIBS=$LIBS
10304                 LIBS=$save_LIBS
10305                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10306                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10307                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10308                 LIBS=$save_LIBS
10309             fi
10310             if test "$with_gssapi" != "no"; then
10311                 WITH_GSSAPI=TRUE
10312                 save_LIBS=$LIBS
10313                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10314                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10315                 GSSAPI_LIBS=$LIBS
10316                 LIBS=$save_LIBS
10317             fi
10318             ;;
10319         *)
10320             if test "$with_krb5" = "yes"; then
10321                 WITH_KRB5=TRUE
10322                 save_LIBS=$LIBS
10323                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10324                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10325                 KRB5_LIBS=$LIBS
10326                 LIBS=$save_LIBS
10327                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10328                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10329                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10330                 LIBS=$save_LIBS
10331             fi
10332             if test "$with_gssapi" = "yes"; then
10333                 WITH_GSSAPI=TRUE
10334                 save_LIBS=$LIBS
10335                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10336                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10337                 LIBS=$save_LIBS
10338                 GSSAPI_LIBS=$LIBS
10339             fi
10340         esac
10342         if test -n "$with_libpq_path"; then
10343             SYSTEM_POSTGRESQL=TRUE
10344             postgres_interface="external libpq"
10345             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10346             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10347         else
10348             SYSTEM_POSTGRESQL=
10349             postgres_interface="internal"
10350             POSTGRESQL_LIB=""
10351             POSTGRESQL_INC="%OVERRIDE_ME%"
10352             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10353         fi
10354     fi
10356     AC_MSG_CHECKING([PostgreSQL C interface])
10357     AC_MSG_RESULT([$postgres_interface])
10359     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10360         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10361         save_CFLAGS=$CFLAGS
10362         save_CPPFLAGS=$CPPFLAGS
10363         save_LIBS=$LIBS
10364         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10365         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10366         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10367         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10368             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10369         CFLAGS=$save_CFLAGS
10370         CPPFLAGS=$save_CPPFLAGS
10371         LIBS=$save_LIBS
10372     fi
10373     BUILD_POSTGRESQL_SDBC=TRUE
10374 else
10375     AC_MSG_RESULT([no])
10377 AC_SUBST(WITH_KRB5)
10378 AC_SUBST(WITH_GSSAPI)
10379 AC_SUBST(GSSAPI_LIBS)
10380 AC_SUBST(KRB5_LIBS)
10381 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10382 AC_SUBST(SYSTEM_POSTGRESQL)
10383 AC_SUBST(POSTGRESQL_INC)
10384 AC_SUBST(POSTGRESQL_LIB)
10386 dnl ===================================================================
10387 dnl Check for Firebird stuff
10388 dnl ===================================================================
10389 ENABLE_FIREBIRD_SDBC=
10390 if test "$enable_firebird_sdbc" = "yes" ; then
10391     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10393     dnl ===================================================================
10394     dnl Check for system Firebird
10395     dnl ===================================================================
10396     AC_MSG_CHECKING([which Firebird to use])
10397     if test "$with_system_firebird" = "yes"; then
10398         AC_MSG_RESULT([external])
10399         SYSTEM_FIREBIRD=TRUE
10400         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10401         if test -z "$FIREBIRDCONFIG"; then
10402             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10403             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10404                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10405             ])
10406             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10407         else
10408             AC_MSG_NOTICE([fb_config found])
10409             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10410             AC_MSG_CHECKING([for Firebird Client library])
10411             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10412             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10413             FilterLibs "${FIREBIRD_LIBS}"
10414             FIREBIRD_LIBS="${filteredlibs}"
10415         fi
10416         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10417         AC_MSG_CHECKING([Firebird version])
10418         if test -n "${FIREBIRD_VERSION}"; then
10419             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10420             if test "$FIREBIRD_MAJOR" -ge "3"; then
10421                 AC_MSG_RESULT([OK])
10422             else
10423                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10424             fi
10425         else
10426             save_CFLAGS="${CFLAGS}"
10427             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10428             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10429 #if defined(FB_API_VER) && FB_API_VER == 30
10430 int fb_api_is_30(void) { return 0; }
10431 #else
10432 #error "Wrong Firebird API version"
10433 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10434             CFLAGS="$save_CFLAGS"
10435         fi
10436         ENABLE_FIREBIRD_SDBC=TRUE
10437         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10438     elif test "$enable_database_connectivity" = no; then
10439         AC_MSG_RESULT([none])
10440     elif test "$cross_compiling" = "yes"; then
10441         AC_MSG_RESULT([none])
10442     else
10443         dnl Embedded Firebird has version 3.0
10444         dnl We need libatomic_ops for any non X86/X64 system
10445         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10446             dnl ===================================================================
10447             dnl Check for system libatomic_ops
10448             dnl ===================================================================
10449             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10450             if test "$with_system_libatomic_ops" = "yes"; then
10451                 SYSTEM_LIBATOMIC_OPS=TRUE
10452                 AC_CHECK_HEADERS(atomic_ops.h, [],
10453                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10454             else
10455                 SYSTEM_LIBATOMIC_OPS=
10456                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10457                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10458                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10459             fi
10460         fi
10462         AC_MSG_RESULT([internal])
10463         SYSTEM_FIREBIRD=
10464         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10465         FIREBIRD_LIBS="-lfbclient"
10467         if test "$with_system_libtommath" = "yes"; then
10468             SYSTEM_LIBTOMMATH=TRUE
10469             dnl check for tommath presence
10470             save_LIBS=$LIBS
10471             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10472             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10473             LIBS=$save_LIBS
10474         else
10475             SYSTEM_LIBTOMMATH=
10476             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10477             LIBTOMMATH_LIBS="-ltommath"
10478             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10479         fi
10481         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10482         ENABLE_FIREBIRD_SDBC=TRUE
10483         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10484     fi
10486 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10487 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10488 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10489 AC_SUBST(LIBATOMIC_OPS_LIBS)
10490 AC_SUBST(SYSTEM_FIREBIRD)
10491 AC_SUBST(FIREBIRD_CFLAGS)
10492 AC_SUBST(FIREBIRD_LIBS)
10493 AC_SUBST(SYSTEM_LIBTOMMATH)
10494 AC_SUBST(LIBTOMMATH_CFLAGS)
10495 AC_SUBST(LIBTOMMATH_LIBS)
10497 dnl ===================================================================
10498 dnl Check for system curl
10499 dnl ===================================================================
10500 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10502 dnl ===================================================================
10503 dnl Check for system boost
10504 dnl ===================================================================
10505 AC_MSG_CHECKING([which boost to use])
10506 if test "$with_system_boost" = "yes"; then
10507     AC_MSG_RESULT([external])
10508     SYSTEM_BOOST=TRUE
10509     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10510     AX_BOOST_DATE_TIME
10511     AX_BOOST_FILESYSTEM
10512     AX_BOOST_IOSTREAMS
10513     AX_BOOST_LOCALE
10514     AC_LANG_PUSH([C++])
10515     save_CXXFLAGS=$CXXFLAGS
10516     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10517     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10518        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10519     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10520        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10521     CXXFLAGS=$save_CXXFLAGS
10522     AC_LANG_POP([C++])
10523     # this is in m4/ax_boost_base.m4
10524     FilterLibs "${BOOST_LDFLAGS}"
10525     BOOST_LDFLAGS="${filteredlibs}"
10526 else
10527     AC_MSG_RESULT([internal])
10528     BUILD_TYPE="$BUILD_TYPE BOOST"
10529     SYSTEM_BOOST=
10530     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10531         # use warning-suppressing wrapper headers
10532         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10533     else
10534         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10535     fi
10537 AC_SUBST(SYSTEM_BOOST)
10539 dnl ===================================================================
10540 dnl Check for system mdds
10541 dnl ===================================================================
10542 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10543 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10545 dnl ===================================================================
10546 dnl Check for system cuckoo
10547 dnl ===================================================================
10548 AC_MSG_CHECKING([which cuckoo to use])
10549 if test "$with_system_cuckoo" = "yes"; then
10550     AC_MSG_RESULT([external])
10551     SYSTEM_CUCKOO=TRUE
10552     AC_LANG_PUSH([C++])
10553     AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10554        [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10555     AC_LANG_POP([C++])
10556 else
10557     AC_MSG_RESULT([internal])
10558     BUILD_TYPE="$BUILD_TYPE CUCKOO"
10559     SYSTEM_CUCKOO=
10561 AC_SUBST([SYSTEM_CUCKOO])
10563 dnl ===================================================================
10564 dnl Check for system dragonbox
10565 dnl ===================================================================
10566 AC_MSG_CHECKING([which dragonbox to use])
10567 if test "$with_system_dragonbox" = "yes"; then
10568     AC_MSG_RESULT([external])
10569     SYSTEM_DRAGONBOX=TRUE
10570     AC_LANG_PUSH([C++])
10571     save_CPPFLAGS=$CPPFLAGS
10572     # This is where upstream installs to, unfortunately no .pc or so...
10573     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10574     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10575     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10576        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10577     AC_LANG_POP([C++])
10578     CPPFLAGS=$save_CPPFLAGS
10579 else
10580     AC_MSG_RESULT([internal])
10581     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10582     SYSTEM_DRAGONBOX=
10584 AC_SUBST([SYSTEM_DRAGONBOX])
10585 AC_SUBST([DRAGONBOX_CFLAGS])
10587 dnl ===================================================================
10588 dnl Check for system libfixmath
10589 dnl ===================================================================
10590 AC_MSG_CHECKING([which libfixmath to use])
10591 if test "$with_system_libfixmath" = "yes"; then
10592     AC_MSG_RESULT([external])
10593     SYSTEM_LIBFIXMATH=TRUE
10594     AC_LANG_PUSH([C++])
10595     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10596        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10597     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10598     AC_LANG_POP([C++])
10599 else
10600     AC_MSG_RESULT([internal])
10601     SYSTEM_LIBFIXMATH=
10603 AC_SUBST([SYSTEM_LIBFIXMATH])
10605 dnl ===================================================================
10606 dnl Check for system glm
10607 dnl ===================================================================
10608 AC_MSG_CHECKING([which glm to use])
10609 if test "$with_system_glm" = "yes"; then
10610     AC_MSG_RESULT([external])
10611     SYSTEM_GLM=TRUE
10612     AC_LANG_PUSH([C++])
10613     AC_CHECK_HEADER([glm/glm.hpp], [],
10614        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10615     AC_LANG_POP([C++])
10616 else
10617     AC_MSG_RESULT([internal])
10618     BUILD_TYPE="$BUILD_TYPE GLM"
10619     SYSTEM_GLM=
10620     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10622 AC_SUBST([GLM_CFLAGS])
10623 AC_SUBST([SYSTEM_GLM])
10625 dnl ===================================================================
10626 dnl Check for system odbc
10627 dnl ===================================================================
10628 AC_MSG_CHECKING([which odbc headers to use])
10629 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
10630     AC_MSG_RESULT([external])
10631     SYSTEM_ODBC_HEADERS=TRUE
10633     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10634         save_CPPFLAGS=$CPPFLAGS
10635         find_winsdk
10636         PathFormat "$winsdktest"
10637         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"
10638         AC_CHECK_HEADER(sqlext.h, [],
10639             [AC_MSG_ERROR(odbc not found. install odbc)],
10640             [#include <windows.h>])
10641         CPPFLAGS=$save_CPPFLAGS
10642     else
10643         AC_CHECK_HEADER(sqlext.h, [],
10644             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10645     fi
10646 elif test "$enable_database_connectivity" = no; then
10647     AC_MSG_RESULT([none])
10648 else
10649     AC_MSG_RESULT([internal])
10650     SYSTEM_ODBC_HEADERS=
10652 AC_SUBST(SYSTEM_ODBC_HEADERS)
10654 dnl ===================================================================
10655 dnl Check for system NSS
10656 dnl ===================================================================
10657 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10658     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10659     AC_DEFINE(HAVE_FEATURE_NSS)
10660     ENABLE_NSS=TRUE
10661 elif test $_os != iOS ; then
10662     with_tls=openssl
10664 AC_SUBST(ENABLE_NSS)
10666 dnl ===================================================================
10667 dnl Enable LDAP support
10668 dnl ===================================================================
10670 if test "$test_openldap" = yes; then
10671     AC_MSG_CHECKING([whether to enable LDAP support])
10672     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10673         AC_MSG_RESULT([yes])
10674         ENABLE_LDAP=TRUE
10675     else
10676         if test "$enable_ldap" != "yes"; then
10677             AC_MSG_RESULT([no])
10678         else
10679             AC_MSG_RESULT([no (needs NSS or system openldap)])
10680         fi
10681     fi
10683 dnl ===================================================================
10684 dnl Check for system openldap
10685 dnl ===================================================================
10687     if test "$ENABLE_LDAP" = TRUE; then
10688         AC_MSG_CHECKING([which openldap library to use])
10689         if test "$with_system_openldap" = yes; then
10690             AC_MSG_RESULT([external])
10691             SYSTEM_OPENLDAP=TRUE
10692             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10693             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10694             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10695         else
10696             AC_MSG_RESULT([internal])
10697             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10698         fi
10699     fi
10702 AC_SUBST(ENABLE_LDAP)
10703 AC_SUBST(SYSTEM_OPENLDAP)
10705 dnl ===================================================================
10706 dnl Check for TLS/SSL and cryptographic implementation to use
10707 dnl ===================================================================
10708 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10709 if test -n "$with_tls"; then
10710     case $with_tls in
10711     openssl)
10712         AC_DEFINE(USE_TLS_OPENSSL)
10713         TLS=OPENSSL
10714         AC_MSG_RESULT([$TLS])
10716         if test "$enable_openssl" != "yes"; then
10717             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10718         fi
10720         # warn that OpenSSL has been selected but not all TLS code has this option
10721         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10722         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10723         ;;
10724     nss)
10725         AC_DEFINE(USE_TLS_NSS)
10726         TLS=NSS
10727         AC_MSG_RESULT([$TLS])
10728         ;;
10729     no)
10730         AC_MSG_RESULT([none])
10731         AC_MSG_WARN([Skipping TLS/SSL])
10732         ;;
10733     *)
10734         AC_MSG_RESULT([])
10735         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10736 openssl - OpenSSL
10737 nss - Mozilla's Network Security Services (NSS)
10738     ])
10739         ;;
10740     esac
10741 else
10742     # default to using NSS, it results in smaller oox lib
10743     AC_DEFINE(USE_TLS_NSS)
10744     TLS=NSS
10745     AC_MSG_RESULT([$TLS])
10747 AC_SUBST(TLS)
10749 dnl ===================================================================
10750 dnl Check for system sane
10751 dnl ===================================================================
10752 AC_MSG_CHECKING([which sane header to use])
10753 if test "$with_system_sane" = "yes"; then
10754     AC_MSG_RESULT([external])
10755     AC_CHECK_HEADER(sane/sane.h, [],
10756       [AC_MSG_ERROR(sane not found. install sane)], [])
10757 else
10758     AC_MSG_RESULT([internal])
10759     BUILD_TYPE="$BUILD_TYPE SANE"
10762 dnl ===================================================================
10763 dnl Check for system icu
10764 dnl ===================================================================
10765 ICU_MAJOR=70
10766 ICU_MINOR=1
10767 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10768 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10769 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10770 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10771 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10772 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10773 if test "$SYSTEM_ICU" = TRUE; then
10774     AC_LANG_PUSH([C++])
10775     AC_MSG_CHECKING([for unicode/rbbi.h])
10776     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10777     AC_LANG_POP([C++])
10779     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10780     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10781     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10783     if test "$ICU_MAJOR" -ge 50; then
10784         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10785         ICU_MINOR=
10786     fi
10788     if test "$CROSS_COMPILING" != TRUE; then
10789         # using the system icu tools can lead to version confusion, use the
10790         # ones from the build environment when cross-compiling
10791         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10792         if test -z "$SYSTEM_GENBRK"; then
10793             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10794         fi
10795         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10796         if test -z "$SYSTEM_GENCCODE"; then
10797             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10798         fi
10799         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10800         if test -z "$SYSTEM_GENCMN"; then
10801             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10802         fi
10803         if test "$ICU_MAJOR" -lt 49; then
10804             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10805             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10806             ICU_RECLASSIFIED_HEBREW_LETTER=
10807         fi
10808     fi
10810 if test "$ICU_MAJOR" -ge "59"; then
10811     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10812     # with -std=c++11 but not all external libraries can be built with that,
10813     # for those use a bit-compatible typedef uint16_t UChar; see
10814     # icu/source/common/unicode/umachine.h
10815     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10816 else
10817     ICU_UCHAR_TYPE=""
10819 AC_SUBST(SYSTEM_GENBRK)
10820 AC_SUBST(SYSTEM_GENCCODE)
10821 AC_SUBST(SYSTEM_GENCMN)
10822 AC_SUBST(ICU_MAJOR)
10823 AC_SUBST(ICU_MINOR)
10824 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10825 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10826 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10827 AC_SUBST(ICU_UCHAR_TYPE)
10829 dnl ==================================================================
10830 dnl Breakpad
10831 dnl ==================================================================
10832 DEFAULT_CRASHDUMP_VALUE="true"
10833 AC_MSG_CHECKING([whether to enable breakpad])
10834 if test "$enable_breakpad" != yes; then
10835     AC_MSG_RESULT([no])
10836 else
10837     AC_MSG_RESULT([yes])
10838     ENABLE_BREAKPAD="TRUE"
10839     AC_DEFINE(ENABLE_BREAKPAD)
10840     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10841     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10843     AC_MSG_CHECKING([for disable crash dump])
10844     if test "$enable_crashdump" = no; then
10845         DEFAULT_CRASHDUMP_VALUE="false"
10846         AC_MSG_RESULT([yes])
10847     else
10848        AC_MSG_RESULT([no])
10849     fi
10851     AC_MSG_CHECKING([for crashreport config])
10852     if test "$with_symbol_config" = "no"; then
10853         BREAKPAD_SYMBOL_CONFIG="invalid"
10854         AC_MSG_RESULT([no])
10855     else
10856         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10857         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10858         AC_MSG_RESULT([yes])
10859     fi
10860     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10862 AC_SUBST(ENABLE_BREAKPAD)
10863 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10865 dnl ===================================================================
10866 dnl Orcus
10867 dnl ===================================================================
10868 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10869 if test "$with_system_orcus" != "yes"; then
10870     if test "$SYSTEM_BOOST" = "TRUE"; then
10871         dnl Link with Boost.System
10872         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10873         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10874         dnl in documentation has no effect.
10875         AX_BOOST_SYSTEM
10876     fi
10878 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10879 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10880 AC_SUBST([BOOST_SYSTEM_LIB])
10881 AC_SUBST(SYSTEM_LIBORCUS)
10883 dnl ===================================================================
10884 dnl HarfBuzz
10885 dnl ===================================================================
10887 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10888 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10889 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10891 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10892 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10893 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10895 if test "$COM" = "MSC"; then # override the above
10896     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10897     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10900 if test "$with_system_harfbuzz" = "yes"; then
10901     if test "$with_system_graphite" = "no"; then
10902         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10903     fi
10904     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10905     save_LIBS="$LIBS"
10906     save_CFLAGS="$CFLAGS"
10907     LIBS="$LIBS $HARFBUZZ_LIBS"
10908     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10909     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10910     LIBS="$save_LIBS"
10911     CFLAGS="$save_CFLAGS"
10912 else
10913     if test "$with_system_graphite" = "yes"; then
10914         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10915     fi
10918 if test "$USING_X11" = TRUE; then
10919     AC_PATH_X
10920     AC_PATH_XTRA
10921     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10923     if test -z "$x_includes"; then
10924         x_includes="default_x_includes"
10925     fi
10926     if test -z "$x_libraries"; then
10927         x_libraries="default_x_libraries"
10928     fi
10929     CFLAGS="$CFLAGS $X_CFLAGS"
10930     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10931     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10932 else
10933     x_includes="no_x_includes"
10934     x_libraries="no_x_libraries"
10937 if test "$USING_X11" = TRUE; then
10938     dnl ===================================================================
10939     dnl Check for extension headers
10940     dnl ===================================================================
10941     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10942      [#include <X11/extensions/shape.h>])
10944     # vcl needs ICE and SM
10945     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10946     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10947         [AC_MSG_ERROR(ICE library not found)])
10948     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10949     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10950         [AC_MSG_ERROR(SM library not found)])
10953 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10954     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10955     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10958 dnl ===================================================================
10959 dnl Check for system Xrender
10960 dnl ===================================================================
10961 AC_MSG_CHECKING([whether to use Xrender])
10962 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10963     AC_MSG_RESULT([yes])
10964     PKG_CHECK_MODULES(XRENDER, xrender)
10965     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10966     FilterLibs "${XRENDER_LIBS}"
10967     XRENDER_LIBS="${filteredlibs}"
10968     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10969       [AC_MSG_ERROR(libXrender not found or functional)], [])
10970     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10971       [AC_MSG_ERROR(Xrender not found. install X)], [])
10972 else
10973     AC_MSG_RESULT([no])
10975 AC_SUBST(XRENDER_CFLAGS)
10976 AC_SUBST(XRENDER_LIBS)
10978 dnl ===================================================================
10979 dnl Check for XRandr
10980 dnl ===================================================================
10981 AC_MSG_CHECKING([whether to enable RandR support])
10982 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10983     AC_MSG_RESULT([yes])
10984     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10985     if test "$ENABLE_RANDR" != "TRUE"; then
10986         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10987                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10988         XRANDR_CFLAGS=" "
10989         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10990           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10991         XRANDR_LIBS="-lXrandr "
10992         ENABLE_RANDR="TRUE"
10993     fi
10994     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10995     FilterLibs "${XRANDR_LIBS}"
10996     XRANDR_LIBS="${filteredlibs}"
10997 else
10998     ENABLE_RANDR=""
10999     AC_MSG_RESULT([no])
11001 AC_SUBST(XRANDR_CFLAGS)
11002 AC_SUBST(XRANDR_LIBS)
11003 AC_SUBST(ENABLE_RANDR)
11005 if test -z "$with_webdav"; then
11006     with_webdav=$test_webdav
11009 AC_MSG_CHECKING([for WebDAV support])
11010 case "$with_webdav" in
11012     AC_MSG_RESULT([no])
11013     WITH_WEBDAV=""
11014     ;;
11016     AC_MSG_RESULT([yes])
11017     # curl is already mandatory (almost) and checked elsewhere
11018     if test "$enable_curl" = "no"; then
11019         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11020     fi
11021     WITH_WEBDAV=TRUE
11022     ;;
11023 esac
11024 AC_SUBST(WITH_WEBDAV)
11026 dnl ===================================================================
11027 dnl Check for disabling cve_tests
11028 dnl ===================================================================
11029 AC_MSG_CHECKING([whether to execute CVE tests])
11030 # If not explicitly enabled or disabled, default
11031 if test -z "$enable_cve_tests"; then
11032     case "$OS" in
11033     WNT)
11034         # Default cves off for Windows with its wild and wonderful
11035         # variety of AV software kicking in and panicking
11036         enable_cve_tests=no
11037         ;;
11038     *)
11039         # otherwise yes
11040         enable_cve_tests=yes
11041         ;;
11042     esac
11044 if test "$enable_cve_tests" = "no"; then
11045     AC_MSG_RESULT([no])
11046     DISABLE_CVE_TESTS=TRUE
11047     AC_SUBST(DISABLE_CVE_TESTS)
11048 else
11049     AC_MSG_RESULT([yes])
11052 dnl ===================================================================
11053 dnl Check for enabling chart XShape tests
11054 dnl ===================================================================
11055 AC_MSG_CHECKING([whether to execute chart XShape tests])
11056 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
11057     AC_MSG_RESULT([yes])
11058     ENABLE_CHART_TESTS=TRUE
11059     AC_SUBST(ENABLE_CHART_TESTS)
11060 else
11061     AC_MSG_RESULT([no])
11064 dnl ===================================================================
11065 dnl Check for system openssl
11066 dnl ===================================================================
11067 ENABLE_OPENSSL=
11068 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11069 if test "$enable_openssl" = "yes"; then
11070     AC_MSG_RESULT([no])
11071     ENABLE_OPENSSL=TRUE
11072     if test "$_os" = Darwin ; then
11073         # OpenSSL is deprecated when building for 10.7 or later.
11074         #
11075         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11076         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11078         with_system_openssl=no
11079         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11080     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11081             && test "$with_system_openssl" != "no"; then
11082         with_system_openssl=yes
11083         SYSTEM_OPENSSL=TRUE
11084         OPENSSL_CFLAGS=
11085         OPENSSL_LIBS="-lssl -lcrypto"
11086     else
11087         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11088     fi
11089     if test "$with_system_openssl" = "yes"; then
11090         AC_MSG_CHECKING([whether openssl supports SHA512])
11091         AC_LANG_PUSH([C])
11092         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11093             SHA512_CTX context;
11094 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11095         AC_LANG_POP(C)
11096     fi
11097 else
11098     AC_MSG_RESULT([yes])
11100     # warn that although OpenSSL is disabled, system libraries may depend on it
11101     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11102     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11105 AC_SUBST([ENABLE_OPENSSL])
11107 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11108     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11109         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11110         enable_cipher_openssl_backend=no
11111     else
11112         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11113     fi
11115 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11116 ENABLE_CIPHER_OPENSSL_BACKEND=
11117 if test "$enable_cipher_openssl_backend" = yes; then
11118     AC_MSG_RESULT([yes])
11119     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11120 else
11121     AC_MSG_RESULT([no])
11123 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11125 dnl ===================================================================
11126 dnl Select the crypto backends used by LO
11127 dnl ===================================================================
11129 if test "$build_crypto" = yes; then
11130     if test "$OS" = WNT; then
11131         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11132         AC_DEFINE([USE_CRYPTO_MSCAPI])
11133     elif test "$ENABLE_NSS" = TRUE; then
11134         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11135         AC_DEFINE([USE_CRYPTO_NSS])
11136     fi
11139 dnl ===================================================================
11140 dnl Check for system redland
11141 dnl ===================================================================
11142 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11143 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11144 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11145 if test "$with_system_redland" = "yes"; then
11146     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11147             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11148 else
11149     RAPTOR_MAJOR="0"
11150     RASQAL_MAJOR="3"
11151     REDLAND_MAJOR="0"
11153 AC_SUBST(RAPTOR_MAJOR)
11154 AC_SUBST(RASQAL_MAJOR)
11155 AC_SUBST(REDLAND_MAJOR)
11157 dnl ===================================================================
11158 dnl Check for system hunspell
11159 dnl ===================================================================
11160 AC_MSG_CHECKING([which libhunspell to use])
11161 if test "$with_system_hunspell" = "yes"; then
11162     AC_MSG_RESULT([external])
11163     SYSTEM_HUNSPELL=TRUE
11164     AC_LANG_PUSH([C++])
11165     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11166     if test "$HUNSPELL_PC" != "TRUE"; then
11167         AC_CHECK_HEADER(hunspell.hxx, [],
11168             [
11169             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11170             [AC_MSG_ERROR(hunspell headers not found.)], [])
11171             ], [])
11172         AC_CHECK_LIB([hunspell], [main], [:],
11173            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11174         HUNSPELL_LIBS=-lhunspell
11175     fi
11176     AC_LANG_POP([C++])
11177     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11178     FilterLibs "${HUNSPELL_LIBS}"
11179     HUNSPELL_LIBS="${filteredlibs}"
11180 else
11181     AC_MSG_RESULT([internal])
11182     SYSTEM_HUNSPELL=
11183     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11184     if test "$COM" = "MSC"; then
11185         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11186     else
11187         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11188     fi
11189     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11191 AC_SUBST(SYSTEM_HUNSPELL)
11192 AC_SUBST(HUNSPELL_CFLAGS)
11193 AC_SUBST(HUNSPELL_LIBS)
11195 dnl ===================================================================
11196 dnl Check for system zxing
11197 dnl ===================================================================
11198 AC_MSG_CHECKING([whether to use zxing])
11199 if test "$enable_zxing" = "no"; then
11200     AC_MSG_RESULT([no])
11201     ENABLE_ZXING=
11202     SYSTEM_ZXING=
11203 else
11204     AC_MSG_RESULT([yes])
11205     ENABLE_ZXING=TRUE
11206     AC_MSG_CHECKING([which libzxing to use])
11207     if test "$with_system_zxing" = "yes"; then
11208         AC_MSG_RESULT([external])
11209         SYSTEM_ZXING=TRUE
11210         AC_LANG_PUSH([C++])
11211         AC_CHECK_HEADER(ZXing/MultiFormatWriter.h, [],
11212             [AC_MSG_ERROR(zxing headers not found.)], [#include <stdexcept>])
11213         ZXING_CFLAGS=-I/usr/include/ZXing
11214         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11215             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11216             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11217         AC_LANG_POP([C++])
11218         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11219         FilterLibs "${ZXING_LIBS}"
11220         ZXING_LIBS="${filteredlibs}"
11221     else
11222         AC_MSG_RESULT([internal])
11223         SYSTEM_ZXING=
11224         BUILD_TYPE="$BUILD_TYPE ZXING"
11225     fi
11226     if test "$ENABLE_ZXING" = TRUE; then
11227         AC_DEFINE(ENABLE_ZXING)
11228     fi
11230 AC_SUBST(SYSTEM_ZXING)
11231 AC_SUBST(ENABLE_ZXING)
11232 AC_SUBST(ZXING_CFLAGS)
11233 AC_SUBST(ZXING_LIBS)
11235 dnl ===================================================================
11236 dnl Check for system box2d
11237 dnl ===================================================================
11238 AC_MSG_CHECKING([which box2d to use])
11239 if test "$with_system_box2d" = "yes"; then
11240     AC_MSG_RESULT([external])
11241     SYSTEM_BOX2D=TRUE
11242     AC_LANG_PUSH([C++])
11243     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11244         [BOX2D_H_FOUND='FALSE'])
11245     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11246         _BOX2D_LIB=box2d
11247         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11248     else
11249         # fail this. there's no other alternative to check when we are here.
11250         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11251             [AC_MSG_ERROR(box2d headers not found.)])
11252         _BOX2D_LIB=Box2D
11253         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11254     fi
11255     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11256         [ AC_MSG_ERROR(box2d library not found.) ], [])
11257     BOX2D_LIBS=-l$_BOX2D_LIB
11258     AC_LANG_POP([C++])
11259     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11260     FilterLibs "${BOX2D_LIBS}"
11261     BOX2D_LIBS="${filteredlibs}"
11262 else
11263     AC_MSG_RESULT([internal])
11264     SYSTEM_BOX2D=
11265     BUILD_TYPE="$BUILD_TYPE BOX2D"
11267 AC_SUBST(SYSTEM_BOX2D)
11268 AC_SUBST(BOX2D_CFLAGS)
11269 AC_SUBST(BOX2D_LIBS)
11271 dnl ===================================================================
11272 dnl Checking for altlinuxhyph
11273 dnl ===================================================================
11274 AC_MSG_CHECKING([which altlinuxhyph to use])
11275 if test "$with_system_altlinuxhyph" = "yes"; then
11276     AC_MSG_RESULT([external])
11277     SYSTEM_HYPH=TRUE
11278     AC_CHECK_HEADER(hyphen.h, [],
11279        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11280     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11281        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11282        [#include <hyphen.h>])
11283     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11284         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11285     if test -z "$HYPHEN_LIB"; then
11286         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11287            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11288     fi
11289     if test -z "$HYPHEN_LIB"; then
11290         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11291            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11292     fi
11293 else
11294     AC_MSG_RESULT([internal])
11295     SYSTEM_HYPH=
11296     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11297     if test "$COM" = "MSC"; then
11298         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11299     else
11300         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11301     fi
11303 AC_SUBST(SYSTEM_HYPH)
11304 AC_SUBST(HYPHEN_LIB)
11306 dnl ===================================================================
11307 dnl Checking for mythes
11308 dnl ===================================================================
11309 AC_MSG_CHECKING([which mythes to use])
11310 if test "$with_system_mythes" = "yes"; then
11311     AC_MSG_RESULT([external])
11312     SYSTEM_MYTHES=TRUE
11313     AC_LANG_PUSH([C++])
11314     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11315     if test "$MYTHES_PKGCONFIG" = "no"; then
11316         AC_CHECK_HEADER(mythes.hxx, [],
11317             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11318         AC_CHECK_LIB([mythes-1.2], [main], [:],
11319             [ MYTHES_FOUND=no], [])
11320     if test "$MYTHES_FOUND" = "no"; then
11321         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11322                 [ MYTHES_FOUND=no], [])
11323     fi
11324     if test "$MYTHES_FOUND" = "no"; then
11325         AC_MSG_ERROR([mythes library not found!.])
11326     fi
11327     fi
11328     AC_LANG_POP([C++])
11329     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11330     FilterLibs "${MYTHES_LIBS}"
11331     MYTHES_LIBS="${filteredlibs}"
11332 else
11333     AC_MSG_RESULT([internal])
11334     SYSTEM_MYTHES=
11335     BUILD_TYPE="$BUILD_TYPE MYTHES"
11336     if test "$COM" = "MSC"; then
11337         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11338     else
11339         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11340     fi
11342 AC_SUBST(SYSTEM_MYTHES)
11343 AC_SUBST(MYTHES_CFLAGS)
11344 AC_SUBST(MYTHES_LIBS)
11346 dnl ===================================================================
11347 dnl How should we build the linear programming solver ?
11348 dnl ===================================================================
11350 ENABLE_COINMP=
11351 AC_MSG_CHECKING([whether to build with CoinMP])
11352 if test "$enable_coinmp" != "no"; then
11353     ENABLE_COINMP=TRUE
11354     AC_MSG_RESULT([yes])
11355     if test "$with_system_coinmp" = "yes"; then
11356         SYSTEM_COINMP=TRUE
11357         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11358         FilterLibs "${COINMP_LIBS}"
11359         COINMP_LIBS="${filteredlibs}"
11360     else
11361         BUILD_TYPE="$BUILD_TYPE COINMP"
11362     fi
11363 else
11364     AC_MSG_RESULT([no])
11366 AC_SUBST(ENABLE_COINMP)
11367 AC_SUBST(SYSTEM_COINMP)
11368 AC_SUBST(COINMP_CFLAGS)
11369 AC_SUBST(COINMP_LIBS)
11371 ENABLE_LPSOLVE=
11372 AC_MSG_CHECKING([whether to build with lpsolve])
11373 if test "$enable_lpsolve" != "no"; then
11374     ENABLE_LPSOLVE=TRUE
11375     AC_MSG_RESULT([yes])
11376 else
11377     AC_MSG_RESULT([no])
11379 AC_SUBST(ENABLE_LPSOLVE)
11381 if test "$ENABLE_LPSOLVE" = TRUE; then
11382     AC_MSG_CHECKING([which lpsolve to use])
11383     if test "$with_system_lpsolve" = "yes"; then
11384         AC_MSG_RESULT([external])
11385         SYSTEM_LPSOLVE=TRUE
11386         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11387            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11388         save_LIBS=$LIBS
11389         # some systems need this. Like Ubuntu...
11390         AC_CHECK_LIB(m, floor)
11391         AC_CHECK_LIB(dl, dlopen)
11392         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11393             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11394         LIBS=$save_LIBS
11395     else
11396         AC_MSG_RESULT([internal])
11397         SYSTEM_LPSOLVE=
11398         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11399     fi
11401 AC_SUBST(SYSTEM_LPSOLVE)
11403 dnl ===================================================================
11404 dnl Checking for libexttextcat
11405 dnl ===================================================================
11406 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11407 if test "$with_system_libexttextcat" = "yes"; then
11408     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11410 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11412 dnl ===================================================================
11413 dnl Checking for libnumbertext
11414 dnl ===================================================================
11415 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11416 if test "$with_system_libnumbertext" = "yes"; then
11417     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11418     SYSTEM_LIBNUMBERTEXT=YES
11419 else
11420     SYSTEM_LIBNUMBERTEXT=
11421     AC_LANG_PUSH([C++])
11422     save_CPPFLAGS=$CPPFLAGS
11423     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11424     AC_CHECK_HEADERS([codecvt regex])
11425     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11426             [ LIBNUMBERTEXT_CFLAGS=''
11427               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11428                            Enable libnumbertext fallback (missing number to number name conversion).])
11429             ])
11430     CPPFLAGS=$save_CPPFLAGS
11431     AC_LANG_POP([C++])
11433 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11434 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11435 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11437 dnl ***************************************
11438 dnl testing libc version for Linux...
11439 dnl ***************************************
11440 if test "$_os" = "Linux"; then
11441     AC_MSG_CHECKING([whether the libc is recent enough])
11442     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11443     #include <features.h>
11444     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11445     #error glibc >= 2.1 is required
11446     #endif
11447     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11450 dnl =========================================
11451 dnl Check for uuidgen
11452 dnl =========================================
11453 if test "$_os" = "WINNT"; then
11454     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11455     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11456     UUIDGEN=uuidgen.exe
11457     AC_SUBST(UUIDGEN)
11458 else
11459     AC_PATH_PROG([UUIDGEN], [uuidgen])
11460     if test -z "$UUIDGEN"; then
11461         AC_MSG_WARN([uuid is needed for building installation sets])
11462     fi
11465 dnl ***************************************
11466 dnl Checking for bison and flex
11467 dnl ***************************************
11468 AC_PATH_PROG(BISON, bison)
11469 if test -z "$BISON"; then
11470     AC_MSG_ERROR([no bison found in \$PATH, install it])
11471 else
11472     AC_MSG_CHECKING([the bison version])
11473     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11474     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11475     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11476     dnl cause
11477     dnl
11478     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]
11479     dnl   typedef union YYSTYPE
11480     dnl           ~~~~~~^~~~~~~
11481     dnl
11482     dnl while at least 3.4.1 is know to be good:
11483     if test "$COMPILER_PLUGINS" = TRUE; then
11484         if test "$_bison_longver" -lt 2004; then
11485             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11486         fi
11487     else
11488         if test "$_bison_longver" -lt 2000; then
11489             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11490         fi
11491     fi
11493 AC_SUBST([BISON])
11495 AC_PATH_PROG(FLEX, flex)
11496 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11497     FLEX=`cygpath -m $FLEX`
11499 if test -z "$FLEX"; then
11500     AC_MSG_ERROR([no flex found in \$PATH, install it])
11501 else
11502     AC_MSG_CHECKING([the flex version])
11503     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11504     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11505         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11506     fi
11508 AC_SUBST([FLEX])
11510 AC_PATH_PROG(DIFF, diff)
11511 if test -z "$DIFF"; then
11512     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11514 AC_SUBST([DIFF])
11516 AC_PATH_PROG(UNIQ, uniq)
11517 if test -z "$UNIQ"; then
11518     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11520 AC_SUBST([UNIQ])
11522 dnl ***************************************
11523 dnl Checking for patch
11524 dnl ***************************************
11525 AC_PATH_PROG(PATCH, patch)
11526 if test -z "$PATCH"; then
11527     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11530 dnl On Solaris or macOS, check if --with-gnu-patch was used
11531 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11532     if test -z "$with_gnu_patch"; then
11533         GNUPATCH=$PATCH
11534     else
11535         if test -x "$with_gnu_patch"; then
11536             GNUPATCH=$with_gnu_patch
11537         else
11538             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11539         fi
11540     fi
11542     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11543     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11544         AC_MSG_RESULT([yes])
11545     else
11546         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11547     fi
11548 else
11549     GNUPATCH=$PATCH
11552 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11553     GNUPATCH=`cygpath -m $GNUPATCH`
11556 dnl We also need to check for --with-gnu-cp
11558 if test -z "$with_gnu_cp"; then
11559     # check the place where the good stuff is hidden on Solaris...
11560     if test -x /usr/gnu/bin/cp; then
11561         GNUCP=/usr/gnu/bin/cp
11562     else
11563         AC_PATH_PROGS(GNUCP, gnucp cp)
11564     fi
11565     if test -z $GNUCP; then
11566         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11567     fi
11568 else
11569     if test -x "$with_gnu_cp"; then
11570         GNUCP=$with_gnu_cp
11571     else
11572         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11573     fi
11576 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11577     GNUCP=`cygpath -m $GNUCP`
11580 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11581 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11582     AC_MSG_RESULT([yes])
11583 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11584     AC_MSG_RESULT([yes])
11585 else
11586     case "$build_os" in
11587     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11588         x_GNUCP=[\#]
11589         GNUCP=''
11590         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11591         ;;
11592     *)
11593         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11594         ;;
11595     esac
11598 AC_SUBST(GNUPATCH)
11599 AC_SUBST(GNUCP)
11600 AC_SUBST(x_GNUCP)
11602 dnl ***************************************
11603 dnl testing assembler path
11604 dnl ***************************************
11605 ML_EXE=""
11606 if test "$_os" = "WINNT"; then
11607     case "$WIN_HOST_ARCH" in
11608     x86) assembler=ml.exe ;;
11609     x64) assembler=ml64.exe ;;
11610     arm64) assembler=armasm64.exe ;;
11611     esac
11613     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11614     if test -f "$MSVC_HOST_PATH/$assembler"; then
11615         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11616         AC_MSG_RESULT([$ML_EXE])
11617     else
11618         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11619     fi
11622 AC_SUBST(ML_EXE)
11624 dnl ===================================================================
11625 dnl We need zip and unzip
11626 dnl ===================================================================
11627 AC_PATH_PROG(ZIP, zip)
11628 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11629 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11630     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],,)
11633 AC_PATH_PROG(UNZIP, unzip)
11634 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11636 dnl ===================================================================
11637 dnl Zip must be a specific type for different build types.
11638 dnl ===================================================================
11639 if test $build_os = cygwin; then
11640     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11641         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11642     fi
11645 dnl ===================================================================
11646 dnl We need touch with -h option support.
11647 dnl ===================================================================
11648 AC_PATH_PROG(TOUCH, touch)
11649 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11650 touch "$WARNINGS_FILE"
11651 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11652     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],,)
11655 dnl ===================================================================
11656 dnl Check for system epoxy
11657 dnl ===================================================================
11658 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11659 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11661 dnl ===================================================================
11662 dnl Set vcl option: coordinate device in double or sal_Int32
11663 dnl ===================================================================
11665 dnl disabled for now, we don't want subtle differences between OSs
11666 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11667 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11668 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11669 dnl     AC_MSG_RESULT([double])
11670 dnl else
11671 dnl     AC_MSG_RESULT([sal_Int32])
11672 dnl fi
11674 dnl ===================================================================
11675 dnl Show which vclplugs will be built.
11676 dnl ===================================================================
11677 R=""
11679 libo_ENABLE_VCLPLUG([gen])
11680 libo_ENABLE_VCLPLUG([gtk3])
11681 libo_ENABLE_VCLPLUG([gtk3_kde5])
11682 libo_ENABLE_VCLPLUG([gtk4])
11683 libo_ENABLE_VCLPLUG([kf5])
11684 libo_ENABLE_VCLPLUG([qt5])
11685 libo_ENABLE_VCLPLUG([qt6])
11687 if test "$_os" = "WINNT"; then
11688     R="$R win"
11689 elif test "$_os" = "Darwin"; then
11690     R="$R osx"
11691 elif test "$_os" = "iOS"; then
11692     R="ios"
11693 elif test "$_os" = Android; then
11694     R="android"
11697 build_vcl_plugins="$R"
11698 if test -z "$build_vcl_plugins"; then
11699     build_vcl_plugins=" none"
11701 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11702 VCL_PLUGIN_INFO=$R
11703 AC_SUBST([VCL_PLUGIN_INFO])
11705 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11706     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11709 dnl ===================================================================
11710 dnl Check for GTK libraries
11711 dnl ===================================================================
11713 GTK3_CFLAGS=""
11714 GTK3_LIBS=""
11715 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11716     if test "$with_system_cairo" = no; then
11717         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11718     fi
11719     : ${with_system_cairo:=yes}
11720     PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 atk >= 2.28.1 cairo)
11721     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11722     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11723     FilterLibs "${GTK3_LIBS}"
11724     GTK3_LIBS="${filteredlibs}"
11726     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11727     if test "$with_system_epoxy" != "yes"; then
11728         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11729         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11730                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11731     fi
11733 AC_SUBST(GTK3_LIBS)
11734 AC_SUBST(GTK3_CFLAGS)
11736 GTK4_CFLAGS=""
11737 GTK4_LIBS=""
11738 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11739     if test "$with_system_cairo" = no; then
11740         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11741     fi
11742     : ${with_system_cairo:=yes}
11743     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11744     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11745     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11746     FilterLibs "${GTK4_LIBS}"
11747     GTK4_LIBS="${filteredlibs}"
11749     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11750     if test "$with_system_epoxy" != "yes"; then
11751         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11752         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11753                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11754     fi
11756 AC_SUBST(GTK4_LIBS)
11757 AC_SUBST(GTK4_CFLAGS)
11759 if test "$enable_introspection" = yes; then
11760     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11761         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11762     else
11763         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11764     fi
11767 dnl ===================================================================
11768 dnl check for dbus support
11769 dnl ===================================================================
11770 ENABLE_DBUS=""
11771 DBUS_CFLAGS=""
11772 DBUS_LIBS=""
11773 DBUS_GLIB_CFLAGS=""
11774 DBUS_GLIB_LIBS=""
11775 DBUS_HAVE_GLIB=""
11777 if test "$enable_dbus" = "no"; then
11778     test_dbus=no
11781 AC_MSG_CHECKING([whether to enable DBUS support])
11782 if test "$test_dbus" = "yes"; then
11783     ENABLE_DBUS="TRUE"
11784     AC_MSG_RESULT([yes])
11785     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11786     AC_DEFINE(ENABLE_DBUS)
11787     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11788     FilterLibs "${DBUS_LIBS}"
11789     DBUS_LIBS="${filteredlibs}"
11791     # Glib is needed for BluetoothServer
11792     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11793     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11794         [
11795             DBUS_HAVE_GLIB="TRUE"
11796             AC_DEFINE(DBUS_HAVE_GLIB,1)
11797         ],
11798         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11799     )
11800 else
11801     AC_MSG_RESULT([no])
11804 AC_SUBST(ENABLE_DBUS)
11805 AC_SUBST(DBUS_CFLAGS)
11806 AC_SUBST(DBUS_LIBS)
11807 AC_SUBST(DBUS_GLIB_CFLAGS)
11808 AC_SUBST(DBUS_GLIB_LIBS)
11809 AC_SUBST(DBUS_HAVE_GLIB)
11811 AC_MSG_CHECKING([whether to enable Impress remote control])
11812 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11813     AC_MSG_RESULT([yes])
11814     ENABLE_SDREMOTE=TRUE
11815     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11817     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11818         # The Bluetooth code doesn't compile with macOS SDK 10.15
11819         if test "$enable_sdremote_bluetooth" = yes; then
11820             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11821         fi
11822         enable_sdremote_bluetooth=no
11823     fi
11824     # If not explicitly enabled or disabled, default
11825     if test -z "$enable_sdremote_bluetooth"; then
11826         case "$OS" in
11827         LINUX|MACOSX|WNT)
11828             # Default to yes for these
11829             enable_sdremote_bluetooth=yes
11830             ;;
11831         *)
11832             # otherwise no
11833             enable_sdremote_bluetooth=no
11834             ;;
11835         esac
11836     fi
11837     # $enable_sdremote_bluetooth is guaranteed non-empty now
11839     if test "$enable_sdremote_bluetooth" != "no"; then
11840         if test "$OS" = "LINUX"; then
11841             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11842                 AC_MSG_RESULT([yes])
11843                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11844                 dnl ===================================================================
11845                 dnl Check for system bluez
11846                 dnl ===================================================================
11847                 AC_MSG_CHECKING([which Bluetooth header to use])
11848                 if test "$with_system_bluez" = "yes"; then
11849                     AC_MSG_RESULT([external])
11850                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11851                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11852                     SYSTEM_BLUEZ=TRUE
11853                 else
11854                     AC_MSG_RESULT([internal])
11855                     SYSTEM_BLUEZ=
11856                 fi
11857             else
11858                 AC_MSG_RESULT([no, dbus disabled])
11859                 ENABLE_SDREMOTE_BLUETOOTH=
11860                 SYSTEM_BLUEZ=
11861             fi
11862         else
11863             AC_MSG_RESULT([yes])
11864             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11865             SYSTEM_BLUEZ=
11866         fi
11867     else
11868         AC_MSG_RESULT([no])
11869         ENABLE_SDREMOTE_BLUETOOTH=
11870         SYSTEM_BLUEZ=
11871     fi
11872 else
11873     ENABLE_SDREMOTE=
11874     SYSTEM_BLUEZ=
11875     AC_MSG_RESULT([no])
11877 AC_SUBST(ENABLE_SDREMOTE)
11878 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11879 AC_SUBST(SYSTEM_BLUEZ)
11881 dnl ===================================================================
11882 dnl Check whether to enable GIO support
11883 dnl ===================================================================
11884 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11885     AC_MSG_CHECKING([whether to enable GIO support])
11886     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11887         dnl Need at least 2.26 for the dbus support.
11888         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11889                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11890         if test "$ENABLE_GIO" = "TRUE"; then
11891             AC_DEFINE(ENABLE_GIO)
11892             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11893             FilterLibs "${GIO_LIBS}"
11894             GIO_LIBS="${filteredlibs}"
11895         fi
11896     else
11897         AC_MSG_RESULT([no])
11898     fi
11900 AC_SUBST(ENABLE_GIO)
11901 AC_SUBST(GIO_CFLAGS)
11902 AC_SUBST(GIO_LIBS)
11905 dnl ===================================================================
11907 SPLIT_APP_MODULES=""
11908 if test "$enable_split_app_modules" = "yes"; then
11909     SPLIT_APP_MODULES="TRUE"
11911 AC_SUBST(SPLIT_APP_MODULES)
11913 SPLIT_OPT_FEATURES=""
11914 if test "$enable_split_opt_features" = "yes"; then
11915     SPLIT_OPT_FEATURES="TRUE"
11917 AC_SUBST(SPLIT_OPT_FEATURES)
11919 dnl ===================================================================
11920 dnl Check whether the GStreamer libraries are available.
11921 dnl ===================================================================
11923 ENABLE_GSTREAMER_1_0=""
11925 if test "$test_gstreamer_1_0" = yes; then
11927     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11928     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11929         ENABLE_GSTREAMER_1_0="TRUE"
11930         AC_MSG_RESULT([yes])
11931         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11932         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11933         FilterLibs "${GSTREAMER_1_0_LIBS}"
11934         GSTREAMER_1_0_LIBS="${filteredlibs}"
11935         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11936     else
11937         AC_MSG_RESULT([no])
11938     fi
11940 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11941 AC_SUBST(GSTREAMER_1_0_LIBS)
11942 AC_SUBST(ENABLE_GSTREAMER_1_0)
11944 ENABLE_OPENGL_TRANSITIONS=
11945 ENABLE_OPENGL_CANVAS=
11946 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11947    : # disable
11948 elif test "$_os" = "Darwin"; then
11949     # We use frameworks on macOS, no need for detail checks
11950     ENABLE_OPENGL_TRANSITIONS=TRUE
11951     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11952     ENABLE_OPENGL_CANVAS=TRUE
11953 elif test $_os = WINNT; then
11954     ENABLE_OPENGL_TRANSITIONS=TRUE
11955     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11956     ENABLE_OPENGL_CANVAS=TRUE
11957 else
11958     if test "$USING_X11" = TRUE; then
11959         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11960         ENABLE_OPENGL_TRANSITIONS=TRUE
11961         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11962         ENABLE_OPENGL_CANVAS=TRUE
11963     fi
11966 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11967 AC_SUBST(ENABLE_OPENGL_CANVAS)
11969 dnl =================================================
11970 dnl Check whether to build with OpenCL support.
11971 dnl =================================================
11973 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11974     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11975     # platform (optional at run-time, used through clew).
11976     BUILD_TYPE="$BUILD_TYPE OPENCL"
11977     AC_DEFINE(HAVE_FEATURE_OPENCL)
11980 dnl =================================================
11981 dnl Check whether to build with dconf support.
11982 dnl =================================================
11984 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11985     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11986         if test "$enable_dconf" = yes; then
11987             AC_MSG_ERROR([dconf not found])
11988         else
11989             enable_dconf=no
11990         fi])
11992 AC_MSG_CHECKING([whether to enable dconf])
11993 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11994     DCONF_CFLAGS=
11995     DCONF_LIBS=
11996     ENABLE_DCONF=
11997     AC_MSG_RESULT([no])
11998 else
11999     ENABLE_DCONF=TRUE
12000     AC_DEFINE(ENABLE_DCONF)
12001     AC_MSG_RESULT([yes])
12003 AC_SUBST([DCONF_CFLAGS])
12004 AC_SUBST([DCONF_LIBS])
12005 AC_SUBST([ENABLE_DCONF])
12007 # pdf import?
12008 AC_MSG_CHECKING([whether to build the PDF import feature])
12009 ENABLE_PDFIMPORT=
12010 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12011     AC_MSG_RESULT([yes])
12012     ENABLE_PDFIMPORT=TRUE
12013     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12014 else
12015     AC_MSG_RESULT([no])
12018 # Pdfium?
12019 AC_MSG_CHECKING([whether to build PDFium])
12020 ENABLE_PDFIUM=
12021 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12022     AC_MSG_RESULT([yes])
12023     ENABLE_PDFIUM=TRUE
12024     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12025 else
12026     AC_MSG_RESULT([no])
12028 AC_SUBST(ENABLE_PDFIUM)
12030 if test "$ENABLE_PDFIUM" = "TRUE"; then
12031     AC_MSG_CHECKING([which OpenJPEG library to use])
12032     if test "$with_system_openjpeg" = "yes"; then
12033         SYSTEM_OPENJPEG2=TRUE
12034         AC_MSG_RESULT([external])
12035         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12036         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12037         FilterLibs "${OPENJPEG2_LIBS}"
12038         OPENJPEG2_LIBS="${filteredlibs}"
12039     else
12040         SYSTEM_OPENJPEG2=FALSE
12041         AC_MSG_RESULT([internal])
12042     fi
12044     AC_MSG_CHECKING([which Abseil library to use])
12045     if test "$with_system_abseil" = "yes"; then
12046         AC_MSG_RESULT([external])
12047         SYSTEM_ABSEIL=TRUE
12048         AC_LANG_PUSH([C++])
12049         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12050                         [AC_MSG_ERROR(abseil headers not found.)], [])
12051         AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
12052                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12053         AC_LANG_POP([C++])
12054         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12055         FilterLibs "${ABSEIL_LIBS}"
12056         ABSEIL_LIBS="${filteredlibs}"
12057     else
12058         AC_MSG_RESULT([internal])
12059     fi
12061 AC_SUBST(SYSTEM_OPENJPEG2)
12062 AC_SUBST(SYSTEM_ABSEIL)
12063 AC_SUBST(ABSEIL_CFLAGS)
12064 AC_SUBST(ABSEIL_LIBS)
12066 dnl ===================================================================
12067 dnl Check for poppler
12068 dnl ===================================================================
12069 ENABLE_POPPLER=
12070 AC_MSG_CHECKING([whether to build Poppler])
12071 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12072     AC_MSG_RESULT([yes])
12073     ENABLE_POPPLER=TRUE
12074     AC_DEFINE(HAVE_FEATURE_POPPLER)
12075 else
12076     AC_MSG_RESULT([no])
12078 AC_SUBST(ENABLE_POPPLER)
12080 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12081     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12084 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12085     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12088 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12089     dnl ===================================================================
12090     dnl Check for system poppler
12091     dnl ===================================================================
12092     AC_MSG_CHECKING([which PDF import poppler to use])
12093     if test "$with_system_poppler" = "yes"; then
12094         AC_MSG_RESULT([external])
12095         SYSTEM_POPPLER=TRUE
12096         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12097         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12098         FilterLibs "${POPPLER_LIBS}"
12099         POPPLER_LIBS="${filteredlibs}"
12100     else
12101         AC_MSG_RESULT([internal])
12102         SYSTEM_POPPLER=
12103         BUILD_TYPE="$BUILD_TYPE POPPLER"
12104     fi
12105     AC_DEFINE([ENABLE_PDFIMPORT],1)
12107 AC_SUBST(ENABLE_PDFIMPORT)
12108 AC_SUBST(SYSTEM_POPPLER)
12109 AC_SUBST(POPPLER_CFLAGS)
12110 AC_SUBST(POPPLER_LIBS)
12112 # Skia?
12113 ENABLE_SKIA=
12114 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12115     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12116     if test "$SYSTEM_FREETYPE" = TRUE; then
12117         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12118             [skia_freetype_ok=yes],
12119             [skia_freetype_ok=no])
12120     else # internal is ok
12121         skia_freetype_ok=yes
12122     fi
12123     AC_MSG_CHECKING([whether to build Skia])
12124     if test "$skia_freetype_ok" = "yes"; then
12125         if test "$enable_skia" = "debug"; then
12126             AC_MSG_RESULT([yes (debug)])
12127             ENABLE_SKIA_DEBUG=TRUE
12128         else
12129             AC_MSG_RESULT([yes])
12130             ENABLE_SKIA_DEBUG=
12131         fi
12132         ENABLE_SKIA=TRUE
12133         AC_DEFINE(HAVE_FEATURE_SKIA)
12134         BUILD_TYPE="$BUILD_TYPE SKIA"
12136         if test "$OS" = "MACOSX"; then
12137             AC_DEFINE(SK_SUPPORT_GPU,1)
12138             AC_DEFINE(SK_METAL,1)
12139             SKIA_GPU=METAL
12140             AC_SUBST(SKIA_GPU)
12141         else
12142             AC_DEFINE(SK_SUPPORT_GPU,1)
12143             AC_DEFINE(SK_VULKAN,1)
12144             SKIA_GPU=VULKAN
12145             AC_SUBST(SKIA_GPU)
12146         fi
12148         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12149             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12150             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12151         fi
12152     else
12153         AC_MSG_RESULT([no (freetype too old)])
12154         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12155     fi
12157 else
12158     AC_MSG_CHECKING([whether to build Skia])
12159     AC_MSG_RESULT([no])
12161 AC_SUBST(ENABLE_SKIA)
12162 AC_SUBST(ENABLE_SKIA_DEBUG)
12164 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12165 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12166 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12167 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12168 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12169 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12170 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12171 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12172 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12173 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12174 HAVE_LO_CLANG_DLLEXPORTINLINES=
12176 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12177     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12178         AC_MSG_CHECKING([for Clang])
12179         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12180     else
12181         if test "$_os" = "WINNT"; then
12182             AC_MSG_CHECKING([for clang-cl])
12183             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12184                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12185             elif test -n "$PROGRAMFILES" -a -x "$PROGRAMFILES/LLVM/bin/clang-cl.exe"; then
12186                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12187             elif test -x "c:/Program Files/LLVM/bin/clang-cl.exe"; then
12188                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12189             fi
12190             if test -n "$LO_CLANG_CC"; then
12191                 dnl explicitly set -m32/-m64
12192                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12193                 LO_CLANG_CXX="$LO_CLANG_CC"
12194                 AC_MSG_RESULT([$LO_CLANG_CC])
12195             else
12196                 AC_MSG_RESULT([no])
12197             fi
12199             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12200             echo "#include <stdlib.h>" > conftest.c
12201             LO_CLANG_SHOWINCLUDES_PREFIX=`$LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12202                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12203             rm -f conftest.c conftest.obj
12204             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12205                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12206             else
12207                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12208             fi
12209         else
12210             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12211             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12212         fi
12213     fi
12214     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12215         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12216         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12217         if test "$clang2_ver" -lt 50002; then
12218             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12219             LO_CLANG_CC=
12220             LO_CLANG_CXX=
12221         fi
12222     fi
12223     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12224         save_CXX="$CXX"
12225         CXX="$LO_CLANG_CXX"
12226         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12227         AC_LANG_PUSH([C++])
12228         save_CXXFLAGS=$CXXFLAGS
12229         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12230         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12231                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12232                 AC_MSG_RESULT([yes])
12233             ], [AC_MSG_RESULT([no])])
12234         CXXFLAGS=$save_CXXFLAGS
12235         AC_LANG_POP([C++])
12236         CXX="$save_CXX"
12237         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12238             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.])
12239         fi
12240     fi
12241     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12242         # Skia is the default on Windows and Mac, so hard-require Clang.
12243         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12244         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12245             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12246         else
12247             AC_MSG_WARN([Clang compiler not found.])
12248         fi
12249     else
12251         save_CXX="$CXX"
12252         CXX="$LO_CLANG_CXX"
12253         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12254         flag_sse2=-msse2
12255         flag_ssse3=-mssse3
12256         flag_sse41=-msse4.1
12257         flag_sse42=-msse4.2
12258         flag_avx=-mavx
12259         flag_avx2=-mavx2
12260         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12261         flag_avx512f=-mavx512f
12262         flag_f16c=-mf16c
12263         flag_fma=-mfma
12265         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12266         AC_LANG_PUSH([C++])
12267         save_CXXFLAGS=$CXXFLAGS
12268         CXXFLAGS="$CXXFLAGS $flag_sse2"
12269         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12270             #include <emmintrin.h>
12271             int main () {
12272                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12273                 c = _mm_xor_si128 (a, b);
12274                 return 0;
12275             }
12276             ])],
12277             [can_compile_sse2=yes],
12278             [can_compile_sse2=no])
12279         AC_LANG_POP([C++])
12280         CXXFLAGS=$save_CXXFLAGS
12281         AC_MSG_RESULT([${can_compile_sse2}])
12282         if test "${can_compile_sse2}" = "yes" ; then
12283             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12284         fi
12286         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12287         AC_LANG_PUSH([C++])
12288         save_CXXFLAGS=$CXXFLAGS
12289         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12290         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12291             #include <tmmintrin.h>
12292             int main () {
12293                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12294                 c = _mm_maddubs_epi16 (a, b);
12295                 return 0;
12296             }
12297             ])],
12298             [can_compile_ssse3=yes],
12299             [can_compile_ssse3=no])
12300         AC_LANG_POP([C++])
12301         CXXFLAGS=$save_CXXFLAGS
12302         AC_MSG_RESULT([${can_compile_ssse3}])
12303         if test "${can_compile_ssse3}" = "yes" ; then
12304             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12305         fi
12307         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12308         AC_LANG_PUSH([C++])
12309         save_CXXFLAGS=$CXXFLAGS
12310         CXXFLAGS="$CXXFLAGS $flag_sse41"
12311         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12312             #include <smmintrin.h>
12313             int main () {
12314                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12315                 c = _mm_cmpeq_epi64 (a, b);
12316                 return 0;
12317             }
12318             ])],
12319             [can_compile_sse41=yes],
12320             [can_compile_sse41=no])
12321         AC_LANG_POP([C++])
12322         CXXFLAGS=$save_CXXFLAGS
12323         AC_MSG_RESULT([${can_compile_sse41}])
12324         if test "${can_compile_sse41}" = "yes" ; then
12325             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12326         fi
12328         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12329         AC_LANG_PUSH([C++])
12330         save_CXXFLAGS=$CXXFLAGS
12331         CXXFLAGS="$CXXFLAGS $flag_sse42"
12332         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12333             #include <nmmintrin.h>
12334             int main () {
12335                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12336                 c = _mm_cmpgt_epi64 (a, b);
12337                 return 0;
12338             }
12339             ])],
12340             [can_compile_sse42=yes],
12341             [can_compile_sse42=no])
12342         AC_LANG_POP([C++])
12343         CXXFLAGS=$save_CXXFLAGS
12344         AC_MSG_RESULT([${can_compile_sse42}])
12345         if test "${can_compile_sse42}" = "yes" ; then
12346             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12347         fi
12349         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12350         AC_LANG_PUSH([C++])
12351         save_CXXFLAGS=$CXXFLAGS
12352         CXXFLAGS="$CXXFLAGS $flag_avx"
12353         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12354             #include <immintrin.h>
12355             int main () {
12356                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12357                 c = _mm256_xor_ps(a, b);
12358                 return 0;
12359             }
12360             ])],
12361             [can_compile_avx=yes],
12362             [can_compile_avx=no])
12363         AC_LANG_POP([C++])
12364         CXXFLAGS=$save_CXXFLAGS
12365         AC_MSG_RESULT([${can_compile_avx}])
12366         if test "${can_compile_avx}" = "yes" ; then
12367             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12368         fi
12370         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12371         AC_LANG_PUSH([C++])
12372         save_CXXFLAGS=$CXXFLAGS
12373         CXXFLAGS="$CXXFLAGS $flag_avx2"
12374         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12375             #include <immintrin.h>
12376             int main () {
12377                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12378                 c = _mm256_maddubs_epi16(a, b);
12379                 return 0;
12380             }
12381             ])],
12382             [can_compile_avx2=yes],
12383             [can_compile_avx2=no])
12384         AC_LANG_POP([C++])
12385         CXXFLAGS=$save_CXXFLAGS
12386         AC_MSG_RESULT([${can_compile_avx2}])
12387         if test "${can_compile_avx2}" = "yes" ; then
12388             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12389         fi
12391         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12392         AC_LANG_PUSH([C++])
12393         save_CXXFLAGS=$CXXFLAGS
12394         CXXFLAGS="$CXXFLAGS $flag_avx512"
12395         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12396             #include <immintrin.h>
12397             int main () {
12398                 __m512i a = _mm512_loadu_si512(0);
12399                 __m512d v1 = _mm512_load_pd(0);
12400                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12401                 __m512d v2 = _mm512_abs_pd(v1);
12402                 return 0;
12403             }
12404             ])],
12405             [can_compile_avx512=yes],
12406             [can_compile_avx512=no])
12407         AC_LANG_POP([C++])
12408         CXXFLAGS=$save_CXXFLAGS
12409         AC_MSG_RESULT([${can_compile_avx512}])
12410         if test "${can_compile_avx512}" = "yes" ; then
12411             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12412             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12413         fi
12415         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12416         AC_LANG_PUSH([C++])
12417         save_CXXFLAGS=$CXXFLAGS
12418         CXXFLAGS="$CXXFLAGS $flag_f16c"
12419         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12420             #include <immintrin.h>
12421             int main () {
12422                 __m128i a = _mm_set1_epi32 (0);
12423                 __m128 c;
12424                 c = _mm_cvtph_ps(a);
12425                 return 0;
12426             }
12427             ])],
12428             [can_compile_f16c=yes],
12429             [can_compile_f16c=no])
12430         AC_LANG_POP([C++])
12431         CXXFLAGS=$save_CXXFLAGS
12432         AC_MSG_RESULT([${can_compile_f16c}])
12433         if test "${can_compile_f16c}" = "yes" ; then
12434             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12435         fi
12437         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12438         AC_LANG_PUSH([C++])
12439         save_CXXFLAGS=$CXXFLAGS
12440         CXXFLAGS="$CXXFLAGS $flag_fma"
12441         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12442             #include <immintrin.h>
12443             int main () {
12444                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12445                 d = _mm256_fmadd_ps(a, b, c);
12446                 return 0;
12447             }
12448             ])],
12449             [can_compile_fma=yes],
12450             [can_compile_fma=no])
12451         AC_LANG_POP([C++])
12452         CXXFLAGS=$save_CXXFLAGS
12453         AC_MSG_RESULT([${can_compile_fma}])
12454         if test "${can_compile_fma}" = "yes" ; then
12455             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12456         fi
12458         CXX="$save_CXX"
12459     fi
12462 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12464 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12465     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12466     AC_LANG_PUSH([C])
12467     save_CC="$CC"
12468     CC="$LO_CLANG_CC"
12469     save_CFLAGS=$CFLAGS
12470     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12471     dnl an empty program will do, we're checking the compiler flags
12472     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12473                       [use_ccache=yes], [use_ccache=no])
12474     CFLAGS=$save_CFLAGS
12475     CC=$save_CC
12476     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12477         AC_MSG_RESULT([yes])
12478     else
12479         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12480         AC_MSG_RESULT([no])
12481     fi
12482     AC_LANG_POP([C])
12484     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12485     AC_LANG_PUSH([C++])
12486     save_CXX="$CXX"
12487     CXX="$LO_CLANG_CXX"
12488     save_CXXFLAGS=$CXXFLAGS
12489     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12490     dnl an empty program will do, we're checking the compiler flags
12491     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12492                       [use_ccache=yes], [use_ccache=no])
12493     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12494         AC_MSG_RESULT([yes])
12495     else
12496         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12497         AC_MSG_RESULT([no])
12498     fi
12499     CXXFLAGS=$save_CXXFLAGS
12500     CXX=$save_CXX
12501     AC_LANG_POP([C++])
12504 AC_SUBST(LO_CLANG_CC)
12505 AC_SUBST(LO_CLANG_CXX)
12506 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12507 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12508 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12509 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12510 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12511 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12512 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12513 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12514 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12515 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12516 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12517 AC_SUBST(CLANG_USE_LD)
12518 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12520 SYSTEM_GPGMEPP=
12522 AC_MSG_CHECKING([whether to enable gpgmepp])
12523 if test "$enable_gpgmepp" = no; then
12524     AC_MSG_RESULT([no])
12525 elif test "$enable_mpl_subset" = "yes"; then
12526     AC_MSG_RESULT([no (MPL only])
12527 elif test "$enable_fuzzers" = "yes"; then
12528     AC_MSG_RESULT([no (oss-fuzz)])
12529 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12530     AC_MSG_RESULT([yes])
12531     dnl ===================================================================
12532     dnl Check for system gpgme
12533     dnl ===================================================================
12534     AC_MSG_CHECKING([which gpgmepp to use])
12535     if test "$with_system_gpgmepp" = "yes"; then
12536         AC_MSG_RESULT([external])
12537         SYSTEM_GPGMEPP=TRUE
12539         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12540         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12541             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12542         # progress_callback is the only func with plain C linkage
12543         # checking for it also filters out older, KDE-dependent libgpgmepp versions
12544         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12545             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12546         AC_CHECK_HEADER(gpgme.h, [],
12547             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12548     else
12549         AC_MSG_RESULT([internal])
12550         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12552         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12553         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12554         if test "$_os" != "WINNT"; then
12555             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12556             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12557         fi
12558     fi
12559     ENABLE_GPGMEPP=TRUE
12560     AC_DEFINE([HAVE_FEATURE_GPGME])
12561     AC_PATH_PROG(GPG, gpg)
12562     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12563     # so let's exclude that manually for the moment
12564     if test -n "$GPG" -a "$_os" != "WINNT"; then
12565         # make sure we not only have a working gpgme, but a full working
12566         # gpg installation to run OpenPGP signature verification
12567         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12568     fi
12569     if test "$_os" = "Linux"; then
12570       uid=`id -u`
12571       AC_MSG_CHECKING([for /run/user/$uid])
12572       if test -d /run/user/$uid; then
12573         AC_MSG_RESULT([yes])
12574         AC_PATH_PROG(GPGCONF, gpgconf)
12576         # Older versions of gpgconf are not working as expected, since
12577         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12578         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12579         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12580         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12581         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12582         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12583         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12584           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12585           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12586           if $GPGCONF --dump-options > /dev/null ; then
12587             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12588               AC_MSG_RESULT([yes])
12589               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12590               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12591             else
12592               AC_MSG_RESULT([no])
12593             fi
12594           else
12595             AC_MSG_RESULT([no. missing or broken gpgconf?])
12596           fi
12597         else
12598           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12599         fi
12600       else
12601         AC_MSG_RESULT([no])
12602      fi
12603    fi
12604 else
12605     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12607 AC_SUBST(ENABLE_GPGMEPP)
12608 AC_SUBST(SYSTEM_GPGMEPP)
12609 AC_SUBST(GPG_ERROR_CFLAGS)
12610 AC_SUBST(GPG_ERROR_LIBS)
12611 AC_SUBST(LIBASSUAN_CFLAGS)
12612 AC_SUBST(LIBASSUAN_LIBS)
12613 AC_SUBST(GPGMEPP_CFLAGS)
12614 AC_SUBST(GPGMEPP_LIBS)
12616 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12617 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12618     AC_MSG_RESULT([yes])
12619     ENABLE_MEDIAWIKI=TRUE
12620     BUILD_TYPE="$BUILD_TYPE XSLTML"
12621     if test  "x$with_java" = "xno"; then
12622         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12623     fi
12624 else
12625     AC_MSG_RESULT([no])
12626     ENABLE_MEDIAWIKI=
12627     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12629 AC_SUBST(ENABLE_MEDIAWIKI)
12631 AC_MSG_CHECKING([whether to build the Report Builder])
12632 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12633     AC_MSG_RESULT([yes])
12634     ENABLE_REPORTBUILDER=TRUE
12635     AC_MSG_CHECKING([which jfreereport libs to use])
12636     if test "$with_system_jfreereport" = "yes"; then
12637         SYSTEM_JFREEREPORT=TRUE
12638         AC_MSG_RESULT([external])
12639         if test -z $SAC_JAR; then
12640             SAC_JAR=/usr/share/java/sac.jar
12641         fi
12642         if ! test -f $SAC_JAR; then
12643              AC_MSG_ERROR(sac.jar not found.)
12644         fi
12646         if test -z $LIBXML_JAR; then
12647             if test -f /usr/share/java/libxml-1.0.0.jar; then
12648                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12649             elif test -f /usr/share/java/libxml.jar; then
12650                 LIBXML_JAR=/usr/share/java/libxml.jar
12651             else
12652                 AC_MSG_ERROR(libxml.jar replacement not found.)
12653             fi
12654         elif ! test -f $LIBXML_JAR; then
12655             AC_MSG_ERROR(libxml.jar not found.)
12656         fi
12658         if test -z $FLUTE_JAR; then
12659             if test -f /usr/share/java/flute-1.3.0.jar; then
12660                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12661             elif test -f /usr/share/java/flute.jar; then
12662                 FLUTE_JAR=/usr/share/java/flute.jar
12663             else
12664                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12665             fi
12666         elif ! test -f $FLUTE_JAR; then
12667             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12668         fi
12670         if test -z $JFREEREPORT_JAR; then
12671             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12672                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12673             elif test -f /usr/share/java/flow-engine.jar; then
12674                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12675             else
12676                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12677             fi
12678         elif ! test -f  $JFREEREPORT_JAR; then
12679                 AC_MSG_ERROR(jfreereport.jar not found.)
12680         fi
12682         if test -z $LIBLAYOUT_JAR; then
12683             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12684                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12685             elif test -f /usr/share/java/liblayout.jar; then
12686                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12687             else
12688                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12689             fi
12690         elif ! test -f $LIBLAYOUT_JAR; then
12691                 AC_MSG_ERROR(liblayout.jar not found.)
12692         fi
12694         if test -z $LIBLOADER_JAR; then
12695             if test -f /usr/share/java/libloader-1.0.0.jar; then
12696                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12697             elif test -f /usr/share/java/libloader.jar; then
12698                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12699             else
12700                 AC_MSG_ERROR(libloader.jar replacement not found.)
12701             fi
12702         elif ! test -f  $LIBLOADER_JAR; then
12703             AC_MSG_ERROR(libloader.jar not found.)
12704         fi
12706         if test -z $LIBFORMULA_JAR; then
12707             if test -f /usr/share/java/libformula-0.2.0.jar; then
12708                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12709             elif test -f /usr/share/java/libformula.jar; then
12710                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12711             else
12712                 AC_MSG_ERROR(libformula.jar replacement not found.)
12713             fi
12714         elif ! test -f $LIBFORMULA_JAR; then
12715                 AC_MSG_ERROR(libformula.jar not found.)
12716         fi
12718         if test -z $LIBREPOSITORY_JAR; then
12719             if test -f /usr/share/java/librepository-1.0.0.jar; then
12720                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12721             elif test -f /usr/share/java/librepository.jar; then
12722                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12723             else
12724                 AC_MSG_ERROR(librepository.jar replacement not found.)
12725             fi
12726         elif ! test -f $LIBREPOSITORY_JAR; then
12727             AC_MSG_ERROR(librepository.jar not found.)
12728         fi
12730         if test -z $LIBFONTS_JAR; then
12731             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12732                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12733             elif test -f /usr/share/java/libfonts.jar; then
12734                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12735             else
12736                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12737             fi
12738         elif ! test -f $LIBFONTS_JAR; then
12739                 AC_MSG_ERROR(libfonts.jar not found.)
12740         fi
12742         if test -z $LIBSERIALIZER_JAR; then
12743             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12744                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12745             elif test -f /usr/share/java/libserializer.jar; then
12746                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12747             else
12748                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12749             fi
12750         elif ! test -f $LIBSERIALIZER_JAR; then
12751                 AC_MSG_ERROR(libserializer.jar not found.)
12752         fi
12754         if test -z $LIBBASE_JAR; then
12755             if test -f /usr/share/java/libbase-1.0.0.jar; then
12756                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12757             elif test -f /usr/share/java/libbase.jar; then
12758                 LIBBASE_JAR=/usr/share/java/libbase.jar
12759             else
12760                 AC_MSG_ERROR(libbase.jar replacement not found.)
12761             fi
12762         elif ! test -f $LIBBASE_JAR; then
12763             AC_MSG_ERROR(libbase.jar not found.)
12764         fi
12766     else
12767         AC_MSG_RESULT([internal])
12768         SYSTEM_JFREEREPORT=
12769         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12770         NEED_ANT=TRUE
12771     fi
12772 else
12773     AC_MSG_RESULT([no])
12774     ENABLE_REPORTBUILDER=
12775     SYSTEM_JFREEREPORT=
12777 AC_SUBST(ENABLE_REPORTBUILDER)
12778 AC_SUBST(SYSTEM_JFREEREPORT)
12779 AC_SUBST(SAC_JAR)
12780 AC_SUBST(LIBXML_JAR)
12781 AC_SUBST(FLUTE_JAR)
12782 AC_SUBST(JFREEREPORT_JAR)
12783 AC_SUBST(LIBBASE_JAR)
12784 AC_SUBST(LIBLAYOUT_JAR)
12785 AC_SUBST(LIBLOADER_JAR)
12786 AC_SUBST(LIBFORMULA_JAR)
12787 AC_SUBST(LIBREPOSITORY_JAR)
12788 AC_SUBST(LIBFONTS_JAR)
12789 AC_SUBST(LIBSERIALIZER_JAR)
12791 # scripting provider for BeanShell?
12792 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12793 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12794     AC_MSG_RESULT([yes])
12795     ENABLE_SCRIPTING_BEANSHELL=TRUE
12797     dnl ===================================================================
12798     dnl Check for system beanshell
12799     dnl ===================================================================
12800     AC_MSG_CHECKING([which beanshell to use])
12801     if test "$with_system_beanshell" = "yes"; then
12802         AC_MSG_RESULT([external])
12803         SYSTEM_BSH=TRUE
12804         if test -z $BSH_JAR; then
12805             BSH_JAR=/usr/share/java/bsh.jar
12806         fi
12807         if ! test -f $BSH_JAR; then
12808             AC_MSG_ERROR(bsh.jar not found.)
12809         fi
12810     else
12811         AC_MSG_RESULT([internal])
12812         SYSTEM_BSH=
12813         BUILD_TYPE="$BUILD_TYPE BSH"
12814     fi
12815 else
12816     AC_MSG_RESULT([no])
12817     ENABLE_SCRIPTING_BEANSHELL=
12818     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12820 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12821 AC_SUBST(SYSTEM_BSH)
12822 AC_SUBST(BSH_JAR)
12824 # scripting provider for JavaScript?
12825 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12826 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12827     AC_MSG_RESULT([yes])
12828     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12830     dnl ===================================================================
12831     dnl Check for system rhino
12832     dnl ===================================================================
12833     AC_MSG_CHECKING([which rhino to use])
12834     if test "$with_system_rhino" = "yes"; then
12835         AC_MSG_RESULT([external])
12836         SYSTEM_RHINO=TRUE
12837         if test -z $RHINO_JAR; then
12838             RHINO_JAR=/usr/share/java/js.jar
12839         fi
12840         if ! test -f $RHINO_JAR; then
12841             AC_MSG_ERROR(js.jar not found.)
12842         fi
12843     else
12844         AC_MSG_RESULT([internal])
12845         SYSTEM_RHINO=
12846         BUILD_TYPE="$BUILD_TYPE RHINO"
12847         NEED_ANT=TRUE
12848     fi
12849 else
12850     AC_MSG_RESULT([no])
12851     ENABLE_SCRIPTING_JAVASCRIPT=
12852     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12854 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12855 AC_SUBST(SYSTEM_RHINO)
12856 AC_SUBST(RHINO_JAR)
12858 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12859 # paths should be added to library search path. So lets put all 64-bit
12860 # platforms there.
12861 supports_multilib=
12862 case "$host_cpu" in
12863 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12864     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12865         supports_multilib="yes"
12866     fi
12867     ;;
12869     ;;
12870 esac
12872 dnl ===================================================================
12873 dnl QT5 Integration
12874 dnl ===================================================================
12876 QT5_CFLAGS=""
12877 QT5_LIBS=""
12878 QMAKE5="qmake"
12879 MOC5="moc"
12880 QT5_GOBJECT_CFLAGS=""
12881 QT5_GOBJECT_LIBS=""
12882 QT5_HAVE_GOBJECT=""
12883 QT5_PLATFORMS_SRCDIR=""
12884 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12885         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12886         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12887 then
12888     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12889     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12891     if test -n "$supports_multilib"; then
12892         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12893     fi
12895     qt5_test_include="QtWidgets/qapplication.h"
12896     if test "$_os" = "Emscripten"; then
12897         qt5_test_library="libQt5Widgets.a"
12898     else
12899         qt5_test_library="libQt5Widgets.so"
12900     fi
12902     dnl Check for qmake5
12903     if test -n "$QT5DIR"; then
12904         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12905     else
12906         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12907     fi
12908     if test "$QMAKE5" = "no"; then
12909         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12910     else
12911         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12912         if test -z "$qmake5_test_ver"; then
12913             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12914         fi
12915         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12916         qt5_minimal_minor="6"
12917         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12918             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12919         else
12920             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12921         fi
12922     fi
12924     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12925     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12926     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12927     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12929     AC_MSG_CHECKING([for Qt5 headers])
12930     qt5_incdir="no"
12931     for inc_dir in $qt5_incdirs; do
12932         if test -r "$inc_dir/$qt5_test_include"; then
12933             qt5_incdir="$inc_dir"
12934             break
12935         fi
12936     done
12937     AC_MSG_RESULT([$qt5_incdir])
12938     if test "x$qt5_incdir" = "xno"; then
12939         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12940     fi
12941     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12942     AC_LANG_PUSH([C++])
12943     save_CPPFLAGS=$CPPFLAGS
12944     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12945     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12946         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12947     CPPFLAGS=$save_CPPFLAGS
12948     AC_LANG_POP([C++])
12950     AC_MSG_CHECKING([for Qt5 libraries])
12951     qt5_libdir="no"
12952     for lib_dir in $qt5_libdirs; do
12953         if test -r "$lib_dir/$qt5_test_library"; then
12954             qt5_libdir="$lib_dir"
12955             break
12956         fi
12957     done
12958     AC_MSG_RESULT([$qt5_libdir])
12959     if test "x$qt5_libdir" = "xno"; then
12960         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12961     fi
12963     if test "$_os" = "Emscripten"; then
12964         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12965             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12966         fi
12967         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12968             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12969         fi
12971         EMSDK_LLVM_NM="$(em-config EMSCRIPTEN_ROOT)"/../bin/llvm-nm
12972         if ! test -x "$EMSDK_LLVM_NM"; then
12973             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12974         fi
12975         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12976             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12977         fi
12978         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12979         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12980             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
12981         fi
12982         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
12983             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
12984         fi
12985     fi
12987     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12988     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12989     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12990     if test "$_os" = "Emscripten"; then
12991         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12992     fi
12994     if test "$USING_X11" = TRUE; then
12995         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12996         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12997             QT5_HAVE_XCB_ICCCM=1
12998             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12999         ],[
13000             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)])
13001             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13002         ])
13003         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13004         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13005         QT5_USING_X11=1
13006         AC_DEFINE(QT5_USING_X11)
13007     fi
13009     dnl Check for Meta Object Compiler
13011     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13012     if test "$MOC5" = "no"; then
13013         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13014 the root of your Qt installation by exporting QT5DIR before running "configure".])
13015     fi
13017     if test "$test_gstreamer_1_0" = yes; then
13018         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13019                 QT5_HAVE_GOBJECT=1
13020                 AC_DEFINE(QT5_HAVE_GOBJECT)
13021             ],
13022             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13023         )
13024     fi
13026 AC_SUBST(QT5_CFLAGS)
13027 AC_SUBST(QT5_LIBS)
13028 AC_SUBST(MOC5)
13029 AC_SUBST(QT5_GOBJECT_CFLAGS)
13030 AC_SUBST(QT5_GOBJECT_LIBS)
13031 AC_SUBST(QT5_HAVE_GOBJECT)
13032 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13034 dnl ===================================================================
13035 dnl QT6 Integration
13036 dnl ===================================================================
13038 QT6_CFLAGS=""
13039 QT6_LIBS=""
13040 QMAKE6="qmake"
13041 MOC6="moc"
13042 QT6_PLATFORMS_SRCDIR=""
13043 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13044 then
13045     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13046     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13048     if test -n "$supports_multilib"; then
13049         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13050     fi
13052     qt6_test_include="QtWidgets/qapplication.h"
13053     if test "$_os" = "Emscripten"; then
13054         qt6_test_library="libQt6Widgets.a"
13055     else
13056         qt6_test_library="libQt6Widgets.so"
13057     fi
13059     dnl Check for qmake6
13060     if test -n "$QT6DIR"; then
13061         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13062     else
13063         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
13064     fi
13065     if test "$QMAKE6" = "no"; then
13066         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13067     else
13068         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13069         if test -z "$qmake6_test_ver"; then
13070             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13071         fi
13072         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13073     fi
13075     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13076     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13077     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13078     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13080     AC_MSG_CHECKING([for Qt6 headers])
13081     qt6_incdir="no"
13082     for inc_dir in $qt6_incdirs; do
13083         if test -r "$inc_dir/$qt6_test_include"; then
13084             qt6_incdir="$inc_dir"
13085             break
13086         fi
13087     done
13088     AC_MSG_RESULT([$qt6_incdir])
13089     if test "x$qt6_incdir" = "xno"; then
13090         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13091     fi
13092     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13093     AC_LANG_PUSH([C++])
13094     save_CPPFLAGS=$CPPFLAGS
13095     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13096     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13097         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13098     CPPFLAGS=$save_CPPFLAGS
13099     AC_LANG_POP([C++])
13101     AC_MSG_CHECKING([for Qt6 libraries])
13102     qt6_libdir="no"
13103     for lib_dir in $qt6_libdirs; do
13104         if test -r "$lib_dir/$qt6_test_library"; then
13105             qt6_libdir="$lib_dir"
13106             break
13107         fi
13108     done
13109     AC_MSG_RESULT([$qt6_libdir])
13110     if test "x$qt6_libdir" = "xno"; then
13111         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13112     fi
13114     if test "$_os" = "Emscripten"; then
13115         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13116             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13117         fi
13118         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13119             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13120         fi
13121     fi
13123     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13124     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13125     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13126     if test "$_os" = "Emscripten"; then
13127         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13128     fi
13130     if test "$USING_X11" = TRUE; then
13131         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13132         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13133         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13134         QT6_USING_X11=1
13135         AC_DEFINE(QT6_USING_X11)
13136     fi
13138     dnl Check for Meta Object Compiler
13140     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13141     if test "$MOC6" = "no"; then
13142         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13143 the root of your Qt installation by exporting QT6DIR before running "configure".])
13144     fi
13146 AC_SUBST(QT6_CFLAGS)
13147 AC_SUBST(QT6_LIBS)
13148 AC_SUBST(MOC6)
13149 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13151 dnl ===================================================================
13152 dnl KF5 Integration
13153 dnl ===================================================================
13155 KF5_CFLAGS=""
13156 KF5_LIBS=""
13157 KF5_CONFIG="kf5-config"
13158 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13159         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13160 then
13161     if test "$OS" = "HAIKU"; then
13162         haiku_arch="`echo $RTL_ARCH | tr X x`"
13163         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13164         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13165     fi
13167     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13168     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13169     if test -n "$supports_multilib"; then
13170         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13171     fi
13173     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13174     kf5_test_library="libKF5KIOFileWidgets.so"
13175     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13177     dnl kf5 KDE4 support compatibility installed
13178     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13179     if test "$KF5_CONFIG" != "no"; then
13180         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13181         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13182     fi
13184     dnl Check for KF5 headers
13185     AC_MSG_CHECKING([for KF5 headers])
13186     kf5_incdir="no"
13187     for kf5_check in $kf5_incdirs; do
13188         if test -r "$kf5_check/$kf5_test_include"; then
13189             kf5_incdir="$kf5_check/KF5"
13190             break
13191         fi
13192     done
13193     AC_MSG_RESULT([$kf5_incdir])
13194     if test "x$kf5_incdir" = "xno"; then
13195         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13196     fi
13198     dnl Check for KF5 libraries
13199     AC_MSG_CHECKING([for KF5 libraries])
13200     kf5_libdir="no"
13201     for kf5_check in $kf5_libdirs; do
13202         if test -r "$kf5_check/$kf5_test_library"; then
13203             kf5_libdir="$kf5_check"
13204             break
13205         fi
13206     done
13208     AC_MSG_RESULT([$kf5_libdir])
13209     if test "x$kf5_libdir" = "xno"; then
13210         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13211     fi
13213     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"
13214     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13215     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13217     if test "$USING_X11" = TRUE; then
13218         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13219     fi
13221     AC_LANG_PUSH([C++])
13222     save_CXXFLAGS=$CXXFLAGS
13223     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13224     AC_MSG_CHECKING([whether KDE is >= 5.0])
13225        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13226 #include <kcoreaddons_version.h>
13228 int main(int argc, char **argv) {
13229        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13230        else return 1;
13232        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13233     CXXFLAGS=$save_CXXFLAGS
13234     AC_LANG_POP([C++])
13236 AC_SUBST(KF5_CFLAGS)
13237 AC_SUBST(KF5_LIBS)
13239 dnl ===================================================================
13240 dnl Test whether to include Evolution 2 support
13241 dnl ===================================================================
13242 AC_MSG_CHECKING([whether to enable evolution 2 support])
13243 if test "$enable_evolution2" = yes; then
13244     AC_MSG_RESULT([yes])
13245     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13246     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13247     FilterLibs "${GOBJECT_LIBS}"
13248     GOBJECT_LIBS="${filteredlibs}"
13249     ENABLE_EVOAB2="TRUE"
13250 else
13251     AC_MSG_RESULT([no])
13253 AC_SUBST(ENABLE_EVOAB2)
13254 AC_SUBST(GOBJECT_CFLAGS)
13255 AC_SUBST(GOBJECT_LIBS)
13257 dnl ===================================================================
13258 dnl Test which themes to include
13259 dnl ===================================================================
13260 AC_MSG_CHECKING([which themes to include])
13261 # if none given use default subset of available themes
13262 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13263     with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
13266 WITH_THEMES=""
13267 if test "x$with_theme" != "xno"; then
13268     for theme in $with_theme; do
13269         case $theme in
13270         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
13271         default) real_theme=colibre ;;
13272         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13273         esac
13274         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13275     done
13277 AC_MSG_RESULT([$WITH_THEMES])
13278 AC_SUBST([WITH_THEMES])
13279 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13280 for theme in $with_theme; do
13281     case $theme in
13282     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13283     *) ;;
13284     esac
13285 done
13287 ###############################################################################
13288 # Extensions checking
13289 ###############################################################################
13290 AC_MSG_CHECKING([for extensions integration])
13291 if test "x$enable_extension_integration" != "xno"; then
13292     WITH_EXTENSION_INTEGRATION=TRUE
13293     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13294     AC_MSG_RESULT([yes, use integration])
13295 else
13296     WITH_EXTENSION_INTEGRATION=
13297     AC_MSG_RESULT([no, do not integrate])
13299 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13301 dnl Should any extra extensions be included?
13302 dnl There are standalone tests for each of these below.
13303 WITH_EXTRA_EXTENSIONS=
13304 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13306 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13307 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13308 if test "x$with_java" != "xno"; then
13309     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13310     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13313 AC_MSG_CHECKING([whether to build opens___.ttf])
13314 if test "$enable_build_opensymbol" = "yes"; then
13315     AC_MSG_RESULT([yes])
13316     AC_PATH_PROG(FONTFORGE, fontforge)
13317     if test -z "$FONTFORGE"; then
13318         AC_MSG_ERROR([fontforge not installed])
13319     fi
13320 else
13321     AC_MSG_RESULT([no])
13322     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13324 AC_SUBST(FONTFORGE)
13326 dnl ===================================================================
13327 dnl Test whether to include fonts
13328 dnl ===================================================================
13329 AC_MSG_CHECKING([whether to include third-party fonts])
13330 if test "$with_fonts" != "no"; then
13331     AC_MSG_RESULT([yes])
13332     WITH_FONTS=TRUE
13333     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13334     AC_DEFINE(HAVE_MORE_FONTS)
13335 else
13336     AC_MSG_RESULT([no])
13337     WITH_FONTS=
13338     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13340 AC_SUBST(WITH_FONTS)
13343 dnl ===================================================================
13344 dnl Test whether to enable online update service
13345 dnl ===================================================================
13346 AC_MSG_CHECKING([whether to enable online update])
13347 ENABLE_ONLINE_UPDATE=
13348 ENABLE_ONLINE_UPDATE_MAR=
13349 UPDATE_CONFIG=
13350 if test "$enable_online_update" = ""; then
13351     AC_MSG_RESULT([no])
13352 else
13353     if test "$enable_online_update" = "mar"; then
13354         AC_MSG_RESULT([yes - MAR-based online update])
13355         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13356         if test "$with_update_config" = ""; then
13357             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13358         fi
13359         UPDATE_CONFIG="$with_update_config"
13360         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13361     elif test "$enable_online_update" = "yes"; then
13362         AC_MSG_RESULT([yes])
13363         ENABLE_ONLINE_UPDATE="TRUE"
13364     else
13365         AC_MSG_RESULT([no])
13366     fi
13368 AC_SUBST(ENABLE_ONLINE_UPDATE)
13369 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13370 AC_SUBST(UPDATE_CONFIG)
13373 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13374 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13375     if test "x$with_privacy_policy_url" = "xundefined"; then
13376         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13377     fi
13379 AC_SUBST(PRIVACY_POLICY_URL)
13380 dnl ===================================================================
13381 dnl Test whether we need bzip2
13382 dnl ===================================================================
13383 SYSTEM_BZIP2=
13384 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13385     AC_MSG_CHECKING([whether to use system bzip2])
13386     if test "$with_system_bzip2" = yes; then
13387         SYSTEM_BZIP2=TRUE
13388         AC_MSG_RESULT([yes])
13389         PKG_CHECK_MODULES(BZIP2, bzip2)
13390         FilterLibs "${BZIP2_LIBS}"
13391         BZIP2_LIBS="${filteredlibs}"
13392     else
13393         AC_MSG_RESULT([no])
13394         BUILD_TYPE="$BUILD_TYPE BZIP2"
13395     fi
13397 AC_SUBST(SYSTEM_BZIP2)
13398 AC_SUBST(BZIP2_CFLAGS)
13399 AC_SUBST(BZIP2_LIBS)
13401 dnl ===================================================================
13402 dnl Test whether to enable extension update
13403 dnl ===================================================================
13404 AC_MSG_CHECKING([whether to enable extension update])
13405 ENABLE_EXTENSION_UPDATE=
13406 if test "x$enable_extension_update" = "xno"; then
13407     AC_MSG_RESULT([no])
13408 else
13409     AC_MSG_RESULT([yes])
13410     ENABLE_EXTENSION_UPDATE="TRUE"
13411     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13412     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13414 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13417 dnl ===================================================================
13418 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13419 dnl ===================================================================
13420 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13421 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13422     AC_MSG_RESULT([no])
13423     ENABLE_SILENT_MSI=
13424 else
13425     AC_MSG_RESULT([yes])
13426     ENABLE_SILENT_MSI=TRUE
13427     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13429 AC_SUBST(ENABLE_SILENT_MSI)
13431 AC_MSG_CHECKING([whether and how to use Xinerama])
13432 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13433     if test "$x_libraries" = "default_x_libraries"; then
13434         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13435         if test "x$XINERAMALIB" = x; then
13436            XINERAMALIB="/usr/lib"
13437         fi
13438     else
13439         XINERAMALIB="$x_libraries"
13440     fi
13441     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13442         # we have both versions, let the user decide but use the dynamic one
13443         # per default
13444         USE_XINERAMA=TRUE
13445         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13446             XINERAMA_LINK=dynamic
13447         else
13448             XINERAMA_LINK=static
13449         fi
13450     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13451         # we have only the dynamic version
13452         USE_XINERAMA=TRUE
13453         XINERAMA_LINK=dynamic
13454     elif test -e "$XINERAMALIB/libXinerama.a"; then
13455         # static version
13456         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13457             USE_XINERAMA=TRUE
13458             XINERAMA_LINK=static
13459         else
13460             USE_XINERAMA=
13461             XINERAMA_LINK=none
13462         fi
13463     else
13464         # no Xinerama
13465         USE_XINERAMA=
13466         XINERAMA_LINK=none
13467     fi
13468     if test "$USE_XINERAMA" = "TRUE"; then
13469         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13470         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13471             [AC_MSG_ERROR(Xinerama header not found.)], [])
13472         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13473         if test "x$XEXTLIB" = x; then
13474            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13475         fi
13476         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13477         if test "$_os" = "FreeBSD"; then
13478             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13479         fi
13480         if test "$_os" = "Linux"; then
13481             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13482         fi
13483         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13484             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13485     else
13486         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13487     fi
13488 else
13489     USE_XINERAMA=
13490     XINERAMA_LINK=none
13491     AC_MSG_RESULT([no])
13493 AC_SUBST(USE_XINERAMA)
13494 AC_SUBST(XINERAMA_LINK)
13496 dnl ===================================================================
13497 dnl Test whether to build cairo or rely on the system version
13498 dnl ===================================================================
13500 if test "$test_cairo" = "yes"; then
13501     AC_MSG_CHECKING([whether to use the system cairo])
13503     : ${with_system_cairo:=$with_system_libs}
13504     if test "$with_system_cairo" = "yes"; then
13505         SYSTEM_CAIRO=TRUE
13506         AC_MSG_RESULT([yes])
13508         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13509         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13510         FilterLibs "${CAIRO_LIBS}"
13511         CAIRO_LIBS="${filteredlibs}"
13513         if test "$test_xrender" = "yes"; then
13514             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13515             AC_LANG_PUSH([C])
13516             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13517 #ifdef PictStandardA8
13518 #else
13519       return fail;
13520 #endif
13521 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13523             AC_LANG_POP([C])
13524         fi
13525     else
13526         AC_MSG_RESULT([no])
13527         BUILD_TYPE="$BUILD_TYPE CAIRO"
13528     fi
13530     if test "$enable_cairo_canvas" != no; then
13531         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13532         ENABLE_CAIRO_CANVAS=TRUE
13533     fi
13536 AC_SUBST(CAIRO_CFLAGS)
13537 AC_SUBST(CAIRO_LIBS)
13538 AC_SUBST(ENABLE_CAIRO_CANVAS)
13539 AC_SUBST(SYSTEM_CAIRO)
13541 dnl ===================================================================
13542 dnl Test whether to use avahi
13543 dnl ===================================================================
13544 if test "$_os" = "WINNT"; then
13545     # Windows uses bundled mDNSResponder
13546     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13547 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13548     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13549                       [ENABLE_AVAHI="TRUE"])
13550     AC_DEFINE(HAVE_FEATURE_AVAHI)
13551     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13552     FilterLibs "${AVAHI_LIBS}"
13553     AVAHI_LIBS="${filteredlibs}"
13556 AC_SUBST(ENABLE_AVAHI)
13557 AC_SUBST(AVAHI_CFLAGS)
13558 AC_SUBST(AVAHI_LIBS)
13560 dnl ===================================================================
13561 dnl Test whether to use liblangtag
13562 dnl ===================================================================
13563 SYSTEM_LIBLANGTAG=
13564 AC_MSG_CHECKING([whether to use system liblangtag])
13565 if test "$with_system_liblangtag" = yes; then
13566     SYSTEM_LIBLANGTAG=TRUE
13567     AC_MSG_RESULT([yes])
13568     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13569     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13570     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13571     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13572     FilterLibs "${LIBLANGTAG_LIBS}"
13573     LIBLANGTAG_LIBS="${filteredlibs}"
13574 else
13575     SYSTEM_LIBLANGTAG=
13576     AC_MSG_RESULT([no])
13577     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13578     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13579     if test "$COM" = "MSC"; then
13580         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13581     else
13582         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13583     fi
13585 AC_SUBST(SYSTEM_LIBLANGTAG)
13586 AC_SUBST(LIBLANGTAG_CFLAGS)
13587 AC_SUBST(LIBLANGTAG_LIBS)
13589 dnl ===================================================================
13590 dnl Test whether to build libpng or rely on the system version
13591 dnl ===================================================================
13593 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13594 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13595 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13597 dnl ===================================================================
13598 dnl Test whether to build libwebp or rely on the system version
13599 dnl ===================================================================
13601 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13603 dnl ===================================================================
13604 dnl Check for runtime JVM search path
13605 dnl ===================================================================
13606 if test "$ENABLE_JAVA" != ""; then
13607     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13608     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13609         AC_MSG_RESULT([yes])
13610         if ! test -d "$with_jvm_path"; then
13611             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13612         fi
13613         if ! test -d "$with_jvm_path"jvm; then
13614             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13615         fi
13616         JVM_ONE_PATH_CHECK="$with_jvm_path"
13617         AC_SUBST(JVM_ONE_PATH_CHECK)
13618     else
13619         AC_MSG_RESULT([no])
13620     fi
13623 dnl ===================================================================
13624 dnl Test for the presence of Ant and that it works
13625 dnl ===================================================================
13627 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13628     ANT_HOME=; export ANT_HOME
13629     WITH_ANT_HOME=; export WITH_ANT_HOME
13630     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13631         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13632             if test "$_os" = "WINNT"; then
13633                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13634             else
13635                 with_ant_home="$LODE_HOME/opt/ant"
13636             fi
13637         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13638             with_ant_home="$LODE_HOME/opt/ant"
13639         fi
13640     fi
13641     if test -z "$with_ant_home"; then
13642         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13643     else
13644         if test "$_os" = "WINNT"; then
13645             # AC_PATH_PROGS needs unix path
13646             with_ant_home=`cygpath -u "$with_ant_home"`
13647         fi
13648         AbsolutePath "$with_ant_home"
13649         with_ant_home=$absolute_path
13650         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13651         WITH_ANT_HOME=$with_ant_home
13652         ANT_HOME=$with_ant_home
13653     fi
13655     if test -z "$ANT"; then
13656         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13657     else
13658         # resolve relative or absolute symlink
13659         while test -h "$ANT"; do
13660             a_cwd=`pwd`
13661             a_basename=`basename "$ANT"`
13662             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13663             cd "`dirname "$ANT"`"
13664             cd "`dirname "$a_script"`"
13665             ANT="`pwd`"/"`basename "$a_script"`"
13666             cd "$a_cwd"
13667         done
13669         AC_MSG_CHECKING([if $ANT works])
13670         mkdir -p conftest.dir
13671         a_cwd=$(pwd)
13672         cd conftest.dir
13673         cat > conftest.java << EOF
13674         public class conftest {
13675             int testmethod(int a, int b) {
13676                     return a + b;
13677             }
13678         }
13681         cat > conftest.xml << EOF
13682         <project name="conftest" default="conftest">
13683         <target name="conftest">
13684             <javac srcdir="." includes="conftest.java">
13685             </javac>
13686         </target>
13687         </project>
13690         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13691         if test $? = 0 -a -f ./conftest.class; then
13692             AC_MSG_RESULT([Ant works])
13693             if test -z "$WITH_ANT_HOME"; then
13694                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13695                 if test -z "$ANT_HOME"; then
13696                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13697                 fi
13698             else
13699                 ANT_HOME="$WITH_ANT_HOME"
13700             fi
13701         else
13702             echo "configure: Ant test failed" >&5
13703             cat conftest.java >&5
13704             cat conftest.xml >&5
13705             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13706         fi
13707         cd "$a_cwd"
13708         rm -fr conftest.dir
13709     fi
13710     if test -z "$ANT_HOME"; then
13711         ANT_HOME="NO_ANT_HOME"
13712     else
13713         PathFormat "$ANT_HOME"
13714         ANT_HOME="$formatted_path"
13715         PathFormat "$ANT"
13716         ANT="$formatted_path"
13717     fi
13719     dnl Checking for ant.jar
13720     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13721         AC_MSG_CHECKING([Ant lib directory])
13722         if test -f $ANT_HOME/lib/ant.jar; then
13723             ANT_LIB="$ANT_HOME/lib"
13724         else
13725             if test -f $ANT_HOME/ant.jar; then
13726                 ANT_LIB="$ANT_HOME"
13727             else
13728                 if test -f /usr/share/java/ant.jar; then
13729                     ANT_LIB=/usr/share/java
13730                 else
13731                     if test -f /usr/share/ant-core/lib/ant.jar; then
13732                         ANT_LIB=/usr/share/ant-core/lib
13733                     else
13734                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13735                             ANT_LIB="$ANT_HOME/lib/ant"
13736                         else
13737                             if test -f /usr/share/lib/ant/ant.jar; then
13738                                 ANT_LIB=/usr/share/lib/ant
13739                             else
13740                                 AC_MSG_ERROR([Ant libraries not found!])
13741                             fi
13742                         fi
13743                     fi
13744                 fi
13745             fi
13746         fi
13747         PathFormat "$ANT_LIB"
13748         ANT_LIB="$formatted_path"
13749         AC_MSG_RESULT([Ant lib directory found.])
13750     fi
13752     ant_minver=1.6.0
13753     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13755     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13756     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13757     ant_version_major=`echo $ant_version | cut -d. -f1`
13758     ant_version_minor=`echo $ant_version | cut -d. -f2`
13759     echo "configure: ant_version $ant_version " >&5
13760     echo "configure: ant_version_major $ant_version_major " >&5
13761     echo "configure: ant_version_minor $ant_version_minor " >&5
13762     if test "$ant_version_major" -ge "2"; then
13763         AC_MSG_RESULT([yes, $ant_version])
13764     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13765         AC_MSG_RESULT([yes, $ant_version])
13766     else
13767         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13768     fi
13770     rm -f conftest* core core.* *.core
13772 AC_SUBST(ANT)
13773 AC_SUBST(ANT_HOME)
13774 AC_SUBST(ANT_LIB)
13776 OOO_JUNIT_JAR=
13777 HAMCREST_JAR=
13778 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13779     AC_MSG_CHECKING([for JUnit 4])
13780     if test "$with_junit" = "yes"; then
13781         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13782             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13783         elif test -e /usr/share/java/junit4.jar; then
13784             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13785         else
13786            if test -e /usr/share/lib/java/junit.jar; then
13787               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13788            else
13789               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13790            fi
13791         fi
13792     else
13793         OOO_JUNIT_JAR=$with_junit
13794     fi
13795     if test "$_os" = "WINNT"; then
13796         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13797     fi
13798     printf 'import org.junit.Before;' > conftest.java
13799     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13800         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13801     else
13802         AC_MSG_ERROR(
13803 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13804  specify its pathname via --with-junit=..., or disable it via --without-junit])
13805     fi
13806     rm -f conftest.class conftest.java
13807     if test $OOO_JUNIT_JAR != ""; then
13808         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13809     fi
13811     AC_MSG_CHECKING([for included Hamcrest])
13812     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13813     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13814         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13815     else
13816         AC_MSG_RESULT([Not included])
13817         AC_MSG_CHECKING([for standalone hamcrest jar.])
13818         if test "$with_hamcrest" = "yes"; then
13819             if test -e /usr/share/lib/java/hamcrest.jar; then
13820                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13821             elif test -e /usr/share/java/hamcrest/core.jar; then
13822                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13823             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13824                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13825             else
13826                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13827             fi
13828         else
13829             HAMCREST_JAR=$with_hamcrest
13830         fi
13831         if test "$_os" = "WINNT"; then
13832             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13833         fi
13834         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13835             AC_MSG_RESULT([$HAMCREST_JAR])
13836         else
13837             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),
13838                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13839         fi
13840     fi
13841     rm -f conftest.class conftest.java
13843 AC_SUBST(OOO_JUNIT_JAR)
13844 AC_SUBST(HAMCREST_JAR)
13847 AC_SUBST(SCPDEFS)
13850 # check for wget and curl
13852 WGET=
13853 CURL=
13855 if test "$enable_fetch_external" != "no"; then
13857 CURL=`which curl 2>/dev/null`
13859 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13860     # wget new enough?
13861     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13862     if test $? -eq 0; then
13863         WGET=$i
13864         break
13865     fi
13866 done
13868 if test -z "$WGET" -a -z "$CURL"; then
13869     AC_MSG_ERROR([neither wget nor curl found!])
13874 AC_SUBST(WGET)
13875 AC_SUBST(CURL)
13878 # check for sha256sum
13880 SHA256SUM=
13882 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13883     eval "$i -a 256 --version" > /dev/null 2>&1
13884     ret=$?
13885     if test $ret -eq 0; then
13886         SHA256SUM="$i -a 256"
13887         break
13888     fi
13889 done
13891 if test -z "$SHA256SUM"; then
13892     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13893         eval "$i --version" > /dev/null 2>&1
13894         ret=$?
13895         if test $ret -eq 0; then
13896             SHA256SUM=$i
13897             break
13898         fi
13899     done
13902 if test -z "$SHA256SUM"; then
13903     AC_MSG_ERROR([no sha256sum found!])
13906 AC_SUBST(SHA256SUM)
13908 dnl ===================================================================
13909 dnl Dealing with l10n options
13910 dnl ===================================================================
13911 AC_MSG_CHECKING([which languages to be built])
13912 # get list of all languages
13913 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13914 # the sed command does the following:
13915 #   + if a line ends with a backslash, append the next line to it
13916 #   + adds " on the beginning of the value (after =)
13917 #   + adds " at the end of the value
13918 #   + removes en-US; we want to put it on the beginning
13919 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13920 [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)]
13921 ALL_LANGS="en-US $completelangiso"
13922 # check the configured localizations
13923 WITH_LANG="$with_lang"
13925 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13926 # (Norwegian is "nb" and "nn".)
13927 if test "$WITH_LANG" = "no"; then
13928     WITH_LANG=
13931 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13932     AC_MSG_RESULT([en-US])
13933 else
13934     AC_MSG_RESULT([$WITH_LANG])
13935     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13936     if test -z "$MSGFMT"; then
13937         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13938             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13939         elif test -x "/opt/lo/bin/msgfmt"; then
13940             MSGFMT="/opt/lo/bin/msgfmt"
13941         else
13942             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13943             if test -z "$MSGFMT"; then
13944                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13945             fi
13946         fi
13947     fi
13948     if test -z "$MSGUNIQ"; then
13949         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13950             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13951         elif test -x "/opt/lo/bin/msguniq"; then
13952             MSGUNIQ="/opt/lo/bin/msguniq"
13953         else
13954             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13955             if test -z "$MSGUNIQ"; then
13956                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13957             fi
13958         fi
13959     fi
13961 AC_SUBST(MSGFMT)
13962 AC_SUBST(MSGUNIQ)
13963 # check that the list is valid
13964 for lang in $WITH_LANG; do
13965     test "$lang" = "ALL" && continue
13966     # need to check for the exact string, so add space before and after the list of all languages
13967     for vl in $ALL_LANGS; do
13968         if test "$vl" = "$lang"; then
13969            break
13970         fi
13971     done
13972     if test "$vl" != "$lang"; then
13973         # if you're reading this - you prolly quoted your languages remove the quotes ...
13974         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13975     fi
13976 done
13977 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13978     echo $WITH_LANG | grep -q en-US
13979     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13981 # list with substituted ALL
13982 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13983 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13984 test "$WITH_LANG" = "en-US" && WITH_LANG=
13985 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13986     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13987     ALL_LANGS=`echo $ALL_LANGS qtz`
13989 AC_SUBST(ALL_LANGS)
13990 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13991 AC_SUBST(WITH_LANG)
13992 AC_SUBST(WITH_LANG_LIST)
13993 AC_SUBST(GIT_NEEDED_SUBMODULES)
13995 WITH_POOR_HELP_LOCALIZATIONS=
13996 if test -d "$SRC_ROOT/translations/source"; then
13997     for l in `ls -1 $SRC_ROOT/translations/source`; do
13998         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13999             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14000         fi
14001     done
14003 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14005 if test -n "$with_locales" -a "$with_locales" != ALL; then
14006     WITH_LOCALES="$with_locales"
14008     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14009     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14010     # config_host/config_locales.h.in
14011     for locale in $WITH_LOCALES; do
14012         lang=${locale%_*}
14014         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14016         case $lang in
14017         hi|mr*ne)
14018             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14019             ;;
14020         bg|ru)
14021             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14022             ;;
14023         esac
14024     done
14025 else
14026     AC_DEFINE(WITH_LOCALE_ALL)
14028 AC_SUBST(WITH_LOCALES)
14030 dnl git submodule update --reference
14031 dnl ===================================================================
14032 if test -n "${GIT_REFERENCE_SRC}"; then
14033     for repo in ${GIT_NEEDED_SUBMODULES}; do
14034         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14035             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14036         fi
14037     done
14039 AC_SUBST(GIT_REFERENCE_SRC)
14041 dnl git submodules linked dirs
14042 dnl ===================================================================
14043 if test -n "${GIT_LINK_SRC}"; then
14044     for repo in ${GIT_NEEDED_SUBMODULES}; do
14045         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14046             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14047         fi
14048     done
14050 AC_SUBST(GIT_LINK_SRC)
14052 dnl branding
14053 dnl ===================================================================
14054 AC_MSG_CHECKING([for alternative branding images directory])
14055 # initialize mapped arrays
14056 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14057 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14059 if test -z "$with_branding" -o "$with_branding" = "no"; then
14060     AC_MSG_RESULT([none])
14061     DEFAULT_BRAND_IMAGES="$brand_files"
14062 else
14063     if ! test -d $with_branding ; then
14064         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14065     else
14066         AC_MSG_RESULT([$with_branding])
14067         CUSTOM_BRAND_DIR="$with_branding"
14068         for lfile in $brand_files
14069         do
14070             if ! test -f $with_branding/$lfile ; then
14071                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14072                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14073             else
14074                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14075             fi
14076         done
14077         check_for_progress="yes"
14078     fi
14080 AC_SUBST([BRAND_INTRO_IMAGES])
14081 AC_SUBST([CUSTOM_BRAND_DIR])
14082 AC_SUBST([CUSTOM_BRAND_IMAGES])
14083 AC_SUBST([DEFAULT_BRAND_IMAGES])
14086 AC_MSG_CHECKING([for 'intro' progress settings])
14087 PROGRESSBARCOLOR=
14088 PROGRESSSIZE=
14089 PROGRESSPOSITION=
14090 PROGRESSFRAMECOLOR=
14091 PROGRESSTEXTCOLOR=
14092 PROGRESSTEXTBASELINE=
14094 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14095     source "$with_branding/progress.conf"
14096     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14097 else
14098     AC_MSG_RESULT([none])
14101 AC_SUBST(PROGRESSBARCOLOR)
14102 AC_SUBST(PROGRESSSIZE)
14103 AC_SUBST(PROGRESSPOSITION)
14104 AC_SUBST(PROGRESSFRAMECOLOR)
14105 AC_SUBST(PROGRESSTEXTCOLOR)
14106 AC_SUBST(PROGRESSTEXTBASELINE)
14109 dnl ===================================================================
14110 dnl Custom build version
14111 dnl ===================================================================
14112 AC_MSG_CHECKING([for extra build ID])
14113 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14114     EXTRA_BUILDID="$with_extra_buildid"
14116 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14117 if test -n "$EXTRA_BUILDID" ; then
14118     AC_MSG_RESULT([$EXTRA_BUILDID])
14119 else
14120     AC_MSG_RESULT([not set])
14122 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14124 OOO_VENDOR=
14125 AC_MSG_CHECKING([for vendor])
14126 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14127     OOO_VENDOR="$USERNAME"
14129     if test -z "$OOO_VENDOR"; then
14130         OOO_VENDOR="$USER"
14131     fi
14133     if test -z "$OOO_VENDOR"; then
14134         OOO_VENDOR="`id -u -n`"
14135     fi
14137     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14138 else
14139     OOO_VENDOR="$with_vendor"
14140     AC_MSG_RESULT([$OOO_VENDOR])
14142 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14143 AC_SUBST(OOO_VENDOR)
14145 if test "$_os" = "Android" ; then
14146     ANDROID_PACKAGE_NAME=
14147     AC_MSG_CHECKING([for Android package name])
14148     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14149         if test -n "$ENABLE_DEBUG"; then
14150             # Default to the package name that makes ndk-gdb happy.
14151             ANDROID_PACKAGE_NAME="org.libreoffice"
14152         else
14153             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14154         fi
14156         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14157     else
14158         ANDROID_PACKAGE_NAME="$with_android_package_name"
14159         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14160     fi
14161     AC_SUBST(ANDROID_PACKAGE_NAME)
14164 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14165 if test "$with_compat_oowrappers" = "yes"; then
14166     WITH_COMPAT_OOWRAPPERS=TRUE
14167     AC_MSG_RESULT(yes)
14168 else
14169     WITH_COMPAT_OOWRAPPERS=
14170     AC_MSG_RESULT(no)
14172 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14174 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14175 AC_MSG_CHECKING([for install dirname])
14176 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14177     INSTALLDIRNAME="$with_install_dirname"
14179 AC_MSG_RESULT([$INSTALLDIRNAME])
14180 AC_SUBST(INSTALLDIRNAME)
14182 AC_MSG_CHECKING([for prefix])
14183 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14184 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14185 PREFIXDIR="$prefix"
14186 AC_MSG_RESULT([$PREFIXDIR])
14187 AC_SUBST(PREFIXDIR)
14189 LIBDIR=[$(eval echo $(eval echo $libdir))]
14190 AC_SUBST(LIBDIR)
14192 DATADIR=[$(eval echo $(eval echo $datadir))]
14193 AC_SUBST(DATADIR)
14195 MANDIR=[$(eval echo $(eval echo $mandir))]
14196 AC_SUBST(MANDIR)
14198 DOCDIR=[$(eval echo $(eval echo $docdir))]
14199 AC_SUBST(DOCDIR)
14201 BINDIR=[$(eval echo $(eval echo $bindir))]
14202 AC_SUBST(BINDIR)
14204 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14205 AC_SUBST(INSTALLDIR)
14207 TESTINSTALLDIR="${BUILDDIR}/test-install"
14208 AC_SUBST(TESTINSTALLDIR)
14211 # ===================================================================
14212 # OAuth2 id and secrets
14213 # ===================================================================
14215 AC_MSG_CHECKING([for Google Drive client id and secret])
14216 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14217     AC_MSG_RESULT([not set])
14218     GDRIVE_CLIENT_ID="\"\""
14219     GDRIVE_CLIENT_SECRET="\"\""
14220 else
14221     AC_MSG_RESULT([set])
14222     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14223     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14225 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14226 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14228 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14229 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14230     AC_MSG_RESULT([not set])
14231     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14232     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14233 else
14234     AC_MSG_RESULT([set])
14235     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14236     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14238 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14239 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14241 AC_MSG_CHECKING([for OneDrive client id and secret])
14242 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14243     AC_MSG_RESULT([not set])
14244     ONEDRIVE_CLIENT_ID="\"\""
14245     ONEDRIVE_CLIENT_SECRET="\"\""
14246 else
14247     AC_MSG_RESULT([set])
14248     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14249     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14251 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14252 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14255 dnl ===================================================================
14256 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14257 dnl --enable-dependency-tracking configure option
14258 dnl ===================================================================
14259 AC_MSG_CHECKING([whether to enable dependency tracking])
14260 if test "$enable_dependency_tracking" = "no"; then
14261     nodep=TRUE
14262     AC_MSG_RESULT([no])
14263 else
14264     AC_MSG_RESULT([yes])
14266 AC_SUBST(nodep)
14268 dnl ===================================================================
14269 dnl Number of CPUs to use during the build
14270 dnl ===================================================================
14271 AC_MSG_CHECKING([for number of processors to use])
14272 # plain --with-parallelism is just the default
14273 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14274     if test "$with_parallelism" = "no"; then
14275         PARALLELISM=0
14276     else
14277         PARALLELISM=$with_parallelism
14278     fi
14279 else
14280     if test "$enable_icecream" = "yes"; then
14281         PARALLELISM="40"
14282     else
14283         case `uname -s` in
14285         Darwin|FreeBSD|NetBSD|OpenBSD)
14286             PARALLELISM=`sysctl -n hw.ncpu`
14287             ;;
14289         Linux)
14290             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14291         ;;
14292         # what else than above does profit here *and* has /proc?
14293         *)
14294             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14295             ;;
14296         esac
14298         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14299         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14300     fi
14303 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14304     if test -z "$with_parallelism"; then
14305             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14306             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14307             PARALLELISM="1"
14308     else
14309         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."
14310     fi
14313 if test $PARALLELISM -eq 0; then
14314     AC_MSG_RESULT([explicit make -j option needed])
14315 else
14316     AC_MSG_RESULT([$PARALLELISM])
14318 AC_SUBST(PARALLELISM)
14320 IWYU_PATH="$with_iwyu"
14321 AC_SUBST(IWYU_PATH)
14322 if test ! -z "$IWYU_PATH"; then
14323     if test ! -f "$IWYU_PATH"; then
14324         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14325     fi
14329 # Set up ILIB for MSVC build
14331 ILIB1=
14332 if test "$build_os" = "cygwin"; then
14333     ILIB="."
14334     if test -n "$JAVA_HOME"; then
14335         ILIB="$ILIB;$JAVA_HOME/lib"
14336     fi
14337     ILIB1=-link
14338     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14339     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14340     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14341     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14342     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14343         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14344         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14345     fi
14346     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14347     ucrtlibpath_formatted=$formatted_path
14348     ILIB="$ILIB;$ucrtlibpath_formatted"
14349     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14350     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14351         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14352     else
14353         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14354     fi
14356     if test "$cross_compiling" != "yes"; then
14357         ILIB_FOR_BUILD="$ILIB"
14358     fi
14360 AC_SUBST(ILIB)
14361 AC_SUBST(ILIB_FOR_BUILD)
14363 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14364 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14365 dnl from consteval constructor initializing const variable",
14366 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14367 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14368 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14369 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14370 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14371 dnl constructor in ternary expression (/std:c++latest)", or
14372 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14373 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14374 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14375 dnl && "Ptr must be a pointer to Val type!"' failed.":
14376 AC_LANG_PUSH([C++])
14377 save_CXX=$CXX
14378 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14379     CXX="env LIB=$ILIB $CXX"
14381 save_CXXFLAGS=$CXXFLAGS
14382 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14383 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14384         struct S {
14385             consteval S() { i = 1; }
14386             int i = 0;
14387         };
14388         S const s;
14390         struct S1 { consteval S1(int) {} };
14391         struct S2 {
14392             S1 x;
14393             S2(): x(0) {}
14394         };
14396         struct S3 {
14397             consteval S3() {}
14398             union {
14399                 int a;
14400                 unsigned b = 0;
14401             };
14402         };
14403         void f() { S3(); }
14405         struct S4 { consteval S4() = default; };
14406         void f4(bool b) { b ? S4() : S4(); }
14408         struct S5 {
14409             consteval S5() { c = 0; }
14410             char * f() { return &c; }
14411             union {
14412                 char c;
14413                 int i;
14414             };
14415         };
14416         auto s5 = S5().f();
14417     ], [
14418         return (s.i == 1) ? 0 : 1;
14419     ])], [
14420         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14421         AC_MSG_RESULT([yes])
14422     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14423 CXX=$save_CXX
14424 CXXFLAGS=$save_CXXFLAGS
14425 AC_LANG_POP([C++])
14427 # ===================================================================
14428 # Creating bigger shared library to link against
14429 # ===================================================================
14430 AC_MSG_CHECKING([whether to create huge library])
14431 MERGELIBS=
14433 if test $_os = iOS -o $_os = Android; then
14434     # Never any point in mergelibs for these as we build just static
14435     # libraries anyway...
14436     enable_mergelibs=no
14439 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14440     if test $_os != Linux -a $_os != WINNT; then
14441         add_warning "--enable-mergelibs is not tested for this platform"
14442     fi
14443     MERGELIBS="TRUE"
14444     AC_MSG_RESULT([yes])
14445     AC_DEFINE(ENABLE_MERGELIBS)
14446 else
14447     AC_MSG_RESULT([no])
14449 AC_SUBST([MERGELIBS])
14451 dnl ===================================================================
14452 dnl icerun is a wrapper that stops us spawning tens of processes
14453 dnl locally - for tools that can't be executed on the compile cluster
14454 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14455 dnl ===================================================================
14456 AC_MSG_CHECKING([whether to use icerun wrapper])
14457 ICECREAM_RUN=
14458 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14459     ICECREAM_RUN=icerun
14460     AC_MSG_RESULT([yes])
14461 else
14462     AC_MSG_RESULT([no])
14464 AC_SUBST(ICECREAM_RUN)
14466 dnl ===================================================================
14467 dnl Setup the ICECC_VERSION for the build the same way it was set for
14468 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14469 dnl ===================================================================
14470 x_ICECC_VERSION=[\#]
14471 if test -n "$ICECC_VERSION" ; then
14472     x_ICECC_VERSION=
14474 AC_SUBST(x_ICECC_VERSION)
14475 AC_SUBST(ICECC_VERSION)
14477 dnl ===================================================================
14479 AC_MSG_CHECKING([MPL subset])
14480 MPL_SUBSET=
14482 if test "$enable_mpl_subset" = "yes"; then
14483     warn_report=false
14484     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14485         warn_report=true
14486     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14487         warn_report=true
14488     fi
14489     if test "$warn_report" = "true"; then
14490         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14491     fi
14492     if test "x$enable_postgresql_sdbc" != "xno"; then
14493         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14494     fi
14495     if test "$enable_lotuswordpro" = "yes"; then
14496         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14497     fi
14498     if test -n "$ENABLE_POPPLER"; then
14499         if test "x$SYSTEM_POPPLER" = "x"; then
14500             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14501         fi
14502     fi
14503     # cf. m4/libo_check_extension.m4
14504     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14505         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14506     fi
14507     for theme in $WITH_THEMES; do
14508         case $theme in
14509         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14510             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14511         *) : ;;
14512         esac
14513     done
14515     ENABLE_OPENGL_TRANSITIONS=
14517     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14518         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14519     fi
14521     MPL_SUBSET="TRUE"
14522     AC_DEFINE(MPL_HAVE_SUBSET)
14523     AC_MSG_RESULT([only])
14524 else
14525     AC_MSG_RESULT([no restrictions])
14527 AC_SUBST(MPL_SUBSET)
14529 dnl ===================================================================
14531 AC_MSG_CHECKING([formula logger])
14532 ENABLE_FORMULA_LOGGER=
14534 if test "x$enable_formula_logger" = "xyes"; then
14535     AC_MSG_RESULT([yes])
14536     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14537     ENABLE_FORMULA_LOGGER=TRUE
14538 elif test -n "$ENABLE_DBGUTIL" ; then
14539     AC_MSG_RESULT([yes])
14540     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14541     ENABLE_FORMULA_LOGGER=TRUE
14542 else
14543     AC_MSG_RESULT([no])
14546 AC_SUBST(ENABLE_FORMULA_LOGGER)
14548 dnl ===================================================================
14549 dnl Checking for active Antivirus software.
14550 dnl ===================================================================
14552 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14553     AC_MSG_CHECKING([for active Antivirus software])
14554     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14555     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14556         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14557             AC_MSG_RESULT([found])
14558             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14559             echo $EICAR_STRING > $SRC_ROOT/eicar
14560             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14561             rm $SRC_ROOT/eicar
14562             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14563                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14564             fi
14565             echo $EICAR_STRING > $BUILDDIR/eicar
14566             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14567             rm $BUILDDIR/eicar
14568             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14569                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14570             fi
14571             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"
14572         else
14573             AC_MSG_RESULT([not found])
14574         fi
14575     else
14576         AC_MSG_RESULT([n/a])
14577     fi
14580 dnl ===================================================================
14581 dnl Setting up the environment.
14582 dnl ===================================================================
14583 AC_MSG_NOTICE([setting up the build environment variables...])
14585 AC_SUBST(COMPATH)
14587 if test "$build_os" = "cygwin"; then
14588     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14589         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14590         ATL_INCLUDE="$COMPATH/atlmfc/include"
14591     elif test -d "$COMPATH/atlmfc/lib"; then
14592         ATL_LIB="$COMPATH/atlmfc/lib"
14593         ATL_INCLUDE="$COMPATH/atlmfc/include"
14594     else
14595         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14596         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14597     fi
14598     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14599     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14600     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14602     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14603     PathFormat "/usr/bin/find.exe"
14604     FIND="$formatted_path"
14605     PathFormat "/usr/bin/sort.exe"
14606     SORT="$formatted_path"
14607     PathFormat "/usr/bin/grep.exe"
14608     WIN_GREP="$formatted_path"
14609     PathFormat "/usr/bin/ls.exe"
14610     WIN_LS="$formatted_path"
14611     PathFormat "/usr/bin/touch.exe"
14612     WIN_TOUCH="$formatted_path"
14613 else
14614     FIND=find
14615     SORT=sort
14618 AC_SUBST(ATL_INCLUDE)
14619 AC_SUBST(ATL_LIB)
14620 AC_SUBST(FIND)
14621 AC_SUBST(SORT)
14622 AC_SUBST(WIN_GREP)
14623 AC_SUBST(WIN_LS)
14624 AC_SUBST(WIN_TOUCH)
14626 AC_SUBST(BUILD_TYPE)
14628 AC_SUBST(SOLARINC)
14630 PathFormat "$PERL"
14631 PERL="$formatted_path"
14632 AC_SUBST(PERL)
14634 if test -n "$TMPDIR"; then
14635     TEMP_DIRECTORY="$TMPDIR"
14636 else
14637     TEMP_DIRECTORY="/tmp"
14639 if test "$build_os" = "cygwin"; then
14640     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14642 AC_SUBST(TEMP_DIRECTORY)
14644 # setup the PATH for the environment
14645 if test -n "$LO_PATH_FOR_BUILD"; then
14646     LO_PATH="$LO_PATH_FOR_BUILD"
14647     case "$host_os" in
14648     cygwin*|wsl*)
14649         pathmunge "$MSVC_HOST_PATH" "before"
14650         ;;
14651     esac
14652 else
14653     LO_PATH="$PATH"
14655     case "$host_os" in
14657     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14658         if test "$ENABLE_JAVA" != ""; then
14659             pathmunge "$JAVA_HOME/bin" "after"
14660         fi
14661         ;;
14663     cygwin*|wsl*)
14664         # Win32 make needs native paths
14665         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14666             LO_PATH=`cygpath -p -m "$PATH"`
14667         fi
14668         if test "$WIN_BUILD_ARCH" = "x64"; then
14669             # needed for msi packaging
14670             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14671         fi
14672         # .NET 4.6 and higher don't have bin directory
14673         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14674             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14675         fi
14676         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14677         pathmunge "$CSC_PATH" "before"
14678         pathmunge "$MIDL_PATH" "before"
14679         pathmunge "$AL_PATH" "before"
14680         pathmunge "$MSVC_MULTI_PATH" "before"
14681         pathmunge "$MSVC_BUILD_PATH" "before"
14682         if test -n "$MSBUILD_PATH" ; then
14683             pathmunge "$MSBUILD_PATH" "before"
14684         fi
14685         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14686         if test "$ENABLE_JAVA" != ""; then
14687             if test -d "$JAVA_HOME/jre/bin/client"; then
14688                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14689             fi
14690             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14691                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14692             fi
14693             pathmunge "$JAVA_HOME/bin" "before"
14694         fi
14695         pathmunge "$MSVC_HOST_PATH" "before"
14696         ;;
14698     solaris*)
14699         pathmunge "/usr/css/bin" "before"
14700         if test "$ENABLE_JAVA" != ""; then
14701             pathmunge "$JAVA_HOME/bin" "after"
14702         fi
14703         ;;
14704     esac
14707 AC_SUBST(LO_PATH)
14709 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14710 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14711     x_LO_ELFCHECK_ALLOWLIST=
14712 else
14713     x_LO_ELFCHECK_ALLOWLIST=[\#]
14715 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14716 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14718 libo_FUZZ_SUMMARY
14720 # Generate a configuration sha256 we can use for deps
14721 if test -f config_host.mk; then
14722     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14724 if test -f config_host_lang.mk; then
14725     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14728 CFLAGS=$my_original_CFLAGS
14729 CXXFLAGS=$my_original_CXXFLAGS
14730 CPPFLAGS=$my_original_CPPFLAGS
14732 AC_CONFIG_LINKS([include:include])
14734 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14735 # BUILD platform configuration] - otherwise breaks cross building
14736 AC_CONFIG_FILES([config_host.mk
14737                  config_host_lang.mk
14738                  Makefile
14739                  bin/bffvalidator.sh
14740                  bin/odfvalidator.sh
14741                  bin/officeotron.sh
14742                  hardened_runtime.xcent
14743                  instsetoo_native/util/openoffice.lst
14744                  sysui/desktop/macosx/Info.plist
14745                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14746 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14747 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14748 AC_CONFIG_HEADERS([config_host/config_clang.h])
14749 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14750 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14751 AC_CONFIG_HEADERS([config_host/config_eot.h])
14752 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14753 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14754 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14755 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14756 AC_CONFIG_HEADERS([config_host/config_features.h])
14757 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14758 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14759 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14760 AC_CONFIG_HEADERS([config_host/config_folders.h])
14761 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14762 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14763 AC_CONFIG_HEADERS([config_host/config_gio.h])
14764 AC_CONFIG_HEADERS([config_host/config_global.h])
14765 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14766 AC_CONFIG_HEADERS([config_host/config_java.h])
14767 AC_CONFIG_HEADERS([config_host/config_langs.h])
14768 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14769 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14770 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14771 AC_CONFIG_HEADERS([config_host/config_locales.h])
14772 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14773 AC_CONFIG_HEADERS([config_host/config_oox.h])
14774 AC_CONFIG_HEADERS([config_host/config_options.h])
14775 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14776 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14777 AC_CONFIG_HEADERS([config_host/config_skia.h])
14778 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14779 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14780 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14781 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14782 AC_CONFIG_HEADERS([config_host/config_version.h])
14783 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14784 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14785 AC_CONFIG_HEADERS([config_host/config_python.h])
14786 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14787 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14788 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14789 AC_OUTPUT
14791 if test "$CROSS_COMPILING" = TRUE; then
14792     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14795 # touch the config timestamp file
14796 if test ! -f config_host.mk.stamp; then
14797     echo > config_host.mk.stamp
14798 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14799     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14800 else
14801     echo > config_host.mk.stamp
14804 # touch the config lang timestamp file
14805 if test ! -f config_host_lang.mk.stamp; then
14806     echo > config_host_lang.mk.stamp
14807 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14808     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14809 else
14810     echo > config_host_lang.mk.stamp
14814 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14815         -a "$build_os" = "cygwin"; then
14817 cat << _EOS
14818 ****************************************************************************
14819 WARNING:
14820 Your make version is known to be horribly slow, and hard to debug
14821 problems with. To get a reasonably functional make please do:
14823 to install a pre-compiled binary make for Win32
14825  mkdir -p /opt/lo/bin
14826  cd /opt/lo/bin
14827  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14828  cp make-4.2.1-msvc.exe make
14829  chmod +x make
14831 to install from source:
14832 place yourself in a working directory of you choice.
14834  git clone git://git.savannah.gnu.org/make.git
14836  [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"]
14837  set PATH=%PATH%;C:\Cygwin\bin
14838  [or Cygwin64, if that is what you have]
14839  cd path-to-make-repo-you-cloned-above
14840  build_w32.bat --without-guile
14842 should result in a WinRel/gnumake.exe.
14843 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14845 Then re-run autogen.sh
14847 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14848 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14850 _EOS
14851 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14852     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14857 cat << _EOF
14858 ****************************************************************************
14860 To show information on various make targets and make flags, run:
14861 $GNUMAKE help
14863 To just build, run:
14864 $GNUMAKE
14866 _EOF
14868 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14869     cat << _EOF
14870 After the build has finished successfully, you can immediately run what you built using the command:
14871 _EOF
14873     if test $_os = Darwin; then
14874         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14875     else
14876         echo instdir/program/soffice
14877     fi
14878     cat << _EOF
14880 If you want to run the unit tests, run:
14881 $GNUMAKE check
14883 _EOF
14886 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14887     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14888     cat "$WARNINGS_FILE_FOR_BUILD"
14889     echo
14892 if test -s "$WARNINGS_FILE"; then
14893     echo "HOST config ($WARNINGS_FILE)"
14894     cat "$WARNINGS_FILE"
14897 # Remove unneeded emconfigure artifacts
14898 rm -f a.out a.wasm a.out.js a.out.wasm
14900 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: