Update git submodules
[LibreOffice.git] / configure.ac
blob66e113ddcd7d7f8b9c39e14ab1d83c590bf6c933
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],[24.8.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     if test "$COM" = "MSC"; then
50         for f in $1; do
51             if test "x$f" != "x${f#-L}"; then
52                 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53             elif test "x$f" != "x${f#-l}"; then
54                 filteredlibs="$filteredlibs ${f:2}.lib"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
62                 # let's start with Fedora's paths for now
63                 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64                     # ignore it: on UNIXoids it is searched by default anyway
65                     # but if it's given explicitly then it may override other paths
66                     # (on macOS it would be an error to use it instead of SDK)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
78     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79     # function is called also on Unix.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
83     # $formatted_path is the argument in Windows format, but using forward slashes instead of
84     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85     # or shell metacharacters).
86     #
87     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
101     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$1"
114     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115         if test "$build_os" = "wsl"; then
116             formatted_path=$(echo "$formatted_path" | tr -d '\r')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
134                 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136                 formatted_path=`cygpath -sm "$formatted_path"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
144         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146         if test "$fp_count_slash$fp_count_colon" != "00"; then
147             if test "$fp_count_colon" = "0"; then
148                 new_formatted_path=`realpath "$formatted_path"`
149                 if test $? -ne 0;  then
150                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
182         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183         if test "$fp_count_space" != "0"; then
184             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
185         fi
186     fi
187     if test "$build_os" = "wsl"; then
188         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189         formatted_path_unix=$(wslpath "$formatted_path")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
198     # There appears to be no simple and portable method to get an absolute and
199     # canonical path, so we try creating the directory if does not exist and
200     # utilizing the shell and pwd.
202     # Args: $1: A possibly relative pathname
203     # Return value: $absolute_path
205     # Convert to unix path, mkdir would treat c:/path as a relative path.
206     PathFormat "$1"
207     local rel="$formatted_path_unix"
208     absolute_path=""
209     test ! -e "$rel" && mkdir -p "$rel"
210     if test -d "$rel" ; then
211         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212         absolute_path="$(pwd)"
213         cd - > /dev/null
214     else
215         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
216     fi
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
222 have_WARNINGS="no"
223 add_warning()
225     if test "$have_WARNINGS" = "no"; then
226         echo "*************************************" > "$WARNINGS_FILE"
227         have_WARNINGS="yes"
228         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
231         else
232             COLORWARN="* WARNING :"
233         fi
234     fi
235     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
242 dnl from themselves
244 mac_sanitize_path()
246     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249     mac_git_path=`which git 2>/dev/null`
250     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251         mac_path="$mac_path:`dirname $mac_git_path`"
252     fi
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255     mac_gpg_path=`which gpg 2>/dev/null`
256     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257         mac_path="$mac_path:`dirname $mac_gpg_path`"
258     fi
259     PATH="$mac_path"
260     unset mac_path
261     unset mac_git_path
262     unset mac_gpg_path
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
271     test "$4" -gt "$1" \
272         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
274     return $?
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284     eval local MIN_MINOR="\$${1}_${2}_MINOR"
285     eval local MIN_TINY="\$${1}_${2}_TINY"
286     eval local CUR_MAJOR="\$${1}_MAJOR"
287     eval local CUR_MINOR="\$${1}_MINOR"
288     eval local CUR_TINY="\$${1}_TINY"
289     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
290     return $?
293 echo "********************************************************************"
294 echo "*"
295 echo "*   Running ${PACKAGE_NAME} build configuration."
296 echo "*"
297 echo "********************************************************************"
298 echo ""
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308     ac_cv_host="x86_64-pc-wsl"
309     ac_cv_host_cpu="x86_64"
310     ac_cv_host_os="wsl"
311     ac_cv_build="$ac_cv_host"
312     ac_cv_build_cpu="$ac_cv_host_cpu"
313     ac_cv_build_os="$ac_cv_host_os"
315     # Emulation of Cygwin's cygpath command for WSL.
316     cygpath()
317     {
318         if test -n "$UNITTEST_WSL_CYGPATH"; then
319             echo -n cygpath "$@" "==> "
320         fi
322         # Cygwin's real cygpath has a plethora of options but we use only a few here.
323         local args="$@"
324         local opt
325         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
326         OPTIND=1
328         while getopts dmuwlsp opt; do
329             case "$opt" in
330                 \?)
331                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
332                     ;;
333                 ?)
334                     eval opt_$opt=yes
335                     ;;
336             esac
337         done
339         shift $((OPTIND-1))
341         if test $# -ne 1; then
342             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
343         fi
345         local input="$1"
347         local result
349         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352             if test -n "$opt_u"; then
353                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
354             fi
356             case "$input" in
357                 /mnt/*)
358                     # A Windows file in WSL format
359                     input=$(wslpath -w "$input")
360                     ;;
361                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362                     # Already in Windows format
363                     ;;
364                 /*)
365                     input=$(wslpath -w "$input")
366                     ;;
367                 *)
368                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
369                     ;;
370             esac
371             if test -n "$opt_d" -o -n "$opt_s"; then
372                 input=$($WSL_LO_HELPER --8.3 "$input")
373             fi
374             if test -n "$opt_m"; then
375                 input="${input//\\//}"
376             fi
377             echo "$input"
378         else
379             # Print Unix path
381             case "$input" in
382                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
383                     wslpath -u "$input"
384                     ;;
385                 /)
386                     echo "$input"
387                     ;;
388                 *)
389                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
390                     ;;
391             esac
392         fi
393     }
395     if test -n "$UNITTEST_WSL_CYGPATH"; then
396         BUILDDIR=.
398         # Nothing special with these file names, just arbitrary ones picked to test with
399         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403         # At least on my machine for instance this file does have an 8.3 name
404         cygpath -d /mnt/c/windows/WindowsUpdate.log
405         # But for instance this one doesn't
406         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407         cygpath -ws /mnt/c/windows/WindowsUpdate.log
408         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409         cygpath -ms /mnt/c/windows/WindowsUpdate.log
411         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
414         exit 0
415     fi
417     if test -z "$WSL_LO_HELPER"; then
418         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419             WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420         elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421             WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
422         fi
423     fi
424     if test -z "$WSL_LO_HELPER"; then
425         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
426     fi
429 AC_CANONICAL_HOST
430 AC_CANONICAL_BUILD
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
433     BUILDDIR=.
434     GREP=grep
436     # Use of PathFormat must be after AC_CANONICAL_BUILD above
437     PathFormat /
438     printf "$formatted_path , $formatted_path_unix\n"
440     PathFormat $PWD
441     printf "$formatted_path , $formatted_path_unix\n"
443     PathFormat "$PROGRAMFILESX86"
444     printf "$formatted_path , $formatted_path_unix\n"
446     exit 0
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452     PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455     PRODUCTNAME="${PRODUCTNAME}Dev"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468     PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
503 else
504     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>&/dev/null`
523 LIBO_THIS_YEAR=${git_date:-2024}
524 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
526 dnl ===================================================================
527 dnl Product version
528 dnl ===================================================================
529 AC_MSG_CHECKING([for product version])
530 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
531 AC_MSG_RESULT([$PRODUCTVERSION])
532 AC_SUBST(PRODUCTVERSION)
534 AC_PROG_EGREP
535 # AC_PROG_EGREP doesn't set GREP on all systems as well
536 AC_PATH_PROG(GREP, grep)
538 BUILDDIR=`pwd`
539 cd $srcdir
540 SRC_ROOT=`pwd`
541 cd $BUILDDIR
542 x_Cygwin=[\#]
544 dnl ======================================
545 dnl Required GObject introspection version
546 dnl ======================================
547 INTROSPECTION_REQUIRED_VERSION=1.32.0
549 dnl ===================================================================
550 dnl Search all the common names for GNU Make
551 dnl ===================================================================
552 AC_MSG_CHECKING([for GNU Make])
554 # try to use our own make if it is available and GNUMAKE was not already defined
555 if test -z "$GNUMAKE"; then
556     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
557         GNUMAKE="$LODE_HOME/opt/bin/make"
558     elif test -x "/opt/lo/bin/make"; then
559         GNUMAKE="/opt/lo/bin/make"
560     fi
563 GNUMAKE_WIN_NATIVE=
564 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
565     if test -n "$a"; then
566         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
567         if test $? -eq 0;  then
568             if test "$build_os" = "cygwin"; then
569                 if test -n "$($a -v | grep 'Built for Windows')" ; then
570                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
571                     GNUMAKE_WIN_NATIVE="TRUE"
572                 else
573                     GNUMAKE=`which $a`
574                 fi
575             else
576                 GNUMAKE=`which $a`
577             fi
578             break
579         fi
580     fi
581 done
582 AC_MSG_RESULT($GNUMAKE)
583 if test -z "$GNUMAKE"; then
584     AC_MSG_ERROR([not found. install GNU Make.])
585 else
586     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
587         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
588     fi
591 win_short_path_for_make()
593     local short_path="$1"
594     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
595         cygpath -sm "$short_path"
596     else
597         cygpath -u "$(cygpath -d "$short_path")"
598     fi
602 if test "$build_os" = "cygwin"; then
603     PathFormat "$SRC_ROOT"
604     SRC_ROOT="$formatted_path"
605     PathFormat "$BUILDDIR"
606     BUILDDIR="$formatted_path"
607     x_Cygwin=
608     AC_MSG_CHECKING(for explicit COMSPEC)
609     if test -z "$COMSPEC"; then
610         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
611     else
612         AC_MSG_RESULT([found: $COMSPEC])
613     fi
616 AC_SUBST(SRC_ROOT)
617 AC_SUBST(BUILDDIR)
618 AC_SUBST(x_Cygwin)
619 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
620 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
621 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
623 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
624     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
627 # need sed in os checks...
628 AC_PATH_PROGS(SED, sed)
629 if test -z "$SED"; then
630     AC_MSG_ERROR([install sed to run this script])
633 # Set the ENABLE_LTO variable
634 # ===================================================================
635 AC_MSG_CHECKING([whether to use link-time optimization])
636 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
637     ENABLE_LTO="TRUE"
638     AC_MSG_RESULT([yes])
639 else
640     ENABLE_LTO=""
641     AC_MSG_RESULT([no])
643 AC_SUBST(ENABLE_LTO)
645 AC_ARG_ENABLE(fuzz-options,
646     AS_HELP_STRING([--enable-fuzz-options],
647         [Randomly enable or disable each of those configurable options
648          that are supposed to be freely selectable without interdependencies,
649          or where bad interaction from interdependencies is automatically avoided.])
652 dnl ===================================================================
653 dnl When building for Android, --with-android-ndk,
654 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
655 dnl mandatory
656 dnl ===================================================================
658 AC_ARG_WITH(android-ndk,
659     AS_HELP_STRING([--with-android-ndk],
660         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
663 AC_ARG_WITH(android-ndk-toolchain-version,
664     AS_HELP_STRING([--with-android-ndk-toolchain-version],
665         [Specify which toolchain version to use, of those present in the
666         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
667         with_android_ndk_toolchain_version=clang5.0)
669 AC_ARG_WITH(android-sdk,
670     AS_HELP_STRING([--with-android-sdk],
671         [Specify location of the Android SDK. Mandatory when building for Android.]),
674 AC_ARG_WITH(android-api-level,
675     AS_HELP_STRING([--with-android-api-level],
676         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
679 ANDROID_NDK_DIR=
680 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
681     with_android_ndk="$SRC_ROOT/external/android-ndk"
683 if test -n "$with_android_ndk"; then
684     eval ANDROID_NDK_DIR=$with_android_ndk
686     ANDROID_API_LEVEL=21
687     if test -n "$with_android_api_level" ; then
688         ANDROID_API_LEVEL="$with_android_api_level"
689     fi
691     if test $host_cpu = arm; then
692         LLVM_TRIPLE=armv7a-linux-androideabi
693         ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
694         ANDROID_APP_ABI=armeabi-v7a
695         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
696     elif test $host_cpu = aarch64; then
697         LLVM_TRIPLE=aarch64-linux-android
698         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
699         ANDROID_APP_ABI=arm64-v8a
700     elif test $host_cpu = x86_64; then
701         LLVM_TRIPLE=x86_64-linux-android
702         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
703         ANDROID_APP_ABI=x86_64
704     else
705         # host_cpu is something like "i386" or "i686" I guess, NDK uses
706         # "x86" in some contexts
707         LLVM_TRIPLE=i686-linux-android
708         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
709         ANDROID_APP_ABI=x86
710     fi
712     # Set up a lot of pre-canned defaults
714     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
715         if test ! -f $ANDROID_NDK_DIR/source.properties; then
716             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
717         fi
718         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
719     else
720         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
721     fi
722     if test -z "$ANDROID_NDK_VERSION";  then
723         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
724     fi
725     case $ANDROID_NDK_VERSION in
726     r9*|r10*)
727         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
728         ;;
729     11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
730         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
731         ;;
732     23.*|24.*|25.*)
733         ;;
734     *)
735         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
736         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
737         ;;
738     esac
740     case "$with_android_ndk_toolchain_version" in
741     clang5.0)
742         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
743         ;;
744     *)
745         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
746     esac
748     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
750     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
751     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
752     # manage to link the (app-specific) single huge .so that is built for the app in
753     # android/source/ if there is debug information in a significant part of the object files.
754     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
755     # all objects have been built with debug information.)
756     case $build_os in
757     linux-gnu*)
758         android_HOST_TAG=linux-x86_64
759         ;;
760     darwin*)
761         android_HOST_TAG=darwin-x86_64
762         ;;
763     *)
764         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
765         # ndk would also support windows and windows-x86_64
766         ;;
767     esac
768     ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
769     ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
771     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
772     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
773     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
774     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
775     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
777     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
778     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
779     if test "$ENABLE_LTO" = TRUE; then
780         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
781         # $CC and $CXX when building external libraries
782         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
783     fi
785     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
787     if test -z "$CC"; then
788         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
789         CC_BASE="clang"
790     fi
791     if test -z "$CXX"; then
792         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
793         CXX_BASE="clang++"
794     fi
796 AC_SUBST(ANDROID_NDK_DIR)
797 AC_SUBST(ANDROID_API_LEVEL)
798 AC_SUBST(ANDROID_APP_ABI)
799 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
800 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
801 AC_SUBST(ANDROID_TOOLCHAIN)
803 dnl ===================================================================
804 dnl --with-android-sdk
805 dnl ===================================================================
806 ANDROID_SDK_DIR=
807 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
808     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
810 if test -n "$with_android_sdk"; then
811     eval ANDROID_SDK_DIR=$with_android_sdk
812     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
814 AC_SUBST(ANDROID_SDK_DIR)
816 AC_ARG_ENABLE([android-lok],
817     AS_HELP_STRING([--enable-android-lok],
818         [The Android app from the android/ subdir needs several tweaks all
819          over the place that break the LOK when used in the Online-based
820          Android app.  This switch indicates that the intent of this build is
821          actually the Online-based, non-modified LOK.])
823 ENABLE_ANDROID_LOK=
824 if test -n "$ANDROID_NDK_DIR" ; then
825     if test "$enable_android_lok" = yes; then
826         ENABLE_ANDROID_LOK=TRUE
827         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
828         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
829     else
830         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
831     fi
833 AC_SUBST([ENABLE_ANDROID_LOK])
835 libo_FUZZ_ARG_ENABLE([android-editing],
836     AS_HELP_STRING([--enable-android-editing],
837         [Enable the experimental editing feature on Android.])
839 ENABLE_ANDROID_EDITING=
840 if test "$enable_android_editing" = yes; then
841     ENABLE_ANDROID_EDITING=TRUE
843 AC_SUBST([ENABLE_ANDROID_EDITING])
845 disable_database_connectivity_dependencies()
847     enable_evolution2=no
848     enable_firebird_sdbc=no
849     enable_mariadb_sdbc=no
850     enable_postgresql_sdbc=no
851     enable_report_builder=no
854 # ===================================================================
856 # Start initial platform setup
858 # The using_* variables reflect platform support and should not be
859 # changed after the "End initial platform setup" block.
860 # This is also true for most test_* variables.
861 # ===================================================================
862 build_crypto=yes
863 test_clucene=no
864 test_gdb_index=no
865 test_openldap=yes
866 test_split_debug=no
867 test_webdav=yes
868 usable_dlapi=yes
870 # There is currently just iOS not using salplug, so this explicitly enables it.
871 # must: using_freetype_fontconfig
872 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
873 # must: using_x11
875 # Default values, as such probably valid just for Linux, set
876 # differently below just for Mac OSX, but at least better than
877 # hardcoding these as we used to do. Much of this is duplicated also
878 # in solenv for old build system and for gbuild, ideally we should
879 # perhaps define stuff like this only here in configure.ac?
881 LINKFLAGSSHL="-shared"
882 PICSWITCH="-fpic"
883 DLLPOST=".so"
885 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
887 INSTROOTBASESUFFIX=
888 INSTROOTCONTENTSUFFIX=
889 SDKDIRNAME=sdk
891 HOST_PLATFORM="$host"
893 host_cpu_for_clang="$host_cpu"
895 case "$host_os" in
897 solaris*)
898     using_freetype_fontconfig=yes
899     using_x11=yes
900     build_skia=yes
901     _os=SunOS
903     dnl ===========================================================
904     dnl Check whether we're using Solaris 10 - SPARC or Intel.
905     dnl ===========================================================
906     AC_MSG_CHECKING([the Solaris operating system release])
907     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
908     if test "$_os_release" -lt "10"; then
909         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
910     else
911         AC_MSG_RESULT([ok ($_os_release)])
912     fi
914     dnl Check whether we're using a SPARC or i386 processor
915     AC_MSG_CHECKING([the processor type])
916     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
917         AC_MSG_RESULT([ok ($host_cpu)])
918     else
919         AC_MSG_ERROR([only SPARC and i386 processors are supported])
920     fi
921     ;;
923 linux-gnu*|k*bsd*-gnu*|linux-musl*)
924     using_freetype_fontconfig=yes
925     using_x11=yes
926     build_skia=yes
927     test_gdb_index=yes
928     test_split_debug=yes
929     if test "$enable_fuzzers" = yes; then
930         test_system_freetype=no
931     fi
932     _os=Linux
933     ;;
935 gnu)
936     using_freetype_fontconfig=yes
937     using_x11=no
938     _os=GNU
939      ;;
941 cygwin*|wsl*)
942     # When building on Windows normally with MSVC under Cygwin,
943     # configure thinks that the host platform (the platform the
944     # built code will run on) is Cygwin, even if it obviously is
945     # Windows, which in Autoconf terminology is called
946     # "mingw32". (Which is misleading as MinGW is the name of the
947     # tool-chain, not an operating system.)
949     # Somewhat confusing, yes. But this configure script doesn't
950     # look at $host etc that much, it mostly uses its own $_os
951     # variable, set here in this case statement.
953     using_freetype_fontconfig=no
954     using_x11=no
955     test_unix_dlapi=no
956     test_openldap=no
957     enable_pagein=no
958     build_skia=yes
959     _os=WINNT
961     DLLPOST=".dll"
962     LINKFLAGSNOUNDEFS=
964     if test "$host_cpu" = "aarch64"; then
965         build_skia=no
966         enable_gpgmepp=no
967         enable_coinmp=no
968         enable_firebird_sdbc=no
969     fi
970     ;;
972 darwin*) # macOS
973     using_freetype_fontconfig=no
974     using_x11=no
975     build_skia=yes
976     enable_pagein=no
977     if test -n "$LODE_HOME" ; then
978         mac_sanitize_path
979         AC_MSG_NOTICE([sanitized the PATH to $PATH])
980     fi
981     _os=Darwin
982     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
983     INSTROOTCONTENTSUFFIX=/Contents
984     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
985     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
986     LINKFLAGSSHL="-dynamiclib"
988     # -fPIC is default
989     PICSWITCH=""
991     DLLPOST=".dylib"
993     # -undefined error is the default
994     LINKFLAGSNOUNDEFS=""
995     case "$host_cpu" in
996     aarch64|arm64)
997         # Apple's Clang uses "arm64"
998         host_cpu_for_clang=arm64
999     esac
1002 ios*) # iOS
1003     using_freetype_fontconfig=no
1004     using_x11=no
1005     build_crypto=no
1006     test_libcmis=no
1007     test_openldap=no
1008     test_webdav=no
1009     if test -n "$LODE_HOME" ; then
1010         mac_sanitize_path
1011         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1012     fi
1013     enable_gpgmepp=no
1014     _os=iOS
1015     enable_mpl_subset=yes
1016     enable_lotuswordpro=no
1017     disable_database_connectivity_dependencies
1018     enable_coinmp=no
1019     enable_lpsolve=no
1020     enable_extension_integration=no
1021     enable_xmlhelp=no
1022     with_ppds=no
1023     if test "$enable_ios_simulator" = "yes"; then
1024         host=x86_64-apple-darwin
1025     fi
1026     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1027     LINKFLAGSSHL="-dynamiclib"
1029     # -fPIC is default
1030     PICSWITCH=""
1032     DLLPOST=".dylib"
1034     # -undefined error is the default
1035     LINKFLAGSNOUNDEFS=""
1037     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1038     # part, so use aarch64-apple-darwin for now.
1039     HOST_PLATFORM=aarch64-apple-darwin
1041     # Apple's Clang uses "arm64"
1042     host_cpu_for_clang=arm64
1045 freebsd*)
1046     using_freetype_fontconfig=yes
1047     using_x11=yes
1048     build_skia=yes
1049     AC_MSG_CHECKING([the FreeBSD operating system release])
1050     if test -n "$with_os_version"; then
1051         OSVERSION="$with_os_version"
1052     else
1053         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1054     fi
1055     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1056     AC_MSG_CHECKING([which thread library to use])
1057     if test "$OSVERSION" -lt "500016"; then
1058         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1059         PTHREAD_LIBS="-pthread"
1060     elif test "$OSVERSION" -lt "502102"; then
1061         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1062         PTHREAD_LIBS="-lc_r"
1063     else
1064         PTHREAD_CFLAGS=""
1065         PTHREAD_LIBS="-pthread"
1066     fi
1067     AC_MSG_RESULT([$PTHREAD_LIBS])
1068     _os=FreeBSD
1069     ;;
1071 *netbsd*)
1072     using_freetype_fontconfig=yes
1073     using_x11=yes
1074     test_gtk3_kde5=no
1075     build_skia=yes
1076     PTHREAD_LIBS="-pthread -lpthread"
1077     _os=NetBSD
1078     ;;
1080 openbsd*)
1081     using_freetype_fontconfig=yes
1082     using_x11=yes
1083     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1084     PTHREAD_LIBS="-pthread"
1085     _os=OpenBSD
1086     ;;
1088 dragonfly*)
1089     using_freetype_fontconfig=yes
1090     using_x11=yes
1091     build_skia=yes
1092     PTHREAD_LIBS="-pthread"
1093     _os=DragonFly
1094     ;;
1096 linux-android*)
1097     # API exists, but seems not really usable since Android 7 AFAIK
1098     usable_dlapi=no
1099     using_freetype_fontconfig=yes
1100     using_headless_plugin=no
1101     using_x11=no
1102     build_crypto=no
1103     test_openldap=no
1104     test_system_freetype=no
1105     test_webdav=no
1106     disable_database_connectivity_dependencies
1107     enable_lotuswordpro=no
1108     enable_mpl_subset=yes
1109     enable_cairo_canvas=no
1110     enable_coinmp=yes
1111     enable_lpsolve=no
1112     enable_odk=no
1113     enable_python=no
1114     enable_xmlhelp=no
1115     _os=Android
1116     ;;
1118 haiku*)
1119     using_freetype_fontconfig=yes
1120     using_x11=no
1121     test_gtk3=no
1122     test_gtk3_kde5=no
1123     test_kf5=yes
1124     test_kf6=yes
1125     enable_odk=no
1126     enable_coinmp=no
1127     enable_pdfium=no
1128     enable_sdremote=no
1129     enable_postgresql_sdbc=no
1130     enable_firebird_sdbc=no
1131     _os=Haiku
1132     ;;
1134 emscripten)
1135     # API currently just exists in headers, not code
1136     usable_dlapi=no
1137     using_freetype_fontconfig=yes
1138     using_x11=yes
1139     test_openldap=no
1140     test_qt5=yes
1141     test_split_debug=yes
1142     test_system_freetype=no
1143     enable_compiler_plugins=no
1144     enable_customtarget_components=yes
1145     enable_split_debug=yes
1146     enable_wasm_strip=yes
1147     with_system_zlib=no
1148     with_theme="colibre"
1149     _os=Emscripten
1150     ;;
1153     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1154     ;;
1155 esac
1157 AC_SUBST(HOST_PLATFORM)
1159 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1160     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1163 # Set defaults, if not set by platform
1164 test "${test_cups+set}" = set || test_cups="$using_x11"
1165 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1166 test "${test_gen+set}" = set || test_gen="$using_x11"
1167 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1168 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1169 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1170 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1171 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1172 # don't handle test_qt5, so it can disable test_kf5 later
1173 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1174 test "${test_randr+set}" = set || test_randr="$using_x11"
1175 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1176 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1178 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1179 # Make sure fontconfig and freetype test both either system or not
1180 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1181 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1183 # convenience / platform overriding "fixes"
1184 # Don't sort!
1185 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1186 test "$test_kf5" = yes && test_qt5=yes
1187 test "$test_gtk3" != yes && enable_gtk3=no
1188 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1189 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1190 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1192 # Keep in sync with the above $using_x11 depending test default list
1193 disable_x11_tests()
1195     test_cups=no
1196     test_dbus=no
1197     test_gen=no
1198     test_gstreamer_1_0=no
1199     test_gtk3_kde5=no
1200     test_gtk3=no
1201     test_gtk4=no
1202     test_kf5=no
1203     test_kf6=no
1204     test_qt5=no
1205     test_qt6=no
1206     test_randr=no
1207     test_xrender=no
1210 test "$using_x11" = yes && USING_X11=TRUE
1212 if test "$using_freetype_fontconfig" = yes; then
1213     AC_DEFINE(USE_HEADLESS_CODE)
1214     USE_HEADLESS_CODE=TRUE
1215     if test "$using_headless_plugin" = yes; then
1216         AC_DEFINE(ENABLE_HEADLESS)
1217         ENABLE_HEADLESS=TRUE
1218     fi
1219 else
1220     test_fontconfig=no
1221     test_freetype=no
1224 AC_SUBST(ENABLE_HEADLESS)
1225 AC_SUBST(USE_HEADLESS_CODE)
1227 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1228 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1229 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1230 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1232 # ===================================================================
1234 # End initial platform setup
1236 # ===================================================================
1238 if test "$_os" = "Android" ; then
1239     # Verify that the NDK and SDK options are proper
1240     if test -z "$with_android_ndk"; then
1241         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1242     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1243         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1244     fi
1246     if test -z "$ANDROID_SDK_DIR"; then
1247         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1248     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1249         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1250     fi
1253 AC_SUBST(SDKDIRNAME)
1255 AC_SUBST(PTHREAD_CFLAGS)
1256 AC_SUBST(PTHREAD_LIBS)
1258 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1259 # By default use the ones specified by our build system,
1260 # but explicit override is possible.
1261 AC_MSG_CHECKING(for explicit AFLAGS)
1262 if test -n "$AFLAGS"; then
1263     AC_MSG_RESULT([$AFLAGS])
1264     x_AFLAGS=
1265 else
1266     AC_MSG_RESULT(no)
1267     x_AFLAGS=[\#]
1269 AC_MSG_CHECKING(for explicit CFLAGS)
1270 if test -n "$CFLAGS"; then
1271     AC_MSG_RESULT([$CFLAGS])
1272     x_CFLAGS=
1273 else
1274     AC_MSG_RESULT(no)
1275     x_CFLAGS=[\#]
1277 AC_MSG_CHECKING(for explicit CXXFLAGS)
1278 if test -n "$CXXFLAGS"; then
1279     AC_MSG_RESULT([$CXXFLAGS])
1280     x_CXXFLAGS=
1281 else
1282     AC_MSG_RESULT(no)
1283     x_CXXFLAGS=[\#]
1285 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1286 if test -n "$OBJCFLAGS"; then
1287     AC_MSG_RESULT([$OBJCFLAGS])
1288     x_OBJCFLAGS=
1289 else
1290     AC_MSG_RESULT(no)
1291     x_OBJCFLAGS=[\#]
1293 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1294 if test -n "$OBJCXXFLAGS"; then
1295     AC_MSG_RESULT([$OBJCXXFLAGS])
1296     x_OBJCXXFLAGS=
1297 else
1298     AC_MSG_RESULT(no)
1299     x_OBJCXXFLAGS=[\#]
1301 AC_MSG_CHECKING(for explicit LDFLAGS)
1302 if test -n "$LDFLAGS"; then
1303     AC_MSG_RESULT([$LDFLAGS])
1304     x_LDFLAGS=
1305 else
1306     AC_MSG_RESULT(no)
1307     x_LDFLAGS=[\#]
1309 AC_SUBST(AFLAGS)
1310 AC_SUBST(CFLAGS)
1311 AC_SUBST(CXXFLAGS)
1312 AC_SUBST(OBJCFLAGS)
1313 AC_SUBST(OBJCXXFLAGS)
1314 AC_SUBST(LDFLAGS)
1315 AC_SUBST(x_AFLAGS)
1316 AC_SUBST(x_CFLAGS)
1317 AC_SUBST(x_CXXFLAGS)
1318 AC_SUBST(x_OBJCFLAGS)
1319 AC_SUBST(x_OBJCXXFLAGS)
1320 AC_SUBST(x_LDFLAGS)
1322 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1323 my_original_CFLAGS=$CFLAGS
1324 my_original_CXXFLAGS=$CXXFLAGS
1325 my_original_CPPFLAGS=$CPPFLAGS
1327 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1328 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1329 dnl AC_PROG_CC internally.
1330 if test "$_os" != "WINNT"; then
1331     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1332     save_CFLAGS=$CFLAGS
1333     AC_PROG_CC
1334     CFLAGS=$save_CFLAGS
1335     if test -z "$CC_BASE"; then
1336         CC_BASE=`first_arg_basename "$CC"`
1337     fi
1340 if test "$_os" != "WINNT"; then
1341     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1342 else
1343     ENDIANNESS=little
1345 AC_SUBST(ENDIANNESS)
1347 if test "$usable_dlapi" != no; then
1348     AC_DEFINE([HAVE_DLAPI])
1349     if test "$test_unix_dlapi" != no; then
1350         save_LIBS="$LIBS"
1351         AC_SEARCH_LIBS([dlsym], [dl],
1352             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1353             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1354         LIBS="$save_LIBS"
1355         AC_DEFINE([HAVE_UNIX_DLAPI])
1356     fi
1358 AC_SUBST(UNIX_DLAPI_LIBS)
1360 # Check for a (GNU) backtrace implementation
1361 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1362 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1363 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1364     save_LIBS="$LIBS"
1365     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1366         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1367         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1368     LIBS="$save_LIBS"
1370 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1371     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1374 dnl ===================================================================
1375 dnl Sanity checks for Emscripten SDK setup
1376 dnl ===================================================================
1378 EMSCRIPTEN_MIN_MAJOR=2
1379 EMSCRIPTEN_MIN_MINOR=0
1380 EMSCRIPTEN_MIN_TINY=31
1381 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1383 if test "$_os" = "Emscripten"; then
1384     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1385     AS_IF([test -z "$EMSDK"],
1386           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1387     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1388     if test -f "$EMSCRIPTEN_VERSION_H"; then
1389         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1390         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1391         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1392     else
1393         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1394         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1395         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1396         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1397     fi
1399     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1401     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1402     if test $? -eq 0; then
1403         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1404     else
1405         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1406     fi
1408     EMSCRIPTEN_ERROR=0
1409     if ! which emconfigure >/dev/null 2>&1; then
1410         AC_MSG_WARN([emconfigure must be in your \$PATH])
1411         EMSCRIPTEN_ERROR=1
1412     fi
1413     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1414         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1415         EMSCRIPTEN_ERROR=1
1416     fi
1417     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1418     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1419         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1420         EMSCRIPTEN_ERROR=1
1421     fi
1422     if test $EMSCRIPTEN_ERROR -ne 0; then
1423         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1424     fi
1426 AC_SUBST(EMSDK_FILE_PACKAGER)
1428 ###############################################################################
1429 # Extensions switches --enable/--disable
1430 ###############################################################################
1431 # By default these should be enabled unless having extra dependencies.
1432 # If there is extra dependency over configure options then the enable should
1433 # be automagic based on whether the requiring feature is enabled or not.
1434 # All this options change anything only with --enable-extension-integration.
1436 # The name of this option and its help string makes it sound as if
1437 # extensions are built anyway, just not integrated in the installer,
1438 # if you use --disable-extension-integration. Is that really the
1439 # case?
1441 AC_ARG_ENABLE(ios-simulator,
1442     AS_HELP_STRING([--enable-ios-simulator],
1443         [build for iOS simulator])
1446 libo_FUZZ_ARG_ENABLE(extension-integration,
1447     AS_HELP_STRING([--disable-extension-integration],
1448         [Disable integration of the built extensions in the installer of the
1449          product. Use this switch to disable the integration.])
1452 AC_ARG_ENABLE(avmedia,
1453     AS_HELP_STRING([--disable-avmedia],
1454         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1455 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1457 AC_ARG_ENABLE(database-connectivity,
1458     AS_HELP_STRING([--disable-database-connectivity],
1459         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1462 # This doesn't mean not building (or "integrating") extensions
1463 # (although it probably should; i.e. it should imply
1464 # --disable-extension-integration I guess), it means not supporting
1465 # any extension mechanism at all
1466 libo_FUZZ_ARG_ENABLE(extensions,
1467     AS_HELP_STRING([--disable-extensions],
1468         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1471 AC_ARG_ENABLE(scripting,
1472     AS_HELP_STRING([--disable-scripting],
1473         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1474 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1476 # This is mainly for Android and iOS, but could potentially be used in some
1477 # special case otherwise, too, so factored out as a separate setting
1479 AC_ARG_ENABLE(dynamic-loading,
1480     AS_HELP_STRING([--disable-dynamic-loading],
1481         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1484 libo_FUZZ_ARG_ENABLE(report-builder,
1485     AS_HELP_STRING([--disable-report-builder],
1486         [Disable the Report Builder.])
1489 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1490     AS_HELP_STRING([--enable-ext-wiki-publisher],
1491         [Enable the Wiki Publisher extension.])
1494 libo_FUZZ_ARG_ENABLE(lpsolve,
1495     AS_HELP_STRING([--disable-lpsolve],
1496         [Disable compilation of the lp solve solver ])
1498 libo_FUZZ_ARG_ENABLE(coinmp,
1499     AS_HELP_STRING([--disable-coinmp],
1500         [Disable compilation of the CoinMP solver ])
1503 libo_FUZZ_ARG_ENABLE(pdfimport,
1504     AS_HELP_STRING([--disable-pdfimport],
1505         [Disable building the PDF import feature.])
1508 libo_FUZZ_ARG_ENABLE(pdfium,
1509     AS_HELP_STRING([--disable-pdfium],
1510         [Disable building PDFium. Results in unsecure PDF signature verification.])
1513 libo_FUZZ_ARG_ENABLE(skia,
1514     AS_HELP_STRING([--disable-skia],
1515         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1518 ###############################################################################
1520 dnl ---------- *** ----------
1522 libo_FUZZ_ARG_ENABLE(mergelibs,
1523     AS_HELP_STRING([--enable-mergelibs],
1524         [Merge several of the smaller libraries into one big, "merged", one.])
1527 libo_FUZZ_ARG_ENABLE(breakpad,
1528     AS_HELP_STRING([--enable-breakpad],
1529         [Enables breakpad for crash reporting.])
1532 libo_FUZZ_ARG_ENABLE(crashdump,
1533     AS_HELP_STRING([--disable-crashdump],
1534         [Disable dump.ini and dump-file, when --enable-breakpad])
1537 AC_ARG_ENABLE(fetch-external,
1538     AS_HELP_STRING([--disable-fetch-external],
1539         [Disables fetching external tarballs from web sources.])
1542 AC_ARG_ENABLE(fuzzers,
1543     AS_HELP_STRING([--enable-fuzzers],
1544         [Enables building libfuzzer targets for fuzz testing.])
1547 libo_FUZZ_ARG_ENABLE(pch,
1548     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1549         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1550          Using 'system' will include only external headers, 'base' will add also headers
1551          from base modules, 'normal' will also add all headers except from the module built,
1552          'full' will use all suitable headers even from a module itself.])
1555 libo_FUZZ_ARG_ENABLE(epm,
1556     AS_HELP_STRING([--enable-epm],
1557         [LibreOffice includes self-packaging code, that requires epm, however epm is
1558          useless for large scale package building.])
1561 libo_FUZZ_ARG_ENABLE(odk,
1562     AS_HELP_STRING([--enable-odk],
1563         [Enable building the Office Development Kit, the part that extensions need to build against])
1566 AC_ARG_ENABLE(mpl-subset,
1567     AS_HELP_STRING([--enable-mpl-subset],
1568         [Don't compile any pieces which are not MPL or more liberally licensed])
1571 libo_FUZZ_ARG_ENABLE(evolution2,
1572     AS_HELP_STRING([--enable-evolution2],
1573         [Allows the built-in evolution 2 addressbook connectivity build to be
1574          enabled.])
1577 AC_ARG_ENABLE(avahi,
1578     AS_HELP_STRING([--enable-avahi],
1579         [Determines whether to use Avahi to advertise Impress to remote controls.])
1582 libo_FUZZ_ARG_ENABLE(werror,
1583     AS_HELP_STRING([--enable-werror],
1584         [Turn warnings to errors. (Has no effect in modules where the treating
1585          of warnings as errors is disabled explicitly.)]),
1588 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1589     AS_HELP_STRING([--enable-assert-always-abort],
1590         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1593 libo_FUZZ_ARG_ENABLE(dbgutil,
1594     AS_HELP_STRING([--enable-dbgutil],
1595         [Provide debugging support from --enable-debug and include additional debugging
1596          utilities such as object counting or more expensive checks.
1597          This is the recommended option for developers.
1598          Note that this makes the build ABI incompatible, it is not possible to mix object
1599          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1601 libo_FUZZ_ARG_ENABLE(debug,
1602     AS_HELP_STRING([--enable-debug],
1603         [Include debugging information, disable compiler optimization and inlining plus
1604          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1606 libo_FUZZ_ARG_ENABLE(split-debug,
1607     AS_HELP_STRING([--disable-split-debug],
1608         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1609          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1611 libo_FUZZ_ARG_ENABLE(gdb-index,
1612     AS_HELP_STRING([--disable-gdb-index],
1613         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1614          The feature requires a linker that supports the --gdb-index option.]))
1616 libo_FUZZ_ARG_ENABLE(sal-log,
1617     AS_HELP_STRING([--enable-sal-log],
1618         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1620 libo_FUZZ_ARG_ENABLE(symbols,
1621     AS_HELP_STRING([--enable-symbols],
1622         [Generate debug information.
1623          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1624          otherwise. It is possible to explicitly specify gbuild build targets
1625          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1626          everything in the directory; there is no ordering, more specific overrides
1627          more general, and disabling takes precedence).
1628          Example: --enable-symbols="all -sw/ -Library_sc".]))
1630 libo_FUZZ_ARG_ENABLE(optimized,
1631     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1632         [Whether to compile with optimization flags.
1633          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1634          otherwise. Using 'debug' will try to use only optimizations that should
1635          not interfere with debugging. For Emscripten we default to optimized (-O1)
1636          debug build, as otherwise binaries become too large.]))
1638 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1639     AS_HELP_STRING([--disable-runtime-optimizations],
1640         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1641          JVM JIT) that are known to interact badly with certain dynamic analysis
1642          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1643          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1644          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1646 AC_ARG_WITH(valgrind,
1647     AS_HELP_STRING([--with-valgrind],
1648         [Make availability of Valgrind headers a hard requirement.]))
1650 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1651     AS_HELP_STRING([--enable-compiler-plugins],
1652         [Enable compiler plugins that will perform additional checks during
1653          building. Enabled automatically by --enable-dbgutil.
1654          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1655 COMPILER_PLUGINS_DEBUG=
1656 if test "$enable_compiler_plugins" = debug; then
1657     enable_compiler_plugins=yes
1658     COMPILER_PLUGINS_DEBUG=TRUE
1661 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1662     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1663         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1664          relevant in the --disable-compiler-plugins case.]))
1666 libo_FUZZ_ARG_ENABLE(ooenv,
1667     AS_HELP_STRING([--enable-ooenv],
1668         [Enable ooenv for the instdir installation.]))
1670 AC_ARG_ENABLE(lto,
1671     AS_HELP_STRING([--enable-lto],
1672         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1673          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1674          linker.)]))
1676 AC_ARG_ENABLE(python,
1677     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1678         [Enables or disables Python support at run-time.
1679          Also specifies what Python to use at build-time.
1680          'fully-internal' even forces the internal version for uses of Python
1681          during the build.
1682          On macOS the only choices are
1683          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1684          ]))
1686 libo_FUZZ_ARG_ENABLE(gtk3,
1687     AS_HELP_STRING([--disable-gtk3],
1688         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1689 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1691 AC_ARG_ENABLE(gtk4,
1692     AS_HELP_STRING([--enable-gtk4],
1693         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1695 AC_ARG_ENABLE(atspi-tests,
1696     AS_HELP_STRING([--disable-atspi-tests],
1697         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1699 AC_ARG_ENABLE(introspection,
1700     AS_HELP_STRING([--enable-introspection],
1701         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1702          Linux distributions.)]))
1704 AC_ARG_ENABLE(split-app-modules,
1705     AS_HELP_STRING([--enable-split-app-modules],
1706         [Split file lists for app modules, e.g. base, calc.
1707          Has effect only with make distro-pack-install]),
1710 AC_ARG_ENABLE(split-opt-features,
1711     AS_HELP_STRING([--enable-split-opt-features],
1712         [Split file lists for some optional features, e.g. pyuno, testtool.
1713          Has effect only with make distro-pack-install]),
1716 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1717     AS_HELP_STRING([--disable-cairo-canvas],
1718         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1721 libo_FUZZ_ARG_ENABLE(dbus,
1722     AS_HELP_STRING([--disable-dbus],
1723         [Determines whether to enable features that depend on dbus.
1724          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1725 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1727 libo_FUZZ_ARG_ENABLE(sdremote,
1728     AS_HELP_STRING([--disable-sdremote],
1729         [Determines whether to enable Impress remote control (i.e. the server component).]),
1730 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1732 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1733     AS_HELP_STRING([--disable-sdremote-bluetooth],
1734         [Determines whether to build sdremote with bluetooth support.
1735          Requires dbus on Linux.]))
1737 libo_FUZZ_ARG_ENABLE(gio,
1738     AS_HELP_STRING([--disable-gio],
1739         [Determines whether to use the GIO support.]),
1740 ,test "${enable_gio+set}" = set || enable_gio=yes)
1742 AC_ARG_ENABLE(qt5,
1743     AS_HELP_STRING([--enable-qt5],
1744         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1745          available.]),
1748 AC_ARG_ENABLE(qt6,
1749     AS_HELP_STRING([--enable-qt6],
1750         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1751          available.]),
1754 AC_ARG_ENABLE(kf5,
1755     AS_HELP_STRING([--enable-kf5],
1756         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1757          KF5 are available.]),
1760 AC_ARG_ENABLE(kf6,
1761     AS_HELP_STRING([--enable-kf6],
1762         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1763          KF6 are available.]),
1767 AC_ARG_ENABLE(gtk3_kde5,
1768     AS_HELP_STRING([--enable-gtk3-kde5],
1769         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1770          platforms where Gtk3, Qt5 and Plasma is available.]),
1773 AC_ARG_ENABLE(gen,
1774     AS_HELP_STRING([--enable-gen],
1775         [To select the gen backend in case of --disable-dynamic-loading.
1776          Per default auto-enabled when X11 is used.]),
1777 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1779 AC_ARG_ENABLE(gui,
1780     AS_HELP_STRING([--disable-gui],
1781         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1782 ,enable_gui=yes)
1784 libo_FUZZ_ARG_ENABLE(randr,
1785     AS_HELP_STRING([--disable-randr],
1786         [Disable RandR support in the vcl project.]),
1787 ,test "${enable_randr+set}" = set || enable_randr=yes)
1789 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1790     AS_HELP_STRING([--disable-gstreamer-1-0],
1791         [Disable building with the gstreamer 1.0 avmedia backend.]),
1792 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1794 libo_FUZZ_ARG_ENABLE([eot],
1795     [AS_HELP_STRING([--enable-eot],
1796         [Enable support for Embedded OpenType fonts.])],
1797 ,test "${enable_eot+set}" = set || enable_eot=no)
1799 libo_FUZZ_ARG_ENABLE(cve-tests,
1800     AS_HELP_STRING([--disable-cve-tests],
1801         [Prevent CVE tests to be executed]),
1804 AC_ARG_ENABLE(build-opensymbol,
1805     AS_HELP_STRING([--enable-build-opensymbol],
1806         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1807          fontforge installed.]),
1810 AC_ARG_ENABLE(dependency-tracking,
1811     AS_HELP_STRING([--enable-dependency-tracking],
1812         [Do not reject slow dependency extractors.])[
1813   --disable-dependency-tracking
1814                           Disables generation of dependency information.
1815                           Speed up one-time builds.],
1818 AC_ARG_ENABLE(icecream,
1819     AS_HELP_STRING([--enable-icecream],
1820         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1821          It defaults to /opt/icecream for the location of the icecream gcc/g++
1822          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1825 AC_ARG_ENABLE(ld,
1826     AS_HELP_STRING([--enable-ld=<linker>],
1827         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1828          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1829          If <linker> contains any ':', the part before the first ':' is used as the value of
1830          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1831          needed for Clang 12).]),
1834 libo_FUZZ_ARG_ENABLE(cups,
1835     AS_HELP_STRING([--disable-cups],
1836         [Do not build cups support.])
1839 AC_ARG_ENABLE(ccache,
1840     AS_HELP_STRING([--disable-ccache],
1841         [Do not try to use ccache automatically.
1842          By default we will try to detect if ccache is available; in that case if
1843          CC/CXX are not yet set, and --enable-icecream is not given, we
1844          attempt to use ccache. --disable-ccache disables ccache completely.
1845          Additionally ccache's depend mode is enabled if possible,
1846          use --enable-ccache=nodepend to enable ccache without depend mode.
1850 AC_ARG_ENABLE(z7-debug,
1851     AS_HELP_STRING([--enable-z7-debug],
1852         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1853          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1854          Enabled by default if ccache is detected.]))
1856 libo_FUZZ_ARG_ENABLE(online-update,
1857     AS_HELP_STRING([--enable-online-update],
1858         [Enable the online update service that will check for new versions of
1859          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1862 libo_FUZZ_ARG_ENABLE(online-update-mar,
1863     AS_HELP_STRING([--enable-online-update-mar],
1864         [Enable the experimental Mozilla-like online update service that will
1865          check for new versions of LibreOffice. Disabled by default.]),
1868 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1869     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1870         [Set the base URL value for --enable-online-update-mar.
1871          (Can be left off for debug purposes, even if that may render the feature
1872          non-functional.)]),
1875 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1876     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1877         [Set the certificate DER value for --enable-online-update-mar.
1878          (Can be left off for debug purposes, even if that may render the feature
1879          non-functional.)]),
1882 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1883     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1884         [Set the certificate name value for --enable-online-update-mar.
1885          (Can be left off for debug purposes, even if that may render the feature
1886          non-functional.)]),
1889 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1890     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1891         [Set the certificate path value for --enable-online-update-mar.
1892          (Can be left off for debug purposes, even if that may render the feature
1893          non-functional.)]),
1896 libo_FUZZ_ARG_WITH(online-update-mar-serverurl,
1897     AS_HELP_STRING([--with-online-update-mar-serverurl=...],
1898         [Set the server URL value for --enable-online-update-mar.
1899          (Can be left off for debug purposes, even if that may render the feature
1900          non-functional.)]),
1903 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1904     AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1905         [Set the upload URL value for --enable-online-update-mar.
1906          (Can be left off for debug purposes, even if that may render the feature
1907          non-functional.)]),
1910 libo_FUZZ_ARG_ENABLE(extension-update,
1911     AS_HELP_STRING([--disable-extension-update],
1912         [Disable possibility to update installed extensions.]),
1915 libo_FUZZ_ARG_ENABLE(release-build,
1916     AS_HELP_STRING([--enable-release-build],
1917         [Enable release build. Note that the "release build" choice is orthogonal to
1918          whether symbols are present, debug info is generated, or optimization
1919          is done.
1920          See https://wiki.documentfoundation.org/Development/DevBuild]),
1923 AC_ARG_ENABLE(windows-build-signing,
1924     AS_HELP_STRING([--enable-windows-build-signing],
1925         [Enable signing of windows binaries (*.exe, *.dll)]),
1928 AC_ARG_ENABLE(silent-msi,
1929     AS_HELP_STRING([--enable-silent-msi],
1930         [Enable MSI with LIMITUI=1 (silent install).]),
1933 AC_ARG_ENABLE(wix,
1934     AS_HELP_STRING([--enable-wix],
1935         [Build Windows installer using WiX.]),
1938 AC_ARG_ENABLE(macosx-code-signing,
1939     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1940         [Sign executables, dylibs, frameworks and the app bundle. If you
1941          don't provide an identity the first suitable certificate
1942          in your keychain is used.]),
1945 AC_ARG_ENABLE(macosx-package-signing,
1946     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1947         [Create a .pkg suitable for uploading to the Mac App Store and sign
1948          it. If you don't provide an identity the first suitable certificate
1949          in your keychain is used.]),
1952 AC_ARG_ENABLE(macosx-sandbox,
1953     AS_HELP_STRING([--enable-macosx-sandbox],
1954         [Make the app bundle run in a sandbox. Requires code signing.
1955          Is required by apps distributed in the Mac App Store, and implies
1956          adherence to App Store rules.]),
1959 AC_ARG_WITH(macosx-bundle-identifier,
1960     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1961         [Define the macOS bundle identifier. Default is the somewhat weird
1962          org.libreoffice.script ("script", huh?).]),
1963 ,with_macosx_bundle_identifier=org.libreoffice.script)
1965 AC_ARG_WITH(macosx-provisioning-profile,
1966     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1967         [Specify the path to a provisioning profile to use]),
1970 AC_ARG_WITH(product-name,
1971     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1972         [Define the product name. Default is AC_PACKAGE_NAME.]),
1973 ,with_product_name=$PRODUCTNAME)
1975 libo_FUZZ_ARG_ENABLE(community-flavor,
1976     AS_HELP_STRING([--disable-community-flavor],
1977         [Disable the Community branding.]),
1980 AC_ARG_WITH(package-version,
1981     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1982         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1985 libo_FUZZ_ARG_ENABLE(readonly-installset,
1986     AS_HELP_STRING([--enable-readonly-installset],
1987         [Prevents any attempts by LibreOffice to write into its installation. That means
1988          at least that no "system-wide" extensions can be added. Partly experimental work in
1989          progress, probably not fully implemented. Always enabled for macOS.]),
1992 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1993     AS_HELP_STRING([--disable-mariadb-sdbc],
1994         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1997 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1998     AS_HELP_STRING([--disable-postgresql-sdbc],
1999         [Disable the build of the PostgreSQL-SDBC driver.])
2002 libo_FUZZ_ARG_ENABLE(lotuswordpro,
2003     AS_HELP_STRING([--disable-lotuswordpro],
2004         [Disable the build of the Lotus Word Pro filter.]),
2005 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2007 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2008     AS_HELP_STRING([--disable-firebird-sdbc],
2009         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2010 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2012 AC_ARG_ENABLE(bogus-pkg-config,
2013     AS_HELP_STRING([--enable-bogus-pkg-config],
2014         [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.]),
2017 AC_ARG_ENABLE(openssl,
2018     AS_HELP_STRING([--disable-openssl],
2019         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2020          components will use NSS. Work in progress,
2021          use only if you are hacking on it.]),
2022 ,enable_openssl=yes)
2024 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2025     AS_HELP_STRING([--enable-cipher-openssl-backend],
2026         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2027          Requires --enable-openssl.]))
2029 AC_ARG_ENABLE(nss,
2030     AS_HELP_STRING([--disable-nss],
2031         [Disable using NSS. If disabled,
2032          components will use openssl. Work in progress,
2033          use only if you are hacking on it.]),
2034 ,enable_nss=yes)
2036 AC_ARG_ENABLE(library-bin-tar,
2037     AS_HELP_STRING([--enable-library-bin-tar],
2038         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2039         Some libraries can save their build result in a tarball
2040         stored in TARFILE_LOCATION. That binary tarball is
2041         uniquely identified by the source tarball,
2042         the content of the config_host.mk file and the content
2043         of the top-level directory in core for that library
2044         If this option is enabled, then if such a tarfile exist, it will be untarred
2045         instead of the source tarfile, and the build step will be skipped for that
2046         library.
2047         If a proper tarfile does not exist, then the normal source-based
2048         build is done for that library and a proper binary tarfile is created
2049         for the next time.]),
2052 AC_ARG_ENABLE(dconf,
2053     AS_HELP_STRING([--disable-dconf],
2054         [Disable the dconf configuration backend (enabled by default where
2055          available).]))
2057 libo_FUZZ_ARG_ENABLE(formula-logger,
2058     AS_HELP_STRING(
2059         [--enable-formula-logger],
2060         [Enable formula logger for logging formula calculation flow in Calc.]
2061     )
2064 AC_ARG_ENABLE(ldap,
2065     AS_HELP_STRING([--disable-ldap],
2066         [Disable LDAP support.]),
2067 ,enable_ldap=yes)
2069 AC_ARG_ENABLE(opencl,
2070     AS_HELP_STRING([--disable-opencl],
2071         [Disable OpenCL support.]),
2072 ,enable_opencl=yes)
2074 libo_FUZZ_ARG_ENABLE(librelogo,
2075     AS_HELP_STRING([--disable-librelogo],
2076         [Do not build LibreLogo.]),
2077 ,enable_librelogo=yes)
2079 AC_ARG_ENABLE(wasm-strip,
2080     AS_HELP_STRING([--enable-wasm-strip],
2081         [Strip the static build like for WASM/emscripten platform.]),
2084 AC_ARG_WITH(main-module,
2085     AS_HELP_STRING([--with-main-module=<writer/calc>],
2086         [Specify which main module to build for wasm.
2087         Default value is 'writer'.]),
2090 AC_ARG_ENABLE(wasm-exceptions,
2091     AS_HELP_STRING([--enable-wasm-exceptions],
2092         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2093         matter of fact, this is currently not finished by any implementation)
2094         (see https://webassembly.org/roadmap/ for the current state]),
2097 AC_ARG_ENABLE(xmlhelp,
2098     AS_HELP_STRING([--disable-xmlhelp],
2099         [Disable XML help support]),
2100 ,enable_xmlhelp=yes)
2102 AC_ARG_ENABLE(customtarget-components,
2103     AS_HELP_STRING([--enable-customtarget-components],
2104         [Generates the static UNO object constructor mapping from the build.]))
2106 dnl ===================================================================
2107 dnl Optional Packages (--with/without-)
2108 dnl ===================================================================
2110 AC_ARG_WITH(gcc-home,
2111     AS_HELP_STRING([--with-gcc-home],
2112         [Specify the location of gcc/g++ manually. This can be used in conjunction
2113          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2114          non-default path.]),
2117 AC_ARG_WITH(gnu-patch,
2118     AS_HELP_STRING([--with-gnu-patch],
2119         [Specify location of GNU patch on Solaris or FreeBSD.]),
2122 AC_ARG_WITH(build-platform-configure-options,
2123     AS_HELP_STRING([--with-build-platform-configure-options],
2124         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2127 AC_ARG_WITH(gnu-cp,
2128     AS_HELP_STRING([--with-gnu-cp],
2129         [Specify location of GNU cp on Solaris or FreeBSD.]),
2132 AC_ARG_WITH(external-tar,
2133     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2134         [Specify an absolute path of where to find (and store) tarfiles.]),
2135     TARFILE_LOCATION=$withval ,
2138 AC_ARG_WITH(referenced-git,
2139     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2140         [Specify another checkout directory to reference. This makes use of
2141                  git submodule update --reference, and saves a lot of diskspace
2142                  when having multiple trees side-by-side.]),
2143     GIT_REFERENCE_SRC=$withval ,
2146 AC_ARG_WITH(linked-git,
2147     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2148         [Specify a directory where the repositories of submodules are located.
2149          This uses a method similar to git-new-workdir to get submodules.]),
2150     GIT_LINK_SRC=$withval ,
2153 AC_ARG_WITH(galleries,
2154     AS_HELP_STRING([--with-galleries],
2155         [Specify how galleries should be built. It is possible either to
2156          build these internally from source ("build"),
2157          or to disable them ("no")]),
2160 AC_ARG_WITH(templates,
2161     AS_HELP_STRING([--with-templates],
2162         [Specify we build with or without template files. It is possible either to
2163          build with templates ("yes"),
2164          or to disable them ("no")]),
2167 AC_ARG_WITH(theme,
2168     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2169         [Choose which themes to include. By default those themes with an '*' are included.
2170          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2171          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2172          *elementary, *elementary_svg,
2173          *karasa_jaga, *karasa_jaga_svg,
2174          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2175          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2178 libo_FUZZ_ARG_WITH(helppack-integration,
2179     AS_HELP_STRING([--without-helppack-integration],
2180         [It will not integrate the helppacks to the installer
2181          of the product. Please use this switch to use the online help
2182          or separate help packages.]),
2185 libo_FUZZ_ARG_WITH(fonts,
2186     AS_HELP_STRING([--without-fonts],
2187         [LibreOffice includes some third-party fonts to provide a reliable basis for
2188          help content, templates, samples, etc. When these fonts are already
2189          known to be available on the system then you should use this option.]),
2192 AC_ARG_WITH(epm,
2193     AS_HELP_STRING([--with-epm],
2194         [Decides which epm to use. Default is to use the one from the system if
2195          one is built. When either this is not there or you say =internal epm
2196          will be built.]),
2199 AC_ARG_WITH(package-format,
2200     AS_HELP_STRING([--with-package-format],
2201         [Specify package format(s) for LibreOffice installation sets. The
2202          implicit --without-package-format leads to no installation sets being
2203          generated. Possible values: archive, bsd, deb, dmg,
2204          installed, msi, pkg, and rpm.
2205          Example: --with-package-format='deb rpm']),
2208 AC_ARG_WITH(tls,
2209     AS_HELP_STRING([--with-tls],
2210         [Decides which TLS/SSL and cryptographic implementations to use for
2211          LibreOffice's code. Default is to use NSS although OpenSSL is also
2212          possible. Notice that selecting NSS restricts the usage of OpenSSL
2213          in LO's code but selecting OpenSSL doesn't restrict by now the
2214          usage of NSS in LO's code. Possible values: openssl, nss.
2215          Example: --with-tls="nss"]),
2218 AC_ARG_WITH(system-libs,
2219     AS_HELP_STRING([--with-system-libs],
2220         [Use libraries already on system -- enables all --with-system-* flags.]),
2223 AC_ARG_WITH(system-bzip2,
2224     AS_HELP_STRING([--with-system-bzip2],
2225         [Use bzip2 already on system. Used when --enable-online-update-mar
2226         or --enable-python=internal]),,
2227     [with_system_bzip2="$with_system_libs"])
2229 AC_ARG_WITH(system-headers,
2230     AS_HELP_STRING([--with-system-headers],
2231         [Use headers already on system -- enables all --with-system-* flags for
2232          external packages whose headers are the only entities used i.e.
2233          boost/odbc/sane-header(s).]),,
2234     [with_system_headers="$with_system_libs"])
2236 AC_ARG_WITH(system-jars,
2237     AS_HELP_STRING([--without-system-jars],
2238         [When building with --with-system-libs, also the needed jars are expected
2239          on the system. Use this to disable that]),,
2240     [with_system_jars="$with_system_libs"])
2242 AC_ARG_WITH(system-cairo,
2243     AS_HELP_STRING([--with-system-cairo],
2244         [Use cairo libraries already on system.  Happens automatically for
2245          (implicit) --enable-gtk3.]))
2247 AC_ARG_WITH(system-epoxy,
2248     AS_HELP_STRING([--with-system-epoxy],
2249         [Use epoxy libraries already on system.  Happens automatically for
2250          (implicit) --enable-gtk3.]),,
2251        [with_system_epoxy="$with_system_libs"])
2253 AC_ARG_WITH(myspell-dicts,
2254     AS_HELP_STRING([--with-myspell-dicts],
2255         [Adds myspell dictionaries to the LibreOffice installation set]),
2258 AC_ARG_WITH(system-dicts,
2259     AS_HELP_STRING([--without-system-dicts],
2260         [Do not use dictionaries from system paths.]),
2263 AC_ARG_WITH(external-dict-dir,
2264     AS_HELP_STRING([--with-external-dict-dir],
2265         [Specify external dictionary dir.]),
2268 AC_ARG_WITH(external-hyph-dir,
2269     AS_HELP_STRING([--with-external-hyph-dir],
2270         [Specify external hyphenation pattern dir.]),
2273 AC_ARG_WITH(external-thes-dir,
2274     AS_HELP_STRING([--with-external-thes-dir],
2275         [Specify external thesaurus dir.]),
2278 AC_ARG_WITH(system-zlib,
2279     AS_HELP_STRING([--with-system-zlib],
2280         [Use zlib already on system.]),,
2281     [with_system_zlib=auto])
2283 AC_ARG_WITH(system-jpeg,
2284     AS_HELP_STRING([--with-system-jpeg],
2285         [Use jpeg already on system.]),,
2286     [with_system_jpeg="$with_system_libs"])
2288 AC_ARG_WITH(system-expat,
2289     AS_HELP_STRING([--with-system-expat],
2290         [Use expat already on system.]),,
2291     [with_system_expat="$with_system_libs"])
2293 AC_ARG_WITH(system-libxml,
2294     AS_HELP_STRING([--with-system-libxml],
2295         [Use libxml/libxslt already on system.]),,
2296     [with_system_libxml=auto])
2298 AC_ARG_WITH(system-openldap,
2299     AS_HELP_STRING([--with-system-openldap],
2300         [Use the OpenLDAP LDAP SDK already on system.]),,
2301     [with_system_openldap="$with_system_libs"])
2303 libo_FUZZ_ARG_ENABLE(poppler,
2304     AS_HELP_STRING([--disable-poppler],
2305         [Disable building Poppler.])
2308 AC_ARG_WITH(system-poppler,
2309     AS_HELP_STRING([--with-system-poppler],
2310         [Use system poppler (only needed for PDF import).]),,
2311     [with_system_poppler="$with_system_libs"])
2313 AC_ARG_WITH(system-abseil,
2314     AS_HELP_STRING([--with-system-abseil],
2315         [Use the abseil libraries already on system.]),,
2316     [with_system_abseil="$with_system_libs"])
2318 AC_ARG_WITH(system-openjpeg,
2319     AS_HELP_STRING([--with-system-openjpeg],
2320         [Use the OpenJPEG library already on system.]),,
2321     [with_system_openjpeg="$with_system_libs"])
2323 libo_FUZZ_ARG_ENABLE(gpgmepp,
2324     AS_HELP_STRING([--disable-gpgmepp],
2325         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2328 AC_ARG_WITH(system-gpgmepp,
2329     AS_HELP_STRING([--with-system-gpgmepp],
2330         [Use gpgmepp already on system]),,
2331     [with_system_gpgmepp="$with_system_libs"])
2333 AC_ARG_WITH(system-mariadb,
2334     AS_HELP_STRING([--with-system-mariadb],
2335         [Use MariaDB/MySQL libraries already on system.]),,
2336     [with_system_mariadb="$with_system_libs"])
2338 AC_ARG_ENABLE(bundle-mariadb,
2339     AS_HELP_STRING([--enable-bundle-mariadb],
2340         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2343 AC_ARG_WITH(system-postgresql,
2344     AS_HELP_STRING([--with-system-postgresql],
2345         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2346          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2347     [with_system_postgresql="$with_system_libs"])
2349 AC_ARG_WITH(libpq-path,
2350     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2351         [Use this PostgreSQL C interface (libpq) installation for building
2352          the PostgreSQL-SDBC extension.]),
2355 AC_ARG_WITH(system-firebird,
2356     AS_HELP_STRING([--with-system-firebird],
2357         [Use Firebird libraries already on system, for building the Firebird-SDBC
2358          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2359     [with_system_firebird="$with_system_libs"])
2361 AC_ARG_WITH(system-libtommath,
2362             AS_HELP_STRING([--with-system-libtommath],
2363                            [Use libtommath already on system]),,
2364             [with_system_libtommath="$with_system_libs"])
2366 AC_ARG_WITH(system-hsqldb,
2367     AS_HELP_STRING([--with-system-hsqldb],
2368         [Use hsqldb already on system.]))
2370 AC_ARG_WITH(hsqldb-jar,
2371     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2372         [Specify path to jarfile manually.]),
2373     HSQLDB_JAR=$withval)
2375 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2376     AS_HELP_STRING([--disable-scripting-beanshell],
2377         [Disable support for scripts in BeanShell.]),
2381 AC_ARG_WITH(system-beanshell,
2382     AS_HELP_STRING([--with-system-beanshell],
2383         [Use beanshell already on system.]),,
2384     [with_system_beanshell="$with_system_jars"])
2386 AC_ARG_WITH(beanshell-jar,
2387     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2388         [Specify path to jarfile manually.]),
2389     BSH_JAR=$withval)
2391 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2392     AS_HELP_STRING([--disable-scripting-javascript],
2393         [Disable support for scripts in JavaScript.]),
2397 AC_ARG_WITH(system-rhino,
2398     AS_HELP_STRING([--with-system-rhino],
2399         [Use rhino already on system.]),,)
2400 #    [with_system_rhino="$with_system_jars"])
2401 # Above is not used as we have different debug interface
2402 # patched into internal rhino. This code needs to be fixed
2403 # before we can enable it by default.
2405 AC_ARG_WITH(rhino-jar,
2406     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2407         [Specify path to jarfile manually.]),
2408     RHINO_JAR=$withval)
2410 AC_ARG_WITH(system-jfreereport,
2411     AS_HELP_STRING([--with-system-jfreereport],
2412         [Use JFreeReport already on system.]),,
2413     [with_system_jfreereport="$with_system_jars"])
2415 AC_ARG_WITH(sac-jar,
2416     AS_HELP_STRING([--with-sac-jar=JARFILE],
2417         [Specify path to jarfile manually.]),
2418     SAC_JAR=$withval)
2420 AC_ARG_WITH(libxml-jar,
2421     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2422         [Specify path to jarfile manually.]),
2423     LIBXML_JAR=$withval)
2425 AC_ARG_WITH(flute-jar,
2426     AS_HELP_STRING([--with-flute-jar=JARFILE],
2427         [Specify path to jarfile manually.]),
2428     FLUTE_JAR=$withval)
2430 AC_ARG_WITH(jfreereport-jar,
2431     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2432         [Specify path to jarfile manually.]),
2433     JFREEREPORT_JAR=$withval)
2435 AC_ARG_WITH(liblayout-jar,
2436     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2437         [Specify path to jarfile manually.]),
2438     LIBLAYOUT_JAR=$withval)
2440 AC_ARG_WITH(libloader-jar,
2441     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2442         [Specify path to jarfile manually.]),
2443     LIBLOADER_JAR=$withval)
2445 AC_ARG_WITH(libformula-jar,
2446     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2447         [Specify path to jarfile manually.]),
2448     LIBFORMULA_JAR=$withval)
2450 AC_ARG_WITH(librepository-jar,
2451     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2452         [Specify path to jarfile manually.]),
2453     LIBREPOSITORY_JAR=$withval)
2455 AC_ARG_WITH(libfonts-jar,
2456     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2457         [Specify path to jarfile manually.]),
2458     LIBFONTS_JAR=$withval)
2460 AC_ARG_WITH(libserializer-jar,
2461     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2462         [Specify path to jarfile manually.]),
2463     LIBSERIALIZER_JAR=$withval)
2465 AC_ARG_WITH(libbase-jar,
2466     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2467         [Specify path to jarfile manually.]),
2468     LIBBASE_JAR=$withval)
2470 AC_ARG_WITH(system-odbc,
2471     AS_HELP_STRING([--with-system-odbc],
2472         [Use the odbc headers already on system.]),,
2473     [with_system_odbc="auto"])
2475 AC_ARG_WITH(system-sane,
2476     AS_HELP_STRING([--with-system-sane],
2477         [Use sane.h already on system.]),,
2478     [with_system_sane="$with_system_headers"])
2480 AC_ARG_WITH(system-bluez,
2481     AS_HELP_STRING([--with-system-bluez],
2482         [Use bluetooth.h already on system.]),,
2483     [with_system_bluez="$with_system_headers"])
2485 AC_ARG_WITH(system-boost,
2486     AS_HELP_STRING([--with-system-boost],
2487         [Use boost already on system.]),,
2488     [with_system_boost="$with_system_headers"])
2490 AC_ARG_WITH(system-dragonbox,
2491     AS_HELP_STRING([--with-system-dragonbox],
2492         [Use dragonbox already on system.]),,
2493     [with_system_dragonbox="$with_system_headers"])
2495 AC_ARG_WITH(system-frozen,
2496     AS_HELP_STRING([--with-system-frozen],
2497         [Use frozen already on system.]),,
2498     [with_system_frozen="$with_system_headers"])
2500 AC_ARG_WITH(system-libfixmath,
2501     AS_HELP_STRING([--with-system-libfixmath],
2502         [Use libfixmath already on system.]),,
2503     [with_system_libfixmath="$with_system_libs"])
2505 AC_ARG_WITH(system-glm,
2506     AS_HELP_STRING([--with-system-glm],
2507         [Use glm already on system.]),,
2508     [with_system_glm="$with_system_headers"])
2510 AC_ARG_WITH(system-hunspell,
2511     AS_HELP_STRING([--with-system-hunspell],
2512         [Use libhunspell already on system.]),,
2513     [with_system_hunspell="$with_system_libs"])
2515 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2516     AS_HELP_STRING([--enable-cairo-rgba],
2517         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2519 libo_FUZZ_ARG_ENABLE(zxing,
2520     AS_HELP_STRING([--disable-zxing],
2521        [Disable use of zxing external library.]))
2523 AC_ARG_WITH(system-zxing,
2524     AS_HELP_STRING([--with-system-zxing],
2525         [Use libzxing already on system.]),,
2526     [with_system_zxing="$with_system_libs"])
2528 AC_ARG_WITH(system-zxcvbn,
2529     AS_HELP_STRING([--with-system-zxcvbn],
2530         [Use libzxcvbn already on system.]),,
2531     [with_system_zxcvbn="$with_system_libs"])
2533 AC_ARG_WITH(system-box2d,
2534     AS_HELP_STRING([--with-system-box2d],
2535         [Use box2d already on system.]),,
2536     [with_system_box2d="$with_system_libs"])
2538 AC_ARG_WITH(system-mythes,
2539     AS_HELP_STRING([--with-system-mythes],
2540         [Use mythes already on system.]),,
2541     [with_system_mythes="$with_system_libs"])
2543 AC_ARG_WITH(system-altlinuxhyph,
2544     AS_HELP_STRING([--with-system-altlinuxhyph],
2545         [Use ALTLinuxhyph already on system.]),,
2546     [with_system_altlinuxhyph="$with_system_libs"])
2548 AC_ARG_WITH(system-lpsolve,
2549     AS_HELP_STRING([--with-system-lpsolve],
2550         [Use lpsolve already on system.]),,
2551     [with_system_lpsolve="$with_system_libs"])
2553 AC_ARG_WITH(system-coinmp,
2554     AS_HELP_STRING([--with-system-coinmp],
2555         [Use CoinMP already on system.]),,
2556     [with_system_coinmp="$with_system_libs"])
2558 AC_ARG_WITH(system-liblangtag,
2559     AS_HELP_STRING([--with-system-liblangtag],
2560         [Use liblangtag library already on system.]),,
2561     [with_system_liblangtag="$with_system_libs"])
2563 AC_ARG_WITH(system-lockfile,
2564     AS_HELP_STRING([--with-system-lockfile[=file]],
2565         [Detect a system lockfile program or use the \$file argument.]))
2567 AC_ARG_WITH(webdav,
2568     AS_HELP_STRING([--without-webdav],
2569         [Disable WebDAV support in the UCB.]))
2571 AC_ARG_WITH(linker-hash-style,
2572     AS_HELP_STRING([--with-linker-hash-style],
2573         [Use linker with --hash-style=<style> when linking shared objects.
2574          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2575          if supported on the build system, and "sysv" otherwise.]))
2577 AC_ARG_WITH(jdk-home,
2578     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2579         [If you have installed JDK 17 or later on your system please supply the
2580          path here. Note that this is not the location of the java command but the
2581          location of the entire distribution. In case of cross-compiling, this
2582          is the JDK of the host os. Use --with-build-platform-configure-options
2583          to point to a different build platform JDK.]),
2586 AC_ARG_WITH(help,
2587     AS_HELP_STRING([--with-help],
2588         [Enable the build of help. There is a special parameter "common" that
2589          can be used to bundle only the common part, .e.g help-specific icons.
2590          This is useful when you build the helpcontent separately.])
2591     [
2592                           Usage:     --with-help    build the old local help
2593                                  --without-help     no local help (default)
2594                                  --with-help=html   build the new HTML local help
2595                                  --with-help=online build the new HTML online help
2596     ],
2599 AC_ARG_WITH(omindex,
2600    AS_HELP_STRING([--with-omindex],
2601         [Enable the support of xapian-omega index for online help.])
2602    [
2603                          Usage: --with-omindex=server prepare the pages for omindex
2604                                 but let xapian-omega be built in server.
2605                                 --with-omindex=noxap do not prepare online pages
2606                                 for xapian-omega
2607   ],
2610 libo_FUZZ_ARG_WITH(java,
2611     AS_HELP_STRING([--with-java=<java command>],
2612         [Specify the name of the Java interpreter command. Typically "java"
2613          which is the default.
2615          To build without support for Java components, applets, accessibility
2616          or the XML filters written in Java, use --without-java or --with-java=no.]),
2617     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2618     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2621 AC_ARG_WITH(jvm-path,
2622     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2623         [Use a specific JVM search path at runtime.
2624          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2627 AC_ARG_WITH(ant-home,
2628     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2629         [If you have installed Apache Ant on your system, please supply the path here.
2630          Note that this is not the location of the Ant binary but the location
2631          of the entire distribution.]),
2634 AC_ARG_WITH(symbol-config,
2635     AS_HELP_STRING([--with-symbol-config],
2636         [Configuration for the crashreport symbol upload]),
2637         [],
2638         [with_symbol_config=no])
2640 AC_ARG_WITH(export-validation,
2641     AS_HELP_STRING([--without-export-validation],
2642         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2643 ,with_export_validation=auto)
2645 AC_ARG_WITH(bffvalidator,
2646     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2647         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2648          Requires installed Microsoft Office Binary File Format Validator.
2649          Note: export-validation (--with-export-validation) is required to be turned on.
2650          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2651 ,with_bffvalidator=no)
2653 libo_FUZZ_ARG_WITH(junit,
2654     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2655         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2656          --without-junit disables those tests. Not relevant in the --without-java case.]),
2657 ,with_junit=yes)
2659 AC_ARG_WITH(hamcrest,
2660     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2661         [Specifies the hamcrest jar file to use for JUnit-based tests.
2662          --without-junit disables those tests. Not relevant in the --without-java case.]),
2663 ,with_hamcrest=yes)
2665 AC_ARG_WITH(perl-home,
2666     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2667         [If you have installed Perl 5 Distribution, on your system, please
2668          supply the path here. Note that this is not the location of the Perl
2669          binary but the location of the entire distribution.]),
2672 libo_FUZZ_ARG_WITH(doxygen,
2673     AS_HELP_STRING(
2674         [--with-doxygen=<absolute path to doxygen executable>],
2675         [Specifies the doxygen executable to use when generating ODK C/C++
2676          documentation. --without-doxygen disables generation of ODK C/C++
2677          documentation. Not relevant in the --disable-odk case.]),
2678 ,with_doxygen=yes)
2680 AC_ARG_WITH(visual-studio,
2681     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2682         [Specify which Visual Studio version to use in case several are
2683          installed. Currently 2019 (default) and 2022 are supported.]),
2686 AC_ARG_WITH(windows-sdk,
2687     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2688         [Specify which Windows SDK, or "Windows Kit", version to use
2689          in case the one that came with the selected Visual Studio
2690          is not what you want for some reason. Note that not all compiler/SDK
2691          combinations are supported. The intent is that this option should not
2692          be needed.]),
2695 AC_ARG_WITH(lang,
2696     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2697         [Use this option to build LibreOffice with additional UI language support.
2698          English (US) is always included by default.
2699          Separate multiple languages with space.
2700          For all languages, use --with-lang=ALL.]),
2703 AC_ARG_WITH(locales,
2704     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2705         [Use this option to limit the locale information built in.
2706          Separate multiple locales with space.
2707          Very experimental and might well break stuff.
2708          Just a desperate measure to shrink code and data size.
2709          By default all the locales available is included.
2710          Just works with --disable-dynloading. Defaults to "ALL".
2711          This option is completely unrelated to --with-lang.])
2712     [
2713                           Affects also our character encoding conversion
2714                           tables for encodings mainly targeted for a
2715                           particular locale, like EUC-CN and EUC-TW for
2716                           zh, ISO-2022-JP for ja.
2718                           Affects also our add-on break iterator data for
2719                           some languages.
2721                           For the default, all locales, don't use this switch at all.
2722                           Specifying just the language part of a locale means all matching
2723                           locales will be included.
2724     ],
2727 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2728 libo_FUZZ_ARG_WITH(krb5,
2729     AS_HELP_STRING([--with-krb5],
2730         [Enable MIT Kerberos 5 support in modules that support it.
2731          By default automatically enabled on platforms
2732          where a good system Kerberos 5 is available.]),
2735 libo_FUZZ_ARG_WITH(gssapi,
2736     AS_HELP_STRING([--with-gssapi],
2737         [Enable GSSAPI support in modules that support it.
2738          By default automatically enabled on platforms
2739          where a good system GSSAPI is available.]),
2742 libo_FUZZ_ARG_WITH(lxml,
2743     AS_HELP_STRING([--without-lxml],
2744         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2745          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2746          report widget classes and ids.]),
2749 libo_FUZZ_ARG_WITH(latest-c++,
2750     AS_HELP_STRING([--with-latest-c++],
2751         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2752          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2753         [with_latest_c__=no])
2755 AC_ARG_WITH(gtk3-build,
2756     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2757         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2758          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2760 dnl ===================================================================
2761 dnl Branding
2762 dnl ===================================================================
2764 AC_ARG_WITH(branding,
2765     AS_HELP_STRING([--with-branding=/path/to/images],
2766         [Use given path to retrieve branding images set.])
2767     [
2768                           Search for intro.png about.svg and logo.svg.
2769                           If any is missing, default ones will be used instead.
2771                           Search also progress.conf for progress
2772                           settings on intro screen :
2774                           PROGRESSBARCOLOR="255,255,255" Set color of
2775                           progress bar. Comma separated RGB decimal values.
2776                           PROGRESSSIZE="407,6" Set size of progress bar.
2777                           Comma separated decimal values (width, height).
2778                           PROGRESSPOSITION="61,317" Set position of progress
2779                           bar from left,top. Comma separated decimal values.
2780                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2781                           bar frame. Comma separated RGB decimal values.
2782                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2783                           bar text. Comma separated RGB decimal values.
2784                           PROGRESSTEXTBASELINE="287" Set vertical position of
2785                           progress bar text from top. Decimal value.
2787                           Default values will be used if not found.
2788     ],
2792 AC_ARG_WITH(extra-buildid,
2793     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2794         [Show addition build identification in about dialog.]),
2798 AC_ARG_WITH(vendor,
2799     AS_HELP_STRING([--with-vendor="John the Builder"],
2800         [Set vendor of the build.]),
2803 AC_ARG_WITH(privacy-policy-url,
2804     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2805         [The URL to your privacy policy (needed when
2806          enabling online-update or crashreporting via breakpad)]),
2807         [if test "x$with_privacy_policy_url" = "xyes"; then
2808             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2809          elif test "x$with_privacy_policy_url" = "xno"; then
2810             with_privacy_policy_url="undefined"
2811          fi]
2812 ,[with_privacy_policy_url="undefined"])
2814 AC_ARG_WITH(android-package-name,
2815     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2816         [Set Android package name of the build.]),
2819 AC_ARG_WITH(compat-oowrappers,
2820     AS_HELP_STRING([--with-compat-oowrappers],
2821         [Install oo* wrappers in parallel with
2822          lo* ones to keep backward compatibility.
2823          Has effect only with make distro-pack-install]),
2826 AC_ARG_WITH(os-version,
2827     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2828         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2831 AC_ARG_WITH(parallelism,
2832     AS_HELP_STRING([--with-parallelism],
2833         [Number of jobs to run simultaneously during build. Parallel builds can
2834         save a lot of time on multi-cpu machines. Defaults to the number of
2835         CPUs on the machine, unless you configure --enable-icecream - then to
2836         40.]),
2839 AC_ARG_WITH(all-tarballs,
2840     AS_HELP_STRING([--with-all-tarballs],
2841         [Download all external tarballs unconditionally]))
2843 AC_ARG_WITH(gdrive-client-id,
2844     AS_HELP_STRING([--with-gdrive-client-id],
2845         [Provides the client id of the application for OAuth2 authentication
2846         on Google Drive. If either this or --with-gdrive-client-secret is
2847         empty, the feature will be disabled]),
2850 AC_ARG_WITH(gdrive-client-secret,
2851     AS_HELP_STRING([--with-gdrive-client-secret],
2852         [Provides the client secret of the application for OAuth2
2853         authentication on Google Drive. If either this or
2854         --with-gdrive-client-id is empty, the feature will be disabled]),
2857 AC_ARG_WITH(alfresco-cloud-client-id,
2858     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2859         [Provides the client id of the application for OAuth2 authentication
2860         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2861         empty, the feature will be disabled]),
2864 AC_ARG_WITH(alfresco-cloud-client-secret,
2865     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2866         [Provides the client secret of the application for OAuth2
2867         authentication on Alfresco Cloud. If either this or
2868         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2871 AC_ARG_WITH(onedrive-client-id,
2872     AS_HELP_STRING([--with-onedrive-client-id],
2873         [Provides the client id of the application for OAuth2 authentication
2874         on OneDrive. If either this or --with-onedrive-client-secret is
2875         empty, the feature will be disabled]),
2878 AC_ARG_WITH(onedrive-client-secret,
2879     AS_HELP_STRING([--with-onedrive-client-secret],
2880         [Provides the client secret of the application for OAuth2
2881         authentication on OneDrive. If either this or
2882         --with-onedrive-client-id is empty, the feature will be disabled]),
2885 dnl Check for coredumpctl support to present information about crashing test processes:
2886 AC_ARG_WITH(coredumpctl,
2887     AS_HELP_STRING([--with-coredumpctl],
2888         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2889         processes.]))
2891 AC_ARG_WITH(buildconfig-recorded,
2892     AS_HELP_STRING([--with-buildconfig-recorded],
2893         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2896 AC_MSG_CHECKING([whether to record build config])
2897 if test -z "$with_buildconfig_recorded"; then
2898     with_buildconfig_recorded=no
2900 if test "$with_buildconfig_recorded" = no; then
2901     AC_MSG_RESULT([no])
2902 else
2903     AC_MSG_RESULT([yes])
2904     # replace backslashes, to get a valid c++ string
2905     config_args=$(echo $ac_configure_args | tr '\\' '/')
2906     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2907     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2910 dnl ===================================================================
2911 dnl Do we want to use pre-build binary tarball for recompile
2912 dnl ===================================================================
2914 if test "$enable_library_bin_tar" = "yes" ; then
2915     USE_LIBRARY_BIN_TAR=TRUE
2916 else
2917     USE_LIBRARY_BIN_TAR=
2919 AC_SUBST(USE_LIBRARY_BIN_TAR)
2921 dnl ===================================================================
2922 dnl Test whether build target is Release Build
2923 dnl ===================================================================
2924 AC_MSG_CHECKING([whether build target is Release Build])
2925 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2926     AC_MSG_RESULT([no])
2927     ENABLE_RELEASE_BUILD=
2928     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2929     dnl the newlines and then complains about spaces.
2930     GET_TASK_ALLOW_ENTITLEMENT='<!-- We want to be able to debug a hardened process when not building for release --><key>com.apple.security.get-task-allow</key><true/>'
2931 else
2932     AC_MSG_RESULT([yes])
2933     ENABLE_RELEASE_BUILD=TRUE
2934     GET_TASK_ALLOW_ENTITLEMENT=
2936 AC_SUBST(ENABLE_RELEASE_BUILD)
2937 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2939 AC_MSG_CHECKING([whether to build a Community flavor])
2940 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2941     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2942     AC_MSG_RESULT([yes])
2943 else
2944     AC_MSG_RESULT([no])
2947 dnl ===================================================================
2948 dnl Test whether to sign Windows Build
2949 dnl ===================================================================
2950 AC_MSG_CHECKING([whether to sign windows build])
2951 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2952     AC_MSG_RESULT([yes])
2953     WINDOWS_BUILD_SIGNING="TRUE"
2954 else
2955     AC_MSG_RESULT([no])
2956     WINDOWS_BUILD_SIGNING="FALSE"
2958 AC_SUBST(WINDOWS_BUILD_SIGNING)
2960 dnl ===================================================================
2961 dnl MacOSX build and runtime environment options
2962 dnl ===================================================================
2964 AC_ARG_WITH(macosx-version-min-required,
2965     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2966         [set the minimum OS version needed to run the built LibreOffice])
2967     [
2968                           e. g.: --with-macosx-version-min-required=10.15
2969     ],
2972 dnl ===================================================================
2973 dnl Check for incompatible options set by fuzzing, and reset those
2974 dnl automatically to working combinations
2975 dnl ===================================================================
2977 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2978         "$enable_dbus" != "$enable_avahi"; then
2979     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2980     enable_avahi=$enable_dbus
2983 add_lopath_after ()
2985     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2986         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2987     fi
2990 add_lopath_before ()
2992     local IFS=${P_SEP}
2993     local path_cleanup
2994     local dir
2995     for dir in $LO_PATH ; do
2996         if test "$dir" != "$1" ; then
2997             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2998         fi
2999     done
3000     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
3003 dnl ===================================================================
3004 dnl check for required programs (grep, awk, sed, bash)
3005 dnl ===================================================================
3007 pathmunge ()
3009     local new_path
3010     if test -n "$1"; then
3011         if test "$build_os" = "cygwin"; then
3012             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3013                 PathFormat "$1"
3014                 new_path=`cygpath -sm "$formatted_path"`
3015             else
3016                 PathFormat "$1"
3017                 new_path=`cygpath -u "$formatted_path"`
3018             fi
3019         else
3020             new_path="$1"
3021         fi
3022         if test "$2" = "after"; then
3023             add_lopath_after "$new_path"
3024         else
3025             add_lopath_before "$new_path"
3026         fi
3027     fi
3030 AC_PROG_AWK
3031 AC_PATH_PROG( AWK, $AWK)
3032 if test -z "$AWK"; then
3033     AC_MSG_ERROR([install awk to run this script])
3036 AC_PATH_PROG(BASH, bash)
3037 if test -z "$BASH"; then
3038     AC_MSG_ERROR([bash not found in \$PATH])
3040 AC_SUBST(BASH)
3042 # prefer parallel compression tools, if available
3043 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3044 if test -z "$COMPRESSIONTOOL"; then
3045     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3046     if test -z "$COMPRESSIONTOOL"; then
3047         AC_MSG_ERROR([gzip not found in \$PATH])
3048     fi
3050 AC_SUBST(COMPRESSIONTOOL)
3052 AC_MSG_CHECKING([for GNU or BSD tar])
3053 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3054     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3055     if test $? -eq 0;  then
3056         GNUTAR=$a
3057         break
3058     fi
3059 done
3060 AC_MSG_RESULT($GNUTAR)
3061 if test -z "$GNUTAR"; then
3062     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3064 AC_SUBST(GNUTAR)
3066 AC_MSG_CHECKING([for tar's option to strip components])
3067 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3068 if test $? -eq 0; then
3069     STRIP_COMPONENTS="--strip-components"
3070 else
3071     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3072     if test $? -eq 0; then
3073         STRIP_COMPONENTS="--strip-path"
3074     else
3075         STRIP_COMPONENTS="unsupported"
3076     fi
3078 AC_MSG_RESULT($STRIP_COMPONENTS)
3079 if test x$STRIP_COMPONENTS = xunsupported; then
3080     AC_MSG_ERROR([you need a tar that is able to strip components.])
3082 AC_SUBST(STRIP_COMPONENTS)
3084 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3085 dnl desktop OSes from "mobile" ones.
3087 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3088 dnl In other words, that when building for an OS that is not a
3089 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3091 dnl Note the direction of the implication; there is no assumption that
3092 dnl cross-compiling would imply a non-desktop OS.
3094 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3095     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3096     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3097     if test "$_os" != Emscripten; then
3098         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3099     fi
3102 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3103 # also work with the default gtk3 plugin.
3104 if test "$enable_wasm_strip" = "yes"; then
3105     enable_avmedia=no
3106     enable_libcmis=no
3107     enable_coinmp=no
3108     enable_cups=no
3109     test "$_os" = Emscripten && enable_curl=no
3110     enable_database_connectivity=no
3111     enable_dbus=no
3112     enable_dconf=no
3113     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3114     enable_extension_integration=no
3115     enable_extensions=no
3116     enable_extension_update=no
3117     enable_gio=no
3118     enable_gpgmepp=no
3119     enable_ldap=no
3120     enable_lotuswordpro=no
3121     enable_lpsolve=no
3122     enable_nss=no
3123     enable_odk=no
3124     enable_online_update=no
3125     enable_opencl=no
3126     enable_pdfimport=no
3127     enable_randr=no
3128     enable_report_builder=no
3129     enable_scripting=no
3130     enable_sdremote_bluetooth=no
3131     enable_skia=no
3132     enable_xmlhelp=no
3133     enable_zxing=no
3134     test_libepubgen=no
3135     test_libcdr=no
3136     test_libcmis=no
3137     test_libetonyek=no
3138     test_libfreehand=no
3139     test_libmspub=no
3140     test_libpagemaker=no
3141     test_libqxp=no
3142     test_libvisio=no
3143     test_libzmf=no
3144     test_webdav=no
3145     with_galleries=no
3146     with_templates=no
3147     with_webdav=no
3148     with_x=no
3150     test "${with_fonts+set}" = set || with_fonts=yes
3151     test "${with_locales+set}" = set || with_locales=en
3153     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3154     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3155     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3156     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3157 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3158     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3159     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3160     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3161     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3162 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3163     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3164     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3165     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3166     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3167     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3168     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3169     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3170     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3173 EMSCRIPTEN_NEH_MAJOR=3
3174 EMSCRIPTEN_NEH_MINOR=1
3175 EMSCRIPTEN_NEH_TINY=3
3176 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3178 if test "$enable_wasm_exceptions" = yes; then
3179     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3180     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3181     if test $? -ne 0; then
3182         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3183     else
3184         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3185     fi
3186     ENABLE_WASM_EXCEPTIONS=TRUE
3188 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3190 # Whether to build "avmedia" functionality or not.
3192 if test "$enable_avmedia" = yes; then
3193     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3194     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3195 else
3196     test_gstreamer_1_0=no
3199 # Decide whether to build database connectivity stuff (including Base) or not.
3200 if test "$enable_database_connectivity" != no; then
3201     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3202     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3203 else
3204     if test "$_os" = iOS; then
3205         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3206     fi
3207     disable_database_connectivity_dependencies
3210 if test -z "$enable_extensions"; then
3211     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3212     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3213         enable_extensions=yes
3214     fi
3217 DISABLE_SCRIPTING=''
3218 if test "$enable_scripting" = yes; then
3219     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3220     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3221 else
3222     DISABLE_SCRIPTING='TRUE'
3223     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3226 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3227     # Disable dynamic_loading always for iOS and Android
3228     enable_dynamic_loading=no
3229 elif test -z "$enable_dynamic_loading"; then
3230     # Otherwise enable it unless specifically disabled
3231     enable_dynamic_loading=yes
3234 DISABLE_DYNLOADING=''
3235 if test "$enable_dynamic_loading" = yes; then
3236     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3237 else
3238     DISABLE_DYNLOADING='TRUE'
3239     if test $_os != iOS -a $_os != Android; then
3240         enable_database_connectivity=no
3241         enable_nss=no
3242         enable_odk=no
3243         enable_python=no
3244         enable_skia=no
3245         with_java=no
3246     fi
3248 AC_SUBST(DISABLE_DYNLOADING)
3250 ENABLE_CUSTOMTARGET_COMPONENTS=
3251 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3252     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3253     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3254         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3255     fi
3257 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3259 if test "$enable_extensions" = yes; then
3260     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3261     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3262 else
3263     enable_extension_integration=no
3264     enable_extension_update=no
3267 # remember SYSBASE value
3268 AC_SUBST(SYSBASE)
3270 dnl ===================================================================
3271 dnl  Sort out various gallery compilation options
3272 dnl ===================================================================
3273 WITH_GALLERY_BUILD=TRUE
3274 AC_MSG_CHECKING([how to build and package galleries])
3275 if test -n "${with_galleries}"; then
3276     if test "$with_galleries" = "build"; then
3277         if test "$enable_database_connectivity" = no; then
3278             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3279         fi
3280         AC_MSG_RESULT([build from source images internally])
3281     elif test "$with_galleries" = "no"; then
3282         WITH_GALLERY_BUILD=
3283         AC_MSG_RESULT([disable non-internal gallery build])
3284     else
3285         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3286     fi
3287 else
3288     if test $_os != iOS -a $_os != Android; then
3289         AC_MSG_RESULT([internal src images for desktop])
3290     else
3291         WITH_GALLERY_BUILD=
3292         AC_MSG_RESULT([disable src image build])
3293     fi
3295 AC_SUBST(WITH_GALLERY_BUILD)
3297 dnl ===================================================================
3298 dnl  Sort out various templates compilation options
3299 dnl ===================================================================
3300 WITH_TEMPLATES=TRUE
3301 AC_MSG_CHECKING([build with or without template files])
3302 if test -n "${with_templates}"; then
3303     if test "$with_templates" = "yes"; then
3304         AC_MSG_RESULT([enable all templates])
3305     elif test "$with_templates" = "no"; then
3306         WITH_TEMPLATES=
3307         AC_MSG_RESULT([disable non-internal templates])
3308     else
3309         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3310     fi
3311 else
3312     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3313         AC_MSG_RESULT([enable all templates])
3314     else
3315         WITH_TEMPLATES=
3316         AC_MSG_RESULT([disable non-internal templates])
3317     fi
3319 AC_SUBST(WITH_TEMPLATES)
3321 dnl ===================================================================
3322 dnl  Checks if ccache is available
3323 dnl ===================================================================
3324 CCACHE_DEPEND_MODE=
3325 if test "$enable_ccache" = "no"; then
3326     CCACHE=""
3327 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3328     case "%$CC%$CXX%" in
3329     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3330     # assume that's good then
3331     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3332         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3333         CCACHE_DEPEND_MODE=1
3334         ;;
3335     *)
3336         # try to use our own ccache if it is available and CCACHE was not already defined
3337         if test -z "$CCACHE"; then
3338             if test "$_os" = "WINNT"; then
3339                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3340             fi
3341             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3342                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3343             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3344                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3345             fi
3346         fi
3347         AC_PATH_PROG([CCACHE],[ccache],[not found])
3348         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3349             CCACHE=`win_short_path_for_make "$CCACHE"`
3350             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3351             rm -f conftest.txt
3352             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3353             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3354             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3355                 AC_MSG_RESULT(yes)
3356             else
3357                 AC_MSG_RESULT(no)
3358                 CCACHE="not found"
3359             fi
3360             rm -f conftest.txt
3361         fi
3362         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3363             # on windows/VC perhaps sccache is around?
3364             case "%$CC%$CXX%" in
3365             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3366             # assume that's good then
3367             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3368                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3369                 CCACHE_DEPEND_MODE=1
3370                 SCCACHE=1
3371                 ;;
3372             *)
3373                 # for sharing code below, reuse CCACHE env var
3374                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3375                 if test "$CCACHE" != "not found"; then
3376                     CCACHE=`win_short_path_for_make "$CCACHE"`
3377                     SCCACHE=1
3378                     CCACHE_DEPEND_MODE=1
3379                 fi
3380                 ;;
3381             esac
3382         fi
3383         if test "$CCACHE" = "not found"; then
3384             CCACHE=""
3385         fi
3386         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3387             CCACHE_DEPEND_MODE=1
3388             # Need to check for ccache version: otherwise prevents
3389             # caching of the results (like "-x objective-c++" for Mac)
3390             if test $_os = Darwin -o $_os = iOS; then
3391                 # Check ccache version
3392                 AC_MSG_CHECKING([whether version of ccache is suitable])
3393                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3394                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3395                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3396                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3397                 else
3398                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3399                     CCACHE=""
3400                     CCACHE_DEPEND_MODE=
3401                 fi
3402             fi
3403         fi
3404         if test "$enable_ccache" = yes && test -z "$CCACHE"; then
3405             AC_MSG_ERROR([No suitable ccache found])
3406         fi
3407         ;;
3408     esac
3409 else
3410     CCACHE=""
3412 if test "$enable_ccache" = "nodepend"; then
3413     CCACHE_DEPEND_MODE=""
3415 AC_SUBST(CCACHE_DEPEND_MODE)
3417 # sccache defaults are good enough
3418 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3419     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3420     # or (...) max_size = 20.0 G
3421     # -p works with both 4.2 and 4.4
3422     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3423     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3424     if test "$ccache_size" = ""; then
3425         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3426         if test "$ccache_size" = ""; then
3427             ccache_size=0
3428         fi
3429         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3430         if test $ccache_size -lt 1024; then
3431             CCACHE=""
3432             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3433             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3434         else
3435             # warn that ccache may be too small for debug build
3436             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3437             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3438         fi
3439     else
3440         if test $ccache_size -lt 5; then
3441             #warn that ccache may be too small for debug build
3442             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3443             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3444         fi
3445     fi
3448 ENABLE_Z7_DEBUG=
3449 if test "$enable_z7_debug" != no; then
3450     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3451         ENABLE_Z7_DEBUG=TRUE
3452     fi
3453 else
3454     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3455     add_warning "ccache will not work with --disable-z7-debug"
3457 AC_SUBST(ENABLE_Z7_DEBUG)
3459 dnl ===================================================================
3460 dnl  Checks for C compiler,
3461 dnl  The check for the C++ compiler is later on.
3462 dnl ===================================================================
3463 if test "$_os" != "WINNT"; then
3464     GCC_HOME_SET="true"
3465     AC_MSG_CHECKING([gcc home])
3466     if test -z "$with_gcc_home"; then
3467         if test "$enable_icecream" = "yes"; then
3468             if test -d "/usr/lib/icecc/bin"; then
3469                 GCC_HOME="/usr/lib/icecc/"
3470             elif test -d "/usr/libexec/icecc/bin"; then
3471                 GCC_HOME="/usr/libexec/icecc/"
3472             elif test -d "/opt/icecream/bin"; then
3473                 GCC_HOME="/opt/icecream/"
3474             else
3475                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3477             fi
3478         else
3479             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3480             GCC_HOME_SET="false"
3481         fi
3482     else
3483         GCC_HOME="$with_gcc_home"
3484     fi
3485     AC_MSG_RESULT($GCC_HOME)
3486     AC_SUBST(GCC_HOME)
3488     if test "$GCC_HOME_SET" = "true"; then
3489         if test -z "$CC"; then
3490             CC="$GCC_HOME/bin/gcc"
3491             CC_BASE="gcc"
3492         fi
3493         if test -z "$CXX"; then
3494             CXX="$GCC_HOME/bin/g++"
3495             CXX_BASE="g++"
3496         fi
3497     fi
3500 COMPATH=`dirname "$CC"`
3501 if test "$COMPATH" = "."; then
3502     AC_PATH_PROGS(COMPATH, $CC)
3503     dnl double square bracket to get single because of M4 quote...
3504     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3506 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3508 dnl ===================================================================
3509 dnl Java support
3510 dnl ===================================================================
3511 AC_MSG_CHECKING([whether to build with Java support])
3512 if test "$with_java" != "no"; then
3513     if test "$DISABLE_SCRIPTING" = TRUE; then
3514         AC_MSG_RESULT([no, overridden by --disable-scripting])
3515         ENABLE_JAVA=""
3516         with_java=no
3517     else
3518         AC_MSG_RESULT([yes])
3519         ENABLE_JAVA="TRUE"
3520         AC_DEFINE(HAVE_FEATURE_JAVA)
3521     fi
3522 else
3523     AC_MSG_RESULT([no])
3524     ENABLE_JAVA=""
3527 AC_SUBST(ENABLE_JAVA)
3529 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3531 dnl ENABLE_JAVA="" indicate no Java support at all
3533 dnl ===================================================================
3534 dnl Check macOS SDK and compiler
3535 dnl ===================================================================
3537 if test $_os = Darwin; then
3539     # The SDK in the currently selected Xcode should be found.
3541     AC_MSG_CHECKING([what macOS SDK to use])
3542     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3543     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3544     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3545     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3546     # problems that existed in the PPC days with target versions not being respected or random
3547     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3548     # SDK version is enough, no need to do both...
3549     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3550     if test ! -d "$MACOSX_SDK_PATH"; then
3551         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3552     fi
3553     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3554     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3555     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3556     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3557     # 10.10.2 is 101002
3558     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3559     # correct version in case such an old SDK is specified, it will be rejected later anyway
3560     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3561     if test $MACOSX_SDK_VERSION -lt 101500; then
3562         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3563     fi
3564     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3565         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3566     fi
3567     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3569     AC_MSG_CHECKING([what minimum version of macOS to require])
3570     if test "$with_macosx_version_min_required" = "" ; then
3571         if test "$host_cpu" = x86_64; then
3572             with_macosx_version_min_required="10.15";
3573         else
3574             with_macosx_version_min_required="11.0";
3575         fi
3576     fi
3577     # see same notes about MACOSX_SDK_VERSION above
3578     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3579     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3580         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3581     fi
3582     AC_MSG_RESULT([$with_macosx_version_min_required])
3584     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3585     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3586         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3587     else
3588         AC_MSG_RESULT([yes])
3589     fi
3591     # export this so that "xcrun" invocations later return matching values
3592     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3593     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3594     export DEVELOPER_DIR
3595     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3596     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3598     AC_MSG_CHECKING([whether Xcode is new enough])
3599     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3600     my_xcode_ver2=${my_xcode_ver1#Xcode }
3601     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3602     if test "$my_xcode_ver3" -ge 1205; then
3603         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3604         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3605             if test "$my_xcode_ver3" -ge 1600; then
3606                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3607                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3608                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3609             fi
3610             if test "$my_xcode_ver3" -ge 1500; then
3611                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3612                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3613                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3614                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3615                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3616                 x_LDFLAGS=
3617             fi
3618         fi
3619     else
3620         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3621     fi
3623     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3624     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3626     LIBTOOL=/usr/bin/libtool
3627     INSTALL_NAME_TOOL=install_name_tool
3628     if test -z "$save_CC"; then
3629         stdlib=-stdlib=libc++
3631         AC_MSG_CHECKING([what C compiler to use])
3632         CC="`xcrun -find clang`"
3633         CC_BASE=`first_arg_basename "$CC"`
3634         if test "$host_cpu" = x86_64; then
3635             CC+=" -target x86_64-apple-macos"
3636         else
3637             CC+=" -target arm64-apple-macos"
3638         fi
3639         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3640         AC_MSG_RESULT([$CC])
3642         AC_MSG_CHECKING([what C++ compiler to use])
3643         CXX="`xcrun -find clang++`"
3644         CXX_BASE=`first_arg_basename "$CXX"`
3645         if test "$host_cpu" = x86_64; then
3646             CXX+=" -target x86_64-apple-macos"
3647         else
3648             CXX+=" -target arm64-apple-macos"
3649         fi
3650         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3651         AC_MSG_RESULT([$CXX])
3653         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3654         AR=`xcrun -find ar`
3655         NM=`xcrun -find nm`
3656         STRIP=`xcrun -find strip`
3657         LIBTOOL=`xcrun -find libtool`
3658         RANLIB=`xcrun -find ranlib`
3659     fi
3661     AC_MSG_CHECKING([whether to do code signing])
3663     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3664         AC_MSG_RESULT([no])
3665     else
3666         if test "$enable_macosx_code_signing" = yes; then
3667             # By default use the first suitable certificate (?).
3669             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3670             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3671             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3672             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3673             # "Developer ID Application" one.
3674             identity="Developer ID Application:"
3675         else
3676             identity=$enable_macosx_code_signing
3677         fi
3678         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3679         if test -n "$identity"; then
3680             MACOSX_CODESIGNING_IDENTITY=$identity
3681             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3682             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3683         else
3684             AC_MSG_ERROR([cannot determine identity to use])
3685         fi
3686     fi
3688     AC_MSG_CHECKING([whether to create a Mac App Store package])
3690     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3691         AC_MSG_RESULT([no])
3692     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3693         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3694     else
3695         if test "$enable_macosx_package_signing" = yes; then
3696             # By default use the first suitable certificate.
3697             # It should be a "3rd Party Mac Developer Installer" one
3698             identity="3rd Party Mac Developer Installer:"
3699         else
3700             identity=$enable_macosx_package_signing
3701         fi
3702         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3703         if test -n "$identity"; then
3704             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3705             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3706             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3707         else
3708             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3709         fi
3710     fi
3712     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3713         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3714     fi
3716     AC_MSG_CHECKING([whether to sandbox the application])
3718     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3719         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3720     elif test "$enable_macosx_sandbox" = yes; then
3721         ENABLE_MACOSX_SANDBOX=TRUE
3722         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3723         AC_MSG_RESULT([yes])
3724     else
3725         AC_MSG_RESULT([no])
3726     fi
3728     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3729     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3730     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3732     if test -n "$with_macosx_provisioning_profile" ; then
3733         if test ! -f "$with_macosx_provisioning_profile"; then
3734             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3735         else
3736             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3737             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3738                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3739                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3740                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3741         fi
3742     fi
3744 AC_SUBST(MACOSX_SDK_PATH)
3745 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3746 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3747 AC_SUBST(INSTALL_NAME_TOOL)
3748 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3749 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3750 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3751 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3752 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3753 AC_SUBST(MACOSX_PROVISIONING_INFO)
3754 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3755 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3756 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3758 dnl ===================================================================
3759 dnl Check iOS SDK and compiler
3760 dnl ===================================================================
3762 if test $_os = iOS; then
3763     AC_MSG_CHECKING([what iOS SDK to use])
3765     if test "$enable_ios_simulator" = "yes"; then
3766         platformlc=iphonesimulator
3767         versionmin=-mios-simulator-version-min=14.5
3768     else
3769         platformlc=iphoneos
3770         versionmin=-miphoneos-version-min=14.5
3771     fi
3773     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3775     if ! test -d "$sysroot"; then
3776         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3777     fi
3779     AC_MSG_RESULT($sysroot)
3781     stdlib="-stdlib=libc++"
3783     AC_MSG_CHECKING([what C compiler to use])
3784     CC="`xcrun -find clang`"
3785     CC_BASE=`first_arg_basename "$CC"`
3786     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3787     AC_MSG_RESULT([$CC])
3789     AC_MSG_CHECKING([what C++ compiler to use])
3790     CXX="`xcrun -find clang++`"
3791     CXX_BASE=`first_arg_basename "$CXX"`
3792     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3793     AC_MSG_RESULT([$CXX])
3795     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3796     AR=`xcrun -find ar`
3797     NM=`xcrun -find nm`
3798     STRIP=`xcrun -find strip`
3799     LIBTOOL=`xcrun -find libtool`
3800     RANLIB=`xcrun -find ranlib`
3803 AC_MSG_CHECKING([whether to treat the installation as read-only])
3805 if test $_os = Darwin; then
3806     enable_readonly_installset=yes
3807 elif test "$enable_extensions" != yes; then
3808     enable_readonly_installset=yes
3810 if test "$enable_readonly_installset" = yes; then
3811     AC_MSG_RESULT([yes])
3812     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3813 else
3814     AC_MSG_RESULT([no])
3817 dnl ===================================================================
3818 dnl Structure of install set
3819 dnl ===================================================================
3821 if test $_os = Darwin; then
3822     LIBO_BIN_FOLDER=MacOS
3823     LIBO_ETC_FOLDER=Resources
3824     LIBO_LIBEXEC_FOLDER=MacOS
3825     LIBO_LIB_FOLDER=Frameworks
3826     LIBO_LIB_PYUNO_FOLDER=Resources
3827     LIBO_SHARE_FOLDER=Resources
3828     LIBO_SHARE_HELP_FOLDER=Resources/help
3829     LIBO_SHARE_JAVA_FOLDER=Resources/java
3830     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3831     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3832     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3833     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3834     LIBO_URE_BIN_FOLDER=MacOS
3835     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3836     LIBO_URE_LIB_FOLDER=Frameworks
3837     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3838     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3839 elif test $_os = WINNT; then
3840     LIBO_BIN_FOLDER=program
3841     LIBO_ETC_FOLDER=program
3842     LIBO_LIBEXEC_FOLDER=program
3843     LIBO_LIB_FOLDER=program
3844     LIBO_LIB_PYUNO_FOLDER=program
3845     LIBO_SHARE_FOLDER=share
3846     LIBO_SHARE_HELP_FOLDER=help
3847     LIBO_SHARE_JAVA_FOLDER=program/classes
3848     LIBO_SHARE_PRESETS_FOLDER=presets
3849     LIBO_SHARE_READMES_FOLDER=readmes
3850     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3851     LIBO_SHARE_SHELL_FOLDER=program/shell
3852     LIBO_URE_BIN_FOLDER=program
3853     LIBO_URE_ETC_FOLDER=program
3854     LIBO_URE_LIB_FOLDER=program
3855     LIBO_URE_MISC_FOLDER=program
3856     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3857 else
3858     LIBO_BIN_FOLDER=program
3859     LIBO_ETC_FOLDER=program
3860     LIBO_LIBEXEC_FOLDER=program
3861     LIBO_LIB_FOLDER=program
3862     LIBO_LIB_PYUNO_FOLDER=program
3863     LIBO_SHARE_FOLDER=share
3864     LIBO_SHARE_HELP_FOLDER=help
3865     LIBO_SHARE_JAVA_FOLDER=program/classes
3866     LIBO_SHARE_PRESETS_FOLDER=presets
3867     LIBO_SHARE_READMES_FOLDER=readmes
3868     if test "$enable_fuzzers" != yes; then
3869         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3870     else
3871         LIBO_SHARE_RESOURCE_FOLDER=resource
3872     fi
3873     LIBO_SHARE_SHELL_FOLDER=program/shell
3874     LIBO_URE_BIN_FOLDER=program
3875     LIBO_URE_ETC_FOLDER=program
3876     LIBO_URE_LIB_FOLDER=program
3877     LIBO_URE_MISC_FOLDER=program
3878     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3880 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3885 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3886 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3887 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3888 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3889 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3890 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3891 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3892 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3893 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3894 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3895 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3897 # Not all of them needed in config_host.mk, add more if need arises
3898 AC_SUBST(LIBO_BIN_FOLDER)
3899 AC_SUBST(LIBO_ETC_FOLDER)
3900 AC_SUBST(LIBO_LIB_FOLDER)
3901 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3902 AC_SUBST(LIBO_SHARE_FOLDER)
3903 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3904 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3905 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3906 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3907 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3908 AC_SUBST(LIBO_URE_BIN_FOLDER)
3909 AC_SUBST(LIBO_URE_ETC_FOLDER)
3910 AC_SUBST(LIBO_URE_LIB_FOLDER)
3911 AC_SUBST(LIBO_URE_MISC_FOLDER)
3912 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3914 dnl ===================================================================
3915 dnl Windows specific tests and stuff
3916 dnl ===================================================================
3918 reg_get_value()
3920     # Return value: $regvalue
3921     unset regvalue
3923     if test "$build_os" = "wsl"; then
3924         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3925         return
3926     fi
3928     local _regentry="/proc/registry${1}/${2}"
3929     if test -f "$_regentry"; then
3930         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3931         # Registry keys read via /proc/registry* are always \0 terminated!
3932         local _regvalue=$(tr -d '\0' < "$_regentry")
3933         if test $? -eq 0; then
3934             regvalue=$_regvalue
3935         fi
3936     fi
3939 # Get a value from the 32-bit side of the Registry
3940 reg_get_value_32()
3942     reg_get_value "32" "$1"
3945 # Get a value from the 64-bit side of the Registry
3946 reg_get_value_64()
3948     reg_get_value "64" "$1"
3951 reg_list_values()
3953     # Return value: $reglist
3954     unset reglist
3956     if test "$build_os" = "wsl"; then
3957         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3958         return
3959     fi
3961     reglist=$(ls "/proc/registry${1}/${2}")
3964 # List values from the 32-bit side of the Registry
3965 reg_list_values_32()
3967     reg_list_values "32" "$1"
3970 # List values from the 64-bit side of the Registry
3971 reg_list_values_64()
3973     reg_list_values "64" "$1"
3976 case "$host_os" in
3977 cygwin*|wsl*)
3978     COM=MSC
3979     OS=WNT
3980     RTL_OS=Windows
3981     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3982         P_SEP=";"
3983     else
3984         P_SEP=:
3985     fi
3986     case "$host_cpu" in
3987     x86_64)
3988         CPUNAME=X86_64
3989         RTL_ARCH=X86_64
3990         PLATFORMID=windows_x86_64
3991         WINDOWS_X64=1
3992         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3993         WIN_HOST_ARCH="x64"
3994         WIN_MULTI_ARCH="x86"
3995         WIN_HOST_BITS=64
3996         ;;
3997     i*86)
3998         CPUNAME=INTEL
3999         RTL_ARCH=x86
4000         PLATFORMID=windows_x86
4001         WIN_HOST_ARCH="x86"
4002         WIN_HOST_BITS=32
4003         WIN_OTHER_ARCH="x64"
4004         ;;
4005     aarch64)
4006         CPUNAME=AARCH64
4007         RTL_ARCH=AARCH64
4008         PLATFORMID=windows_aarch64
4009         WINDOWS_X64=1
4010         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4011         WIN_HOST_ARCH="arm64"
4012         WIN_HOST_BITS=64
4013         with_ucrt_dir=no
4014         ;;
4015     *)
4016         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4017         ;;
4018     esac
4020     case "$build_cpu" in
4021     x86_64) WIN_BUILD_ARCH="x64" ;;
4022     i*86) WIN_BUILD_ARCH="x86" ;;
4023     aarch64) WIN_BUILD_ARCH="arm64" ;;
4024     *)
4025         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4026         ;;
4027     esac
4029     SCPDEFS="$SCPDEFS -D_MSC_VER"
4030     ;;
4031 esac
4033 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4034 # other-arch won't, but wouldn't break the build (x64 on x86).
4035 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4036     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4040 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4041     # To allow building Windows multi-arch releases without cross-tooling
4042     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4043         cross_compiling="yes"
4044     fi
4047 if test "$cross_compiling" = "yes"; then
4048     export CROSS_COMPILING=TRUE
4049     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4050         ENABLE_WASM_STRIP=TRUE
4051     fi
4052     if test "$_os" = "Emscripten"; then
4053         if test "$with_main_module" = "calc"; then
4054             ENABLE_WASM_STRIP_WRITER=TRUE
4055         elif test "$with_main_module" = "writer"; then
4056             ENABLE_WASM_STRIP_CALC=TRUE
4057         fi
4058     fi
4059 else
4060     CROSS_COMPILING=
4061     BUILD_TYPE="$BUILD_TYPE NATIVE"
4063 AC_SUBST(CROSS_COMPILING)
4064 AC_SUBST(ENABLE_WASM_STRIP)
4065 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4066 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4068 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4069 # NOTE: must _not_ be used for bundled external libraries!
4070 ISYSTEM=
4071 if test "$GCC" = "yes"; then
4072     AC_MSG_CHECKING( for -isystem )
4073     save_CFLAGS=$CFLAGS
4074     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4075     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4076     CFLAGS=$save_CFLAGS
4077     if test -n "$ISYSTEM"; then
4078         AC_MSG_RESULT(yes)
4079     else
4080         AC_MSG_RESULT(no)
4081     fi
4083 if test -z "$ISYSTEM"; then
4084     # fall back to using -I
4085     ISYSTEM=-I
4087 AC_SUBST(ISYSTEM)
4089 dnl ===================================================================
4090 dnl  Check which Visual Studio compiler is used
4091 dnl ===================================================================
4093 map_vs_year_to_version()
4095     # Return value: $vsversion
4097     unset vsversion
4099     case $1 in
4100     2019)
4101         vsversion=16;;
4102     2022)
4103         vsversion=17;;
4104     2022preview)
4105         vsversion=17.9;;
4106     *)
4107         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4108     esac
4111 vs_versions_to_check()
4113     # Args: $1 (optional) : versions to check, in the order of preference
4114     # Return value: $vsversions
4116     unset vsversions
4118     if test -n "$1"; then
4119         map_vs_year_to_version "$1"
4120         vsversions=$vsversion
4121     else
4122         # Default version is 2019
4123         vsversions="16"
4124     fi
4127 win_get_env_from_vsdevcmdbat()
4129     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4130     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4131     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4132     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4133     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4134     local result
4135     if test "$build_os" = "wsl"; then
4136         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4137     else
4138         chmod +x $WRAPPERBATCHFILEPATH
4139         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4140     fi
4141     rm -f $WRAPPERBATCHFILEPATH
4142     printf '%s' "$result"
4145 find_ucrt()
4147     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4148     if test -n "$regvalue"; then
4149         PathFormat "$regvalue"
4150         UCRTSDKDIR=$formatted_path_unix
4151         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4152         UCRTVERSION=$regvalue
4153         # Rest if not exist
4154         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4155           UCRTSDKDIR=
4156         fi
4157     fi
4158     if test -z "$UCRTSDKDIR"; then
4159         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4160         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4161         if test -f "$ide_env_file"; then
4162             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4163             UCRTSDKDIR=$formatted_path
4164             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4165             dnl Hack needed at least by tml:
4166             if test "$UCRTVERSION" = 10.0.15063.0 \
4167                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4168                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4169             then
4170                 UCRTVERSION=10.0.14393.0
4171             fi
4172         else
4173           AC_MSG_ERROR([No UCRT found])
4174         fi
4175     fi
4178 find_msvc()
4180     # Find Visual C++
4181     # Args: $1 (optional) : The VS version year
4182     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4184     unset vctest vctoolset vcnumwithdot vcbuildnumber
4186     vs_versions_to_check "$1"
4187     if test "$build_os" = wsl; then
4188         vswhere="$PROGRAMFILESX86"
4189         if test -z "$vswhere"; then
4190             vswhere="c:\\Program Files (x86)"
4191         fi
4192     else
4193         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4194     fi
4195     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4196     PathFormat "$vswhere"
4197     vswhere=$formatted_path_unix
4198     for ver in $vsversions; do
4199         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4200         if test -z "$vswhereoutput"; then
4201             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4202         fi
4203         # Fall back to all MS products (this includes VC++ Build Tools)
4204         if ! test -n "$vswhereoutput"; then
4205             AC_MSG_CHECKING([VC++ Build Tools and similar])
4206             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4207         fi
4208         if test -n "$vswhereoutput"; then
4209             PathFormat "$vswhereoutput"
4210             vctest=$formatted_path_unix
4211             break
4212         fi
4213     done
4215     if test -n "$vctest"; then
4216         vcnumwithdot="$ver"
4217         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4218             vcnumwithdot=$vcnumwithdot.0
4219         fi
4220         case "$vcnumwithdot" in
4221         16.0)
4222             vcyear=2019
4223             vctoolset=v142
4224             ;;
4225         17.0 | 17.9)
4226             vcyear=2022
4227             vctoolset=v143
4228             ;;
4229         esac
4230         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4232     fi
4235 test_cl_exe()
4237     AC_MSG_CHECKING([$1 compiler])
4239     CL_EXE_PATH="$2/cl.exe"
4241     if test ! -f "$CL_EXE_PATH"; then
4242         if test "$1" = "multi-arch"; then
4243             AC_MSG_WARN([no compiler (cl.exe) in $2])
4244             return 1
4245         else
4246             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4247         fi
4248     fi
4250     dnl ===========================================================
4251     dnl  Check for the corresponding mspdb*.dll
4252     dnl ===========================================================
4254     # MSVC 15.0 has libraries from 14.0?
4255     mspdbnum="140"
4257     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4258         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4259     fi
4261     # The compiles has to find its shared libraries
4262     OLD_PATH="$PATH"
4263     TEMP_PATH=`cygpath -d "$2"`
4264     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4266     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4267         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4268     fi
4270     PATH="$OLD_PATH"
4272     AC_MSG_RESULT([$CL_EXE_PATH])
4275 SOLARINC=
4276 MSBUILD_PATH=
4277 DEVENV=
4278 if test "$_os" = "WINNT"; then
4279     AC_MSG_CHECKING([Visual C++])
4280     find_msvc "$with_visual_studio"
4281     if test -z "$vctest"; then
4282         if test -n "$with_visual_studio"; then
4283             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4284         else
4285             AC_MSG_ERROR([no Visual Studio installation found])
4286         fi
4287     fi
4288     AC_MSG_RESULT([])
4290     VC_PRODUCT_DIR="$vctest/VC"
4291     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4293     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4294     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4295         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4296         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4297         if test $? -ne 0; then
4298             WIN_MULTI_ARCH=""
4299             WIN_OTHER_ARCH=""
4300         fi
4301     fi
4303     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4304         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4305         test_cl_exe "build" "$MSVC_BUILD_PATH"
4306     fi
4308     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4309         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4310         test_cl_exe "host" "$MSVC_HOST_PATH"
4311     else
4312         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4313     fi
4315     AC_MSG_CHECKING([for short pathname of VC product directory])
4316     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4317     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4319     UCRTSDKDIR=
4320     UCRTVERSION=
4322     AC_MSG_CHECKING([for UCRT location])
4323     find_ucrt
4324     # find_ucrt errors out if it doesn't find it
4325     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4326     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4327     ucrtincpath_formatted=$formatted_path
4328     # SOLARINC is used for external modules and must be set too.
4329     # And no, it's not sufficient to set SOLARINC only, as configure
4330     # itself doesn't honour it.
4331     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4332     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4333     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4334     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4336     AC_SUBST(UCRTSDKDIR)
4337     AC_SUBST(UCRTVERSION)
4339     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4340     # Find the proper version of MSBuild.exe to use based on the VS version
4341     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4342     if test -z "$regvalue" ; then
4343         if test "$WIN_BUILD_ARCH" != "x64"; then
4344             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4345         else
4346             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4347         fi
4348     fi
4349     if test -d "$regvalue" ; then
4350         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4351         AC_MSG_RESULT([$regvalue])
4352     else
4353         AC_MSG_ERROR([MSBuild.exe location not found])
4354     fi
4356     # Find the version of devenv.exe
4357     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4358     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4359     DEVENV_unix=$(cygpath -u "$DEVENV")
4360     if test ! -e "$DEVENV_unix"; then
4361         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4362     fi
4364     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4365     dnl needed when building CLR code:
4366     if test -z "$MSVC_CXX"; then
4367         # This gives us a posix path with 8.3 filename restrictions
4368         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4369     fi
4371     if test -z "$CC"; then
4372         CC=$MSVC_CXX
4373         CC_BASE=`first_arg_basename "$CC"`
4374     fi
4375     if test -z "$CXX"; then
4376         CXX=$MSVC_CXX
4377         CXX_BASE=`first_arg_basename "$CXX"`
4378     fi
4380     if test -n "$CC"; then
4381         # Remove /cl.exe from CC case insensitive
4382         AC_MSG_NOTICE([found Visual C++ $vcyear])
4384         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4385         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4387         PathFormat "$COMPATH"
4388         COMPATH=`win_short_path_for_make "$formatted_path"`
4390         VCVER=$vcnumwithdot
4391         VCTOOLSET=$vctoolset
4393         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4394         # are always "better", we list them in reverse chronological order.
4396         case "$vcnumwithdot" in
4397         16.0 | 17.0 | 17.9)
4398             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4399             ;;
4400         esac
4402         # The expectation is that --with-windows-sdk should not need to be used
4403         if test -n "$with_windows_sdk"; then
4404             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4405             *" "$with_windows_sdk" "*)
4406                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4407                 ;;
4408             *)
4409                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4410                 ;;
4411             esac
4412         fi
4414         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4415         ac_objext=obj
4416         ac_exeext=exe
4418     else
4419         AC_MSG_ERROR([Visual C++ not found after all, huh])
4420     fi
4422     # ERROR if VS version < 16.5
4423     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4424     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4425         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4426         // between Visual Studio versions and _MSC_VER:
4427         #if _MSC_VER < 1925
4428         #error
4429         #endif
4430     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4432     # WARN if VS version < 16.10
4433     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4434     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4435         #if _MSC_VER < 1929
4436         #error
4437         #endif
4438     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4440     if test $vs2019_recommended_version = yes; then
4441         AC_MSG_RESULT([yes])
4442     else
4443         AC_MSG_WARN([no])
4444         add_warning "You should have at least Visual Studio 2019 version 16.10 to avoid build problems. Otherwise, you may face problems with the build of some modules including dragonbox."
4445     fi
4447     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4448     # version of the Explorer extension (and maybe other small
4449     # bits, too) needed when installing a 32-bit LibreOffice on a
4450     # 64-bit OS. The 64-bit Explorer extension is a feature that
4451     # has been present since long in OOo. Don't confuse it with
4452     # building LibreOffice itself as 64-bit code.
4454     BUILD_X64=
4455     CXX_X64_BINARY=
4457     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4458         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4459         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4460              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4461         then
4462             BUILD_X64=TRUE
4463             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4464             AC_MSG_RESULT([found])
4465         else
4466             AC_MSG_RESULT([not found])
4467             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4468         fi
4469     elif test "$WIN_HOST_ARCH" = "x64"; then
4470         CXX_X64_BINARY=$CXX
4471     fi
4472     AC_SUBST(BUILD_X64)
4474     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4475     AC_SUBST(CXX_X64_BINARY)
4477     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4478     # needed to support TWAIN scan on both 32- and 64-bit systems
4480     case "$WIN_HOST_ARCH" in
4481     x64)
4482         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4483         if test -n "$CXX_X86_BINARY"; then
4484             BUILD_X86=TRUE
4485             AC_MSG_RESULT([preset])
4486         elif test -n "$WIN_MULTI_ARCH"; then
4487             BUILD_X86=TRUE
4488             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4489             AC_MSG_RESULT([found])
4490         else
4491             AC_MSG_RESULT([not found])
4492             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4493         fi
4494         ;;
4495     x86)
4496         BUILD_X86=TRUE
4497         CXX_X86_BINARY=$MSVC_CXX
4498         ;;
4499     esac
4500     AC_SUBST(BUILD_X86)
4501     AC_SUBST(CXX_X86_BINARY)
4503 AC_SUBST(VCVER)
4504 AC_SUBST(VCTOOLSET)
4505 AC_SUBST(DEVENV)
4506 AC_SUBST(MSVC_CXX)
4508 COM_IS_CLANG=
4509 AC_MSG_CHECKING([whether the compiler is actually Clang])
4510 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4511     #ifndef __clang__
4512     you lose
4513     #endif
4514     int foo=42;
4515     ]])],
4516     [AC_MSG_RESULT([yes])
4517      COM_IS_CLANG=TRUE],
4518     [AC_MSG_RESULT([no])])
4519 AC_SUBST(COM_IS_CLANG)
4521 CLANGVER=
4522 if test "$COM_IS_CLANG" = TRUE; then
4523     AC_MSG_CHECKING([whether Clang is new enough])
4524     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4525         #if !defined __apple_build_version__
4526         #error
4527         #endif
4528         ]])],
4529         [my_apple_clang=yes],[my_apple_clang=])
4530     if test "$my_apple_clang" = yes; then
4531         AC_MSG_RESULT([assumed yes (Apple Clang)])
4532     elif test "$_os" = Emscripten; then
4533         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4534     else
4535         if test "$_os" = WINNT; then
4536             dnl In which case, assume clang-cl:
4537             my_args="/EP /TC"
4538         else
4539             my_args="-E -P"
4540         fi
4541         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4542         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4543         CLANGVER=`echo $clang_version \
4544             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4545         if test "$CLANGVER" -ge 120000; then
4546             AC_MSG_RESULT([yes ($clang_version)])
4547         else
4548             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4549         fi
4550         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4551         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4552     fi
4555 SHOWINCLUDES_PREFIX=
4556 if test "$_os" = WINNT; then
4557     dnl We need to guess the prefix of the -showIncludes output, it can be
4558     dnl localized
4559     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4560     echo "#include <stdlib.h>" > conftest.c
4561     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4562         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4563     rm -f conftest.c conftest.obj
4564     if test -z "$SHOWINCLUDES_PREFIX"; then
4565         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4566     else
4567         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4568     fi
4570 AC_SUBST(SHOWINCLUDES_PREFIX)
4573 # prefix C with ccache if needed
4575 if test "$CCACHE" != ""; then
4576     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4578     AC_LANG_PUSH([C])
4579     save_CFLAGS=$CFLAGS
4580     CFLAGS="$CFLAGS --ccache-skip -O2"
4581     # msvc does not fail on unknown options, check stdout
4582     if test "$COM" = MSC; then
4583         CFLAGS="$CFLAGS -nologo"
4584     fi
4585     save_ac_c_werror_flag=$ac_c_werror_flag
4586     ac_c_werror_flag=yes
4587     dnl an empty program will do, we're checking the compiler flags
4588     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4589                       [use_ccache=yes], [use_ccache=no])
4590     CFLAGS=$save_CFLAGS
4591     ac_c_werror_flag=$save_ac_c_werror_flag
4592     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4593         AC_MSG_RESULT([yes])
4594     else
4595         CC="$CCACHE $CC"
4596         CC_BASE="ccache $CC_BASE"
4597         AC_MSG_RESULT([no])
4598     fi
4599     AC_LANG_POP([C])
4602 # ===================================================================
4603 # check various GCC options that Clang does not support now but maybe
4604 # will somewhen in the future, check them even for GCC, so that the
4605 # flags are set
4606 # ===================================================================
4608 HAVE_GCC_GGDB2=
4609 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4610     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4611     save_CFLAGS=$CFLAGS
4612     CFLAGS="$CFLAGS -Werror -ggdb2"
4613     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4614     CFLAGS=$save_CFLAGS
4615     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4616         AC_MSG_RESULT([yes])
4617     else
4618         AC_MSG_RESULT([no])
4619     fi
4621     if test "$host_cpu" = "m68k"; then
4622         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4623         save_CFLAGS=$CFLAGS
4624         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4625         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4626         CFLAGS=$save_CFLAGS
4627         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4628             AC_MSG_RESULT([yes])
4629         else
4630             AC_MSG_ERROR([no])
4631         fi
4632     fi
4634 AC_SUBST(HAVE_GCC_GGDB2)
4636 dnl ===================================================================
4637 dnl  Test the gcc version
4638 dnl ===================================================================
4639 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4640     AC_MSG_CHECKING([the GCC version])
4641     _gcc_version=`$CC -dumpfullversion`
4642     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4643         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4644     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4646     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4648     if test "$gcc_full_version" -lt 120000; then
4649         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4650     fi
4651 else
4652     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4653     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4654     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4655     # (which reports itself as GCC 4.2.1).
4656     GCC_VERSION=
4658 AC_SUBST(GCC_VERSION)
4660 dnl Set the ENABLE_DBGUTIL variable
4661 dnl ===================================================================
4662 AC_MSG_CHECKING([whether to build with additional debug utilities])
4663 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4664     ENABLE_DBGUTIL="TRUE"
4665     # this is an extra var so it can have different default on different MSVC
4666     # versions (in case there are version specific problems with it)
4667     MSVC_USE_DEBUG_RUNTIME="TRUE"
4669     AC_MSG_RESULT([yes])
4670     # cppunit and graphite expose STL in public headers
4671     if test "$with_system_cppunit" = "yes"; then
4672         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4673     else
4674         with_system_cppunit=no
4675     fi
4676     if test "$with_system_graphite" = "yes"; then
4677         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4678     else
4679         with_system_graphite=no
4680     fi
4681     if test "$with_system_orcus" = "yes"; then
4682         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4683     else
4684         with_system_orcus=no
4685     fi
4686     if test "$with_system_libcmis" = "yes"; then
4687         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4688     else
4689         with_system_libcmis=no
4690     fi
4691     if test "$with_system_hunspell" = "yes"; then
4692         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4693     else
4694         with_system_hunspell=no
4695     fi
4696     if test "$with_system_gpgmepp" = "yes"; then
4697         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4698     else
4699         with_system_gpgmepp=no
4700     fi
4701     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4702     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4703     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4704     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4705     # of those two is using the system variant:
4706     if test "$with_system_libnumbertext" = "yes"; then
4707         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4708     else
4709         with_system_libnumbertext=no
4710     fi
4711     if test "$with_system_libwps" = "yes"; then
4712         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4713     else
4714         with_system_libwps=no
4715     fi
4716 else
4717     ENABLE_DBGUTIL=""
4718     MSVC_USE_DEBUG_RUNTIME=""
4719     AC_MSG_RESULT([no])
4721 AC_SUBST(ENABLE_DBGUTIL)
4722 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4724 dnl Set the ENABLE_DEBUG variable.
4725 dnl ===================================================================
4726 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4727     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4729 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4730     if test -z "$libo_fuzzed_enable_debug"; then
4731         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4732     else
4733         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4734         enable_debug=yes
4735     fi
4738 AC_MSG_CHECKING([whether to do a debug build])
4739 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4740     ENABLE_DEBUG="TRUE"
4741     if test -n "$ENABLE_DBGUTIL" ; then
4742         AC_MSG_RESULT([yes (dbgutil)])
4743     else
4744         AC_MSG_RESULT([yes])
4745     fi
4746 else
4747     ENABLE_DEBUG=""
4748     AC_MSG_RESULT([no])
4750 AC_SUBST(ENABLE_DEBUG)
4752 dnl ===================================================================
4753 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4754 dnl This is done only after compiler checks (need to know if Clang is
4755 dnl used, for different defaults) and after checking if a debug build
4756 dnl is wanted (non-debug builds get the default linker if not explicitly
4757 dnl specified otherwise).
4758 dnl All checks for linker features/options should come after this.
4759 dnl ===================================================================
4760 check_use_ld()
4762     use_ld=-fuse-ld=${1%%:*}
4763     use_ld_path=${1#*:}
4764     if test "$use_ld_path" != "$1"; then
4765         if test "$COM_IS_CLANG" = TRUE; then
4766             if test "$CLANGVER" -ge 120000; then
4767                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4768             else
4769                 use_ld="-fuse-ld=${use_ld_path}"
4770             fi
4771         else
4772             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4773             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4774             # pickup the alternative linker, when called by libtool for linking.
4775             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4776             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4777         fi
4778     fi
4779     use_ld_fail_if_error=$2
4780     use_ld_ok=
4781     AC_MSG_CHECKING([for $use_ld linker support])
4782     use_ld_ldflags_save="$LDFLAGS"
4783     LDFLAGS="$LDFLAGS $use_ld"
4784     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4785 #include <stdio.h>
4786         ],[
4787 printf ("hello world\n");
4788         ])], USE_LD=$use_ld, [])
4789     if test -n "$USE_LD"; then
4790         AC_MSG_RESULT( yes )
4791         use_ld_ok=yes
4792     else
4793         if test -n "$use_ld_fail_if_error"; then
4794             AC_MSG_ERROR( no )
4795         else
4796             AC_MSG_RESULT( no )
4797         fi
4798     fi
4799     if test -n "$use_ld_ok"; then
4800         dnl keep the value of LDFLAGS
4801         return 0
4802     fi
4803     LDFLAGS="$use_ld_ldflags_save"
4804     return 1
4806 USE_LD=
4807 if test "$enable_ld" != "no"; then
4808     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4809         if test -n "$enable_ld"; then
4810             check_use_ld "$enable_ld" fail_if_error
4811         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4812             dnl non-debug builds default to the default linker
4813             true
4814         elif test -n "$COM_IS_CLANG"; then
4815             check_use_ld lld
4816             if test $? -ne 0; then
4817                 check_use_ld gold
4818                 if test $? -ne 0; then
4819                     check_use_ld mold
4820                 fi
4821             fi
4822         else
4823             # For gcc first try gold, new versions also support lld/mold.
4824             check_use_ld gold
4825             if test $? -ne 0; then
4826                 check_use_ld lld
4827                 if test $? -ne 0; then
4828                     check_use_ld mold
4829                 fi
4830             fi
4831         fi
4832         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4833         rm conftest.out
4834         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4835         if test -z "$ld_used"; then
4836             ld_used="unknown"
4837         fi
4838         AC_MSG_CHECKING([for linker that is used])
4839         AC_MSG_RESULT([$ld_used])
4840         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4841             if echo "$ld_used" | grep -q "^GNU ld"; then
4842                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4843                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4844             fi
4845         fi
4846     else
4847         if test "$enable_ld" = "yes"; then
4848             AC_MSG_ERROR([--enable-ld not supported])
4849         fi
4850     fi
4852 AC_SUBST(USE_LD)
4853 AC_SUBST(LD)
4855 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4856 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4857     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4858     bsymbolic_functions_ldflags_save=$LDFLAGS
4859     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4860     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4861 #include <stdio.h>
4862         ],[
4863 printf ("hello world\n");
4864         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4865     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4866         AC_MSG_RESULT( found )
4867     else
4868         AC_MSG_RESULT( not found )
4869     fi
4870     LDFLAGS=$bsymbolic_functions_ldflags_save
4872 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4874 LD_GC_SECTIONS=
4875 if test "$GCC" = "yes"; then
4876     for flag in "--gc-sections" "-dead_strip"; do
4877         AC_MSG_CHECKING([for $flag linker support])
4878         ldflags_save=$LDFLAGS
4879         LDFLAGS="$LDFLAGS -Wl,$flag"
4880         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4881 #include <stdio.h>
4882             ],[
4883 printf ("hello world\n");
4884             ])],[
4885             LD_GC_SECTIONS="-Wl,$flag"
4886             AC_MSG_RESULT( found )
4887             ], [
4888             AC_MSG_RESULT( not found )
4889             ])
4890         LDFLAGS=$ldflags_save
4891         if test -n "$LD_GC_SECTIONS"; then
4892             break
4893         fi
4894     done
4896 AC_SUBST(LD_GC_SECTIONS)
4898 HAVE_EXTERNAL_DWARF=
4899 if test "$enable_split_debug" != no; then
4900     use_split_debug=
4901     if test -n "$ENABLE_LTO"; then
4902         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4903     elif test "$enable_split_debug" = yes; then
4904         use_split_debug=1
4905     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4906     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4907         use_split_debug=1
4908     fi
4909     if test -n "$use_split_debug"; then
4910         if test "$_os" = "Emscripten"; then
4911             TEST_CC_FLAG=-gseparate-dwarf
4912         else
4913             TEST_CC_FLAG=-gsplit-dwarf
4914         fi
4915         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4916         save_CFLAGS=$CFLAGS
4917         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4918         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4919         CFLAGS=$save_CFLAGS
4920         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4921             AC_MSG_RESULT([yes])
4922         else
4923             if test "$enable_split_debug" = yes; then
4924                 AC_MSG_ERROR([no])
4925             else
4926                 AC_MSG_RESULT([no])
4927             fi
4928         fi
4929     fi
4930     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4931         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4932         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4933     fi
4935 AC_SUBST(HAVE_EXTERNAL_DWARF)
4937 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4938 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4939 save_CFLAGS=$CFLAGS
4940 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4941 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4942 CFLAGS=$save_CFLAGS
4943 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4944     AC_MSG_RESULT([yes])
4945 else
4946     AC_MSG_RESULT([no])
4948 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4950 ENABLE_GDB_INDEX=
4951 if test "$enable_gdb_index" != "no"; then
4952     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4953     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4954         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4955         save_CFLAGS=$CFLAGS
4956         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4957         have_ggnu_pubnames=
4958         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4959         if test "$have_ggnu_pubnames" != "TRUE"; then
4960             if test "$enable_gdb_index" = "yes"; then
4961                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4962             else
4963                 AC_MSG_RESULT( no )
4964             fi
4965         else
4966             AC_MSG_RESULT( yes )
4967             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4968             ldflags_save=$LDFLAGS
4969             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4970             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4971 #include <stdio.h>
4972                 ],[
4973 printf ("hello world\n");
4974                 ])], ENABLE_GDB_INDEX=TRUE, [])
4975             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4976                 AC_MSG_RESULT( yes )
4977             else
4978                 if test "$enable_gdb_index" = "yes"; then
4979                     AC_MSG_ERROR( no )
4980                 else
4981                     AC_MSG_RESULT( no )
4982                 fi
4983             fi
4984             LDFLAGS=$ldflags_save
4985         fi
4986         CFLAGS=$save_CFLAGS
4987         fi
4988     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4989         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4990         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4991     fi
4993 AC_SUBST(ENABLE_GDB_INDEX)
4995 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4996     enable_sal_log=yes
4998 if test "$enable_sal_log" = yes; then
4999     ENABLE_SAL_LOG=TRUE
5001 AC_SUBST(ENABLE_SAL_LOG)
5003 dnl Check for enable symbols option
5004 dnl ===================================================================
5005 AC_MSG_CHECKING([whether to generate debug information])
5006 if test -z "$enable_symbols"; then
5007     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5008         enable_symbols=yes
5009     else
5010         enable_symbols=no
5011     fi
5013 if test "$enable_symbols" = yes; then
5014     ENABLE_SYMBOLS_FOR=all
5015     AC_MSG_RESULT([yes])
5016 elif test "$enable_symbols" = no; then
5017     ENABLE_SYMBOLS_FOR=
5018     AC_MSG_RESULT([no])
5019 else
5020     # Selective debuginfo.
5021     ENABLE_SYMBOLS_FOR="$enable_symbols"
5022     AC_MSG_RESULT([for "$enable_symbols"])
5024 AC_SUBST(ENABLE_SYMBOLS_FOR)
5026 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5027     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5028     AC_MSG_CHECKING([whether enough memory is available for linking])
5029     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5030     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5031     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5032         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5033     else
5034         AC_MSG_RESULT([yes])
5035     fi
5038 ENABLE_OPTIMIZED=
5039 ENABLE_OPTIMIZED_DEBUG=
5040 AC_MSG_CHECKING([whether to compile with optimization flags])
5041 if test -z "$enable_optimized"; then
5042     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5043         enable_optimized=no
5044     else
5045         enable_optimized=yes
5046     fi
5048 if test "$enable_optimized" = yes; then
5049     ENABLE_OPTIMIZED=TRUE
5050     AC_MSG_RESULT([yes])
5051 elif test "$enable_optimized" = debug; then
5052     ENABLE_OPTIMIZED_DEBUG=TRUE
5053     AC_MSG_RESULT([yes (debug)])
5054     HAVE_GCC_OG=
5055     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5056         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5057         save_CFLAGS=$CFLAGS
5058         CFLAGS="$CFLAGS -Werror -Og"
5059         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5060         CFLAGS=$save_CFLAGS
5061         if test "$HAVE_GCC_OG" = "TRUE"; then
5062             AC_MSG_RESULT([yes])
5063         else
5064             AC_MSG_RESULT([no])
5065         fi
5066     fi
5067     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5068         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5069     fi
5070 else
5071     AC_MSG_RESULT([no])
5073 AC_SUBST(ENABLE_OPTIMIZED)
5074 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5077 # determine CPUNAME, OS, ...
5079 case "$host_os" in
5081 cygwin*|wsl*)
5082     # Already handled
5083     ;;
5085 darwin*)
5086     COM=GCC
5087     OS=MACOSX
5088     RTL_OS=MacOSX
5089     P_SEP=:
5091     case "$host_cpu" in
5092     aarch64|arm64)
5093         if test "$enable_ios_simulator" = "yes"; then
5094             OS=iOS
5095         else
5096             CPUNAME=AARCH64
5097             RTL_ARCH=AARCH64
5098             PLATFORMID=macosx_aarch64
5099         fi
5100         ;;
5101     x86_64)
5102         if test "$enable_ios_simulator" = "yes"; then
5103             OS=iOS
5104         fi
5105         CPUNAME=X86_64
5106         RTL_ARCH=X86_64
5107         PLATFORMID=macosx_x86_64
5108         ;;
5109     *)
5110         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5111         ;;
5112     esac
5113     ;;
5115 ios*)
5116     COM=GCC
5117     OS=iOS
5118     RTL_OS=iOS
5119     P_SEP=:
5121     case "$host_cpu" in
5122     aarch64|arm64)
5123         if test "$enable_ios_simulator" = "yes"; then
5124             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5125         fi
5126         ;;
5127     *)
5128         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5129         ;;
5130     esac
5131     CPUNAME=AARCH64
5132     RTL_ARCH=AARCH64
5133     PLATFORMID=ios_arm64
5134     ;;
5136 dragonfly*)
5137     COM=GCC
5138     OS=DRAGONFLY
5139     RTL_OS=DragonFly
5140     P_SEP=:
5142     case "$host_cpu" in
5143     i*86)
5144         CPUNAME=INTEL
5145         RTL_ARCH=x86
5146         PLATFORMID=dragonfly_x86
5147         ;;
5148     x86_64)
5149         CPUNAME=X86_64
5150         RTL_ARCH=X86_64
5151         PLATFORMID=dragonfly_x86_64
5152         ;;
5153     *)
5154         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5155         ;;
5156     esac
5157     ;;
5159 freebsd*)
5160     COM=GCC
5161     RTL_OS=FreeBSD
5162     OS=FREEBSD
5163     P_SEP=:
5165     case "$host_cpu" in
5166     aarch64)
5167         CPUNAME=AARCH64
5168         PLATFORMID=freebsd_aarch64
5169         RTL_ARCH=AARCH64
5170         ;;
5171     i*86)
5172         CPUNAME=INTEL
5173         RTL_ARCH=x86
5174         PLATFORMID=freebsd_x86
5175         ;;
5176     x86_64|amd64)
5177         CPUNAME=X86_64
5178         RTL_ARCH=X86_64
5179         PLATFORMID=freebsd_x86_64
5180         ;;
5181     powerpc64)
5182         CPUNAME=POWERPC64
5183         RTL_ARCH=PowerPC_64
5184         PLATFORMID=freebsd_powerpc64
5185         ;;
5186     powerpc|powerpcspe)
5187         CPUNAME=POWERPC
5188         RTL_ARCH=PowerPC
5189         PLATFORMID=freebsd_powerpc
5190         ;;
5191     *)
5192         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5193         ;;
5194     esac
5195     ;;
5197 haiku*)
5198     COM=GCC
5199     GUIBASE=haiku
5200     RTL_OS=Haiku
5201     OS=HAIKU
5202     P_SEP=:
5204     case "$host_cpu" in
5205     i*86)
5206         CPUNAME=INTEL
5207         RTL_ARCH=x86
5208         PLATFORMID=haiku_x86
5209         ;;
5210     x86_64|amd64)
5211         CPUNAME=X86_64
5212         RTL_ARCH=X86_64
5213         PLATFORMID=haiku_x86_64
5214         ;;
5215     *)
5216         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5217         ;;
5218     esac
5219     ;;
5221 kfreebsd*)
5222     COM=GCC
5223     OS=LINUX
5224     RTL_OS=kFreeBSD
5225     P_SEP=:
5227     case "$host_cpu" in
5229     i*86)
5230         CPUNAME=INTEL
5231         RTL_ARCH=x86
5232         PLATFORMID=kfreebsd_x86
5233         ;;
5234     x86_64)
5235         CPUNAME=X86_64
5236         RTL_ARCH=X86_64
5237         PLATFORMID=kfreebsd_x86_64
5238         ;;
5239     *)
5240         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5241         ;;
5242     esac
5243     ;;
5245 linux-gnu*|linux-musl*)
5246     COM=GCC
5247     OS=LINUX
5248     RTL_OS=Linux
5249     P_SEP=:
5251     case "$host_cpu" in
5253     aarch64)
5254         CPUNAME=AARCH64
5255         PLATFORMID=linux_aarch64
5256         RTL_ARCH=AARCH64
5257         EPM_FLAGS="-a arm64"
5258         ;;
5259     alpha)
5260         CPUNAME=AXP
5261         RTL_ARCH=ALPHA
5262         PLATFORMID=linux_alpha
5263         ;;
5264     arm*)
5265         CPUNAME=ARM
5266         EPM_FLAGS="-a arm"
5267         RTL_ARCH=ARM_EABI
5268         PLATFORMID=linux_arm_eabi
5269         case "$host_cpu" in
5270         arm*-linux)
5271             RTL_ARCH=ARM_OABI
5272             PLATFORMID=linux_arm_oabi
5273             ;;
5274         esac
5275         ;;
5276     hppa)
5277         CPUNAME=HPPA
5278         RTL_ARCH=HPPA
5279         EPM_FLAGS="-a hppa"
5280         PLATFORMID=linux_hppa
5281         ;;
5282     i*86)
5283         CPUNAME=INTEL
5284         RTL_ARCH=x86
5285         PLATFORMID=linux_x86
5286         ;;
5287     ia64)
5288         CPUNAME=IA64
5289         RTL_ARCH=IA64
5290         PLATFORMID=linux_ia64
5291         ;;
5292     mips)
5293         CPUNAME=MIPS
5294         RTL_ARCH=MIPS_EB
5295         EPM_FLAGS="-a mips"
5296         PLATFORMID=linux_mips_eb
5297         ;;
5298     mips64)
5299         CPUNAME=MIPS64
5300         RTL_ARCH=MIPS64_EB
5301         EPM_FLAGS="-a mips64"
5302         PLATFORMID=linux_mips64_eb
5303         ;;
5304     mips64el)
5305         CPUNAME=MIPS64
5306         RTL_ARCH=MIPS64_EL
5307         EPM_FLAGS="-a mips64el"
5308         PLATFORMID=linux_mips64_el
5309         ;;
5310     mipsel)
5311         CPUNAME=MIPS
5312         RTL_ARCH=MIPS_EL
5313         EPM_FLAGS="-a mipsel"
5314         PLATFORMID=linux_mips_el
5315         ;;
5316     riscv64)
5317         CPUNAME=RISCV64
5318         RTL_ARCH=RISCV64
5319         EPM_FLAGS="-a riscv64"
5320         PLATFORMID=linux_riscv64
5321         ;;
5322     m68k)
5323         CPUNAME=M68K
5324         RTL_ARCH=M68K
5325         PLATFORMID=linux_m68k
5326         ;;
5327     powerpc)
5328         CPUNAME=POWERPC
5329         RTL_ARCH=PowerPC
5330         PLATFORMID=linux_powerpc
5331         ;;
5332     powerpc64)
5333         CPUNAME=POWERPC64
5334         RTL_ARCH=PowerPC_64
5335         PLATFORMID=linux_powerpc64
5336         ;;
5337     powerpc64le)
5338         CPUNAME=POWERPC64
5339         RTL_ARCH=PowerPC_64_LE
5340         PLATFORMID=linux_powerpc64_le
5341         ;;
5342     sparc)
5343         CPUNAME=SPARC
5344         RTL_ARCH=SPARC
5345         PLATFORMID=linux_sparc
5346         ;;
5347     sparc64)
5348         CPUNAME=SPARC64
5349         RTL_ARCH=SPARC64
5350         PLATFORMID=linux_sparc64
5351         ;;
5352     s390x)
5353         CPUNAME=S390X
5354         RTL_ARCH=S390x
5355         PLATFORMID=linux_s390x
5356         ;;
5357     x86_64)
5358         CPUNAME=X86_64
5359         RTL_ARCH=X86_64
5360         PLATFORMID=linux_x86_64
5361         ;;
5362     loongarch64)
5363         CPUNAME=LOONGARCH64
5364         RTL_ARCH=LOONGARCH64
5365         PLATFORMID=linux_loongarch64
5366         ;;
5367     *)
5368         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5369         ;;
5370     esac
5371     ;;
5373 linux-android*)
5374     COM=GCC
5375     OS=ANDROID
5376     RTL_OS=Android
5377     P_SEP=:
5379     case "$host_cpu" in
5381     arm|armel)
5382         CPUNAME=ARM
5383         RTL_ARCH=ARM_EABI
5384         PLATFORMID=android_arm_eabi
5385         ;;
5386     aarch64)
5387         CPUNAME=AARCH64
5388         RTL_ARCH=AARCH64
5389         PLATFORMID=android_aarch64
5390         ;;
5391     i*86)
5392         CPUNAME=INTEL
5393         RTL_ARCH=x86
5394         PLATFORMID=android_x86
5395         ;;
5396     x86_64)
5397         CPUNAME=X86_64
5398         RTL_ARCH=X86_64
5399         PLATFORMID=android_x86_64
5400         ;;
5401     *)
5402         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5403         ;;
5404     esac
5405     ;;
5407 *netbsd*)
5408     COM=GCC
5409     OS=NETBSD
5410     RTL_OS=NetBSD
5411     P_SEP=:
5413     case "$host_cpu" in
5414     i*86)
5415         CPUNAME=INTEL
5416         RTL_ARCH=x86
5417         PLATFORMID=netbsd_x86
5418         ;;
5419     powerpc)
5420         CPUNAME=POWERPC
5421         RTL_ARCH=PowerPC
5422         PLATFORMID=netbsd_powerpc
5423         ;;
5424     sparc)
5425         CPUNAME=SPARC
5426         RTL_ARCH=SPARC
5427         PLATFORMID=netbsd_sparc
5428         ;;
5429     x86_64)
5430         CPUNAME=X86_64
5431         RTL_ARCH=X86_64
5432         PLATFORMID=netbsd_x86_64
5433         ;;
5434     *)
5435         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5436         ;;
5437     esac
5438     ;;
5440 openbsd*)
5441     COM=GCC
5442     OS=OPENBSD
5443     RTL_OS=OpenBSD
5444     P_SEP=:
5446     case "$host_cpu" in
5447     i*86)
5448         CPUNAME=INTEL
5449         RTL_ARCH=x86
5450         PLATFORMID=openbsd_x86
5451         ;;
5452     x86_64)
5453         CPUNAME=X86_64
5454         RTL_ARCH=X86_64
5455         PLATFORMID=openbsd_x86_64
5456         ;;
5457     *)
5458         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5459         ;;
5460     esac
5461     SOLARINC="$SOLARINC -I/usr/local/include"
5462     ;;
5464 solaris*)
5465     COM=GCC
5466     OS=SOLARIS
5467     RTL_OS=Solaris
5468     P_SEP=:
5470     case "$host_cpu" in
5471     i*86)
5472         CPUNAME=INTEL
5473         RTL_ARCH=x86
5474         PLATFORMID=solaris_x86
5475         ;;
5476     sparc)
5477         CPUNAME=SPARC
5478         RTL_ARCH=SPARC
5479         PLATFORMID=solaris_sparc
5480         ;;
5481     sparc64)
5482         CPUNAME=SPARC64
5483         RTL_ARCH=SPARC64
5484         PLATFORMID=solaris_sparc64
5485         ;;
5486     *)
5487         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5488         ;;
5489     esac
5490     SOLARINC="$SOLARINC -I/usr/local/include"
5491     ;;
5493 emscripten*)
5494     COM=GCC
5495     OS=EMSCRIPTEN
5496     RTL_OS=Emscripten
5497     P_SEP=:
5499     case "$host_cpu" in
5500     wasm32|wasm64)
5501         ;;
5502     *)
5503         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5504         ;;
5505     esac
5506     CPUNAME=INTEL
5507     RTL_ARCH=x86
5508     PLATFORMID=linux_x86
5509     ;;
5512     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5513     ;;
5514 esac
5516 DISABLE_GUI=""
5517 if test "$enable_gui" = "no"; then
5518     if test "$using_x11" != yes; then
5519         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5520     fi
5521     USING_X11=
5522     DISABLE_GUI=TRUE
5523     test_epoxy=no
5524 else
5525     AC_DEFINE(HAVE_FEATURE_UI)
5527 AC_SUBST(DISABLE_GUI)
5529 if test "$with_x" = "no"; then
5530     USING_X11=
5533 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5534     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5537 if test "$using_x11" = yes; then
5538     if test "$USING_X11" = TRUE; then
5539         AC_DEFINE(USING_X11)
5540     else
5541         disable_x11_tests
5542         if test "$DISABLE_DYNLOADING" = TRUE; then
5543             test_qt5=yes
5544         fi
5545     fi
5546 else
5547     if test "$USING_X11" = TRUE; then
5548         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5549     fi
5552 WORKDIR="${BUILDDIR}/workdir"
5553 INSTDIR="${BUILDDIR}/instdir"
5554 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5555 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5556 AC_SUBST(COM)
5557 AC_SUBST(CPUNAME)
5558 AC_SUBST(RTL_OS)
5559 AC_SUBST(RTL_ARCH)
5560 AC_SUBST(EPM_FLAGS)
5561 AC_SUBST(USING_X11)
5562 AC_SUBST([INSTDIR])
5563 AC_SUBST([INSTROOT])
5564 AC_SUBST([INSTROOTBASE])
5565 AC_SUBST(OS)
5566 AC_SUBST(P_SEP)
5567 AC_SUBST(WORKDIR)
5568 AC_SUBST(PLATFORMID)
5569 AC_SUBST(WINDOWS_X64)
5570 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5571 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5573 if test "$OS" = WNT -a "$COM" = MSC; then
5574     case "$CPUNAME" in
5575     INTEL) CPPU_ENV=msci ;;
5576     X86_64) CPPU_ENV=mscx ;;
5577     AARCH64) CPPU_ENV=msca ;;
5578     *)
5579         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5580         ;;
5581     esac
5582 else
5583     CPPU_ENV=gcc3
5585 AC_SUBST(CPPU_ENV)
5587 dnl ===================================================================
5588 dnl Test which package format to use
5589 dnl ===================================================================
5590 AC_MSG_CHECKING([which package format to use])
5591 if test -n "$with_package_format" -a "$with_package_format" != no; then
5592     for i in $with_package_format; do
5593         case "$i" in
5594         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5595             ;;
5596         *)
5597             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5598 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5599 deb - Debian software distribution
5600 pkg - Solaris software distribution
5601 rpm - RedHat software distribution
5603 LibreOffice additionally supports:
5604 archive - .tar.gz or .zip
5605 dmg - macOS .dmg
5606 installed - installation tree
5607 msi - Windows .msi
5608         ])
5609             ;;
5610         esac
5611     done
5612     # fakeroot is needed to ensure correct file ownerships/permissions
5613     # inside deb packages and tar archives created on Linux and Solaris.
5614     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5615         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5616         if test "$FAKEROOT" = "no"; then
5617             AC_MSG_ERROR(
5618                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5619         fi
5620     fi
5621     PKGFORMAT="$with_package_format"
5622     AC_MSG_RESULT([$PKGFORMAT])
5623 else
5624     PKGFORMAT=
5625     AC_MSG_RESULT([none])
5627 AC_SUBST(PKGFORMAT)
5629 dnl ===================================================================
5630 dnl handle help related options
5632 dnl If you change help related options, please update README.help
5633 dnl ===================================================================
5635 ENABLE_HTMLHELP=
5636 HELP_OMINDEX_PAGE=
5637 HELP_ONLINE=
5638 WITH_HELPPACKS=
5640 AC_MSG_CHECKING([which help to build])
5641 if test -n "$with_help" -a "$with_help" != "no"; then
5642     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5643     BUILD_TYPE="$BUILD_TYPE HELP"
5644     case "$with_help" in
5645     "html")
5646         ENABLE_HTMLHELP=TRUE
5647         WITH_HELPPACKS=TRUE
5648         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5649         AC_MSG_RESULT([HTML (local)])
5650         ;;
5651     "online")
5652         ENABLE_HTMLHELP=TRUE
5653         HELP_ONLINE=TRUE
5654         AC_MSG_RESULT([HTML (online)])
5655         ;;
5656     yes)
5657         WITH_HELPPACKS=TRUE
5658         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5659         AC_MSG_RESULT([XML (local)])
5660         ;;
5661     *)
5662         AC_MSG_ERROR([Unknown --with-help=$with_help])
5663         ;;
5664     esac
5665 else
5666     AC_MSG_RESULT([no])
5669 AC_MSG_CHECKING([if we need to build the help index tooling])
5670 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5671     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5672     test_clucene=yes
5673     AC_MSG_RESULT([yes])
5674 else
5675     AC_MSG_RESULT([no])
5678 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5679 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5680     if test "$HELP_ONLINE" != TRUE; then
5681         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5682     fi
5683     case "$with_omindex" in
5684     "server")
5685         HELP_OMINDEX_PAGE=TRUE
5686         AC_MSG_RESULT([SERVER])
5687         ;;
5688     "noxap")
5689         AC_MSG_RESULT([NOXAP])
5690         ;;
5691     *)
5692         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5693         ;;
5694     esac
5695 else
5696     AC_MSG_RESULT([no])
5699 AC_MSG_CHECKING([whether to include the XML-help support])
5700 if test "$enable_xmlhelp" = yes; then
5701     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5702     test_clucene=yes
5703     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5704     AC_MSG_RESULT([yes])
5705 else
5706     if test "$with_help" = yes; then
5707         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5708     fi
5709     AC_MSG_RESULT([no])
5712 dnl Test whether to integrate helppacks into the product's installer
5713 AC_MSG_CHECKING([for helppack integration])
5714 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5715     AC_MSG_RESULT([no integration])
5716 else
5717     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5718     AC_MSG_RESULT([integration])
5721 AC_SUBST([ENABLE_HTMLHELP])
5722 AC_SUBST([HELP_OMINDEX_PAGE])
5723 AC_SUBST([HELP_ONLINE])
5724 # WITH_HELPPACKS is used only in configure
5726 dnl ===================================================================
5727 dnl Set up a different compiler to produce tools to run on the build
5728 dnl machine when doing cross-compilation
5729 dnl ===================================================================
5731 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5732 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5733 if test "$cross_compiling" = "yes"; then
5734     AC_MSG_CHECKING([for BUILD platform configuration])
5735     echo
5736     rm -rf CONF-FOR-BUILD config_build.mk
5737     mkdir CONF-FOR-BUILD
5738     # Here must be listed all files needed when running the configure script. In particular, also
5739     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5740     # keep them in the same order as there.
5741     (cd $SRC_ROOT && tar cf - \
5742         config.guess \
5743         bin/get_config_variables \
5744         solenv/bin/getcompver.awk \
5745         solenv/inc/langlist.mk \
5746         download.lst \
5747         config_host.mk.in \
5748         config_host_lang.mk.in \
5749         Makefile.in \
5750         bin/bffvalidator.sh.in \
5751         bin/odfvalidator.sh.in \
5752         bin/officeotron.sh.in \
5753         instsetoo_native/util/openoffice.lst.in \
5754         config_host/*.in \
5755         sysui/desktop/macosx/Info.plist.in \
5756         sysui/desktop/macosx/hardened_runtime.xcent.in \
5757         sysui/desktop/macosx/lo.xcent.in \
5758         .vscode/vs-code-template.code-workspace.in \
5759         solenv/lockfile/autoconf.h.in \
5760         ) \
5761     | (cd CONF-FOR-BUILD && tar xf -)
5762     cp configure CONF-FOR-BUILD
5763     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5764     (
5765     unset COM USING_X11 OS CPUNAME
5766     unset CC CXX SYSBASE CFLAGS
5767     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5768     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5769     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5770     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5771     if test -n "$CC_FOR_BUILD"; then
5772         export CC="$CC_FOR_BUILD"
5773         CC_BASE=`first_arg_basename "$CC"`
5774     fi
5775     if test -n "$CXX_FOR_BUILD"; then
5776         export CXX="$CXX_FOR_BUILD"
5777         CXX_BASE=`first_arg_basename "$CXX"`
5778     fi
5779     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5780     cd CONF-FOR-BUILD
5782     # Handle host configuration, which affects the cross-toolset too
5783     sub_conf_opts=""
5784     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5785     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5786     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5787     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5788     if test -n "$ENABLE_JAVA"; then
5789         case "$_os" in
5790         Android)
5791             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5792             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5793             ;;
5794         *)
5795             if test -z "$with_jdk_home"; then
5796                 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.])
5797             fi
5798             ;;
5799         esac
5800     else
5801         sub_conf_opts="$sub_conf_opts --without-java"
5802     fi
5803     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5804     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5805     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5806     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5807     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5808     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5809     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5810     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5811     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5812     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5813     if test "$_os" = "Emscripten"; then
5814         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5815         if test "${with_main_module+set}" = set; then
5816             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5817         else
5818             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5819         fi
5820     fi
5821     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5822     # when cross-compiling for aarch64, overriding the defaults below
5823     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5825     # Don't bother having configure look for stuff not needed for the build platform anyway
5826     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5827     sub_conf_defaults=" \
5828         --build="$build_alias" \
5829         --disable-cairo-canvas \
5830         --disable-cups \
5831         --disable-customtarget-components \
5832         --disable-firebird-sdbc \
5833         --disable-gpgmepp \
5834         --disable-gstreamer-1-0 \
5835         --disable-gtk3 \
5836         --disable-gtk4 \
5837         --disable-libcmis \
5838         --disable-mariadb-sdbc \
5839         --disable-nss \
5840         --disable-online-update \
5841         --disable-opencl \
5842         --disable-openssl \
5843         --disable-pdfimport \
5844         --disable-postgresql-sdbc \
5845         --disable-skia \
5846         --disable-xmlhelp \
5847         --enable-dynamic-loading \
5848         --enable-icecream="$enable_icecream" \
5849         --without-doxygen \
5850         --without-tls \
5851         --without-webdav \
5852         --without-x \
5854     # single quotes added for better readability in case of spaces
5855     echo "    Running CONF-FOR-BUILD/configure" \
5856         $sub_conf_defaults \
5857         --with-parallelism="'$with_parallelism'" \
5858         --with-theme="'$with_theme'" \
5859         --with-vendor="'$with_vendor'" \
5860         $sub_conf_opts \
5861         $with_build_platform_configure_options \
5862         --srcdir=$srcdir
5864     ./configure \
5865         $sub_conf_defaults \
5866         --with-parallelism="$with_parallelism" \
5867         --with-theme="$with_theme" \
5868         "--with-vendor=$with_vendor" \
5869         $sub_conf_opts \
5870         $with_build_platform_configure_options \
5871         --srcdir=$srcdir \
5872         2>&1 | sed -e 's/^/    /'
5873     if test [${PIPESTATUS[0]}] -ne 0; then
5874         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5875     fi
5877     # filter permitted build targets
5878     PERMITTED_BUILD_TARGETS="
5879         ARGON2
5880         AVMEDIA
5881         BOOST
5882         BZIP2
5883         CAIRO
5884         CLUCENE
5885         CURL
5886         DBCONNECTIVITY
5887         DESKTOP
5888         DRAGONBOX
5889         DYNLOADING
5890         EPOXY
5891         EXPAT
5892         FROZEN
5893         GLM
5894         GRAPHITE
5895         HARFBUZZ
5896         HELPTOOLS
5897         ICU
5898         LCMS2
5899         LIBJPEG_TURBO
5900         LIBLANGTAG
5901         LibO
5902         LIBFFI
5903         LIBPN
5904         LIBTIFF
5905         LIBWEBP
5906         LIBXML2
5907         LIBXSLT
5908         MDDS
5909         NATIVE
5910         OPENSSL
5911         ORCUS
5912         PYTHON
5913         SCRIPTING
5914         ZLIB
5915         ZXCVBN
5917     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5918     # newlined lists, to use grep as a filter
5919     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5920     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5921     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5922     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5924     cp config_host.mk ../config_build.mk
5925     cp config_host_lang.mk ../config_build_lang.mk
5926     mv config.log ../config.Build.log
5927     mkdir -p ../config_build
5928     mv config_host/*.h ../config_build
5929     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5931     # all these will get a _FOR_BUILD postfix
5932     DIRECT_FOR_BUILD_SETTINGS="
5933         CC
5934         CPPU_ENV
5935         CXX
5936         ILIB
5937         JAVA_HOME
5938         JAVAIFLAGS
5939         JDK
5940         JDK_SECURITYMANAGER_DISALLOWED
5941         LIBO_BIN_FOLDER
5942         LIBO_LIB_FOLDER
5943         LIBO_URE_LIB_FOLDER
5944         LIBO_URE_MISC_FOLDER
5945         OS
5946         SDKDIRNAME
5947         SYSTEM_LIBXML
5948         SYSTEM_LIBXSLT
5950     # these overwrite host config with build config
5951     OVERWRITING_SETTINGS="
5952         ANT
5953         ANT_HOME
5954         ANT_LIB
5955         JAVA_SOURCE_VER
5956         JAVA_TARGET_VER
5957         JAVACFLAGS
5958         JAVACOMPILER
5959         JAVADOC
5960         JAVADOCISGJDOC
5961         LOCKFILE
5962         SYSTEM_GENBRK
5963         SYSTEM_GENCCODE
5964         SYSTEM_GENCMN
5966     # these need some special handling
5967     EXTRA_HANDLED_SETTINGS="
5968         INSTDIR
5969         INSTROOT
5970         PATH
5971         WORKDIR
5973     OLD_PATH=$PATH
5974     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5975     BUILD_PATH=$PATH
5976     PATH=$OLD_PATH
5978     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5979     echo "$line" >>build-config
5981     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5982         VV='$'$V
5983         VV=`eval "echo $VV"`
5984         if test -n "$VV"; then
5985             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5986             echo "$line" >>build-config
5987         fi
5988     done
5990     for V in $OVERWRITING_SETTINGS; do
5991         VV='$'$V
5992         VV=`eval "echo $VV"`
5993         if test -n "$VV"; then
5994             line=${V}='${'${V}:-$VV'}'
5995             echo "$line" >>build-config
5996         fi
5997     done
5999     for V in INSTDIR INSTROOT WORKDIR; do
6000         VV='$'$V
6001         VV=`eval "echo $VV"`
6002         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6003         if test -n "$VV"; then
6004             line="${V}_FOR_BUILD='$VV'"
6005             echo "$line" >>build-config
6006         fi
6007     done
6009     )
6010     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6011     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])
6012     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6013              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6015     eval `cat CONF-FOR-BUILD/build-config`
6017     AC_MSG_RESULT([checking for BUILD platform configuration... done])
6019     rm -rf CONF-FOR-BUILD
6020 else
6021     OS_FOR_BUILD="$OS"
6022     CC_FOR_BUILD="$CC"
6023     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6024     CXX_FOR_BUILD="$CXX"
6025     INSTDIR_FOR_BUILD="$INSTDIR"
6026     INSTROOT_FOR_BUILD="$INSTROOT"
6027     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6028     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6029     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6030     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6031     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6032     WORKDIR_FOR_BUILD="$WORKDIR"
6034 AC_SUBST(OS_FOR_BUILD)
6035 AC_SUBST(INSTDIR_FOR_BUILD)
6036 AC_SUBST(INSTROOT_FOR_BUILD)
6037 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6038 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6039 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6040 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6041 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6042 AC_SUBST(WORKDIR_FOR_BUILD)
6043 AC_SUBST(CC_FOR_BUILD)
6044 AC_SUBST(CXX_FOR_BUILD)
6045 AC_SUBST(CPPU_ENV_FOR_BUILD)
6047 dnl ===================================================================
6048 dnl Check for lockfile deps
6049 dnl ===================================================================
6050 if test -z "$CROSS_COMPILING"; then
6051     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6052     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6053     AC_MSG_CHECKING([which lockfile binary to use])
6054     case "$with_system_lockfile" in
6055     yes)
6056         AC_MSG_RESULT([external])
6057         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6058         ;;
6059     no)
6060         AC_MSG_RESULT([internal])
6061         ;;
6062     *)
6063         if test -x "$with_system_lockfile"; then
6064             LOCKFILE="$with_system_lockfile"
6065         else
6066             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6067         fi
6068         AC_MSG_RESULT([$with_system_lockfile])
6069         ;;
6070     esac
6073 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6074     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6077 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6078 AC_CHECK_FUNCS([utime utimes])
6079 AC_SUBST(LOCKFILE)
6081 dnl ===================================================================
6082 dnl Check for syslog header
6083 dnl ===================================================================
6084 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6086 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6087 dnl ===================================================================
6088 AC_MSG_CHECKING([whether to turn warnings to errors])
6089 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6090     ENABLE_WERROR="TRUE"
6091     PYTHONWARNINGS="error"
6092     AC_MSG_RESULT([yes])
6093 else
6094     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6095         ENABLE_WERROR="TRUE"
6096         PYTHONWARNINGS="error"
6097         AC_MSG_RESULT([yes])
6098     else
6099         AC_MSG_RESULT([no])
6100     fi
6102 AC_SUBST(ENABLE_WERROR)
6103 AC_SUBST(PYTHONWARNINGS)
6105 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6106 dnl ===================================================================
6107 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6108 if test -z "$enable_assert_always_abort"; then
6109    if test "$ENABLE_DEBUG" = TRUE; then
6110        enable_assert_always_abort=yes
6111    else
6112        enable_assert_always_abort=no
6113    fi
6115 if test "$enable_assert_always_abort" = "yes"; then
6116     ASSERT_ALWAYS_ABORT="TRUE"
6117     AC_MSG_RESULT([yes])
6118 else
6119     ASSERT_ALWAYS_ABORT="FALSE"
6120     AC_MSG_RESULT([no])
6122 AC_SUBST(ASSERT_ALWAYS_ABORT)
6124 # Determine whether to use ooenv for the instdir installation
6125 # ===================================================================
6126 if test $_os != "WINNT" -a $_os != "Darwin"; then
6127     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6128     if test -z "$enable_ooenv"; then
6129         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6130             enable_ooenv=yes
6131         else
6132             enable_ooenv=no
6133         fi
6134     fi
6135     if test "$enable_ooenv" = "no"; then
6136         AC_MSG_RESULT([no])
6137     else
6138         ENABLE_OOENV="TRUE"
6139         AC_MSG_RESULT([yes])
6140     fi
6142 AC_SUBST(ENABLE_OOENV)
6144 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6145     if test "$enable_qt5" = "no"; then
6146         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6147     else
6148         enable_qt5=yes
6149     fi
6152 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6153     if test "$enable_qt6" = "no"; then
6154         AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6155     else
6156         enable_qt6=yes
6157     fi
6161 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6162 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6163     AC_MSG_RESULT([yes])
6164     ENABLE_PAGEIN=TRUE
6165     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6166 else
6167     AC_MSG_RESULT([no])
6169 AC_SUBST(ENABLE_PAGEIN)
6171 dnl ===================================================================
6172 dnl check for cups support
6173 dnl ===================================================================
6175 AC_MSG_CHECKING([whether to enable CUPS support])
6176 if test "$test_cups" = yes -a "$enable_cups" != no; then
6177     ENABLE_CUPS=TRUE
6178     AC_MSG_RESULT([yes])
6180     AC_MSG_CHECKING([whether cups support is present])
6181     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6182     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6183     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6184         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6185     fi
6186 else
6187     AC_MSG_RESULT([no])
6190 AC_SUBST(ENABLE_CUPS)
6192 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6194 dnl whether to find & fetch external tarballs?
6195 dnl ===================================================================
6196 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6197    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6198        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6199    else
6200        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6201    fi
6203 if test -z "$TARFILE_LOCATION"; then
6204     if test -d "$SRC_ROOT/src" ; then
6205         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6206         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6207     fi
6208     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6209 else
6210     AbsolutePath "$TARFILE_LOCATION"
6211     PathFormat "${absolute_path}"
6212     TARFILE_LOCATION="${formatted_path_unix}"
6214 AC_SUBST(TARFILE_LOCATION)
6216 AC_MSG_CHECKING([whether we want to fetch tarballs])
6217 if test "$enable_fetch_external" != "no"; then
6218     if test "$with_all_tarballs" = "yes"; then
6219         AC_MSG_RESULT([yes, all of them])
6220         DO_FETCH_TARBALLS="ALL"
6221     else
6222         AC_MSG_RESULT([yes, if we use them])
6223         DO_FETCH_TARBALLS="TRUE"
6224     fi
6225 else
6226     AC_MSG_RESULT([no])
6227     DO_FETCH_TARBALLS=
6229 AC_SUBST(DO_FETCH_TARBALLS)
6231 dnl Test whether to include MySpell dictionaries
6232 dnl ===================================================================
6233 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6234 if test "$with_myspell_dicts" = "yes"; then
6235     AC_MSG_RESULT([yes])
6236     WITH_MYSPELL_DICTS=TRUE
6237     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6238     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6239 else
6240     AC_MSG_RESULT([no])
6241     WITH_MYSPELL_DICTS=
6243 AC_SUBST(WITH_MYSPELL_DICTS)
6245 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6246 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6247     if test "$with_system_dicts" = yes; then
6248         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6249     fi
6250     with_system_dicts=no
6253 AC_MSG_CHECKING([whether to use dicts from external paths])
6254 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6255     AC_MSG_RESULT([yes])
6256     SYSTEM_DICTS=TRUE
6257     AC_MSG_CHECKING([for spelling dictionary directory])
6258     if test -n "$with_external_dict_dir"; then
6259         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6260     else
6261         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6262         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6263             DICT_SYSTEM_DIR=file:///usr/share/myspell
6264         fi
6265     fi
6266     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6267     AC_MSG_CHECKING([for hyphenation patterns directory])
6268     if test -n "$with_external_hyph_dir"; then
6269         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6270     else
6271         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6272     fi
6273     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6274     AC_MSG_CHECKING([for thesaurus directory])
6275     if test -n "$with_external_thes_dir"; then
6276         THES_SYSTEM_DIR=file://$with_external_thes_dir
6277     else
6278         THES_SYSTEM_DIR=file:///usr/share/mythes
6279     fi
6280     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6281 else
6282     AC_MSG_RESULT([no])
6283     SYSTEM_DICTS=
6285 AC_SUBST(SYSTEM_DICTS)
6286 AC_SUBST(DICT_SYSTEM_DIR)
6287 AC_SUBST(HYPH_SYSTEM_DIR)
6288 AC_SUBST(THES_SYSTEM_DIR)
6290 dnl ===================================================================
6291 dnl Precompiled headers.
6292 ENABLE_PCH=""
6293 AC_MSG_CHECKING([whether to enable pch feature])
6294 if test -z "$enable_pch"; then
6295     if test "$_os" = "WINNT"; then
6296         # Enabled by default on Windows.
6297         enable_pch=yes
6298         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6299         if test -z "$enable_ccache" -a "$SCCACHE"; then
6300             CCACHE=""
6301         fi
6302     else
6303         enable_pch=no
6304     fi
6306 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6307     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6309 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6310     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6312 if test "$enable_pch" = "system"; then
6313     ENABLE_PCH="1"
6314     AC_MSG_RESULT([yes (system headers)])
6315 elif test "$enable_pch" = "base"; then
6316     ENABLE_PCH="2"
6317     AC_MSG_RESULT([yes (system and base headers)])
6318 elif test "$enable_pch" = "normal"; then
6319     ENABLE_PCH="3"
6320     AC_MSG_RESULT([yes (normal)])
6321 elif test "$enable_pch" = "full"; then
6322     ENABLE_PCH="4"
6323     AC_MSG_RESULT([yes (full)])
6324 elif test "$enable_pch" = "yes"; then
6325     # Pick a suitable default.
6326     if test "$GCC" = "yes"; then
6327         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6328         # while making the PCHs larger and rebuilds more likely.
6329         ENABLE_PCH="2"
6330         AC_MSG_RESULT([yes (system and base headers)])
6331     else
6332         # With MSVC the highest level makes a significant difference,
6333         # and it was the default when there used to be no PCH levels.
6334         ENABLE_PCH="4"
6335         AC_MSG_RESULT([yes (full)])
6336     fi
6337 elif test "$enable_pch" = "no"; then
6338     AC_MSG_RESULT([no])
6339 else
6340     AC_MSG_ERROR([Unknown value for --enable-pch])
6342 AC_SUBST(ENABLE_PCH)
6343 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6344 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6345     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6346     if test "$CCACHE_BIN" != "not found"; then
6347         AC_MSG_CHECKING([ccache version])
6348         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6349         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6350         AC_MSG_RESULT([$CCACHE_VERSION])
6351         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6352         if test "$CCACHE_NUMVER" -gt "030701"; then
6353             AC_MSG_RESULT([yes])
6354         else
6355             AC_MSG_RESULT([no (not newer than 3.7.1)])
6356             CCACHE_DEPEND_MODE=
6357         fi
6358     fi
6361 PCH_INSTANTIATE_TEMPLATES=
6362 if test -n "$ENABLE_PCH"; then
6363     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6364     save_CFLAGS=$CFLAGS
6365     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6366     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6367     CFLAGS=$save_CFLAGS
6368     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6369         AC_MSG_RESULT(yes)
6370     else
6371         AC_MSG_RESULT(no)
6372     fi
6374 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6376 BUILDING_PCH_WITH_OBJ=
6377 if test -n "$ENABLE_PCH"; then
6378     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6379     save_CFLAGS=$CFLAGS
6380     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6381     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6382     CFLAGS=$save_CFLAGS
6383     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6384         AC_MSG_RESULT(yes)
6385     else
6386         AC_MSG_RESULT(no)
6387     fi
6389 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6391 PCH_CODEGEN=
6392 PCH_NO_CODEGEN=
6393 fpch_prefix=
6394 if test "$COM" = MSC; then
6395     fpch_prefix="-Xclang "
6397 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6398     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6399     save_CFLAGS=$CFLAGS
6400     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6401     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6402         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6403     CFLAGS=$save_CFLAGS
6404     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6405     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6406         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6407     CFLAGS=$save_CFLAGS
6408     if test -n "$PCH_CODEGEN"; then
6409         AC_MSG_RESULT(yes)
6410     else
6411         AC_MSG_RESULT(no)
6412     fi
6414 AC_SUBST(PCH_CODEGEN)
6415 AC_SUBST(PCH_NO_CODEGEN)
6416 PCH_DEBUGINFO=
6417 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6418     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6419     save_CFLAGS=$CFLAGS
6420     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6421     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6422     CFLAGS=$save_CFLAGS
6423     if test -n "$PCH_DEBUGINFO"; then
6424         AC_MSG_RESULT(yes)
6425     else
6426         AC_MSG_RESULT(no)
6427     fi
6429 AC_SUBST(PCH_DEBUGINFO)
6431 TAB=`printf '\t'`
6433 AC_MSG_CHECKING([the GNU Make version])
6434 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6435 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6436 if test "$_make_longver" -ge "040000"; then
6437     AC_MSG_RESULT([$GNUMAKE $_make_version])
6438 else
6439     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6442 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6443 STALE_MAKE=
6444 if test "$_make_ver_check" = ""; then
6445    STALE_MAKE=TRUE
6448 HAVE_LD_HASH_STYLE=FALSE
6449 WITH_LINKER_HASH_STYLE=
6450 AC_MSG_CHECKING([for --hash-style gcc linker support])
6451 if test "$GCC" = "yes"; then
6452     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6453         hash_styles="gnu sysv"
6454     elif test "$with_linker_hash_style" = "no"; then
6455         hash_styles=
6456     else
6457         hash_styles="$with_linker_hash_style"
6458     fi
6460     for hash_style in $hash_styles; do
6461         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6462         hash_style_ldflags_save=$LDFLAGS
6463         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6465         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6466             [
6467 #include <stdio.h>
6468             ],[
6469 printf ("");
6470             ])],
6471             [
6472                   HAVE_LD_HASH_STYLE=TRUE
6473                   WITH_LINKER_HASH_STYLE=$hash_style
6474             ],
6475             [HAVE_LD_HASH_STYLE=FALSE],
6476             [HAVE_LD_HASH_STYLE=FALSE])
6477         LDFLAGS=$hash_style_ldflags_save
6478     done
6480     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6481         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6482     else
6483         AC_MSG_RESULT( no )
6484     fi
6485     LDFLAGS=$hash_style_ldflags_save
6486 else
6487     AC_MSG_RESULT( no )
6489 AC_SUBST(HAVE_LD_HASH_STYLE)
6490 AC_SUBST(WITH_LINKER_HASH_STYLE)
6492 dnl ===================================================================
6493 dnl Check whether there's a Perl version available.
6494 dnl ===================================================================
6495 if test -z "$with_perl_home"; then
6496     AC_PATH_PROG(PERL, perl)
6497 else
6498     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6499     _perl_path="$with_perl_home/bin/perl"
6500     if test -x "$_perl_path"; then
6501         PERL=$_perl_path
6502     else
6503         AC_MSG_ERROR([$_perl_path not found])
6504     fi
6507 dnl ===================================================================
6508 dnl Testing for Perl version 5 or greater.
6509 dnl $] is the Perl version variable, it is returned as an integer
6510 dnl ===================================================================
6511 if test "$PERL"; then
6512     AC_MSG_CHECKING([the Perl version])
6513     ${PERL} -e "exit($]);"
6514     _perl_version=$?
6515     if test "$_perl_version" -lt 5; then
6516         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6517     fi
6518     AC_MSG_RESULT([Perl $_perl_version])
6519 else
6520     AC_MSG_ERROR([Perl not found, install Perl 5])
6523 dnl ===================================================================
6524 dnl Testing for required Perl modules
6525 dnl ===================================================================
6527 AC_MSG_CHECKING([for required Perl modules])
6528 perl_use_string="use Cwd ; use Digest::MD5"
6529 if test "$_os" = "WINNT"; then
6530     if test -n "$PKGFORMAT"; then
6531         for i in $PKGFORMAT; do
6532             case "$i" in
6533             msi)
6534                 # for getting fonts versions to use in MSI
6535                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6536                 ;;
6537             esac
6538         done
6539     fi
6541 if test "$with_system_hsqldb" = "yes"; then
6542     perl_use_string="$perl_use_string ; use Archive::Zip"
6544 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6545     # OpenSSL needs that to build
6546     perl_use_string="$perl_use_string ; use FindBin"
6548 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6549     AC_MSG_RESULT([all modules found])
6550 else
6551     AC_MSG_RESULT([failed to find some modules])
6552     # Find out which modules are missing.
6553     for i in $perl_use_string; do
6554         if test "$i" != "use" -a "$i" != ";"; then
6555             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6556                 missing_perl_modules="$missing_perl_modules $i"
6557             fi
6558         fi
6559     done
6560     AC_MSG_ERROR([
6561     The missing Perl modules are: $missing_perl_modules
6562     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6565 dnl ===================================================================
6566 dnl Check for pkg-config
6567 dnl ===================================================================
6568 if test "$_os" != "WINNT"; then
6569     PKG_PROG_PKG_CONFIG
6571 AC_SUBST(PKG_CONFIG)
6572 AC_SUBST(PKG_CONFIG_PATH)
6573 AC_SUBST(PKG_CONFIG_LIBDIR)
6575 if test "$_os" != "WINNT"; then
6577     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6578     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6579     # explicitly. Or put /path/to/compiler in PATH yourself.
6581     toolprefix=gcc
6582     if test "$COM_IS_CLANG" = "TRUE"; then
6583         toolprefix=llvm
6584     fi
6585     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6586     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6587     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6588     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6589     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6590     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6592 AC_SUBST(AR)
6593 AC_SUBST(NM)
6594 AC_SUBST(OBJDUMP)
6595 AC_SUBST(RANLIB)
6596 AC_SUBST(READELF)
6597 AC_SUBST(STRIP)
6599 dnl ===================================================================
6600 dnl pkg-config checks on macOS
6601 dnl ===================================================================
6603 if test $_os = Darwin; then
6604     AC_MSG_CHECKING([for bogus pkg-config])
6605     if test -n "$PKG_CONFIG"; then
6606         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6607             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6608         else
6609             if test "$enable_bogus_pkg_config" = "yes"; then
6610                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6611             else
6612                 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.])
6613             fi
6614         fi
6615     else
6616         AC_MSG_RESULT([no, good])
6617     fi
6620 find_csc()
6622     # Return value: $csctest
6624     unset csctest
6626     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6627     if test -n "$regvalue"; then
6628         csctest=$regvalue
6629         return
6630     fi
6633 find_al()
6635     # Return value: $altest
6637     unset altest
6639     # We need this check to detect 4.6.1 or above.
6640     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6641         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6642         PathFormat "$regvalue"
6643         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6644             altest=$regvalue
6645             return
6646         fi
6647     done
6649     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6650     for x in $reglist; do
6651         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6652         PathFormat "$regvalue"
6653         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6654             altest=$regvalue
6655             return
6656         fi
6657     done
6660 find_dotnetsdk()
6662     unset frametest
6664     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6665         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6666         if test -n "$regvalue"; then
6667             frametest=$regvalue
6668             return
6669         fi
6670     done
6671     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6674 find_winsdk_version()
6676     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6677     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6679     unset winsdktest winsdkbinsubdir winsdklibsubdir
6681     case "$1" in
6682     8.0|8.0A)
6683         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6684         if test -n "$regvalue"; then
6685             winsdktest=$regvalue
6686             winsdklibsubdir=win8
6687             return
6688         fi
6689         ;;
6690     8.1|8.1A)
6691         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6692         if test -n "$regvalue"; then
6693             winsdktest=$regvalue
6694             winsdklibsubdir=winv6.3
6695             return
6696         fi
6697         ;;
6698     10.0)
6699         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6700         if test -n "$regvalue"; then
6701             winsdktest=$regvalue
6702             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6703             if test -n "$regvalue"; then
6704                 winsdkbinsubdir="$regvalue".0
6705                 winsdklibsubdir=$winsdkbinsubdir
6706                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6707                 local tmppath_unix=$(cygpath -u "$tmppath")
6708                 # test exist the SDK path
6709                 if test -d "$tmppath_unix"; then
6710                    # when path is convertible to a short path then path is okay
6711                    cygpath -d "$tmppath" >/dev/null 2>&1
6712                    if test $? -ne 0; then
6713                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6714                    fi
6715                 else
6716                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6717                 fi
6718             fi
6719             return
6720         fi
6721         ;;
6722     esac
6725 find_winsdk()
6727     # Return value: From find_winsdk_version
6729     unset winsdktest
6731     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6732         find_winsdk_version $ver
6733         if test -n "$winsdktest"; then
6734             return
6735         fi
6736     done
6739 find_msms()
6741     # Return value: $msmdir
6742     local version="$1"
6744     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6745     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6746     local my_msm_dir
6748     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6750     msmdir=
6751     case "$VCVER" in
6752     16.0 | 17.0 | 17.9)
6753         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6754             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6755             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6756             if test -e "$my_msm_dir${my_msm_file}"; then
6757                 msmdir=$my_msm_dir
6758             fi
6759         done
6760         ;;
6761     esac
6763     if test -n "$msmdir"; then
6764         msmdir=`cygpath -m "$msmdir"`
6765         AC_MSG_RESULT([$msmdir])
6766     else
6767         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6768             AC_MSG_FAILURE([not found])
6769         else
6770             AC_MSG_WARN([not found (check config.log)])
6771             add_warning "MSM ${my_msm_file} not found"
6772         fi
6773     fi
6776 find_msvc_x64_dlls()
6778     # Return value: $msvcdllpath, $msvcdlls
6780     AC_MSG_CHECKING([for MSVC x64 DLL path])
6782     dnl Order crtver in increasing order. Then check the directories returned by
6783     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6784     dnl the result will be the highest CRT version found in the highest directory.
6786     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6787     case "$VCVER" in
6788     16.0 | 17.0 | 17.9)
6789         for crtver in 141 142 143; do
6790             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6791                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6792                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6793                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6794                 fi
6795             done
6796         done
6797         ;;
6798     esac
6799     AC_MSG_RESULT([$msvcdllpath])
6800     AC_MSG_CHECKING([for MSVC x64 DLLs])
6801     msvcdlls="msvcp140.dll vcruntime140.dll"
6802     for dll in $msvcdlls; do
6803         if ! test -f "$msvcdllpath/$dll"; then
6804             AC_MSG_FAILURE([missing $dll])
6805         fi
6806     done
6807     AC_MSG_RESULT([found all ($msvcdlls)])
6810 dnl =========================================
6811 dnl Check for the Windows  SDK.
6812 dnl =========================================
6813 if test "$_os" = "WINNT"; then
6814     AC_MSG_CHECKING([for Windows SDK])
6815     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6816         find_winsdk
6817         WINDOWS_SDK_HOME=$winsdktest
6819         # normalize if found
6820         if test -n "$WINDOWS_SDK_HOME"; then
6821             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6822             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6823         fi
6825         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6826     fi
6828     if test -n "$WINDOWS_SDK_HOME"; then
6829         # Remove a possible trailing backslash
6830         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6832         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6833              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6834              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6835             have_windows_sdk_headers=yes
6836         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6837              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6838              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6839             have_windows_sdk_headers=yes
6840         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6841              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6842              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6843             have_windows_sdk_headers=yes
6844         else
6845             have_windows_sdk_headers=no
6846         fi
6848         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6849             have_windows_sdk_libs=yes
6850         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6851             have_windows_sdk_libs=yes
6852         else
6853             have_windows_sdk_libs=no
6854         fi
6856         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6857             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6858 the  Windows SDK are installed.])
6859         fi
6860     fi
6862     if test -z "$WINDOWS_SDK_HOME"; then
6863         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6864     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6865         WINDOWS_SDK_VERSION=80
6866         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6867     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6868         WINDOWS_SDK_VERSION=81
6869         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6870     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6871         WINDOWS_SDK_VERSION=10
6872         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6873     else
6874         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6875     fi
6876     PathFormat "$WINDOWS_SDK_HOME"
6877     WINDOWS_SDK_HOME="$formatted_path"
6878     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6879     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6880         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6881         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6882             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6883         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6884             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6885         fi
6886     fi
6888     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6889     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6890     dnl but not in v8.0), so allow this to be overridden with a
6891     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6892     dnl and configuration error if no WiLangId.vbs is found would arguably be
6893     dnl better, but I do not know under which conditions exactly it is needed by
6894     dnl msiglobal.pm:
6895     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6896         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6897         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6898         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6899             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6900             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6901         fi
6902         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6903             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6904             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6905         fi
6906         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6907             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6908             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6909         fi
6910     fi
6911     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6912         if test -n "$with_package_format" -a "$with_package_format" != no; then
6913             for i in "$with_package_format"; do
6914                 if test "$i" = "msi"; then
6915                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6916                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6917                     fi
6918                 fi
6919             done
6920         fi
6921     fi
6923 AC_SUBST(WINDOWS_SDK_HOME)
6924 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6925 AC_SUBST(WINDOWS_SDK_VERSION)
6926 AC_SUBST(WINDOWS_SDK_WILANGID)
6928 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6929     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6930     dnl dir, it also determines that dir's path w/o an arch segment if any,
6931     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6932     AC_MSG_CHECKING([for midl.exe])
6934     find_winsdk
6935     PathFormat "$winsdktest"
6936     winsdktest_unix="$formatted_path_unix"
6938     if test -n "$winsdkbinsubdir" \
6939         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6940     then
6941         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6942         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6943     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6944         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6945         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6946     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6947         MIDL_PATH=$winsdktest/Bin
6948         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6949     fi
6950     PathFormat "$MIDL_PATH"
6951     if test ! -f "$formatted_path_unix/midl.exe"; then
6952         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6953     else
6954         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6955     fi
6957     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6958     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6960     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6961          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6962          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6963          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6964     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6965          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6966          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6967          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6968     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6969          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6970          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6971          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6972     else
6973         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6974     fi
6976     dnl Check csc.exe
6977     AC_MSG_CHECKING([for csc.exe])
6978     find_csc
6979     PathFormat "$csctest"
6980     csctest_unix="$formatted_path_unix"
6981     if test -f "$csctest_unix/csc.exe"; then
6982         CSC_PATH="$csctest"
6983     fi
6984     if test ! -f "$csctest_unix/csc.exe"; then
6985         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6986     else
6987         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6988     fi
6990     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6992     dnl Check al.exe
6993     AC_MSG_CHECKING([for al.exe])
6994     if test -n "$winsdkbinsubdir" \
6995         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6996     then
6997         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6998     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6999         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7000     elif test -f "$winsdktest_unix/Bin/al.exe"; then
7001         AL_PATH="$winsdktest/Bin"
7002     fi
7004     if test -z "$AL_PATH"; then
7005         find_al
7006         PathFormat "$altest"
7007         altest_unix="$formatted_path_unix"
7008         if test -f "$altest_unix/bin/al.exe"; then
7009             AL_PATH="$altest/bin"
7010         elif test -f "$altest_unix/al.exe"; then
7011             AL_PATH="$altest"
7012         fi
7013     fi
7014     PathFormat "$AL_PATH"
7015     if test ! -f "$formatted_path_unix/al.exe"; then
7016         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7017     else
7018         AC_MSG_RESULT([$AL_PATH/al.exe])
7019     fi
7021     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7023     dnl Check mscoree.lib / .NET Framework dir
7024     AC_MSG_CHECKING(.NET Framework)
7025     find_dotnetsdk
7026     PathFormat "$frametest"
7027     frametest="$formatted_path_unix"
7028     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7029         DOTNET_FRAMEWORK_HOME="$frametest"
7030     else
7031         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7032             DOTNET_FRAMEWORK_HOME="$winsdktest"
7033         fi
7034     fi
7035     PathFormat "$DOTNET_FRAMEWORK_HOME"
7036     if test ! -f "$formatted_path_unix/lib/mscoree.lib" -a ! -f "$formatted_path_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$formatted_path_unix/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7037         AC_MSG_ERROR([mscoree.lib not found])
7038     fi
7039     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7041     PathFormat "$MIDL_PATH"
7042     MIDL_PATH="$formatted_path"
7044     PathFormat "$AL_PATH"
7045     AL_PATH="$formatted_path"
7047     PathFormat "$DOTNET_FRAMEWORK_HOME"
7048     DOTNET_FRAMEWORK_HOME="$formatted_path"
7050     PathFormat "$CSC_PATH"
7051     CSC_PATH="$formatted_path"
7054 dnl ===================================================================
7055 dnl Testing for C++ compiler and version...
7056 dnl ===================================================================
7058 if test "$_os" != "WINNT"; then
7059     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7060     save_CXXFLAGS=$CXXFLAGS
7061     AC_PROG_CXX
7062     CXXFLAGS=$save_CXXFLAGS
7063     if test -z "$CXX_BASE"; then
7064         CXX_BASE=`first_arg_basename "$CXX"`
7065     fi
7068 dnl check for GNU C++ compiler version
7069 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7070     AC_MSG_CHECKING([the GNU C++ compiler version])
7072     _gpp_version=`$CXX -dumpversion`
7073     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7075     if test "$_gpp_majmin" -lt "700"; then
7076         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7077     else
7078         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7079     fi
7081     dnl see https://issuetracker.google.com/issues/36962819
7082         glibcxx_threads=no
7083         AC_LANG_PUSH([C++])
7084         AC_REQUIRE_CPP
7085         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7086         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7087             #include <bits/c++config.h>]],[[
7088             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7089             && !defined(_GLIBCXX__PTHREADS) \
7090             && !defined(_GLIBCXX_HAS_GTHREADS)
7091             choke me
7092             #endif
7093         ]])],[AC_MSG_RESULT([yes])
7094         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7095         AC_LANG_POP([C++])
7096         if test $glibcxx_threads = yes; then
7097             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7098         fi
7100 AC_SUBST(BOOST_CXXFLAGS)
7103 # prefx CXX with ccache if needed
7105 if test "$CCACHE" != ""; then
7106     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7107     AC_LANG_PUSH([C++])
7108     save_CXXFLAGS=$CXXFLAGS
7109     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7110     # msvc does not fail on unknown options, check stdout
7111     if test "$COM" = MSC; then
7112         CXXFLAGS="$CXXFLAGS -nologo"
7113     fi
7114     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7115     ac_cxx_werror_flag=yes
7116     dnl an empty program will do, we're checking the compiler flags
7117     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7118                       [use_ccache=yes], [use_ccache=no])
7119     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7120         AC_MSG_RESULT([yes])
7121     else
7122         CXX="$CCACHE $CXX"
7123         CXX_BASE="ccache $CXX_BASE"
7124         AC_MSG_RESULT([no])
7125     fi
7126     CXXFLAGS=$save_CXXFLAGS
7127     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7128     AC_LANG_POP([C++])
7131 dnl ===================================================================
7132 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7133 dnl ===================================================================
7135 if test "$_os" != "WINNT"; then
7136     AC_PROG_CXXCPP
7138     dnl Check whether there's a C pre-processor.
7139     AC_PROG_CPP
7143 dnl ===================================================================
7144 dnl Find integral type sizes and alignments
7145 dnl ===================================================================
7147 if test "$_os" != "WINNT"; then
7149     AC_CHECK_SIZEOF(long)
7150     AC_CHECK_SIZEOF(short)
7151     AC_CHECK_SIZEOF(int)
7152     AC_CHECK_SIZEOF(long long)
7153     AC_CHECK_SIZEOF(double)
7154     AC_CHECK_SIZEOF(void*)
7155     AC_CHECK_SIZEOF(size_t)
7157     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7158     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7159     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7160     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7161     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7162     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7164     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7165     m4_pattern_allow([AC_CHECK_ALIGNOF])
7166     m4_ifdef([AC_CHECK_ALIGNOF],
7167         [
7168             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7169             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7170             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7171             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7172         ],
7173         [
7174             case "$_os-$host_cpu" in
7175             Linux-i686)
7176                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7177                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7178                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7179                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7180                 ;;
7181             Linux-x86_64)
7182                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7183                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7184                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7185                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7186                 ;;
7187             *)
7188                 if test -z "$ac_cv_alignof_short" -o \
7189                         -z "$ac_cv_alignof_int" -o \
7190                         -z "$ac_cv_alignof_long" -o \
7191                         -z "$ac_cv_alignof_double"; then
7192                    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.])
7193                 fi
7194                 ;;
7195             esac
7196         ])
7198     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7199     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7200     if test $ac_cv_sizeof_long -eq 8; then
7201         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7202     elif test $ac_cv_sizeof_double -eq 8; then
7203         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7204     else
7205         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7206     fi
7208     dnl Check for large file support
7209     AC_SYS_LARGEFILE
7210     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7211         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7212     fi
7213     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7214         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7215     fi
7216 else
7217     # Hardcode for MSVC
7218     SAL_TYPES_SIZEOFSHORT=2
7219     SAL_TYPES_SIZEOFINT=4
7220     SAL_TYPES_SIZEOFLONG=4
7221     SAL_TYPES_SIZEOFLONGLONG=8
7222     if test $WIN_HOST_BITS -eq 32; then
7223         SAL_TYPES_SIZEOFPOINTER=4
7224         SIZEOF_SIZE_T=4
7225     else
7226         SAL_TYPES_SIZEOFPOINTER=8
7227         SIZEOF_SIZE_T=8
7228     fi
7229     SAL_TYPES_ALIGNMENT2=2
7230     SAL_TYPES_ALIGNMENT4=4
7231     SAL_TYPES_ALIGNMENT8=8
7232     LFS_CFLAGS=''
7234 AC_SUBST(LFS_CFLAGS)
7235 AC_SUBST(SIZEOF_SIZE_T)
7237 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7238 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7239 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7240 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7241 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7242 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7243 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7244 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7246 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7247 AC_MSG_CHECKING([whether jumbo sheets are supported])
7248 if test "$_os" != "WINNT"; then
7249     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7250         AC_MSG_RESULT([yes])
7251         ENABLE_JUMBO_SHEETS=TRUE
7252         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7253     else
7254         AC_MSG_RESULT([no])
7255     fi
7256 else
7257     if test $WIN_HOST_BITS -gt 32; then
7258         # 64bit windows is special-cased for tools::Long because long is 32bit
7259         AC_MSG_RESULT([yes])
7260         ENABLE_JUMBO_SHEETS=TRUE
7261         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7262     else
7263         AC_MSG_RESULT([no])
7264     fi
7266 AC_SUBST(ENABLE_JUMBO_SHEETS)
7268 dnl ===================================================================
7269 dnl Check whether to enable runtime optimizations
7270 dnl ===================================================================
7271 ENABLE_RUNTIME_OPTIMIZATIONS=
7272 AC_MSG_CHECKING([whether to enable runtime optimizations])
7273 if test -z "$enable_runtime_optimizations"; then
7274     for i in $CC; do
7275         case $i in
7276         -fsanitize=*)
7277             enable_runtime_optimizations=no
7278             break
7279             ;;
7280         esac
7281     done
7283 if test "$enable_runtime_optimizations" != no; then
7284     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7285     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7286     AC_MSG_RESULT([yes])
7287 else
7288     AC_MSG_RESULT([no])
7290 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7292 dnl ===================================================================
7293 dnl Check if valgrind headers are available
7294 dnl ===================================================================
7295 ENABLE_VALGRIND=
7296 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7297     prev_cppflags=$CPPFLAGS
7298     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7299     # or where does it come from?
7300     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7301     AC_CHECK_HEADER([valgrind/valgrind.h],
7302         [ENABLE_VALGRIND=TRUE])
7303     CPPFLAGS=$prev_cppflags
7305 AC_SUBST([ENABLE_VALGRIND])
7306 if test -z "$ENABLE_VALGRIND"; then
7307     if test "$with_valgrind" = yes; then
7308         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7309     fi
7310     VALGRIND_CFLAGS=
7312 AC_SUBST([VALGRIND_CFLAGS])
7315 dnl ===================================================================
7316 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7317 dnl ===================================================================
7319 # We need at least the sys/sdt.h include header.
7320 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7321 if test "$SDT_H_FOUND" = "TRUE"; then
7322     # Found sys/sdt.h header, now make sure the c++ compiler works.
7323     # Old g++ versions had problems with probes in constructors/destructors.
7324     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7325     AC_LANG_PUSH([C++])
7326     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7327     #include <sys/sdt.h>
7328     class ProbeClass
7329     {
7330     private:
7331       int& ref;
7332       const char *name;
7334     public:
7335       ProbeClass(int& v, const char *n) : ref(v), name(n)
7336       {
7337         DTRACE_PROBE2(_test_, cons, name, ref);
7338       }
7340       void method(int min)
7341       {
7342         DTRACE_PROBE3(_test_, meth, name, ref, min);
7343         ref -= min;
7344       }
7346       ~ProbeClass()
7347       {
7348         DTRACE_PROBE2(_test_, dest, name, ref);
7349       }
7350     };
7351     ]],[[
7352     int i = 64;
7353     DTRACE_PROBE1(_test_, call, i);
7354     ProbeClass inst = ProbeClass(i, "call");
7355     inst.method(24);
7356     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7357           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7358     AC_LANG_POP([C++])
7360 AC_CONFIG_HEADERS([config_host/config_probes.h])
7362 dnl ===================================================================
7363 dnl GCC features
7364 dnl ===================================================================
7365 HAVE_GCC_STACK_CLASH_PROTECTION=
7366 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7367     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7368     save_CFLAGS=$CFLAGS
7369     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7370     AC_LINK_IFELSE(
7371         [AC_LANG_PROGRAM(, [[return 0;]])],
7372         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7373         [AC_MSG_RESULT([no])])
7374     CFLAGS=$save_CFLAGS
7376     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7377     save_CFLAGS=$CFLAGS
7378     CFLAGS="$CFLAGS -Werror -mno-avx"
7379     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7380     CFLAGS=$save_CFLAGS
7381     if test "$HAVE_GCC_AVX" = "TRUE"; then
7382         AC_MSG_RESULT([yes])
7383     else
7384         AC_MSG_RESULT([no])
7385     fi
7387     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7388     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7389     int v = 0;
7390     if (__sync_add_and_fetch(&v, 1) != 1 ||
7391         __sync_sub_and_fetch(&v, 1) != 0)
7392         return 1;
7393     __sync_synchronize();
7394     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7395         v != 1)
7396         return 1;
7397     return 0;
7398 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7399     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7400         AC_MSG_RESULT([yes])
7401         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7402     else
7403         AC_MSG_RESULT([no])
7404     fi
7406     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7407     AC_LANG_PUSH([C++])
7408     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7409             #include <cstddef>
7410             #include <cxxabi.h>
7411             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7412         ])], [
7413             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7414             AC_MSG_RESULT([yes])
7415         ], [AC_MSG_RESULT([no])])
7416     AC_LANG_POP([C++])
7418     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7419     AC_LANG_PUSH([C++])
7420     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7421             #include <cstddef>
7422             #include <cxxabi.h>
7423             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7424         ])], [
7425             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7426             AC_MSG_RESULT([yes])
7427         ], [AC_MSG_RESULT([no])])
7428     AC_LANG_POP([C++])
7430     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7431     AC_LANG_PUSH([C++])
7432     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7433             #include <cxxabi.h>
7434             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7435         ])], [
7436             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7437             AC_MSG_RESULT([yes])
7438         ], [AC_MSG_RESULT([no])])
7439     AC_LANG_POP([C++])
7441     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7442     AC_LANG_PUSH([C++])
7443     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7444             #include <cstddef>
7445             #include <cxxabi.h>
7446             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7447         ])], [
7448             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7449             AC_MSG_RESULT([yes])
7450         ], [AC_MSG_RESULT([no])])
7451     AC_LANG_POP([C++])
7453     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7454     AC_LANG_PUSH([C++])
7455     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7456             #include <cstddef>
7457             #include <cxxabi.h>
7458             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7459         ])], [
7460             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7461             AC_MSG_RESULT([yes])
7462         ], [AC_MSG_RESULT([no])])
7463     AC_LANG_POP([C++])
7465     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7466     AC_LANG_PUSH([C++])
7467     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7468             #include <cxxabi.h>
7469             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7470         ])], [
7471             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7472             AC_MSG_RESULT([yes])
7473         ], [AC_MSG_RESULT([no])])
7474     AC_LANG_POP([C++])
7476     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7477     AC_LANG_PUSH([C++])
7478     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7479             #include <cxxabi.h>
7480             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7481         ])], [
7482             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7483             AC_MSG_RESULT([yes])
7484         ], [AC_MSG_RESULT([no])])
7485     AC_LANG_POP([C++])
7487     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7488     AC_LANG_PUSH([C++])
7489     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7490             #include <cxxabi.h>
7491             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7492         ])], [
7493             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7494             AC_MSG_RESULT([yes])
7495         ], [AC_MSG_RESULT([no])])
7496     AC_LANG_POP([C++])
7498     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7499     AC_LANG_PUSH([C++])
7500     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7501             #include <cstddef>
7502             #include <cxxabi.h>
7503             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7504         ])], [
7505             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7506             AC_MSG_RESULT([yes])
7507         ], [AC_MSG_RESULT([no])])
7508     AC_LANG_POP([C++])
7510     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7511     AC_LANG_PUSH([C++])
7512     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7513             #include <cstddef>
7514             #include <cxxabi.h>
7515             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7516         ])], [
7517             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7518             AC_MSG_RESULT([yes])
7519         ], [AC_MSG_RESULT([no])])
7520     AC_LANG_POP([C++])
7523 AC_SUBST(HAVE_GCC_AVX)
7524 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7525 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7527 dnl ===================================================================
7528 dnl Identify the C++ library
7529 dnl ===================================================================
7531 AC_MSG_CHECKING([what the C++ library is])
7532 HAVE_LIBSTDCPP=
7533 HAVE_LIBCPP=
7534 AC_LANG_PUSH([C++])
7535 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7536 #include <utility>
7537 #ifndef __GLIBCXX__
7538 foo bar
7539 #endif
7540 ]])],
7541     [CPP_LIBRARY=GLIBCXX
7542      cpp_library_name="GNU libstdc++"
7543      HAVE_LIBSTDCPP=TRUE
7544     ],
7545     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7546 #include <utility>
7547 #ifndef _LIBCPP_VERSION
7548 foo bar
7549 #endif
7550 ]])],
7551     [CPP_LIBRARY=LIBCPP
7552      cpp_library_name="LLVM libc++"
7553      AC_DEFINE([HAVE_LIBCPP])
7554      HAVE_LIBCPP=TRUE
7555     ],
7556     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7557 #include <utility>
7558 #ifndef _MSC_VER
7559 foo bar
7560 #endif
7561 ]])],
7562     [CPP_LIBRARY=MSVCRT
7563      cpp_library_name="Microsoft"
7564     ],
7565     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7566 AC_MSG_RESULT([$cpp_library_name])
7567 AC_LANG_POP([C++])
7568 AC_SUBST([HAVE_LIBSTDCPP])
7569 AC_SUBST([HAVE_LIBCPP])
7571 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7572 then
7573     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7574     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7575     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7576     # although there will be backwards compatibility).
7577     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7578     # and there would be undefined references to debug functions.
7579     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7580     # So check if debug mode can be used and disable or downgrade it to assertions
7581     # if needed.
7582     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7583     AC_LANG_PUSH([C++])
7584     libcpp_debug_links=
7585     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7586 #define _LIBCPP_DEBUG 0 // only assertions
7587 #include <vector>
7588 int main()
7590     std::vector<int> v;
7591     v.push_back( 1 );
7592     return v[ 3 ];
7594 ]])], [libcpp_debug_links=1])
7595     if test -n "$libcpp_debug_links"; then
7596         # we can use at least assertions, check if debug mode works
7597         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7598 #define _LIBCPP_DEBUG 1 // debug mode
7599 #include <string>
7600 #include <vector>
7601 int foo(const std::vector<int>& v) { return *v.begin(); }
7602 int main()
7604     std::vector<int> v;
7605     v.push_back( 1 );
7606     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7607     return (foo(v) + s.size()) != 0 ? 0 : 1;
7609 ]])],
7610         [AC_MSG_RESULT(yes)
7611          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7612         ],
7613         [AC_MSG_RESULT(no, using only assertions)
7614          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7615         ]
7616         )
7617     else
7618         AC_MSG_RESULT(no)
7619     fi
7620     AC_LANG_POP([C++])
7622 AC_SUBST([LIBCPP_DEBUG])
7624 dnl ===================================================================
7625 dnl Check for gperf
7626 dnl ===================================================================
7627 AC_PATH_PROG(GPERF, gperf)
7628 if test -z "$GPERF"; then
7629     AC_MSG_ERROR([gperf not found but needed. Install it.])
7631 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7632     GPERF=`cygpath -m $GPERF`
7634 AC_MSG_CHECKING([whether gperf is new enough])
7635 my_gperf_ver1=$($GPERF --version | head -n 1)
7636 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7637 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7638 if test "$my_gperf_ver3" -ge 301; then
7639     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7640 else
7641     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7643 AC_SUBST(GPERF)
7645 dnl ===================================================================
7646 dnl Check for system libcmis
7647 dnl ===================================================================
7648 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7650 dnl ===================================================================
7651 dnl C++11
7652 dnl ===================================================================
7654 if test -z "${CXXFLAGS_CXX11+x}"; then
7655     AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7656     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7657         if test "$with_latest_c__" = yes; then
7658             CXXFLAGS_CXX11=-std:c++latest
7659         else
7660             CXXFLAGS_CXX11=-std:c++20
7661         fi
7662         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7663     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7664         my_flags='-std=c++20 -std=c++2a'
7665         if test "$with_latest_c__" = yes; then
7666             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7667         fi
7668         for flag in $my_flags; do
7669             if test "$COM" = MSC; then
7670                 flag="-Xclang $flag"
7671             fi
7672             save_CXXFLAGS=$CXXFLAGS
7673             CXXFLAGS="$CXXFLAGS $flag -Werror"
7674             AC_LANG_PUSH([C++])
7675             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7676                 #include <algorithm>
7677                 #include <functional>
7678                 #include <vector>
7680                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7681                     std::sort(v.begin(), v.end(), fn);
7682                 }
7683                 ]])],[CXXFLAGS_CXX11=$flag])
7684             AC_LANG_POP([C++])
7685             CXXFLAGS=$save_CXXFLAGS
7686             if test -n "$CXXFLAGS_CXX11"; then
7687                 break
7688             fi
7689         done
7690     fi
7691     if test -n "$CXXFLAGS_CXX11"; then
7692         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7693     else
7694         AC_MSG_ERROR(no)
7695     fi
7697 AC_SUBST(CXXFLAGS_CXX11)
7699 if test "$GCC" = "yes"; then
7700     save_CXXFLAGS=$CXXFLAGS
7701     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7702     CHECK_L_ATOMIC
7703     CXXFLAGS=$save_CXXFLAGS
7704     AC_SUBST(ATOMIC_LIB)
7707 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7708 save_CXXFLAGS=$CXXFLAGS
7709 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7710 AC_LANG_PUSH([C++])
7712 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7713 #include <stddef.h>
7715 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7717 namespace
7719         struct b
7720         {
7721                 int i;
7722                 int j;
7723         };
7725 ]], [[
7726 struct a
7728         int i;
7729         int j;
7731 a thinga[]={{0,0}, {1,1}};
7732 b thingb[]={{0,0}, {1,1}};
7733 size_t i = sizeof(sal_n_array_size(thinga));
7734 size_t j = sizeof(sal_n_array_size(thingb));
7735 return !(i != 0 && j != 0);
7737     ], [ AC_MSG_RESULT(yes) ],
7738     [ AC_MSG_ERROR(no)])
7739 AC_LANG_POP([C++])
7740 CXXFLAGS=$save_CXXFLAGS
7742 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7743 if test "$GCC" = yes; then
7744     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7745     AC_LANG_PUSH([C++])
7746     save_CXXFLAGS=$CXXFLAGS
7747     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7748     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7749     CXXFLAGS=$save_CXXFLAGS
7750     AC_LANG_POP([C++])
7751     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7752         AC_MSG_RESULT([yes])
7753     else
7754         AC_MSG_RESULT([no])
7755     fi
7757 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7759 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7760 AC_LANG_PUSH([C++])
7761 save_CXXFLAGS=$CXXFLAGS
7762 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7763 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7764         #include <algorithm>
7765         #include <initializer_list>
7766         #include <vector>
7767         template<typename T> class S {
7768         private:
7769             std::vector<T> v_;
7770         public:
7771             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7772         };
7773         constinit S<int> s{3, 2, 1};
7774     ])], [
7775         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7776         AC_MSG_RESULT([yes])
7777     ], [AC_MSG_RESULT([no])])
7778 CXXFLAGS=$save_CXXFLAGS
7779 AC_LANG_POP([C++])
7781 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7782 AC_LANG_PUSH([C++])
7783 save_CXXFLAGS=$CXXFLAGS
7784 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7785 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7786         struct S1 { S1(S1 &&); };
7787         struct S2: S1 {};
7788         S1 f(S2 s) { return s; }
7789     ])], [
7790         AC_DEFINE([HAVE_P1155R3],[1])
7791         AC_MSG_RESULT([yes])
7792     ], [AC_MSG_RESULT([no])])
7793 CXXFLAGS=$save_CXXFLAGS
7794 AC_LANG_POP([C++])
7796 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7797 HAVE_CXX20_ATOMIC_REF=
7798 AC_LANG_PUSH([C++])
7799 save_CXXFLAGS=$CXXFLAGS
7800 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7801 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7802         #include <atomic>
7803         int x;
7804         std::atomic_ref<int> y(x);
7805     ])], [
7806         HAVE_CXX20_ATOMIC_REF=TRUE
7807         AC_MSG_RESULT([yes])
7808     ], [AC_MSG_RESULT([no])])
7809 CXXFLAGS=$save_CXXFLAGS
7810 AC_LANG_POP([C++])
7811 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7813 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7814 dnl which is included in -Wextra anyway):
7815 HAVE_WDEPRECATED_COPY_DTOR=
7816 if test "$GCC" = yes; then
7817     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7818     AC_LANG_PUSH([C++])
7819     save_CXXFLAGS=$CXXFLAGS
7820     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7821     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7822             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7823             AC_MSG_RESULT([yes])
7824         ], [AC_MSG_RESULT([no])])
7825     CXXFLAGS=$save_CXXFLAGS
7826     AC_LANG_POP([C++])
7828 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7830 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7831 dnl uninitialized warning for code like
7833 dnl   OString f();
7834 dnl   boost::optional<OString> * g(bool b) {
7835 dnl       boost::optional<OString> o;
7836 dnl       if (b) o = f();
7837 dnl       return new boost::optional<OString>(o);
7838 dnl   }
7840 dnl (as is e.g. present, in a slightly more elaborate form, in
7841 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7842 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7843 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7844 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7845     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7846     AC_LANG_PUSH([C++])
7847     save_CXXFLAGS=$CXXFLAGS
7848     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7849     if test "$ENABLE_OPTIMIZED" = TRUE; then
7850         CXXFLAGS="$CXXFLAGS -O2"
7851     else
7852         CXXFLAGS="$CXXFLAGS -O0"
7853     fi
7854     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7855             #include <new>
7856             void f1(int);
7857             struct S1 {
7858                 ~S1() { f1(n); }
7859                 int n = 0;
7860             };
7861             struct S2 {
7862                 S2() {}
7863                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7864                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7865                 void set(S1 s) {
7866                     new (stg) S1(s);
7867                     init = true;
7868                 }
7869                 bool init = false;
7870                 char stg[sizeof (S1)];
7871             } ;
7872             S1 f2();
7873             S2 * f3(bool b) {
7874                 S2 o;
7875                 if (b) o.set(f2());
7876                 return new S2(o);
7877             }
7878         ]])], [AC_MSG_RESULT([no])], [
7879             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7880             AC_MSG_RESULT([yes])
7881         ])
7882     CXXFLAGS=$save_CXXFLAGS
7883     AC_LANG_POP([C++])
7885 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7887 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7888 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7889 dnl hits us e.g. with GCC 10 and --enable-optimized at
7891 dnl   In file included from include/rtl/string.hxx:49,
7892 dnl                    from include/rtl/ustring.hxx:43,
7893 dnl                    from include/osl/file.hxx:35,
7894 dnl                    from include/codemaker/global.hxx:28,
7895 dnl                    from include/codemaker/options.hxx:23,
7896 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7897 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7898 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,
7899 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,
7900 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,
7901 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7902 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7903 dnl      78 |         memcpy( buffer, data, length );
7904 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7905 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7906 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7907     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7908     AC_LANG_PUSH([C++])
7909     save_CXXFLAGS=$CXXFLAGS
7910     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7911     if test "$ENABLE_OPTIMIZED" = TRUE; then
7912         CXXFLAGS="$CXXFLAGS -O2"
7913     else
7914         CXXFLAGS="$CXXFLAGS -O0"
7915     fi
7916     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7917     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7918             void fill(char const * begin, char const * end, char c);
7919             struct q {
7920                 char ids[4];
7921                 char username[6];
7922             };
7923             void test(q & c) {
7924                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7925                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7926             }
7927         ]])], [AC_MSG_RESULT([no])], [
7928             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7929             AC_MSG_RESULT([yes])
7930         ])
7931     CXXFLAGS=$save_CXXFLAGS
7932     AC_LANG_POP([C++])
7934 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7936 HAVE_DLLEXPORTINLINES=
7937 if test "$_os" = "WINNT"; then
7938     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7939     AC_LANG_PUSH([C++])
7940     save_CXXFLAGS=$CXXFLAGS
7941     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7942     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7943             HAVE_DLLEXPORTINLINES=TRUE
7944             AC_MSG_RESULT([yes])
7945         ], [AC_MSG_RESULT([no])])
7946     CXXFLAGS=$save_CXXFLAGS
7947     AC_LANG_POP([C++])
7949 AC_SUBST([HAVE_DLLEXPORTINLINES])
7951 dnl ===================================================================
7952 dnl CPU Intrinsics support - SSE, AVX
7953 dnl ===================================================================
7955 CXXFLAGS_INTRINSICS_SSE2=
7956 CXXFLAGS_INTRINSICS_SSSE3=
7957 CXXFLAGS_INTRINSICS_SSE41=
7958 CXXFLAGS_INTRINSICS_SSE42=
7959 CXXFLAGS_INTRINSICS_AVX=
7960 CXXFLAGS_INTRINSICS_AVX2=
7961 CXXFLAGS_INTRINSICS_AVX512=
7962 CXXFLAGS_INTRINSICS_AVX512F=
7963 CXXFLAGS_INTRINSICS_F16C=
7964 CXXFLAGS_INTRINSICS_FMA=
7966 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7967     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7968     flag_sse2=-msse2
7969     flag_ssse3=-mssse3
7970     flag_sse41=-msse4.1
7971     flag_sse42=-msse4.2
7972     flag_avx=-mavx
7973     flag_avx2=-mavx2
7974     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7975     flag_avx512f=-mavx512f
7976     flag_f16c=-mf16c
7977     flag_fma=-mfma
7978 else
7979     # With MSVC using -arch is in fact not necessary for being able
7980     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7981     # even if compiled with -arch:AVX, the -arch option really only affects
7982     # instructions generated for C/C++ code.
7983     # So use the matching same (or lower) -arch options, but only in order
7984     # to generate the best matching instructions for the C++ code surrounding
7985     # the intrinsics.
7986     # SSE2 is the default for x86/x64, so no need to specify the option.
7987     flag_sse2=
7988     # No specific options for these, use the next lower.
7989     flag_ssse3="$flag_sse2"
7990     flag_sse41="$flag_sse2"
7991     flag_sse42="$flag_sse2"
7992     flag_avx=-arch:AVX
7993     flag_avx2=-arch:AVX2
7994     flag_avx512=-arch:AVX512
7995     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7996     flag_avx512f=-arch:AVX2
7997     # No MSVC options for these.
7998     flag_f16c="$flag_sse2"
7999     flag_fma="$flag_sse2"
8002 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8003 AC_LANG_PUSH([C++])
8004 save_CXXFLAGS=$CXXFLAGS
8005 CXXFLAGS="$CXXFLAGS $flag_sse2"
8006 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8007     #include <emmintrin.h>
8008     int main () {
8009         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8010         c = _mm_xor_si128 (a, b);
8011         return 0;
8012     }
8013     ])],
8014     [can_compile_sse2=yes],
8015     [can_compile_sse2=no])
8016 AC_LANG_POP([C++])
8017 CXXFLAGS=$save_CXXFLAGS
8018 AC_MSG_RESULT([${can_compile_sse2}])
8019 if test "${can_compile_sse2}" = "yes" ; then
8020     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8023 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8024 AC_LANG_PUSH([C++])
8025 save_CXXFLAGS=$CXXFLAGS
8026 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8027 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8028     #include <tmmintrin.h>
8029     int main () {
8030         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8031         c = _mm_maddubs_epi16 (a, b);
8032         return 0;
8033     }
8034     ])],
8035     [can_compile_ssse3=yes],
8036     [can_compile_ssse3=no])
8037 AC_LANG_POP([C++])
8038 CXXFLAGS=$save_CXXFLAGS
8039 AC_MSG_RESULT([${can_compile_ssse3}])
8040 if test "${can_compile_ssse3}" = "yes" ; then
8041     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8044 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8045 AC_LANG_PUSH([C++])
8046 save_CXXFLAGS=$CXXFLAGS
8047 CXXFLAGS="$CXXFLAGS $flag_sse41"
8048 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8049     #include <smmintrin.h>
8050     int main () {
8051         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8052         c = _mm_cmpeq_epi64 (a, b);
8053         return 0;
8054     }
8055     ])],
8056     [can_compile_sse41=yes],
8057     [can_compile_sse41=no])
8058 AC_LANG_POP([C++])
8059 CXXFLAGS=$save_CXXFLAGS
8060 AC_MSG_RESULT([${can_compile_sse41}])
8061 if test "${can_compile_sse41}" = "yes" ; then
8062     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8065 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8066 AC_LANG_PUSH([C++])
8067 save_CXXFLAGS=$CXXFLAGS
8068 CXXFLAGS="$CXXFLAGS $flag_sse42"
8069 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8070     #include <nmmintrin.h>
8071     int main () {
8072         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8073         c = _mm_cmpgt_epi64 (a, b);
8074         return 0;
8075     }
8076     ])],
8077     [can_compile_sse42=yes],
8078     [can_compile_sse42=no])
8079 AC_LANG_POP([C++])
8080 CXXFLAGS=$save_CXXFLAGS
8081 AC_MSG_RESULT([${can_compile_sse42}])
8082 if test "${can_compile_sse42}" = "yes" ; then
8083     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8086 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8087 AC_LANG_PUSH([C++])
8088 save_CXXFLAGS=$CXXFLAGS
8089 CXXFLAGS="$CXXFLAGS $flag_avx"
8090 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8091     #include <immintrin.h>
8092     int main () {
8093         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8094         c = _mm256_xor_ps(a, b);
8095         return 0;
8096     }
8097     ])],
8098     [can_compile_avx=yes],
8099     [can_compile_avx=no])
8100 AC_LANG_POP([C++])
8101 CXXFLAGS=$save_CXXFLAGS
8102 AC_MSG_RESULT([${can_compile_avx}])
8103 if test "${can_compile_avx}" = "yes" ; then
8104     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8107 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8108 AC_LANG_PUSH([C++])
8109 save_CXXFLAGS=$CXXFLAGS
8110 CXXFLAGS="$CXXFLAGS $flag_avx2"
8111 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8112     #include <immintrin.h>
8113     int main () {
8114         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8115         c = _mm256_maddubs_epi16(a, b);
8116         return 0;
8117     }
8118     ])],
8119     [can_compile_avx2=yes],
8120     [can_compile_avx2=no])
8121 AC_LANG_POP([C++])
8122 CXXFLAGS=$save_CXXFLAGS
8123 AC_MSG_RESULT([${can_compile_avx2}])
8124 if test "${can_compile_avx2}" = "yes" ; then
8125     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8128 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8129 AC_LANG_PUSH([C++])
8130 save_CXXFLAGS=$CXXFLAGS
8131 CXXFLAGS="$CXXFLAGS $flag_avx512"
8132 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8133     #include <immintrin.h>
8134     int main () {
8135         __m512i a = _mm512_loadu_si512(0);
8136         __m512d v1 = _mm512_load_pd(0);
8137         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8138         __m512d v2 = _mm512_abs_pd(v1);
8139         return 0;
8140     }
8141     ])],
8142     [can_compile_avx512=yes],
8143     [can_compile_avx512=no])
8144 AC_LANG_POP([C++])
8145 CXXFLAGS=$save_CXXFLAGS
8146 AC_MSG_RESULT([${can_compile_avx512}])
8147 if test "${can_compile_avx512}" = "yes" ; then
8148     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8149     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8152 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8153 AC_LANG_PUSH([C++])
8154 save_CXXFLAGS=$CXXFLAGS
8155 CXXFLAGS="$CXXFLAGS $flag_f16c"
8156 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8157     #include <immintrin.h>
8158     int main () {
8159         __m128i a = _mm_set1_epi32 (0);
8160         __m128 c;
8161         c = _mm_cvtph_ps(a);
8162         return 0;
8163     }
8164     ])],
8165     [can_compile_f16c=yes],
8166     [can_compile_f16c=no])
8167 AC_LANG_POP([C++])
8168 CXXFLAGS=$save_CXXFLAGS
8169 AC_MSG_RESULT([${can_compile_f16c}])
8170 if test "${can_compile_f16c}" = "yes" ; then
8171     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8174 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8175 AC_LANG_PUSH([C++])
8176 save_CXXFLAGS=$CXXFLAGS
8177 CXXFLAGS="$CXXFLAGS $flag_fma"
8178 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8179     #include <immintrin.h>
8180     int main () {
8181         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8182         d = _mm256_fmadd_ps(a, b, c);
8183         return 0;
8184     }
8185     ])],
8186     [can_compile_fma=yes],
8187     [can_compile_fma=no])
8188 AC_LANG_POP([C++])
8189 CXXFLAGS=$save_CXXFLAGS
8190 AC_MSG_RESULT([${can_compile_fma}])
8191 if test "${can_compile_fma}" = "yes" ; then
8192     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8195 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8196 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8197 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8198 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8199 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8200 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8201 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8202 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8203 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8204 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8206 dnl ===================================================================
8207 dnl system stl sanity tests
8208 dnl ===================================================================
8209 if test "$_os" != "WINNT"; then
8211     AC_LANG_PUSH([C++])
8213     save_CPPFLAGS="$CPPFLAGS"
8214     if test -n "$MACOSX_SDK_PATH"; then
8215         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8216     fi
8218     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8219     # only.
8220     if test "$CPP_LIBRARY" = GLIBCXX; then
8221         dnl gcc#19664, gcc#22482, rhbz#162935
8222         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8223         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8224         AC_MSG_RESULT([$stlvisok])
8225         if test "$stlvisok" = "no"; then
8226             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8227         fi
8228     fi
8230     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8231     # when we don't make any dynamic libraries?
8232     if test "$DISABLE_DYNLOADING" = ""; then
8233         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8234         cat > conftestlib1.cc <<_ACEOF
8235 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8236 struct S2: S1<int> { virtual ~S2(); };
8237 S2::~S2() {}
8238 _ACEOF
8239         cat > conftestlib2.cc <<_ACEOF
8240 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8241 struct S2: S1<int> { virtual ~S2(); };
8242 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8243 _ACEOF
8244         gccvisinlineshiddenok=yes
8245         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8246             gccvisinlineshiddenok=no
8247         else
8248             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8249             dnl known to not work with -z defs (unsetting which makes the test
8250             dnl moot, though):
8251             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8252             if test "$COM_IS_CLANG" = TRUE; then
8253                 for i in $CXX $CXXFLAGS; do
8254                     case $i in
8255                     -fsanitize=*)
8256                         my_linkflagsnoundefs=
8257                         break
8258                         ;;
8259                     esac
8260                 done
8261             fi
8262             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8263                 gccvisinlineshiddenok=no
8264             fi
8265         fi
8267         rm -fr libconftest*
8268         AC_MSG_RESULT([$gccvisinlineshiddenok])
8269         if test "$gccvisinlineshiddenok" = "no"; then
8270             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8271         fi
8272     fi
8274    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8275     cat >visibility.cxx <<_ACEOF
8276 #pragma GCC visibility push(hidden)
8277 struct __attribute__ ((visibility ("default"))) TestStruct {
8278   static void Init();
8280 __attribute__ ((visibility ("default"))) void TestFunc() {
8281   TestStruct::Init();
8283 _ACEOF
8284     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8285         gccvisbroken=yes
8286     else
8287         case "$host_cpu" in
8288         i?86|x86_64)
8289             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8290                 gccvisbroken=no
8291             else
8292                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8293                     gccvisbroken=no
8294                 else
8295                     gccvisbroken=yes
8296                 fi
8297             fi
8298             ;;
8299         *)
8300             gccvisbroken=no
8301             ;;
8302         esac
8303     fi
8304     rm -f visibility.s visibility.cxx
8306     AC_MSG_RESULT([$gccvisbroken])
8307     if test "$gccvisbroken" = "yes"; then
8308         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8309     fi
8311     CPPFLAGS="$save_CPPFLAGS"
8313     AC_MSG_CHECKING([if CET endbranch is recognized])
8314 cat > endbr.s <<_ACEOF
8315 endbr32
8316 _ACEOF
8317     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8318     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8319         AC_MSG_RESULT([yes])
8320         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8321     else
8322         AC_MSG_RESULT([no])
8323     fi
8324     rm -f endbr.s endbr.o
8325     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8327     AC_LANG_POP([C++])
8330 dnl ===================================================================
8331 dnl  Clang++ tests
8332 dnl ===================================================================
8334 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8335 if test "$GCC" = "yes"; then
8336     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8337     AC_LANG_PUSH([C++])
8338     save_CXXFLAGS=$CXXFLAGS
8339     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8340     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8341     CXXFLAGS=$save_CXXFLAGS
8342     AC_LANG_POP([C++])
8343     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8344         AC_MSG_RESULT([yes])
8345     else
8346         AC_MSG_RESULT([no])
8347     fi
8349 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8351 dnl ===================================================================
8352 dnl Compiler plugins
8353 dnl ===================================================================
8355 COMPILER_PLUGINS=
8356 # currently only Clang
8358 if test "$COM_IS_CLANG" != "TRUE"; then
8359     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8360         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8361         enable_compiler_plugins=no
8362     fi
8365 COMPILER_PLUGINS_COM_IS_CLANG=
8366 if test "$COM_IS_CLANG" = "TRUE"; then
8367     if test -n "$enable_compiler_plugins"; then
8368         compiler_plugins="$enable_compiler_plugins"
8369     elif test -n "$ENABLE_DBGUTIL"; then
8370         compiler_plugins=test
8371     else
8372         compiler_plugins=no
8373     fi
8374     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8375         if test "$CLANGVER" -lt 120001; then
8376             if test "$compiler_plugins" = yes; then
8377                 AC_MSG_ERROR(
8378                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8379             else
8380                 compiler_plugins=no
8381             fi
8382         fi
8383     fi
8384     if test "$compiler_plugins" != "no"; then
8385         dnl The prefix where Clang resides, override to where Clang resides if
8386         dnl using a source build:
8387         if test -z "$CLANGDIR"; then
8388             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8389         fi
8390         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8391         if test -z "$COMPILER_PLUGINS_CXX"; then
8392             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8393         fi
8394         clangbindir=$CLANGDIR/bin
8395         if test "$build_os" = "cygwin"; then
8396             clangbindir=$(cygpath -u "$clangbindir")
8397         fi
8398         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8399         if test -n "$LLVM_CONFIG"; then
8400             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8401             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8402             if test -z "$CLANGLIBDIR"; then
8403                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8404             fi
8405             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8406             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8407             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8408                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8409                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8410                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8411                 fi
8412             fi
8413             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8414             clangobjdir=$($LLVM_CONFIG --obj-root)
8415             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8416                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8417             fi
8418         fi
8419         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8420         AC_LANG_PUSH([C++])
8421         save_CXX=$CXX
8422         save_CXXCPP=$CXXCPP
8423         save_CPPFLAGS=$CPPFLAGS
8424         save_CXXFLAGS=$CXXFLAGS
8425         save_LDFLAGS=$LDFLAGS
8426         save_LIBS=$LIBS
8427         CXX=$COMPILER_PLUGINS_CXX
8428         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8429         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8430         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8431         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8432             [COMPILER_PLUGINS=TRUE],
8433             [
8434             if test "$compiler_plugins" = "yes"; then
8435                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8436             else
8437                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8438                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8439             fi
8440             ])
8441         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8442         dnl comment in compilerplugins/Makefile-clang.mk:
8443         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8444             LDFLAGS=""
8445             AC_MSG_CHECKING([for clang libraries to use])
8446             if test -z "$CLANGTOOLLIBS"; then
8447                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8448                 AC_LINK_IFELSE([
8449                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8450                         [[ clang::FullSourceLoc().dump(); ]])
8451                 ],[CLANGTOOLLIBS="$LIBS"],[])
8452             fi
8453             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8454             dnl list of individual -lclang* (but note that that list can become outdated over time,
8455             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8456             dnl needs to include -lclangSupport now"):
8457             if test -z "$CLANGTOOLLIBS"; then
8458                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8459  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8460                 AC_LINK_IFELSE([
8461                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8462                         [[ clang::FullSourceLoc().dump(); ]])
8463                 ],[CLANGTOOLLIBS="$LIBS"],[])
8464             fi
8465             AC_MSG_RESULT([$CLANGTOOLLIBS])
8466             if test -z "$CLANGTOOLLIBS"; then
8467                 if test "$compiler_plugins" = "yes"; then
8468                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8469                 else
8470                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8471                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8472                 fi
8473                 COMPILER_PLUGINS=
8474             fi
8475             if test -n "$COMPILER_PLUGINS"; then
8476                 if test -z "$CLANGSYSINCLUDE"; then
8477                     if test -n "$LLVM_CONFIG"; then
8478                         # Path to the clang system headers (no idea if there's a better way to get it).
8479                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8480                     fi
8481                 fi
8482             fi
8483         fi
8484         CXX=$save_CXX
8485         CXXCPP=$save_CXXCPP
8486         CPPFLAGS=$save_CPPFLAGS
8487         CXXFLAGS=$save_CXXFLAGS
8488         LDFLAGS=$save_LDFLAGS
8489         LIBS="$save_LIBS"
8490         AC_LANG_POP([C++])
8492         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8493         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8494             #ifndef __clang__
8495             you lose
8496             #endif
8497             int foo=42;
8498             ]])],
8499             [AC_MSG_RESULT([yes])
8500              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8501             [AC_MSG_RESULT([no])])
8502         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8503     fi
8504 else
8505     if test "$enable_compiler_plugins" = "yes"; then
8506         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8507     fi
8509 COMPILER_PLUGINS_ANALYZER_PCH=
8510 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8511     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8513 AC_SUBST(COMPILER_PLUGINS)
8514 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8515 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8516 AC_SUBST(COMPILER_PLUGINS_CXX)
8517 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8518 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8519 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8520 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8521 AC_SUBST(CLANGDIR)
8522 AC_SUBST(CLANGLIBDIR)
8523 AC_SUBST(CLANGTOOLLIBS)
8524 AC_SUBST(CLANGSYSINCLUDE)
8526 # Plugin to help linker.
8527 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8528 # This makes --enable-lto build with clang work.
8529 AC_SUBST(LD_PLUGIN)
8531 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8532 AC_SUBST(HAVE_POSIX_FALLOCATE)
8534 JITC_PROCESSOR_TYPE=""
8535 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8536     # IBMs JDK needs this...
8537     JITC_PROCESSOR_TYPE=6
8538     export JITC_PROCESSOR_TYPE
8540 AC_SUBST([JITC_PROCESSOR_TYPE])
8542 # Misc Windows Stuff
8543 AC_ARG_WITH(ucrt-dir,
8544     AS_HELP_STRING([--with-ucrt-dir],
8545         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8546         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8547         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8548             Windows6.1-KB2999226-x64.msu
8549             Windows6.1-KB2999226-x86.msu
8550             Windows8.1-KB2999226-x64.msu
8551             Windows8.1-KB2999226-x86.msu
8552             Windows8-RT-KB2999226-x64.msu
8553             Windows8-RT-KB2999226-x86.msu
8554         A zip archive including those files is available from Microsoft site:
8555         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8558 UCRT_REDISTDIR="$with_ucrt_dir"
8559 if test $_os = "WINNT"; then
8560     find_msvc_x64_dlls
8561     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8562     MSVC_DLLS="$msvcdlls"
8563     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8564         with_redist=143
8565     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8566         with_redist=142
8567     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8568         with_redist=141
8569     fi
8570     for i in $PKGFORMAT; do
8571         if test "$i" = msi; then
8572             find_msms "$with_redist"
8573             if test -n "$msmdir"; then
8574                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8575                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8576             fi
8577             break
8578         fi
8579     done
8581     if test "$UCRT_REDISTDIR" = "no"; then
8582         dnl explicitly disabled
8583         UCRT_REDISTDIR=""
8584     else
8585         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8586                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8587                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8588                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8589                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8590                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8591             UCRT_REDISTDIR=""
8592             if test -n "$PKGFORMAT"; then
8593                for i in $PKGFORMAT; do
8594                    case "$i" in
8595                    msi)
8596                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8597                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8598                        ;;
8599                    esac
8600                done
8601             fi
8602         fi
8603     fi
8606 AC_SUBST(UCRT_REDISTDIR)
8607 AC_SUBST(MSVC_DLL_PATH)
8608 AC_SUBST(MSVC_DLLS)
8609 AC_SUBST(MSM_PATH)
8612 dnl ===================================================================
8613 dnl Checks for Java
8614 dnl ===================================================================
8615 if test "$ENABLE_JAVA" != ""; then
8617     # Windows-specific tests
8618     if test "$build_os" = "cygwin"; then
8619         if test -z "$with_jdk_home"; then
8620             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8621             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8622             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8623             if test -n "$regvalue"; then
8624                 ver=$regvalue
8625                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8626                 with_jdk_home=$regvalue
8627             fi
8628             howfound="found automatically"
8629         else
8630             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8631             howfound="you passed"
8632         fi
8634         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8635             AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 17])
8636         fi
8637     fi
8639     # 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.
8640     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8641     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8642         with_jdk_home=`/usr/libexec/java_home`
8643     fi
8645     JAVA_HOME=; export JAVA_HOME
8646     if test -z "$with_jdk_home"; then
8647         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8648     else
8649         _java_path="$with_jdk_home/bin/$with_java"
8650         dnl Check if there is a Java interpreter at all.
8651         if test -x "$_java_path"; then
8652             JAVAINTERPRETER=$_java_path
8653         else
8654             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8655         fi
8656     fi
8658     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8659     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8660     dnl loaded by java to run JunitTests:
8661     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8662         shortjdkhome=`cygpath -d "$with_jdk_home"`
8663         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
8664             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8665             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8666         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
8667             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8668             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8669         fi
8671         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8672             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8673         fi
8674         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8675     elif test "$cross_compiling" != "yes"; then
8676         case $CPUNAME in
8677             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8678                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8679                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8680                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8681                 fi
8682                 ;;
8683             *) # assumption: everything else 32-bit
8684                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8685                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8686                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8687                 fi
8688                 ;;
8689         esac
8690     fi
8693 dnl ===================================================================
8694 dnl Checks for JDK.
8695 dnl ===================================================================
8697 # Whether all the complexity here actually is needed any more or not, no idea.
8699 JDK_SECURITYMANAGER_DISALLOWED=
8700 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8701     _gij_longver=0
8702     AC_MSG_CHECKING([the installed JDK])
8703     if test -n "$JAVAINTERPRETER"; then
8704         dnl java -version sends output to stderr!
8705         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8706             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8707         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8708             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8709         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8710             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8711         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8712             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8713         else
8714             JDK=sun
8716             dnl Sun JDK specific tests
8717             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8718             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8720             if test "$_jdk_ver" -lt 170000; then
8721                 AC_MSG_ERROR([JDK is too old, you need at least 17 ($_jdk_ver < 170000)])
8722             fi
8723             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8724             dnl completely removed in some Java version > 18 (see
8725             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8726             if test "$_jdk_ver" -ge 180000; then
8727                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8728             fi
8730             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8731             if test "$_os" = "WINNT"; then
8732                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8733             fi
8734             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8736             # set to limit VM usage for JunitTests
8737             JAVAIFLAGS=-Xmx64M
8738             # set to limit VM usage for javac
8739             JAVACFLAGS=-J-Xmx128M
8740         fi
8741     else
8742         AC_MSG_ERROR([Java not found. You need at least JDK 17])
8743     fi
8744 else
8745     if test -z "$ENABLE_JAVA"; then
8746         dnl Java disabled
8747         JAVA_HOME=
8748         export JAVA_HOME
8749     elif test "$cross_compiling" = "yes"; then
8750         # Just assume compatibility of build and host JDK
8751         JDK=$JDK_FOR_BUILD
8752         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8753     fi
8756 dnl ===================================================================
8757 dnl Checks for javac
8758 dnl ===================================================================
8759 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8760     javacompiler="javac"
8761     : ${JAVA_SOURCE_VER=8}
8762     : ${JAVA_TARGET_VER=8}
8763     if test -z "$with_jdk_home"; then
8764         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8765     else
8766         _javac_path="$with_jdk_home/bin/$javacompiler"
8767         dnl Check if there is a Java compiler at all.
8768         if test -x "$_javac_path"; then
8769             JAVACOMPILER=$_javac_path
8770         fi
8771     fi
8772     if test -z "$JAVACOMPILER"; then
8773         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8774     fi
8775     if test "$build_os" = "cygwin"; then
8776         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8777             JAVACOMPILER="${JAVACOMPILER}.exe"
8778         fi
8779         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8780     fi
8783 dnl ===================================================================
8784 dnl Checks for javadoc
8785 dnl ===================================================================
8786 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8787     if test -z "$with_jdk_home"; then
8788         AC_PATH_PROG(JAVADOC, javadoc)
8789     else
8790         _javadoc_path="$with_jdk_home/bin/javadoc"
8791         dnl Check if there is a javadoc at all.
8792         if test -x "$_javadoc_path"; then
8793             JAVADOC=$_javadoc_path
8794         else
8795             AC_PATH_PROG(JAVADOC, javadoc)
8796         fi
8797     fi
8798     if test -z "$JAVADOC"; then
8799         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8800     fi
8801     if test "$build_os" = "cygwin"; then
8802         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8803             JAVADOC="${JAVADOC}.exe"
8804         fi
8805         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8806     fi
8808     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8809     JAVADOCISGJDOC="yes"
8810     fi
8812 AC_SUBST(JAVADOC)
8813 AC_SUBST(JAVADOCISGJDOC)
8815 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8816     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8817     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8818         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8819            # try to recover first by looking whether we have an alternative
8820            # system as in Debian or newer SuSEs where following /usr/bin/javac
8821            # over /etc/alternatives/javac leads to the right bindir where we
8822            # just need to strip a bit away to get a valid JAVA_HOME
8823            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8824         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8825             # maybe only one level of symlink (e.g. on Mac)
8826             JAVA_HOME=$(readlink $JAVACOMPILER)
8827             if test "$(dirname $JAVA_HOME)" = "."; then
8828                 # we've got no path to trim back
8829                 JAVA_HOME=""
8830             fi
8831         else
8832             # else warn
8833             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8834             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8835             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8836             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8837         fi
8838         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8839         if test "$JAVA_HOME" != "/usr"; then
8840             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8841                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8842                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8843                 dnl Tiger already returns a JDK path...
8844                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8845             else
8846                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8847                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8848                 dnl that checks which version to run
8849                 if test -f "$JAVA_HOME"; then
8850                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8851                 fi
8852             fi
8853         fi
8854     fi
8855     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8857     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8858     if test -z "$JAVA_HOME"; then
8859         if test "x$with_jdk_home" = "x"; then
8860             cat > findhome.java <<_ACEOF
8861 [import java.io.File;
8863 class findhome
8865     public static void main(String args[])
8866     {
8867         String jrelocation = System.getProperty("java.home");
8868         File jre = new File(jrelocation);
8869         System.out.println(jre.getParent());
8870     }
8872 _ACEOF
8873             AC_MSG_CHECKING([if javac works])
8874             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8875             AC_TRY_EVAL(javac_cmd)
8876             if test $? = 0 -a -f ./findhome.class; then
8877                 AC_MSG_RESULT([javac works])
8878             else
8879                 echo "configure: javac test failed" >&5
8880                 cat findhome.java >&5
8881                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8882             fi
8883             AC_MSG_CHECKING([if gij knows its java.home])
8884             JAVA_HOME=`$JAVAINTERPRETER findhome`
8885             if test $? = 0 -a "$JAVA_HOME" != ""; then
8886                 AC_MSG_RESULT([$JAVA_HOME])
8887             else
8888                 echo "configure: java test failed" >&5
8889                 cat findhome.java >&5
8890                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8891             fi
8892             # clean-up after ourselves
8893             rm -f ./findhome.java ./findhome.class
8894         else
8895             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8896         fi
8897     fi
8899     # now check if $JAVA_HOME is really valid
8900     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8901         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8902             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8903             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8904             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8905             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8906             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8907             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8908         fi
8909     fi
8910     PathFormat "$JAVA_HOME"
8911     JAVA_HOME="$formatted_path"
8914 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8915     "$_os" != Darwin
8916 then
8917     AC_MSG_CHECKING([for JAWT lib])
8918     if test "$_os" = WINNT; then
8919         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8920         JAWTLIB=jawt.lib
8921     else
8922         case "$host_cpu" in
8923         arm*)
8924             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8925             JAVA_ARCH=$my_java_arch
8926             ;;
8927         i*86)
8928             my_java_arch=i386
8929             ;;
8930         m68k)
8931             my_java_arch=m68k
8932             ;;
8933         powerpc)
8934             my_java_arch=ppc
8935             ;;
8936         powerpc64)
8937             my_java_arch=ppc64
8938             ;;
8939         powerpc64le)
8940             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8941             JAVA_ARCH=$my_java_arch
8942             ;;
8943         sparc64)
8944             my_java_arch=sparcv9
8945             ;;
8946         x86_64)
8947             my_java_arch=amd64
8948             ;;
8949         *)
8950             my_java_arch=$host_cpu
8951             ;;
8952         esac
8953         # This is where JDK9 puts the library
8954         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8955             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8956         else
8957             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8958         fi
8959         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8960     fi
8961     AC_MSG_RESULT([$JAWTLIB])
8963 AC_SUBST(JAWTLIB)
8965 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8966     case "$host_os" in
8968     cygwin*|wsl*)
8969         JAVAINC="-I$JAVA_HOME/include/win32"
8970         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8971         ;;
8973     darwin*)
8974         if test -d "$JAVA_HOME/include/darwin"; then
8975             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8976         else
8977             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8978         fi
8979         ;;
8981     dragonfly*)
8982         JAVAINC="-I$JAVA_HOME/include"
8983         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8984         ;;
8986     freebsd*)
8987         JAVAINC="-I$JAVA_HOME/include"
8988         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8989         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8990         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8991         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8992         ;;
8994     k*bsd*-gnu*)
8995         JAVAINC="-I$JAVA_HOME/include"
8996         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8997         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8998         ;;
9000     linux-gnu*)
9001         JAVAINC="-I$JAVA_HOME/include"
9002         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9003         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9004         ;;
9006     *netbsd*)
9007         JAVAINC="-I$JAVA_HOME/include"
9008         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9009         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9010        ;;
9012     openbsd*)
9013         JAVAINC="-I$JAVA_HOME/include"
9014         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9015         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9016         ;;
9018     solaris*)
9019         JAVAINC="-I$JAVA_HOME/include"
9020         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9021         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9022         ;;
9023     esac
9025 SOLARINC="$SOLARINC $JAVAINC"
9027 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9028     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9029     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9030     JDK_FOR_BUILD=$JDK
9031     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9034 AC_SUBST(JAVACFLAGS)
9035 AC_SUBST(JAVACOMPILER)
9036 AC_SUBST(JAVAINTERPRETER)
9037 AC_SUBST(JAVAIFLAGS)
9038 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9039 AC_SUBST(JAVA_HOME)
9040 AC_SUBST(JAVA_HOME_FOR_BUILD)
9041 AC_SUBST(JDK)
9042 AC_SUBST(JDK_FOR_BUILD)
9043 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9044 AC_SUBST(JAVA_SOURCE_VER)
9045 AC_SUBST(JAVA_TARGET_VER)
9048 dnl ===================================================================
9049 dnl Export file validation
9050 dnl ===================================================================
9051 AC_MSG_CHECKING([whether to enable export file validation])
9052 if test "$with_export_validation" != "no"; then
9053     if test -z "$ENABLE_JAVA"; then
9054         if test "$with_export_validation" = "yes"; then
9055             AC_MSG_ERROR([requested, but Java is disabled])
9056         else
9057             AC_MSG_RESULT([no, as Java is disabled])
9058         fi
9059     elif ! test -d "${SRC_ROOT}/schema"; then
9060         if test "$with_export_validation" = "yes"; then
9061             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9062         else
9063             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9064         fi
9065     else
9066         AC_MSG_RESULT([yes])
9067         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9069         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9070         if test -z "$ODFVALIDATOR"; then
9071             # remember to download the ODF toolkit with validator later
9072             AC_MSG_NOTICE([no odfvalidator found, will download it])
9073             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9074             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9076             # and fetch name of odfvalidator jar name from download.lst
9077             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9078             AC_SUBST(ODFVALIDATOR_JAR)
9080             if test -z "$ODFVALIDATOR_JAR"; then
9081                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9082             fi
9083         fi
9084         if test "$build_os" = "cygwin"; then
9085             # In case of Cygwin it will be executed from Windows,
9086             # so we need to run bash and absolute path to validator
9087             # so instead of "odfvalidator" it will be
9088             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9089             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9090         else
9091             ODFVALIDATOR="sh $ODFVALIDATOR"
9092         fi
9093         AC_SUBST(ODFVALIDATOR)
9096         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9097         if test -z "$OFFICEOTRON"; then
9098             # remember to download the officeotron with validator later
9099             AC_MSG_NOTICE([no officeotron found, will download it])
9100             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9101             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9103             # and fetch name of officeotron jar name from download.lst
9104             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9105             AC_SUBST(OFFICEOTRON_JAR)
9107             if test -z "$OFFICEOTRON_JAR"; then
9108                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9109             fi
9110         else
9111             # check version of existing officeotron
9112             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9113             if test 0"$OFFICEOTRON_VER" -lt 704; then
9114                 AC_MSG_ERROR([officeotron too old])
9115             fi
9116         fi
9117         if test "$build_os" = "cygwin"; then
9118             # In case of Cygwin it will be executed from Windows,
9119             # so we need to run bash and absolute path to validator
9120             # so instead of "odfvalidator" it will be
9121             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9122             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9123         else
9124             OFFICEOTRON="sh $OFFICEOTRON"
9125         fi
9126     fi
9127     AC_SUBST(OFFICEOTRON)
9128 else
9129     AC_MSG_RESULT([no])
9132 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9133 if test "$with_bffvalidator" != "no"; then
9134     AC_DEFINE(HAVE_BFFVALIDATOR)
9136     if test "$with_export_validation" = "no"; then
9137         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9138     fi
9140     if test "$with_bffvalidator" = "yes"; then
9141         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9142     else
9143         BFFVALIDATOR="$with_bffvalidator"
9144     fi
9146     if test "$build_os" = "cygwin"; then
9147         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9148             AC_MSG_RESULT($BFFVALIDATOR)
9149         else
9150             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9151         fi
9152     elif test -n "$BFFVALIDATOR"; then
9153         # We are not in Cygwin but need to run Windows binary with wine
9154         AC_PATH_PROGS(WINE, wine)
9156         # so swap in a shell wrapper that converts paths transparently
9157         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9158         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9159         AC_SUBST(BFFVALIDATOR_EXE)
9160         AC_MSG_RESULT($BFFVALIDATOR)
9161     else
9162         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9163     fi
9164     AC_SUBST(BFFVALIDATOR)
9165 else
9166     AC_MSG_RESULT([no])
9169 dnl ===================================================================
9170 dnl Check for epm (not needed for Windows)
9171 dnl ===================================================================
9172 AC_MSG_CHECKING([whether to enable EPM for packing])
9173 if test "$enable_epm" = "yes"; then
9174     AC_MSG_RESULT([yes])
9175     if test "$_os" != "WINNT"; then
9176         if test $_os = Darwin; then
9177             EPM=internal
9178         elif test -n "$with_epm"; then
9179             EPM=$with_epm
9180         else
9181             AC_PATH_PROG(EPM, epm, no)
9182         fi
9183         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9184             AC_MSG_NOTICE([EPM will be built.])
9185             BUILD_TYPE="$BUILD_TYPE EPM"
9186             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9187         else
9188             # Gentoo has some epm which is something different...
9189             AC_MSG_CHECKING([whether the found epm is the right epm])
9190             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9191                 AC_MSG_RESULT([yes])
9192             else
9193                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9194             fi
9195             AC_MSG_CHECKING([epm version])
9196             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9197             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9198                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9199                 AC_MSG_RESULT([OK, >= 3.7])
9200             else
9201                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9202                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9203             fi
9204         fi
9205     fi
9207     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9208         AC_MSG_CHECKING([for rpm])
9209         for a in "$RPM" rpmbuild rpm; do
9210             $a --usage >/dev/null 2> /dev/null
9211             if test $? -eq 0; then
9212                 RPM=$a
9213                 break
9214             else
9215                 $a --version >/dev/null 2> /dev/null
9216                 if test $? -eq 0; then
9217                     RPM=$a
9218                     break
9219                 fi
9220             fi
9221         done
9222         if test -z "$RPM"; then
9223             AC_MSG_ERROR([not found])
9224         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9225             RPM_PATH=`which $RPM`
9226             AC_MSG_RESULT([$RPM_PATH])
9227             SCPDEFS="$SCPDEFS -DWITH_RPM"
9228         else
9229             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9230         fi
9231     fi
9232     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9233         AC_PATH_PROG(DPKG, dpkg, no)
9234         if test "$DPKG" = "no"; then
9235             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9236         fi
9237     fi
9238     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9239        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9240         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9241             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9242                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9243                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9244                     AC_MSG_RESULT([yes])
9245                 else
9246                     AC_MSG_RESULT([no])
9247                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9248                         _pt="rpm"
9249                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9250                         add_warning "the rpms will need to be installed with --nodeps"
9251                     else
9252                         _pt="pkg"
9253                     fi
9254                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9255                     add_warning "the ${_pt}s will not be relocatable"
9256                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9257                                  relocation will work, you need to patch your epm with the
9258                                  patch in epm/epm-3.7.patch or build with
9259                                  --with-epm=internal which will build a suitable epm])
9260                 fi
9261             fi
9262         fi
9263     fi
9264     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9265         AC_PATH_PROG(PKGMK, pkgmk, no)
9266         if test "$PKGMK" = "no"; then
9267             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9268         fi
9269     fi
9270     AC_SUBST(RPM)
9271     AC_SUBST(DPKG)
9272     AC_SUBST(PKGMK)
9273 else
9274     for i in $PKGFORMAT; do
9275         case "$i" in
9276         bsd | deb | pkg | rpm | native | portable)
9277             AC_MSG_ERROR(
9278                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9279             ;;
9280         esac
9281     done
9282     AC_MSG_RESULT([no])
9283     EPM=NO
9285 AC_SUBST(EPM)
9287 ENABLE_LWP=
9288 if test "$enable_lotuswordpro" = "yes"; then
9289     ENABLE_LWP="TRUE"
9291 AC_SUBST(ENABLE_LWP)
9293 dnl ===================================================================
9294 dnl Check for building ODK
9295 dnl ===================================================================
9296 AC_MSG_CHECKING([whether to build the ODK])
9297 if test "$enable_odk" = yes; then
9298     if test "$DISABLE_DYNLOADING" = TRUE; then
9299         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9300     fi
9301     AC_MSG_RESULT([yes])
9302     BUILD_TYPE="$BUILD_TYPE ODK"
9303 else
9304     AC_MSG_RESULT([no])
9307 if test "$enable_odk" != yes; then
9308     unset DOXYGEN
9309 else
9310     if test "$with_doxygen" = no; then
9311         AC_MSG_CHECKING([for doxygen])
9312         unset DOXYGEN
9313         AC_MSG_RESULT([no])
9314     else
9315         if test "$with_doxygen" = yes; then
9316             AC_PATH_PROG([DOXYGEN], [doxygen])
9317             if test -z "$DOXYGEN"; then
9318                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9319             fi
9320             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9321                 if ! dot -V 2>/dev/null; then
9322                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9323                 fi
9324             fi
9325         else
9326             AC_MSG_CHECKING([for doxygen])
9327             DOXYGEN=$with_doxygen
9328             AC_MSG_RESULT([$DOXYGEN])
9329         fi
9330         if test -n "$DOXYGEN"; then
9331             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9332             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9333             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9334                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9335             fi
9336         fi
9337     fi
9339 AC_SUBST([DOXYGEN])
9341 dnl ==================================================================
9342 dnl libfuzzer
9343 dnl ==================================================================
9344 AC_MSG_CHECKING([whether to enable fuzzers])
9345 if test "$enable_fuzzers" != yes; then
9346     AC_MSG_RESULT([no])
9347 else
9348     if test -z $LIB_FUZZING_ENGINE; then
9349       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9350     fi
9351     AC_MSG_RESULT([yes])
9352     ENABLE_FUZZERS="TRUE"
9353     AC_DEFINE([ENABLE_FUZZERS],1)
9354     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9356 AC_SUBST(LIB_FUZZING_ENGINE)
9358 dnl ===================================================================
9359 dnl Check for system zlib
9360 dnl ===================================================================
9361 if test "$with_system_zlib" = "auto"; then
9362     case "$_os" in
9363     WINNT)
9364         with_system_zlib="$with_system_libs"
9365         ;;
9366     *)
9367         if test "$enable_fuzzers" != "yes"; then
9368             with_system_zlib=yes
9369         else
9370             with_system_zlib=no
9371         fi
9372         ;;
9373     esac
9376 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9377 dnl and has no pkg-config for it at least on some tinderboxes,
9378 dnl so leaving that out for now
9379 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9380 AC_MSG_CHECKING([which zlib to use])
9381 if test "$with_system_zlib" = "yes"; then
9382     AC_MSG_RESULT([external])
9383     SYSTEM_ZLIB=TRUE
9384     AC_CHECK_HEADER(zlib.h, [],
9385         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9386     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9387         [AC_MSG_ERROR(zlib not found or functional)], [])
9388 else
9389     AC_MSG_RESULT([internal])
9390     SYSTEM_ZLIB=
9391     BUILD_TYPE="$BUILD_TYPE ZLIB"
9392     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9393     if test "$COM" = "MSC"; then
9394         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9395     else
9396         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9397     fi
9399 AC_SUBST(ZLIB_CFLAGS)
9400 AC_SUBST(ZLIB_LIBS)
9401 AC_SUBST(SYSTEM_ZLIB)
9403 dnl ===================================================================
9404 dnl Check for system jpeg
9405 dnl ===================================================================
9406 AC_MSG_CHECKING([which libjpeg to use])
9407 if test "$with_system_jpeg" = "yes"; then
9408     AC_MSG_RESULT([external])
9409     SYSTEM_LIBJPEG=TRUE
9410     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9411         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9412     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9413         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9414 else
9415     SYSTEM_LIBJPEG=
9416     AC_MSG_RESULT([internal, libjpeg-turbo])
9417     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9419     case "$host_cpu" in
9420     x86_64 | amd64 | i*86 | x86 | ia32)
9421         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9422         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9423             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9424                 NASM="$LODE_HOME/opt/bin/nasm"
9425             elif test -x "/opt/lo/bin/nasm"; then
9426                 NASM="/opt/lo/bin/nasm"
9427             fi
9428         fi
9430         if test -n "$NASM"; then
9431             AC_MSG_CHECKING([for object file format of host system])
9432             case "$host_os" in
9433               cygwin* | mingw* | pw32* | wsl*)
9434                 case "$host_cpu" in
9435                   x86_64)
9436                     objfmt='Win64-COFF'
9437                     ;;
9438                   *)
9439                     objfmt='Win32-COFF'
9440                     ;;
9441                 esac
9442               ;;
9443               msdosdjgpp* | go32*)
9444                 objfmt='COFF'
9445               ;;
9446               os2-emx*) # not tested
9447                 objfmt='MSOMF' # obj
9448               ;;
9449               linux*coff* | linux*oldld*)
9450                 objfmt='COFF' # ???
9451               ;;
9452               linux*aout*)
9453                 objfmt='a.out'
9454               ;;
9455               linux*)
9456                 case "$host_cpu" in
9457                   x86_64)
9458                     objfmt='ELF64'
9459                     ;;
9460                   *)
9461                     objfmt='ELF'
9462                     ;;
9463                 esac
9464               ;;
9465               kfreebsd* | freebsd* | netbsd* | openbsd*)
9466                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9467                   objfmt='BSD-a.out'
9468                 else
9469                   case "$host_cpu" in
9470                     x86_64 | amd64)
9471                       objfmt='ELF64'
9472                       ;;
9473                     *)
9474                       objfmt='ELF'
9475                       ;;
9476                   esac
9477                 fi
9478               ;;
9479               solaris* | sunos* | sysv* | sco*)
9480                 case "$host_cpu" in
9481                   x86_64)
9482                     objfmt='ELF64'
9483                     ;;
9484                   *)
9485                     objfmt='ELF'
9486                     ;;
9487                 esac
9488               ;;
9489               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9490                 case "$host_cpu" in
9491                   x86_64)
9492                     objfmt='Mach-O64'
9493                     ;;
9494                   *)
9495                     objfmt='Mach-O'
9496                     ;;
9497                 esac
9498               ;;
9499               *)
9500                 objfmt='ELF ?'
9501               ;;
9502             esac
9504             AC_MSG_RESULT([$objfmt])
9505             if test "$objfmt" = 'ELF ?'; then
9506               objfmt='ELF'
9507               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9508             fi
9510             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9511             case "$objfmt" in
9512               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9513               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9514               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9515               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9516               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9517               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9518               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9519               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9520               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9521               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9522               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9523             esac
9524             AC_MSG_RESULT([$NAFLAGS])
9526             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9527             cat > conftest.asm << EOF
9528             [%line __oline__ "configure"
9529                     section .text
9530                     global  _main,main
9531             _main:
9532             main:   xor     eax,eax
9533                     ret
9534             ]
9536             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9537             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9538               AC_MSG_RESULT(yes)
9539             else
9540               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9541               cat conftest.asm >&AS_MESSAGE_LOG_FD
9542               rm -rf conftest*
9543               AC_MSG_RESULT(no)
9544               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9545               NASM=""
9546             fi
9548         fi
9550         if test -z "$NASM"; then
9551 cat << _EOS
9552 ****************************************************************************
9553 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9554 To get one please:
9556 _EOS
9557             if test "$build_os" = "cygwin"; then
9558 cat << _EOS
9559 install a pre-compiled binary for Win32
9561 mkdir -p /opt/lo/bin
9562 cd /opt/lo/bin
9563 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9564 chmod +x nasm
9566 or get and install one from https://www.nasm.us/
9568 Then re-run autogen.sh
9570 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9571 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9573 _EOS
9574             else
9575 cat << _EOS
9576 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9578 _EOS
9579             fi
9580             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9581             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9582         fi
9583       ;;
9584     esac
9587 AC_SUBST(NASM)
9588 AC_SUBST(NAFLAGS)
9589 AC_SUBST(LIBJPEG_CFLAGS)
9590 AC_SUBST(LIBJPEG_LIBS)
9591 AC_SUBST(SYSTEM_LIBJPEG)
9593 dnl ===================================================================
9594 dnl Check for system clucene
9595 dnl ===================================================================
9596 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9597 if test "$SYSTEM_CLUCENE" = TRUE; then
9598     AC_LANG_PUSH([C++])
9599     save_CXXFLAGS=$CXXFLAGS
9600     save_CPPFLAGS=$CPPFLAGS
9601     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9602     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9603     dnl https://sourceforge.net/p/clucene/bugs/200/
9604     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9605     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9606                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9607     CXXFLAGS=$save_CXXFLAGS
9608     CPPFLAGS=$save_CPPFLAGS
9609     AC_LANG_POP([C++])
9610     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9613 dnl ===================================================================
9614 dnl Check for system expat
9615 dnl ===================================================================
9616 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9618 dnl ===================================================================
9619 dnl Check for system xmlsec
9620 dnl ===================================================================
9621 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9623 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9624 if test "$enable_eot" = "yes"; then
9625     ENABLE_EOT="TRUE"
9626     AC_DEFINE([ENABLE_EOT])
9627     AC_MSG_RESULT([yes])
9629     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9630 else
9631     ENABLE_EOT=
9632     AC_MSG_RESULT([no])
9634 AC_SUBST([ENABLE_EOT])
9636 dnl ===================================================================
9637 dnl Check for DLP libs
9638 dnl ===================================================================
9639 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9640 AS_IF([test "$COM" = "MSC"],
9641       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9642       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9644 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9645 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9647 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9649 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9651 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9652 AS_IF([test "$COM" = "MSC"],
9653       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9654       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9656 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9657 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9659 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9661 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9662 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9664 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9666 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9668 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9670 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9671 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9673 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9674 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9676 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9678 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9679 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9681 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9683 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9685 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9687 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9689 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9690 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9692 dnl ===================================================================
9693 dnl Check for system lcms2
9694 dnl ===================================================================
9695 if test "$with_system_lcms2" != "yes"; then
9696     SYSTEM_LCMS2=
9698 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9699 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9700 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9701 if test "$GCC" = "yes"; then
9702     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9704 if test "$COM" = "MSC"; then # override the above
9705     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9708 dnl ===================================================================
9709 dnl Check for system cppunit
9710 dnl ===================================================================
9711 if test "$_os" != "Android" ; then
9712     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9715 dnl ===================================================================
9716 dnl Check whether freetype is available
9718 dnl FreeType has 3 different kinds of versions
9719 dnl * release, like 2.4.10
9720 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9721 dnl * soname
9722 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9724 dnl 9.9.3 is 2.2.0
9725 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9726 dnl ===================================================================
9727 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9728 if test "x$ac_config_site_64bit_host" = xYES; then
9729     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9730 else
9731     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9733 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9735 # ===================================================================
9736 # Check for system libxslt
9737 # to prevent incompatibilities between internal libxml2 and external libxslt,
9738 # or vice versa, use with_system_libxml here
9739 # ===================================================================
9740 if test "$with_system_libxml" = "auto"; then
9741     case "$_os" in
9742     WINNT|iOS|Android)
9743         with_system_libxml="$with_system_libs"
9744         ;;
9745     Emscripten)
9746         with_system_libxml=no
9747         ;;
9748     *)
9749         if test "$enable_fuzzers" != "yes"; then
9750             with_system_libxml=yes
9751         else
9752             with_system_libxml=no
9753         fi
9754         ;;
9755     esac
9758 AC_MSG_CHECKING([which libxslt to use])
9759 if test "$with_system_libxml" = "yes"; then
9760     AC_MSG_RESULT([external])
9761     SYSTEM_LIBXSLT=TRUE
9762     if test "$_os" = "Darwin"; then
9763         dnl make sure to use SDK path
9764         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9765         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9766         dnl omit -L/usr/lib
9767         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9768         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9769     else
9770         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9771         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9772         FilterLibs "${LIBXSLT_LIBS}"
9773         LIBXSLT_LIBS="${filteredlibs}"
9774         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9775         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9776         FilterLibs "${LIBEXSLT_LIBS}"
9777         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9778     fi
9780     dnl Check for xsltproc
9781     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9782     if test "$XSLTPROC" = "no"; then
9783         AC_MSG_ERROR([xsltproc is required])
9784     fi
9785 else
9786     AC_MSG_RESULT([internal])
9787     SYSTEM_LIBXSLT=
9788     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9790 AC_SUBST(SYSTEM_LIBXSLT)
9791 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9792     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9794 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9796 AC_SUBST(LIBEXSLT_CFLAGS)
9797 AC_SUBST(LIBEXSLT_LIBS)
9798 AC_SUBST(LIBXSLT_CFLAGS)
9799 AC_SUBST(LIBXSLT_LIBS)
9800 AC_SUBST(XSLTPROC)
9802 # ===================================================================
9803 # Check for system libxml
9804 # ===================================================================
9805 AC_MSG_CHECKING([which libxml to use])
9806 if test "$with_system_libxml" = "yes"; then
9807     AC_MSG_RESULT([external])
9808     SYSTEM_LIBXML=TRUE
9809     if test "$_os" = "Darwin"; then
9810         dnl make sure to use SDK path
9811         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9812         dnl omit -L/usr/lib
9813         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9814     elif test $_os = iOS; then
9815         dnl make sure to use SDK path
9816         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9817         LIBXML_CFLAGS="-I$usr/include/libxml2"
9818         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9819     else
9820         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9821         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9822         FilterLibs "${LIBXML_LIBS}"
9823         LIBXML_LIBS="${filteredlibs}"
9824     fi
9826     dnl Check for xmllint
9827     AC_PATH_PROG(XMLLINT, xmllint, no)
9828     if test "$XMLLINT" = "no"; then
9829         AC_MSG_ERROR([xmllint is required])
9830     fi
9831 else
9832     AC_MSG_RESULT([internal])
9833     SYSTEM_LIBXML=
9834     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9835     if test "$COM" = "MSC"; then
9836         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9837     fi
9838     if test "$COM" = "MSC"; then
9839         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9840     else
9841         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9842         if test "$DISABLE_DYNLOADING" = TRUE; then
9843             LIBXML_LIBS="$LIBXML_LIBS -lm"
9844         fi
9845     fi
9846     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9848 AC_SUBST(SYSTEM_LIBXML)
9849 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9850     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9852 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9853 AC_SUBST(LIBXML_CFLAGS)
9854 AC_SUBST(LIBXML_LIBS)
9855 AC_SUBST(XMLLINT)
9857 # =====================================================================
9858 # Checking for a Python interpreter with version >= 3.3.
9859 # Optionally user can pass an option to configure, i. e.
9860 # ./configure PYTHON=/usr/bin/python
9861 # =====================================================================
9862 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9863     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9864     # unless PYTHON is defined as above which allows 'system'
9865     enable_python=internal
9867 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9868     if test -n "$PYTHON"; then
9869         PYTHON_FOR_BUILD=$PYTHON
9870     else
9871         # This allows a lack of system python with no error, we use internal one in that case.
9872         AM_PATH_PYTHON([3.3],, [:])
9873         # Clean PYTHON_VERSION checked below if cross-compiling
9874         PYTHON_VERSION=""
9875         if test "$PYTHON" != ":"; then
9876             PYTHON_FOR_BUILD=$PYTHON
9877         fi
9878     fi
9881 # Checks for Python to use for Pyuno
9882 AC_MSG_CHECKING([which Python to use for Pyuno])
9883 case "$enable_python" in
9884 no|disable)
9885     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9886         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9887         # requirement from the choice whether to include Python stuff in the installer, but why
9888         # bother?
9889         AC_MSG_ERROR([Python is required at build time.])
9890     fi
9891     enable_python=no
9892     AC_MSG_RESULT([none])
9893     ;;
9894 ""|yes|auto)
9895     if test "$DISABLE_SCRIPTING" = TRUE; then
9896         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9897             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9898         fi
9899         AC_MSG_RESULT([none, overridden by --disable-scripting])
9900         enable_python=no
9901     elif test $build_os = cygwin -o $build_os = wsl; then
9902         dnl When building on Windows we don't attempt to use any installed
9903         dnl "system"  Python.
9904         AC_MSG_RESULT([fully internal])
9905         enable_python=internal
9906     elif test "$cross_compiling" = yes; then
9907         AC_MSG_RESULT([system])
9908         enable_python=system
9909     else
9910         # Unset variables set by the above AM_PATH_PYTHON so that
9911         # we actually do check anew.
9912         AC_MSG_RESULT([])
9913         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
9914         AM_PATH_PYTHON([3.3],, [:])
9915         AC_MSG_CHECKING([which Python to use for Pyuno])
9916         if test "$PYTHON" = ":"; then
9917             if test -z "$PYTHON_FOR_BUILD"; then
9918                 AC_MSG_RESULT([fully internal])
9919             else
9920                 AC_MSG_RESULT([internal])
9921             fi
9922             enable_python=internal
9923         else
9924             AC_MSG_RESULT([system])
9925             enable_python=system
9926         fi
9927     fi
9928     ;;
9929 internal)
9930     AC_MSG_RESULT([internal])
9931     ;;
9932 fully-internal)
9933     AC_MSG_RESULT([fully internal])
9934     enable_python=internal
9935     ;;
9936 system)
9937     AC_MSG_RESULT([system])
9938     if test "$_os" = Darwin -a -z "$PYTHON"; then
9939         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9940     fi
9941     ;;
9943     AC_MSG_ERROR([Incorrect --enable-python option])
9944     ;;
9945 esac
9947 if test $enable_python != no; then
9948     BUILD_TYPE="$BUILD_TYPE PYUNO"
9951 if test $enable_python = system; then
9952     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9953         # Fallback: Accept these in the environment, or as set above
9954         # for MacOSX.
9955         :
9956     elif test "$cross_compiling" != yes; then
9957         # Unset variables set by the above AM_PATH_PYTHON so that
9958         # we actually do check anew.
9959         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
9960         # This causes an error if no python command is found
9961         AM_PATH_PYTHON([3.3])
9962         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9963         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9964         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9965         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9966         if test -z "$PKG_CONFIG"; then
9967             PYTHON_CFLAGS="-I$python_include"
9968             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9969         elif $PKG_CONFIG --exists python-$python_version-embed; then
9970             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9971             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9972         elif $PKG_CONFIG --exists python-$python_version; then
9973             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9974             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9975         else
9976             PYTHON_CFLAGS="-I$python_include"
9977             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9978         fi
9979         FilterLibs "${PYTHON_LIBS}"
9980         PYTHON_LIBS="${filteredlibs}"
9981     else
9982         dnl How to find out the cross-compilation Python installation path?
9983         AC_MSG_CHECKING([for python version])
9984         AS_IF([test -n "$PYTHON_VERSION"],
9985               [AC_MSG_RESULT([$PYTHON_VERSION])],
9986               [AC_MSG_RESULT([not found])
9987                AC_MSG_ERROR([no usable python found])])
9988         test -n "$PYTHON_CFLAGS" && break
9989     fi
9991     dnl Check if the headers really work
9992     save_CPPFLAGS="$CPPFLAGS"
9993     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9994     AC_CHECK_HEADER(Python.h)
9995     CPPFLAGS="$save_CPPFLAGS"
9997     # let the PYTHON_FOR_BUILD match the same python installation that
9998     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9999     # better for PythonTests.
10000     PYTHON_FOR_BUILD=$PYTHON
10003 if test "$with_lxml" != no; then
10004     if test -z "$PYTHON_FOR_BUILD"; then
10005         case $build_os in
10006             cygwin)
10007                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10008                 ;;
10009             *)
10010                 if test "$cross_compiling" != yes ; then
10011                     BUILD_TYPE="$BUILD_TYPE LXML"
10012                 fi
10013                 ;;
10014         esac
10015     else
10016         AC_MSG_CHECKING([for python lxml])
10017         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10018             AC_MSG_RESULT([yes])
10019         else
10020             case $build_os in
10021                 cygwin)
10022                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10023                     ;;
10024                 *)
10025                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10026                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10027                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10028                         else
10029                             BUILD_TYPE="$BUILD_TYPE LXML"
10030                             AC_MSG_RESULT([no, using internal lxml])
10031                         fi
10032                     else
10033                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10034                     fi
10035                     ;;
10036             esac
10037         fi
10038     fi
10041 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10042     SYSTEM_PYTHON=
10043     PYTHON_VERSION_MAJOR=3
10044     PYTHON_VERSION_MINOR=8
10045     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10046     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10047         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10048     fi
10049     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10051     # Embedded Python dies without Home set
10052     if test "$HOME" = ""; then
10053         export HOME=""
10054     fi
10057 dnl By now enable_python should be "system", "internal" or "no"
10058 case $enable_python in
10059 system)
10060     SYSTEM_PYTHON=TRUE
10062     if test "x$ac_cv_header_Python_h" != "xyes"; then
10063        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10064     fi
10066     AC_LANG_PUSH(C)
10067     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10068     AC_MSG_CHECKING([for correct python library version])
10069        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10070 #include <Python.h>
10072 int main(int argc, char **argv) {
10073    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10074    else return 1;
10076        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10077     AC_LANG_POP(C)
10079     dnl FIXME Check if the Python library can be linked with, too?
10080     ;;
10082 internal)
10083     BUILD_TYPE="$BUILD_TYPE PYTHON"
10084     if test "$OS" = LINUX -o "$OS" = WNT ; then
10085         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10086     fi
10087     ;;
10089     DISABLE_PYTHON=TRUE
10090     SYSTEM_PYTHON=
10091     ;;
10093     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10094     ;;
10095 esac
10097 AC_SUBST(DISABLE_PYTHON)
10098 AC_SUBST(SYSTEM_PYTHON)
10099 AC_SUBST(PYTHON_CFLAGS)
10100 AC_SUBST(PYTHON_FOR_BUILD)
10101 AC_SUBST(PYTHON_LIBS)
10102 AC_SUBST(PYTHON_VERSION)
10103 AC_SUBST(PYTHON_VERSION_MAJOR)
10104 AC_SUBST(PYTHON_VERSION_MINOR)
10106 AC_MSG_CHECKING([whether to build LibreLogo])
10107 case "$enable_python" in
10108 no|disable)
10109     AC_MSG_RESULT([no; Python disabled])
10110     ;;
10112     if test "${enable_librelogo}" = "no"; then
10113         AC_MSG_RESULT([no])
10114     else
10115         AC_MSG_RESULT([yes])
10116         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10117         AC_DEFINE([ENABLE_LIBRELOGO],1)
10118     fi
10119     ;;
10120 esac
10121 AC_SUBST(ENABLE_LIBRELOGO)
10123 ENABLE_MARIADBC=
10124 MARIADBC_MAJOR=1
10125 MARIADBC_MINOR=0
10126 MARIADBC_MICRO=2
10127 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10128 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10129     ENABLE_MARIADBC=TRUE
10130     AC_MSG_RESULT([yes])
10131     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10132 else
10133     AC_MSG_RESULT([no])
10135 AC_SUBST(ENABLE_MARIADBC)
10136 AC_SUBST(MARIADBC_MAJOR)
10137 AC_SUBST(MARIADBC_MINOR)
10138 AC_SUBST(MARIADBC_MICRO)
10140 if test "$ENABLE_MARIADBC" = "TRUE"; then
10141     dnl ===================================================================
10142     dnl Check for system MariaDB
10143     dnl ===================================================================
10144     AC_MSG_CHECKING([which MariaDB to use])
10145     if test "$with_system_mariadb" = "yes"; then
10146         AC_MSG_RESULT([external])
10147         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10148         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10149         if test -z "$MARIADBCONFIG"; then
10150             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10151             if test -z "$MARIADBCONFIG"; then
10152                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10153                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10154             fi
10155         fi
10156         AC_MSG_CHECKING([MariaDB version])
10157         MARIADB_VERSION=`$MARIADBCONFIG --version`
10158         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10159         if test "$MARIADB_MAJOR" -ge "5"; then
10160             AC_MSG_RESULT([OK])
10161         else
10162             AC_MSG_ERROR([too old, use 5.0.x or later])
10163         fi
10164         AC_MSG_CHECKING([for MariaDB Client library])
10165         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10166         if test "$COM_IS_CLANG" = TRUE; then
10167             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10168         fi
10169         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10170         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10171         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10172         dnl linux32:
10173         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10174             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10175             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10176                 | sed -e 's|/lib64/|/lib/|')
10177         fi
10178         FilterLibs "${MARIADB_LIBS}"
10179         MARIADB_LIBS="${filteredlibs}"
10180         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10181         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10182         if test "$enable_bundle_mariadb" = "yes"; then
10183             AC_MSG_RESULT([yes])
10184             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10185             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10187 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10189 /g' | grep -E '(mysqlclient|mariadb)')
10190             if test "$_os" = "Darwin"; then
10191                 LIBMARIADB=${LIBMARIADB}.dylib
10192             elif test "$_os" = "WINNT"; then
10193                 LIBMARIADB=${LIBMARIADB}.dll
10194             else
10195                 LIBMARIADB=${LIBMARIADB}.so
10196             fi
10197             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10198             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10199             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10200                 AC_MSG_RESULT([found.])
10201                 PathFormat "$LIBMARIADB_PATH"
10202                 LIBMARIADB_PATH="$formatted_path"
10203             else
10204                 AC_MSG_ERROR([not found.])
10205             fi
10206         else
10207             AC_MSG_RESULT([no])
10208             BUNDLE_MARIADB_CONNECTOR_C=
10209         fi
10210     else
10211         AC_MSG_RESULT([internal])
10212         SYSTEM_MARIADB_CONNECTOR_C=
10213         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10214         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10215         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10216     fi
10218     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10219     AC_SUBST(MARIADB_CFLAGS)
10220     AC_SUBST(MARIADB_LIBS)
10221     AC_SUBST(LIBMARIADB)
10222     AC_SUBST(LIBMARIADB_PATH)
10223     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10226 dnl ===================================================================
10227 dnl Check for system hsqldb
10228 dnl ===================================================================
10229 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10230     AC_MSG_CHECKING([which hsqldb to use])
10231     if test "$with_system_hsqldb" = "yes"; then
10232         AC_MSG_RESULT([external])
10233         SYSTEM_HSQLDB=TRUE
10234         if test -z $HSQLDB_JAR; then
10235             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10236         fi
10237         if ! test -f $HSQLDB_JAR; then
10238                AC_MSG_ERROR(hsqldb.jar not found.)
10239         fi
10240         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10241         export HSQLDB_JAR
10242         if $PERL -e \
10243            'use Archive::Zip;
10244             my $file = "$ENV{'HSQLDB_JAR'}";
10245             my $zip = Archive::Zip->new( $file );
10246             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10247             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10248             {
10249                 push @l, split(/\n/, $mf);
10250                 foreach my $line (@l)
10251                 {
10252                     if ($line =~ m/Specification-Version:/)
10253                     {
10254                         ($t, $version) = split (/:/,$line);
10255                         $version =~ s/^\s//;
10256                         ($a, $b, $c, $d) = split (/\./,$version);
10257                         if ($c == "0" && $d > "8")
10258                         {
10259                             exit 0;
10260                         }
10261                         else
10262                         {
10263                             exit 1;
10264                         }
10265                     }
10266                 }
10267             }
10268             else
10269             {
10270                 exit 1;
10271             }'; then
10272             AC_MSG_RESULT([yes])
10273         else
10274             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10275         fi
10276     else
10277         AC_MSG_RESULT([internal])
10278         SYSTEM_HSQLDB=
10279         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10280         NEED_ANT=TRUE
10281     fi
10282 else
10283     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10284         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10285     fi
10287 AC_SUBST(SYSTEM_HSQLDB)
10288 AC_SUBST(HSQLDB_JAR)
10290 dnl ===================================================================
10291 dnl Check for PostgreSQL stuff
10292 dnl ===================================================================
10293 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10294 if test "x$enable_postgresql_sdbc" != "xno"; then
10295     AC_MSG_RESULT([yes])
10296     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10298     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10299         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10300     fi
10301     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10302         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10303     fi
10305     postgres_interface=""
10306     if test "$with_system_postgresql" = "yes"; then
10307         postgres_interface="external PostgreSQL"
10308         SYSTEM_POSTGRESQL=TRUE
10309         if test "$_os" = Darwin; then
10310             supp_path=''
10311             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10312                 pg_supp_path="$P_SEP$d$pg_supp_path"
10313             done
10314         fi
10315         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10316         if test -n "$PGCONFIG"; then
10317             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10318             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10319         else
10320             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10321               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10322               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10323             ],[
10324               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10325             ])
10326         fi
10327         FilterLibs "${POSTGRESQL_LIB}"
10328         POSTGRESQL_LIB="${filteredlibs}"
10329     else
10330         # if/when anything else than PostgreSQL uses Kerberos,
10331         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10332         WITH_KRB5=
10333         WITH_GSSAPI=
10334         case "$_os" in
10335         Darwin)
10336             # macOS has system MIT Kerberos 5 since 10.4
10337             if test "$with_krb5" != "no"; then
10338                 WITH_KRB5=TRUE
10339                 save_LIBS=$LIBS
10340                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10341                 # that the libraries where these functions are located on macOS will change, is it?
10342                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10343                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10344                 KRB5_LIBS=$LIBS
10345                 LIBS=$save_LIBS
10346                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10347                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10348                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10349                 LIBS=$save_LIBS
10350             fi
10351             if test "$with_gssapi" != "no"; then
10352                 WITH_GSSAPI=TRUE
10353                 save_LIBS=$LIBS
10354                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10355                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10356                 GSSAPI_LIBS=$LIBS
10357                 LIBS=$save_LIBS
10358             fi
10359             ;;
10360         WINNT)
10361             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10362                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10363             fi
10364             ;;
10365         Linux|GNU|*BSD|DragonFly)
10366             if test "$with_krb5" != "no"; then
10367                 WITH_KRB5=TRUE
10368                 save_LIBS=$LIBS
10369                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10370                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10371                 KRB5_LIBS=$LIBS
10372                 LIBS=$save_LIBS
10373                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10374                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10375                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10376                 LIBS=$save_LIBS
10377             fi
10378             if test "$with_gssapi" != "no"; then
10379                 WITH_GSSAPI=TRUE
10380                 save_LIBS=$LIBS
10381                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10382                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10383                 GSSAPI_LIBS=$LIBS
10384                 LIBS=$save_LIBS
10385             fi
10386             ;;
10387         *)
10388             if test "$with_krb5" = "yes"; then
10389                 WITH_KRB5=TRUE
10390                 save_LIBS=$LIBS
10391                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10392                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10393                 KRB5_LIBS=$LIBS
10394                 LIBS=$save_LIBS
10395                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10396                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10397                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10398                 LIBS=$save_LIBS
10399             fi
10400             if test "$with_gssapi" = "yes"; then
10401                 WITH_GSSAPI=TRUE
10402                 save_LIBS=$LIBS
10403                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10404                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10405                 LIBS=$save_LIBS
10406                 GSSAPI_LIBS=$LIBS
10407             fi
10408         esac
10410         if test -n "$with_libpq_path"; then
10411             SYSTEM_POSTGRESQL=TRUE
10412             postgres_interface="external libpq"
10413             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10414             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10415         else
10416             SYSTEM_POSTGRESQL=
10417             postgres_interface="internal"
10418             POSTGRESQL_LIB=""
10419             POSTGRESQL_INC="%OVERRIDE_ME%"
10420             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10421         fi
10422     fi
10424     AC_MSG_CHECKING([PostgreSQL C interface])
10425     AC_MSG_RESULT([$postgres_interface])
10427     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10428         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10429         save_CFLAGS=$CFLAGS
10430         save_CPPFLAGS=$CPPFLAGS
10431         save_LIBS=$LIBS
10432         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10433         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10434         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10435         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10436             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10437         CFLAGS=$save_CFLAGS
10438         CPPFLAGS=$save_CPPFLAGS
10439         LIBS=$save_LIBS
10440     fi
10441     BUILD_POSTGRESQL_SDBC=TRUE
10442 else
10443     AC_MSG_RESULT([no])
10445 AC_SUBST(WITH_KRB5)
10446 AC_SUBST(WITH_GSSAPI)
10447 AC_SUBST(GSSAPI_LIBS)
10448 AC_SUBST(KRB5_LIBS)
10449 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10450 AC_SUBST(SYSTEM_POSTGRESQL)
10451 AC_SUBST(POSTGRESQL_INC)
10452 AC_SUBST(POSTGRESQL_LIB)
10454 dnl ===================================================================
10455 dnl Check for Firebird stuff
10456 dnl ===================================================================
10457 ENABLE_FIREBIRD_SDBC=
10458 if test "$enable_firebird_sdbc" = "yes" ; then
10459     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10461     dnl ===================================================================
10462     dnl Check for system Firebird
10463     dnl ===================================================================
10464     AC_MSG_CHECKING([which Firebird to use])
10465     if test "$with_system_firebird" = "yes"; then
10466         AC_MSG_RESULT([external])
10467         SYSTEM_FIREBIRD=TRUE
10468         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10469         if test -z "$FIREBIRDCONFIG"; then
10470             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10471             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10472                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10473             ])
10474             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10475         else
10476             AC_MSG_NOTICE([fb_config found])
10477             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10478             AC_MSG_CHECKING([for Firebird Client library])
10479             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10480             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10481             FilterLibs "${FIREBIRD_LIBS}"
10482             FIREBIRD_LIBS="${filteredlibs}"
10483         fi
10484         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10485         AC_MSG_CHECKING([Firebird version])
10486         if test -n "${FIREBIRD_VERSION}"; then
10487             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10488             if test "$FIREBIRD_MAJOR" -ge "3"; then
10489                 AC_MSG_RESULT([OK])
10490             else
10491                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10492             fi
10493         else
10494             save_CFLAGS="${CFLAGS}"
10495             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10496             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10497 #if defined(FB_API_VER) && FB_API_VER == 30
10498 int fb_api_is_30(void) { return 0; }
10499 #else
10500 #error "Wrong Firebird API version"
10501 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10502             CFLAGS="$save_CFLAGS"
10503         fi
10504         ENABLE_FIREBIRD_SDBC=TRUE
10505         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10506     elif test "$enable_database_connectivity" = no; then
10507         AC_MSG_RESULT([none])
10508     elif test "$cross_compiling" = "yes"; then
10509         AC_MSG_RESULT([none])
10510     else
10511         dnl Embedded Firebird has version 3.0
10512         dnl We need libatomic_ops for any non X86/X64 system
10513         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10514             dnl ===================================================================
10515             dnl Check for system libatomic_ops
10516             dnl ===================================================================
10517             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10518             if test "$with_system_libatomic_ops" = "yes"; then
10519                 SYSTEM_LIBATOMIC_OPS=TRUE
10520                 AC_CHECK_HEADERS(atomic_ops.h, [],
10521                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10522             else
10523                 SYSTEM_LIBATOMIC_OPS=
10524                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10525                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10526                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10527             fi
10528         fi
10530         AC_MSG_RESULT([internal])
10531         SYSTEM_FIREBIRD=
10532         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10533         FIREBIRD_LIBS="-lfbclient"
10535         if test "$with_system_libtommath" = "yes"; then
10536             SYSTEM_LIBTOMMATH=TRUE
10537             dnl check for tommath presence
10538             save_LIBS=$LIBS
10539             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10540             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10541             LIBS=$save_LIBS
10542         else
10543             SYSTEM_LIBTOMMATH=
10544             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10545             LIBTOMMATH_LIBS="-ltommath"
10546             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10547         fi
10549         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10550         ENABLE_FIREBIRD_SDBC=TRUE
10551         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10552     fi
10554 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10555 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10556 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10557 AC_SUBST(LIBATOMIC_OPS_LIBS)
10558 AC_SUBST(SYSTEM_FIREBIRD)
10559 AC_SUBST(FIREBIRD_CFLAGS)
10560 AC_SUBST(FIREBIRD_LIBS)
10561 AC_SUBST(SYSTEM_LIBTOMMATH)
10562 AC_SUBST(LIBTOMMATH_CFLAGS)
10563 AC_SUBST(LIBTOMMATH_LIBS)
10565 dnl ===================================================================
10566 dnl Check for system curl
10567 dnl ===================================================================
10568 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10570 dnl ===================================================================
10571 dnl Check for system boost
10572 dnl ===================================================================
10573 AC_MSG_CHECKING([which boost to use])
10574 if test "$with_system_boost" = "yes"; then
10575     AC_MSG_RESULT([external])
10576     SYSTEM_BOOST=TRUE
10577     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10578     AX_BOOST_DATE_TIME
10579     AX_BOOST_FILESYSTEM
10580     AX_BOOST_IOSTREAMS
10581     AX_BOOST_LOCALE
10582     AC_LANG_PUSH([C++])
10583     save_CXXFLAGS=$CXXFLAGS
10584     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10585     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10586        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10587     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10588        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10589     CXXFLAGS=$save_CXXFLAGS
10590     AC_LANG_POP([C++])
10591     # this is in m4/ax_boost_base.m4
10592     FilterLibs "${BOOST_LDFLAGS}"
10593     BOOST_LDFLAGS="${filteredlibs}"
10594 else
10595     AC_MSG_RESULT([internal])
10596     BUILD_TYPE="$BUILD_TYPE BOOST"
10597     SYSTEM_BOOST=
10598     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10599         # use warning-suppressing wrapper headers
10600         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10601     else
10602         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10603     fi
10605 AC_SUBST(SYSTEM_BOOST)
10607 dnl ===================================================================
10608 dnl Check for system mdds
10609 dnl ===================================================================
10610 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10611 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10613 dnl ===================================================================
10614 dnl Check for system dragonbox
10615 dnl ===================================================================
10616 AC_MSG_CHECKING([which dragonbox to use])
10617 if test "$with_system_dragonbox" = "yes"; then
10618     AC_MSG_RESULT([external])
10619     SYSTEM_DRAGONBOX=TRUE
10620     AC_LANG_PUSH([C++])
10621     save_CPPFLAGS=$CPPFLAGS
10622     # This is where upstream installs to, unfortunately no .pc or so...
10623     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10624     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10625     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10626        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10627     AC_LANG_POP([C++])
10628     CPPFLAGS=$save_CPPFLAGS
10629 else
10630     AC_MSG_RESULT([internal])
10631     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10632     SYSTEM_DRAGONBOX=
10634 AC_SUBST([SYSTEM_DRAGONBOX])
10635 AC_SUBST([DRAGONBOX_CFLAGS])
10637 dnl ===================================================================
10638 dnl Check for system frozen
10639 dnl ===================================================================
10640 AC_MSG_CHECKING([which frozen to use])
10641 if test "$with_system_frozen" = "yes"; then
10642     AC_MSG_RESULT([external])
10643     SYSTEM_FROZEN=TRUE
10644     AC_LANG_PUSH([C++])
10645     save_CPPFLAGS=$CPPFLAGS
10646     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10647        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10648     AC_LANG_POP([C++])
10649     CPPFLAGS=$save_CPPFLAGS
10650 else
10651     AC_MSG_RESULT([internal])
10652     BUILD_TYPE="$BUILD_TYPE FROZEN"
10653     SYSTEM_FROZEN=
10655 AC_SUBST([SYSTEM_FROZEN])
10656 AC_SUBST([FROZEN_CFLAGS])
10658 dnl ===================================================================
10659 dnl Check for system libfixmath
10660 dnl ===================================================================
10661 AC_MSG_CHECKING([which libfixmath to use])
10662 if test "$with_system_libfixmath" = "yes"; then
10663     AC_MSG_RESULT([external])
10664     SYSTEM_LIBFIXMATH=TRUE
10665     AC_LANG_PUSH([C++])
10666     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10667        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10668     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10669     AC_LANG_POP([C++])
10670 else
10671     AC_MSG_RESULT([internal])
10672     SYSTEM_LIBFIXMATH=
10674 AC_SUBST([SYSTEM_LIBFIXMATH])
10676 dnl ===================================================================
10677 dnl Check for system glm
10678 dnl ===================================================================
10679 AC_MSG_CHECKING([which glm to use])
10680 if test "$with_system_glm" = "yes"; then
10681     AC_MSG_RESULT([external])
10682     SYSTEM_GLM=TRUE
10683     AC_LANG_PUSH([C++])
10684     AC_CHECK_HEADER([glm/glm.hpp], [],
10685        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10686     AC_LANG_POP([C++])
10687 else
10688     AC_MSG_RESULT([internal])
10689     BUILD_TYPE="$BUILD_TYPE GLM"
10690     SYSTEM_GLM=
10691     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10693 AC_SUBST([GLM_CFLAGS])
10694 AC_SUBST([SYSTEM_GLM])
10696 dnl ===================================================================
10697 dnl Check for system odbc
10698 dnl ===================================================================
10699 AC_MSG_CHECKING([which odbc headers to use])
10700 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
10701     AC_MSG_RESULT([external])
10702     SYSTEM_ODBC_HEADERS=TRUE
10704     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10705         save_CPPFLAGS=$CPPFLAGS
10706         find_winsdk
10707         PathFormat "$winsdktest"
10708         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"
10709         AC_CHECK_HEADER(sqlext.h, [],
10710             [AC_MSG_ERROR(odbc not found. install odbc)],
10711             [#include <windows.h>])
10712         CPPFLAGS=$save_CPPFLAGS
10713     else
10714         AC_CHECK_HEADER(sqlext.h, [],
10715             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10716     fi
10717 elif test "$enable_database_connectivity" = no; then
10718     AC_MSG_RESULT([none])
10719 else
10720     AC_MSG_RESULT([internal])
10721     SYSTEM_ODBC_HEADERS=
10723 AC_SUBST(SYSTEM_ODBC_HEADERS)
10725 dnl ===================================================================
10726 dnl Check for system NSS
10727 dnl ===================================================================
10728 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10729     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10730     AC_DEFINE(HAVE_FEATURE_NSS)
10731     ENABLE_NSS=TRUE
10732 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10733     with_tls=openssl
10735 AC_SUBST(ENABLE_NSS)
10737 dnl ===================================================================
10738 dnl Enable LDAP support
10739 dnl ===================================================================
10741 if test "$test_openldap" = yes; then
10742     AC_MSG_CHECKING([whether to enable LDAP support])
10743     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10744         AC_MSG_RESULT([yes])
10745         ENABLE_LDAP=TRUE
10746     else
10747         if test "$enable_ldap" != "yes"; then
10748             AC_MSG_RESULT([no])
10749         else
10750             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10751         fi
10752     fi
10754 dnl ===================================================================
10755 dnl Check for system openldap
10756 dnl ===================================================================
10758     if test "$ENABLE_LDAP" = TRUE; then
10759         AC_MSG_CHECKING([which openldap library to use])
10760         if test "$with_system_openldap" = yes; then
10761             AC_MSG_RESULT([external])
10762             SYSTEM_OPENLDAP=TRUE
10763             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10764             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10765             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10766         else
10767             AC_MSG_RESULT([internal])
10768             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10769         fi
10770     fi
10773 AC_SUBST(ENABLE_LDAP)
10774 AC_SUBST(SYSTEM_OPENLDAP)
10776 dnl ===================================================================
10777 dnl Check for TLS/SSL and cryptographic implementation to use
10778 dnl ===================================================================
10779 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10780 if test -n "$with_tls"; then
10781     case $with_tls in
10782     openssl)
10783         AC_DEFINE(USE_TLS_OPENSSL)
10784         TLS=OPENSSL
10785         AC_MSG_RESULT([$TLS])
10787         if test "$enable_openssl" != "yes"; then
10788             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10789         fi
10791         # warn that OpenSSL has been selected but not all TLS code has this option
10792         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10793         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10794         ;;
10795     nss)
10796         AC_DEFINE(USE_TLS_NSS)
10797         TLS=NSS
10798         AC_MSG_RESULT([$TLS])
10799         ;;
10800     no)
10801         AC_MSG_RESULT([none])
10802         AC_MSG_WARN([Skipping TLS/SSL])
10803         ;;
10804     *)
10805         AC_MSG_RESULT([])
10806         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10807 openssl - OpenSSL
10808 nss - Mozilla's Network Security Services (NSS)
10809     ])
10810         ;;
10811     esac
10812 else
10813     # default to using NSS, it results in smaller oox lib
10814     AC_DEFINE(USE_TLS_NSS)
10815     TLS=NSS
10816     AC_MSG_RESULT([$TLS])
10818 AC_SUBST(TLS)
10820 dnl ===================================================================
10821 dnl Check for system sane
10822 dnl ===================================================================
10823 AC_MSG_CHECKING([which sane header to use])
10824 if test "$with_system_sane" = "yes"; then
10825     AC_MSG_RESULT([external])
10826     AC_CHECK_HEADER(sane/sane.h, [],
10827       [AC_MSG_ERROR(sane not found. install sane)], [])
10828 else
10829     AC_MSG_RESULT([internal])
10830     BUILD_TYPE="$BUILD_TYPE SANE"
10833 dnl ===================================================================
10834 dnl Check for system icu
10835 dnl ===================================================================
10836 ICU_MAJOR=73
10837 ICU_MINOR=2
10838 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10839 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10840 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10841 if test "$SYSTEM_ICU" = TRUE; then
10842     AC_LANG_PUSH([C++])
10843     AC_MSG_CHECKING([for unicode/rbbi.h])
10844     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10845     AC_LANG_POP([C++])
10847     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10848     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10849     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10851     if test "$CROSS_COMPILING" != TRUE; then
10852         # using the system icu tools can lead to version confusion, use the
10853         # ones from the build environment when cross-compiling
10854         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10855         if test -z "$SYSTEM_GENBRK"; then
10856             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10857         fi
10858         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10859         if test -z "$SYSTEM_GENCCODE"; then
10860             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10861         fi
10862         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10863         if test -z "$SYSTEM_GENCMN"; then
10864             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10865         fi
10866     fi
10869 AC_SUBST(SYSTEM_GENBRK)
10870 AC_SUBST(SYSTEM_GENCCODE)
10871 AC_SUBST(SYSTEM_GENCMN)
10872 AC_SUBST(ICU_MAJOR)
10873 AC_SUBST(ICU_MINOR)
10875 dnl ==================================================================
10876 dnl CURL
10877 dnl ==================================================================
10878 if test "$enable_curl" == "yes"; then
10879     AC_DEFINE([HAVE_FEATURE_CURL])
10882 dnl ==================================================================
10883 dnl Breakpad
10884 dnl ==================================================================
10885 DEFAULT_CRASHDUMP_VALUE="true"
10886 AC_MSG_CHECKING([whether to enable breakpad])
10887 if test "$enable_breakpad" != yes; then
10888     AC_MSG_RESULT([no])
10889 else
10890     if test "$enable_curl" != "yes"; then
10891         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10892     fi
10893     AC_MSG_RESULT([yes])
10894     ENABLE_BREAKPAD="TRUE"
10895     AC_DEFINE(ENABLE_BREAKPAD)
10896     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10897     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10899     AC_MSG_CHECKING([for disable crash dump])
10900     if test "$enable_crashdump" = no; then
10901         DEFAULT_CRASHDUMP_VALUE="false"
10902         AC_MSG_RESULT([yes])
10903     else
10904        AC_MSG_RESULT([no])
10905     fi
10907     AC_MSG_CHECKING([for crashreport config])
10908     if test "$with_symbol_config" = "no"; then
10909         BREAKPAD_SYMBOL_CONFIG="invalid"
10910         AC_MSG_RESULT([no])
10911     else
10912         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10913         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10914         AC_MSG_RESULT([yes])
10915     fi
10916     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10918 AC_SUBST(ENABLE_BREAKPAD)
10919 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10921 dnl ==================================================================
10922 dnl libcmis
10923 dnl ==================================================================
10924 if test "$enable_libcmis" == "yes"; then
10925     if test "$enable_curl" != "yes"; then
10926         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10927     fi
10930 dnl ===================================================================
10931 dnl Orcus
10932 dnl ===================================================================
10933 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10934 if test "$with_system_orcus" != "yes"; then
10935     if test "$SYSTEM_BOOST" = "TRUE"; then
10936         dnl Link with Boost.System
10937         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10938         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10939         dnl in documentation has no effect.
10940         AX_BOOST_SYSTEM
10941     fi
10943 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10944 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10945 AC_SUBST([BOOST_SYSTEM_LIB])
10946 AC_SUBST(SYSTEM_LIBORCUS)
10948 dnl ===================================================================
10949 dnl HarfBuzz
10950 dnl ===================================================================
10951 harfbuzz_required_version=5.1.0
10953 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10954 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10955 case "$_os" in
10956     Linux)
10957         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10958         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10959         ;;
10960     *)
10961         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10962         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10963         ;;
10964 esac
10965 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10966 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10968 if test "$COM" = "MSC"; then # override the above
10969     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10970     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10973 if test "$with_system_harfbuzz" = "yes"; then
10974     if test "$with_system_graphite" = "no"; then
10975         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10976     fi
10977     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10978     save_LIBS="$LIBS"
10979     save_CFLAGS="$CFLAGS"
10980     LIBS="$LIBS $HARFBUZZ_LIBS"
10981     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10982     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10983     LIBS="$save_LIBS"
10984     CFLAGS="$save_CFLAGS"
10985 else
10986     if test "$with_system_graphite" = "yes"; then
10987         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10988     fi
10991 if test "$USING_X11" = TRUE; then
10992     AC_PATH_X
10993     AC_PATH_XTRA
10994     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10996     if test -z "$x_includes"; then
10997         x_includes="default_x_includes"
10998     fi
10999     if test -z "$x_libraries"; then
11000         x_libraries="default_x_libraries"
11001     fi
11002     CFLAGS="$CFLAGS $X_CFLAGS"
11003     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11004     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11005 else
11006     x_includes="no_x_includes"
11007     x_libraries="no_x_libraries"
11010 if test "$USING_X11" = TRUE; then
11011     dnl ===================================================================
11012     dnl Check for extension headers
11013     dnl ===================================================================
11014     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11015      [#include <X11/extensions/shape.h>])
11017     # vcl needs ICE and SM
11018     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11019     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11020         [AC_MSG_ERROR(ICE library not found)])
11021     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11022     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11023         [AC_MSG_ERROR(SM library not found)])
11026 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11027     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11028     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11031 dnl ===================================================================
11032 dnl Check for system Xrender
11033 dnl ===================================================================
11034 AC_MSG_CHECKING([whether to use Xrender])
11035 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11036     AC_MSG_RESULT([yes])
11037     PKG_CHECK_MODULES(XRENDER, xrender)
11038     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11039     FilterLibs "${XRENDER_LIBS}"
11040     XRENDER_LIBS="${filteredlibs}"
11041     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11042       [AC_MSG_ERROR(libXrender not found or functional)], [])
11043     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11044       [AC_MSG_ERROR(Xrender not found. install X)], [])
11045 else
11046     AC_MSG_RESULT([no])
11048 AC_SUBST(XRENDER_CFLAGS)
11049 AC_SUBST(XRENDER_LIBS)
11051 dnl ===================================================================
11052 dnl Check for XRandr
11053 dnl ===================================================================
11054 AC_MSG_CHECKING([whether to enable RandR support])
11055 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11056     AC_MSG_RESULT([yes])
11057     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11058     if test "$ENABLE_RANDR" != "TRUE"; then
11059         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11060                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11061         XRANDR_CFLAGS=" "
11062         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11063           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11064         XRANDR_LIBS="-lXrandr "
11065         ENABLE_RANDR="TRUE"
11066     fi
11067     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11068     FilterLibs "${XRANDR_LIBS}"
11069     XRANDR_LIBS="${filteredlibs}"
11070 else
11071     ENABLE_RANDR=""
11072     AC_MSG_RESULT([no])
11074 AC_SUBST(XRANDR_CFLAGS)
11075 AC_SUBST(XRANDR_LIBS)
11076 AC_SUBST(ENABLE_RANDR)
11078 if test -z "$with_webdav"; then
11079     with_webdav=$test_webdav
11082 AC_MSG_CHECKING([for WebDAV support])
11083 case "$with_webdav" in
11085     AC_MSG_RESULT([no])
11086     WITH_WEBDAV=""
11087     ;;
11089     AC_MSG_RESULT([yes])
11090     # curl is already mandatory (almost) and checked elsewhere
11091     if test "$enable_curl" = "no"; then
11092         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11093     fi
11094     WITH_WEBDAV=TRUE
11095     ;;
11096 esac
11097 AC_SUBST(WITH_WEBDAV)
11099 dnl ===================================================================
11100 dnl Check for disabling cve_tests
11101 dnl ===================================================================
11102 AC_MSG_CHECKING([whether to execute CVE tests])
11103 # If not explicitly enabled or disabled, default
11104 if test -z "$enable_cve_tests"; then
11105     case "$OS" in
11106     WNT)
11107         # Default cves off for Windows with its wild and wonderful
11108         # variety of AV software kicking in and panicking
11109         enable_cve_tests=no
11110         ;;
11111     *)
11112         # otherwise yes
11113         enable_cve_tests=yes
11114         ;;
11115     esac
11117 if test "$enable_cve_tests" = "no"; then
11118     AC_MSG_RESULT([no])
11119     DISABLE_CVE_TESTS=TRUE
11120     AC_SUBST(DISABLE_CVE_TESTS)
11121 else
11122     AC_MSG_RESULT([yes])
11125 dnl ===================================================================
11126 dnl Check for system openssl
11127 dnl ===================================================================
11128 ENABLE_OPENSSL=
11129 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11130 if test "$enable_openssl" = "yes"; then
11131     AC_MSG_RESULT([no])
11132     ENABLE_OPENSSL=TRUE
11133     if test "$_os" = Darwin ; then
11134         # OpenSSL is deprecated when building for 10.7 or later.
11135         #
11136         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11137         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11139         with_system_openssl=no
11140         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11141     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11142             && test "$with_system_openssl" != "no"; then
11143         with_system_openssl=yes
11144         SYSTEM_OPENSSL=TRUE
11145         OPENSSL_CFLAGS=
11146         OPENSSL_LIBS="-lssl -lcrypto"
11147     else
11148         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11149         if test -n "${SYSTEM_OPENSSL}"; then
11150             AC_DEFINE([SYSTEM_OPENSSL])
11151         fi
11152     fi
11153     if test "$with_system_openssl" = "yes"; then
11154         AC_MSG_CHECKING([whether openssl supports SHA512])
11155         AC_LANG_PUSH([C])
11156         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11157             SHA512_CTX context;
11158 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11159         AC_LANG_POP(C)
11160     fi
11161 else
11162     AC_MSG_RESULT([yes])
11164     # warn that although OpenSSL is disabled, system libraries may depend on it
11165     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11166     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11169 AC_SUBST([ENABLE_OPENSSL])
11171 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11172     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11173         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11174         enable_cipher_openssl_backend=no
11175     else
11176         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11177     fi
11179 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11180 ENABLE_CIPHER_OPENSSL_BACKEND=
11181 if test "$enable_cipher_openssl_backend" = yes; then
11182     AC_MSG_RESULT([yes])
11183     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11184 else
11185     AC_MSG_RESULT([no])
11187 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11189 dnl ===================================================================
11190 dnl Select the crypto backends used by LO
11191 dnl ===================================================================
11193 if test "$build_crypto" = yes; then
11194     if test "$OS" = WNT; then
11195         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11196         AC_DEFINE([USE_CRYPTO_MSCAPI])
11197     elif test "$ENABLE_NSS" = TRUE; then
11198         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11199         AC_DEFINE([USE_CRYPTO_NSS])
11200     fi
11203 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11204 if test "$COM" = "MSC"; then
11205     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11206 else
11207     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11209 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11211 dnl ===================================================================
11212 dnl Check for system redland
11213 dnl ===================================================================
11214 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11215 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11216 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11217 if test "$with_system_redland" = "yes"; then
11218     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11219             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11220 else
11221     RAPTOR_MAJOR="0"
11222     RASQAL_MAJOR="3"
11223     REDLAND_MAJOR="0"
11225 AC_SUBST(RAPTOR_MAJOR)
11226 AC_SUBST(RASQAL_MAJOR)
11227 AC_SUBST(REDLAND_MAJOR)
11229 dnl ===================================================================
11230 dnl Check for system hunspell
11231 dnl ===================================================================
11232 AC_MSG_CHECKING([which libhunspell to use])
11233 if test "$with_system_hunspell" = "yes"; then
11234     AC_MSG_RESULT([external])
11235     SYSTEM_HUNSPELL=TRUE
11236     AC_LANG_PUSH([C++])
11237     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11238     if test "$HUNSPELL_PC" != "TRUE"; then
11239         AC_CHECK_HEADER(hunspell.hxx, [],
11240             [
11241             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11242             [AC_MSG_ERROR(hunspell headers not found.)], [])
11243             ], [])
11244         AC_CHECK_LIB([hunspell], [main], [:],
11245            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11246         HUNSPELL_LIBS=-lhunspell
11247     fi
11248     AC_LANG_POP([C++])
11249     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11250     FilterLibs "${HUNSPELL_LIBS}"
11251     HUNSPELL_LIBS="${filteredlibs}"
11252 else
11253     AC_MSG_RESULT([internal])
11254     SYSTEM_HUNSPELL=
11255     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11256     if test "$COM" = "MSC"; then
11257         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11258     else
11259         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11260     fi
11261     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11263 AC_SUBST(SYSTEM_HUNSPELL)
11264 AC_SUBST(HUNSPELL_CFLAGS)
11265 AC_SUBST(HUNSPELL_LIBS)
11267 dnl ===================================================================
11268 dnl Check for system zxcvbn
11269 dnl ===================================================================
11270 AC_MSG_CHECKING([which zxcvbn to use])
11271 if test "$with_system_zxcvbn" = "yes"; then
11272     AC_MSG_RESULT([external])
11273     SYSTEM_ZXCVBN=TRUE
11274     AC_CHECK_HEADER(zxcvbn.h, [],
11275        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11276     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11277         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11278 else
11279    AC_MSG_RESULT([internal])
11280    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11281    SYSTEM_ZXCVBN=
11283 AC_SUBST(SYSTEM_ZXCVBN)
11285 dnl ===================================================================
11286 dnl Check for system zxing
11287 dnl ===================================================================
11288 AC_MSG_CHECKING([whether to use zxing])
11289 if test "$enable_zxing" = "no"; then
11290     AC_MSG_RESULT([no])
11291     ENABLE_ZXING=
11292     SYSTEM_ZXING=
11293 else
11294     AC_MSG_RESULT([yes])
11295     ENABLE_ZXING=TRUE
11296     AC_MSG_CHECKING([which libzxing to use])
11297     if test "$with_system_zxing" = "yes"; then
11298         AC_MSG_RESULT([external])
11299         SYSTEM_ZXING=TRUE
11300         ZXING_CFLAGS=
11301         AC_LANG_PUSH([C++])
11302         save_CXXFLAGS=$CXXFLAGS
11303         save_IFS=$IFS
11304         IFS=$P_SEP
11305         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11306             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11307             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11308             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11309             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11310             dnl unsetting IFS."):
11311             IFS=$save_IFS
11312             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11313             dnl ignore them here:
11314             if test -z "$i"; then
11315                 continue
11316             fi
11317             dnl TODO: White space in $i would cause problems:
11318             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11319             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11320                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11321         done
11322         CXXFLAGS=$save_CXXFLAGS
11323         if test -z "$ZXING_CFLAGS"; then
11324             AC_MSG_ERROR(zxing headers not found.)
11325         fi
11326         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11327             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11328             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11329         AC_LANG_POP([C++])
11330         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11331         FilterLibs "${ZXING_LIBS}"
11332         ZXING_LIBS="${filteredlibs}"
11333     else
11334         AC_MSG_RESULT([internal])
11335         SYSTEM_ZXING=
11336         BUILD_TYPE="$BUILD_TYPE ZXING"
11337         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11338     fi
11339     if test "$ENABLE_ZXING" = TRUE; then
11340         AC_DEFINE(ENABLE_ZXING)
11341     fi
11342     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11343     AC_LANG_PUSH([C++])
11344     save_CXXFLAGS=$CXXFLAGS
11345     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11346     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11347             #include <BitMatrix.h>
11348             #include <BitMatrixIO.h>
11349             int main(){
11350                 ZXing::BitMatrix matrix(1, 1);
11351                 matrix.set(0, 0, true);
11352                 ZXing::ToSVG(matrix);
11353                 return 0;
11354             }
11355         ])], [
11356             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11357             AC_MSG_RESULT([yes])
11358         ], [AC_MSG_RESULT([no])])
11359     CXXFLAGS=$save_CXXFLAGS
11360     AC_LANG_POP([C++])
11361     AC_SUBST(HAVE_ZXING_TOSVG)
11363 AC_SUBST(SYSTEM_ZXING)
11364 AC_SUBST(ENABLE_ZXING)
11365 AC_SUBST(ZXING_CFLAGS)
11366 AC_SUBST(ZXING_LIBS)
11368 dnl ===================================================================
11369 dnl Check for system box2d
11370 dnl ===================================================================
11371 AC_MSG_CHECKING([which box2d to use])
11372 if test "$with_system_box2d" = "yes"; then
11373     AC_MSG_RESULT([external])
11374     SYSTEM_BOX2D=TRUE
11375     AC_LANG_PUSH([C++])
11376     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11377         [BOX2D_H_FOUND='FALSE'])
11378     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11379         _BOX2D_LIB=box2d
11380         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11381     else
11382         # fail this. there's no other alternative to check when we are here.
11383         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11384             [AC_MSG_ERROR(box2d headers not found.)])
11385         _BOX2D_LIB=Box2D
11386         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11387     fi
11388     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11389         [ AC_MSG_ERROR(box2d library not found.) ], [])
11390     BOX2D_LIBS=-l$_BOX2D_LIB
11391     AC_LANG_POP([C++])
11392     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11393     FilterLibs "${BOX2D_LIBS}"
11394     BOX2D_LIBS="${filteredlibs}"
11395 else
11396     AC_MSG_RESULT([internal])
11397     SYSTEM_BOX2D=
11398     BUILD_TYPE="$BUILD_TYPE BOX2D"
11400 AC_SUBST(SYSTEM_BOX2D)
11401 AC_SUBST(BOX2D_CFLAGS)
11402 AC_SUBST(BOX2D_LIBS)
11404 dnl ===================================================================
11405 dnl Checking for altlinuxhyph
11406 dnl ===================================================================
11407 AC_MSG_CHECKING([which altlinuxhyph to use])
11408 if test "$with_system_altlinuxhyph" = "yes"; then
11409     AC_MSG_RESULT([external])
11410     SYSTEM_HYPH=TRUE
11411     AC_CHECK_HEADER(hyphen.h, [],
11412        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11413     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11414        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11415        [#include <hyphen.h>])
11416     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11417         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11418     if test -z "$HYPHEN_LIB"; then
11419         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11420            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11421     fi
11422     if test -z "$HYPHEN_LIB"; then
11423         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11424            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11425     fi
11426 else
11427     AC_MSG_RESULT([internal])
11428     SYSTEM_HYPH=
11429     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11430     if test "$COM" = "MSC"; then
11431         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11432     else
11433         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11434     fi
11436 AC_SUBST(SYSTEM_HYPH)
11437 AC_SUBST(HYPHEN_LIB)
11439 dnl ===================================================================
11440 dnl Checking for mythes
11441 dnl ===================================================================
11442 AC_MSG_CHECKING([which mythes to use])
11443 if test "$with_system_mythes" = "yes"; then
11444     AC_MSG_RESULT([external])
11445     SYSTEM_MYTHES=TRUE
11446     AC_LANG_PUSH([C++])
11447     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11448     if test "$MYTHES_PKGCONFIG" = "no"; then
11449         AC_CHECK_HEADER(mythes.hxx, [],
11450             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11451         AC_CHECK_LIB([mythes-1.2], [main], [:],
11452             [ MYTHES_FOUND=no], [])
11453     if test "$MYTHES_FOUND" = "no"; then
11454         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11455                 [ MYTHES_FOUND=no], [])
11456     fi
11457     if test "$MYTHES_FOUND" = "no"; then
11458         AC_MSG_ERROR([mythes library not found!.])
11459     fi
11460     fi
11461     AC_LANG_POP([C++])
11462     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11463     FilterLibs "${MYTHES_LIBS}"
11464     MYTHES_LIBS="${filteredlibs}"
11465 else
11466     AC_MSG_RESULT([internal])
11467     SYSTEM_MYTHES=
11468     BUILD_TYPE="$BUILD_TYPE MYTHES"
11469     if test "$COM" = "MSC"; then
11470         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11471     else
11472         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11473     fi
11475 AC_SUBST(SYSTEM_MYTHES)
11476 AC_SUBST(MYTHES_CFLAGS)
11477 AC_SUBST(MYTHES_LIBS)
11479 dnl ===================================================================
11480 dnl How should we build the linear programming solver ?
11481 dnl ===================================================================
11483 ENABLE_COINMP=
11484 AC_MSG_CHECKING([whether to build with CoinMP])
11485 if test "$enable_coinmp" != "no"; then
11486     ENABLE_COINMP=TRUE
11487     AC_MSG_RESULT([yes])
11488     if test "$with_system_coinmp" = "yes"; then
11489         SYSTEM_COINMP=TRUE
11490         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11491         FilterLibs "${COINMP_LIBS}"
11492         COINMP_LIBS="${filteredlibs}"
11493     else
11494         BUILD_TYPE="$BUILD_TYPE COINMP"
11495     fi
11496 else
11497     AC_MSG_RESULT([no])
11499 AC_SUBST(ENABLE_COINMP)
11500 AC_SUBST(SYSTEM_COINMP)
11501 AC_SUBST(COINMP_CFLAGS)
11502 AC_SUBST(COINMP_LIBS)
11504 ENABLE_LPSOLVE=
11505 AC_MSG_CHECKING([whether to build with lpsolve])
11506 if test "$enable_lpsolve" != "no"; then
11507     ENABLE_LPSOLVE=TRUE
11508     AC_MSG_RESULT([yes])
11509 else
11510     AC_MSG_RESULT([no])
11512 AC_SUBST(ENABLE_LPSOLVE)
11514 if test "$ENABLE_LPSOLVE" = TRUE; then
11515     AC_MSG_CHECKING([which lpsolve to use])
11516     if test "$with_system_lpsolve" = "yes"; then
11517         AC_MSG_RESULT([external])
11518         SYSTEM_LPSOLVE=TRUE
11519         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11520            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11521         save_LIBS=$LIBS
11522         # some systems need this. Like Ubuntu...
11523         AC_CHECK_LIB(m, floor)
11524         AC_CHECK_LIB(dl, dlopen)
11525         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11526             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11527         LIBS=$save_LIBS
11528     else
11529         AC_MSG_RESULT([internal])
11530         SYSTEM_LPSOLVE=
11531         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11532     fi
11534 AC_SUBST(SYSTEM_LPSOLVE)
11536 dnl ===================================================================
11537 dnl Checking for libexttextcat
11538 dnl ===================================================================
11539 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11540 if test "$with_system_libexttextcat" = "yes"; then
11541     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11543 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11545 dnl ===================================================================
11546 dnl Checking for libnumbertext
11547 dnl ===================================================================
11548 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11549 if test "$with_system_libnumbertext" = "yes"; then
11550     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11551     SYSTEM_LIBNUMBERTEXT=YES
11552 else
11553     SYSTEM_LIBNUMBERTEXT=
11555 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11556 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11558 dnl ***************************************
11559 dnl testing libc version for Linux...
11560 dnl ***************************************
11561 if test "$_os" = "Linux"; then
11562     AC_MSG_CHECKING([whether the libc is recent enough])
11563     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11564     #include <features.h>
11565     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11566     #error glibc >= 2.1 is required
11567     #endif
11568     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11571 dnl =========================================
11572 dnl Check for uuidgen
11573 dnl =========================================
11574 if test "$_os" = "WINNT"; then
11575     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11576     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11577     UUIDGEN=uuidgen.exe
11578     AC_SUBST(UUIDGEN)
11579 else
11580     AC_PATH_PROG([UUIDGEN], [uuidgen])
11581     if test -z "$UUIDGEN"; then
11582         AC_MSG_WARN([uuid is needed for building installation sets])
11583     fi
11586 dnl ***************************************
11587 dnl Checking for bison and flex
11588 dnl ***************************************
11589 AC_PATH_PROG(BISON, bison)
11590 if test -z "$BISON"; then
11591     AC_MSG_ERROR([no bison found in \$PATH, install it])
11592 else
11593     AC_MSG_CHECKING([the bison version])
11594     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11595     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11596     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11597     dnl cause
11598     dnl
11599     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]
11600     dnl   typedef union YYSTYPE
11601     dnl           ~~~~~~^~~~~~~
11602     dnl
11603     dnl while at least 3.4.1 is know to be good:
11604     if test "$COMPILER_PLUGINS" = TRUE; then
11605         if test "$_bison_longver" -lt 2004; then
11606             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11607         fi
11608     else
11609         if test "$_bison_longver" -lt 2000; then
11610             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11611         fi
11612     fi
11614 AC_SUBST([BISON])
11616 AC_PATH_PROG(FLEX, flex)
11617 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11618     FLEX=`cygpath -m $FLEX`
11620 if test -z "$FLEX"; then
11621     AC_MSG_ERROR([no flex found in \$PATH, install it])
11622 else
11623     AC_MSG_CHECKING([the flex version])
11624     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11625     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11626         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11627     fi
11629 AC_SUBST([FLEX])
11631 AC_PATH_PROG(DIFF, diff)
11632 if test -z "$DIFF"; then
11633     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11635 AC_SUBST([DIFF])
11637 AC_PATH_PROG(UNIQ, uniq)
11638 if test -z "$UNIQ"; then
11639     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11641 AC_SUBST([UNIQ])
11643 dnl ***************************************
11644 dnl Checking for patch
11645 dnl ***************************************
11646 AC_PATH_PROG(PATCH, patch)
11647 if test -z "$PATCH"; then
11648     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11651 dnl On Solaris or macOS, check if --with-gnu-patch was used
11652 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11653     if test -z "$with_gnu_patch"; then
11654         GNUPATCH=$PATCH
11655     else
11656         if test -x "$with_gnu_patch"; then
11657             GNUPATCH=$with_gnu_patch
11658         else
11659             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11660         fi
11661     fi
11663     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11664     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11665         AC_MSG_RESULT([yes])
11666     else
11667         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11668             AC_MSG_RESULT([no, but accepted (Apple patch)])
11669             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11670         else
11671             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11672         fi
11673     fi
11674 else
11675     GNUPATCH=$PATCH
11678 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11679     GNUPATCH=`cygpath -m $GNUPATCH`
11682 dnl We also need to check for --with-gnu-cp
11684 if test -z "$with_gnu_cp"; then
11685     # check the place where the good stuff is hidden on Solaris...
11686     if test -x /usr/gnu/bin/cp; then
11687         GNUCP=/usr/gnu/bin/cp
11688     else
11689         AC_PATH_PROGS(GNUCP, gnucp cp)
11690     fi
11691     if test -z $GNUCP; then
11692         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11693     fi
11694 else
11695     if test -x "$with_gnu_cp"; then
11696         GNUCP=$with_gnu_cp
11697     else
11698         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11699     fi
11702 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11703     GNUCP=`cygpath -m $GNUCP`
11706 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11707 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11708     AC_MSG_RESULT([yes])
11709 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11710     AC_MSG_RESULT([yes])
11711 else
11712     case "$build_os" in
11713     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11714         x_GNUCP=[\#]
11715         GNUCP=''
11716         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11717         ;;
11718     *)
11719         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11720         ;;
11721     esac
11724 AC_SUBST(GNUPATCH)
11725 AC_SUBST(GNUCP)
11726 AC_SUBST(x_GNUCP)
11728 dnl ***************************************
11729 dnl testing assembler path
11730 dnl ***************************************
11731 ML_EXE=""
11732 if test "$_os" = "WINNT"; then
11733     case "$WIN_HOST_ARCH" in
11734     x86) assembler=ml.exe ;;
11735     x64) assembler=ml64.exe ;;
11736     arm64) assembler=armasm64.exe ;;
11737     esac
11739     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11740     if test -f "$MSVC_HOST_PATH/$assembler"; then
11741         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11742         AC_MSG_RESULT([$ML_EXE])
11743     else
11744         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11745     fi
11748 AC_SUBST(ML_EXE)
11750 dnl ===================================================================
11751 dnl We need zip and unzip
11752 dnl ===================================================================
11753 AC_PATH_PROG(ZIP, zip)
11754 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11755 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11756     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],,)
11759 AC_PATH_PROG(UNZIP, unzip)
11760 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11762 dnl ===================================================================
11763 dnl Zip must be a specific type for different build types.
11764 dnl ===================================================================
11765 if test $build_os = cygwin; then
11766     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11767         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11768     fi
11771 dnl ===================================================================
11772 dnl We need touch with -h option support.
11773 dnl ===================================================================
11774 AC_PATH_PROG(TOUCH, touch)
11775 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11776 touch "$WARNINGS_FILE"
11777 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11778     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],,)
11781 dnl ===================================================================
11782 dnl Check for system epoxy
11783 dnl ===================================================================
11784 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11785 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11787 dnl ===================================================================
11788 dnl Show which vclplugs will be built.
11789 dnl ===================================================================
11790 R=""
11792 libo_ENABLE_VCLPLUG([gen])
11793 libo_ENABLE_VCLPLUG([gtk3])
11794 libo_ENABLE_VCLPLUG([gtk3_kde5])
11795 libo_ENABLE_VCLPLUG([gtk4])
11796 libo_ENABLE_VCLPLUG([kf5])
11797 libo_ENABLE_VCLPLUG([kf6])
11798 libo_ENABLE_VCLPLUG([qt5])
11799 libo_ENABLE_VCLPLUG([qt6])
11801 if test "$_os" = "WINNT"; then
11802     R="$R win"
11803 elif test "$_os" = "Darwin"; then
11804     R="$R osx"
11805 elif test "$_os" = "iOS"; then
11806     R="ios"
11807 elif test "$_os" = Android; then
11808     R="android"
11811 build_vcl_plugins="$R"
11812 if test -z "$build_vcl_plugins"; then
11813     build_vcl_plugins=" none"
11815 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11816 VCL_PLUGIN_INFO=$R
11817 AC_SUBST([VCL_PLUGIN_INFO])
11819 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11820     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11823 dnl ===================================================================
11824 dnl Check for GTK libraries
11825 dnl ===================================================================
11827 GTK3_CFLAGS=""
11828 GTK3_LIBS=""
11829 ENABLE_GTKTILEDVIEWER=""
11830 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11831     if test "$with_system_cairo" = no; then
11832         add_warning 'Non-system cairo combined with gtk3 is known to cause trouble (eg. broken image in the splashscreen). Use --with-system-cairo unless you know what you are doing.'
11833     fi
11834     : ${with_system_cairo:=yes}
11835     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)
11836     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11837     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11838     FilterLibs "${GTK3_LIBS}"
11839     GTK3_LIBS="${filteredlibs}"
11841     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11842     if test "$with_system_epoxy" != "yes"; then
11843         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11844         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11845                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11846     fi
11847 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11848     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11849     if test "$build_os" = "cygwin"; then
11850         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11851         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11852     fi
11854     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11855     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11856     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11857     FilterLibs "${GTK3_LIBS}"
11858     GTK3_LIBS="${filteredlibs}"
11859     ENABLE_GTKTILEDVIEWER="yes"
11861 AC_SUBST(GTK3_LIBS)
11862 AC_SUBST(GTK3_CFLAGS)
11863 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11865 GTK4_CFLAGS=""
11866 GTK4_LIBS=""
11867 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11868     if test "$with_system_cairo" = no; then
11869         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11870     fi
11871     : ${with_system_cairo:=yes}
11872     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11873     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11874     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11875     FilterLibs "${GTK4_LIBS}"
11876     GTK4_LIBS="${filteredlibs}"
11878     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11879     if test "$with_system_epoxy" != "yes"; then
11880         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11881         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11882                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11883     fi
11885 AC_SUBST(GTK4_LIBS)
11886 AC_SUBST(GTK4_CFLAGS)
11888 if test "$enable_introspection" = yes; then
11889     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11890         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11891     else
11892         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11893     fi
11896 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11897 if ! test "$ENABLE_GTK3" = TRUE; then
11898     if test "$enable_atspi_tests" = yes; then
11899         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11900     fi
11901     enable_atspi_tests=no
11903 if ! test "$enable_atspi_tests" = no; then
11904     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11905     if ! test "$XVFB_RUN" = no; then
11906         dnl make sure the found xvfb-run actually works
11907         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11908         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11909             AC_MSG_RESULT([yes])
11910         else
11911             AC_MSG_RESULT([no])
11912             XVFB_RUN=no
11913         fi
11914     fi
11915     if test "$XVFB_RUN" = no; then
11916         if test "$enable_atspi_tests" = yes; then
11917             AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11918         fi
11919         enable_atspi_tests=no
11920     fi
11922 if ! test "$enable_atspi_tests" = no; then
11923     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11924     if test "$DBUS_LAUNCH" = no; then
11925         if test "$enable_atspi_tests" = yes; then
11926             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11927         fi
11928         enable_atspi_tests=no
11929     fi
11931 if ! test "$enable_atspi_tests" = no; then
11932     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11933                       [if test "$enable_atspi_tests" = yes; then
11934                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11935                        else
11936                            enable_atspi_tests=no
11937                        fi])
11939 if ! test "x$enable_atspi_tests" = xno; then
11940     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11941                       [have_atspi_scroll_to=1],
11942                       [have_atspi_scroll_to=0])
11943     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11944                        [Whether AT-SPI2 has the scrollTo API])
11946 ENABLE_ATSPI_TESTS=
11947 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11948 AC_SUBST([ENABLE_ATSPI_TESTS])
11950 dnl ===================================================================
11951 dnl check for dbus support
11952 dnl ===================================================================
11953 ENABLE_DBUS=""
11954 DBUS_CFLAGS=""
11955 DBUS_LIBS=""
11956 DBUS_GLIB_CFLAGS=""
11957 DBUS_GLIB_LIBS=""
11958 DBUS_HAVE_GLIB=""
11960 if test "$enable_dbus" = "no"; then
11961     test_dbus=no
11964 AC_MSG_CHECKING([whether to enable DBUS support])
11965 if test "$test_dbus" = "yes"; then
11966     ENABLE_DBUS="TRUE"
11967     AC_MSG_RESULT([yes])
11968     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11969     AC_DEFINE(ENABLE_DBUS)
11970     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11971     FilterLibs "${DBUS_LIBS}"
11972     DBUS_LIBS="${filteredlibs}"
11974     # Glib is needed for BluetoothServer
11975     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11976     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11977         [
11978             DBUS_HAVE_GLIB="TRUE"
11979             AC_DEFINE(DBUS_HAVE_GLIB,1)
11980         ],
11981         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11982     )
11983 else
11984     AC_MSG_RESULT([no])
11987 AC_SUBST(ENABLE_DBUS)
11988 AC_SUBST(DBUS_CFLAGS)
11989 AC_SUBST(DBUS_LIBS)
11990 AC_SUBST(DBUS_GLIB_CFLAGS)
11991 AC_SUBST(DBUS_GLIB_LIBS)
11992 AC_SUBST(DBUS_HAVE_GLIB)
11994 AC_MSG_CHECKING([whether to enable Impress remote control])
11995 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11996     AC_MSG_RESULT([yes])
11997     ENABLE_SDREMOTE=TRUE
11998     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11999         <true/>"
12000     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12002     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12003         # The Bluetooth code doesn't compile with macOS SDK 10.15
12004         if test "$enable_sdremote_bluetooth" = yes; then
12005             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12006         fi
12007         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12008         enable_sdremote_bluetooth=no
12009     fi
12010     # If not explicitly enabled or disabled, default
12011     if test -z "$enable_sdremote_bluetooth"; then
12012         case "$OS" in
12013         LINUX|MACOSX|WNT)
12014             # Default to yes for these
12015             enable_sdremote_bluetooth=yes
12016             ;;
12017         *)
12018             # otherwise no
12019             enable_sdremote_bluetooth=no
12020             ;;
12021         esac
12022     fi
12023     # $enable_sdremote_bluetooth is guaranteed non-empty now
12025     if test "$enable_sdremote_bluetooth" != "no"; then
12026         if test "$OS" = "LINUX"; then
12027             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12028                 AC_MSG_RESULT([yes])
12029                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12030                 dnl ===================================================================
12031                 dnl Check for system bluez
12032                 dnl ===================================================================
12033                 AC_MSG_CHECKING([which Bluetooth header to use])
12034                 if test "$with_system_bluez" = "yes"; then
12035                     AC_MSG_RESULT([external])
12036                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12037                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12038                     SYSTEM_BLUEZ=TRUE
12039                 else
12040                     AC_MSG_RESULT([internal])
12041                     SYSTEM_BLUEZ=
12042                 fi
12043             else
12044                 AC_MSG_RESULT([no, dbus disabled])
12045                 ENABLE_SDREMOTE_BLUETOOTH=
12046                 SYSTEM_BLUEZ=
12047             fi
12048         else
12049             AC_MSG_RESULT([yes])
12050             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12051             SYSTEM_BLUEZ=
12052             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12053         <key>com.apple.security.device.bluetooth</key>
12054         <true/>"
12055         fi
12056     else
12057         AC_MSG_RESULT([no])
12058         ENABLE_SDREMOTE_BLUETOOTH=
12059         SYSTEM_BLUEZ=
12060     fi
12061 else
12062     ENABLE_SDREMOTE=
12063     SYSTEM_BLUEZ=
12064     AC_MSG_RESULT([no])
12066 AC_SUBST(ENABLE_SDREMOTE)
12067 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12068 AC_SUBST(SDREMOTE_ENTITLEMENT)
12069 AC_SUBST(SYSTEM_BLUEZ)
12071 dnl ===================================================================
12072 dnl Check whether to enable GIO support
12073 dnl ===================================================================
12074 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12075     AC_MSG_CHECKING([whether to enable GIO support])
12076     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12077         dnl Need at least 2.26 for the dbus support.
12078         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12079                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12080         if test "$ENABLE_GIO" = "TRUE"; then
12081             AC_DEFINE(ENABLE_GIO)
12082             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12083             FilterLibs "${GIO_LIBS}"
12084             GIO_LIBS="${filteredlibs}"
12085         fi
12086     else
12087         AC_MSG_RESULT([no])
12088     fi
12090 AC_SUBST(ENABLE_GIO)
12091 AC_SUBST(GIO_CFLAGS)
12092 AC_SUBST(GIO_LIBS)
12095 dnl ===================================================================
12097 SPLIT_APP_MODULES=""
12098 if test "$enable_split_app_modules" = "yes"; then
12099     SPLIT_APP_MODULES="TRUE"
12101 AC_SUBST(SPLIT_APP_MODULES)
12103 SPLIT_OPT_FEATURES=""
12104 if test "$enable_split_opt_features" = "yes"; then
12105     SPLIT_OPT_FEATURES="TRUE"
12107 AC_SUBST(SPLIT_OPT_FEATURES)
12109 dnl ===================================================================
12110 dnl Check whether the GStreamer libraries are available.
12111 dnl ===================================================================
12113 ENABLE_GSTREAMER_1_0=""
12115 if test "$test_gstreamer_1_0" = yes; then
12117     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12118     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12119         ENABLE_GSTREAMER_1_0="TRUE"
12120         AC_MSG_RESULT([yes])
12121         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12122         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12123         FilterLibs "${GSTREAMER_1_0_LIBS}"
12124         GSTREAMER_1_0_LIBS="${filteredlibs}"
12125         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12126     else
12127         AC_MSG_RESULT([no])
12128     fi
12130 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12131 AC_SUBST(GSTREAMER_1_0_LIBS)
12132 AC_SUBST(ENABLE_GSTREAMER_1_0)
12134 ENABLE_OPENGL_TRANSITIONS=
12135 ENABLE_OPENGL_CANVAS=
12136 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12137    : # disable
12138 elif test "$_os" = "Darwin"; then
12139     # We use frameworks on macOS, no need for detail checks
12140     ENABLE_OPENGL_TRANSITIONS=TRUE
12141     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12142     ENABLE_OPENGL_CANVAS=TRUE
12143 elif test $_os = WINNT; then
12144     ENABLE_OPENGL_TRANSITIONS=TRUE
12145     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12146     ENABLE_OPENGL_CANVAS=TRUE
12147 else
12148     if test "$USING_X11" = TRUE; then
12149         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12150         ENABLE_OPENGL_TRANSITIONS=TRUE
12151         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12152         ENABLE_OPENGL_CANVAS=TRUE
12153     fi
12156 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12157 AC_SUBST(ENABLE_OPENGL_CANVAS)
12159 dnl =================================================
12160 dnl Check whether to build with OpenCL support.
12161 dnl =================================================
12163 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12164     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12165     # platform (optional at run-time, used through clew).
12166     BUILD_TYPE="$BUILD_TYPE OPENCL"
12167     AC_DEFINE(HAVE_FEATURE_OPENCL)
12170 dnl =================================================
12171 dnl Check whether to build with dconf support.
12172 dnl =================================================
12174 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12175     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12176         if test "$enable_dconf" = yes; then
12177             AC_MSG_ERROR([dconf not found])
12178         else
12179             enable_dconf=no
12180         fi])
12182 AC_MSG_CHECKING([whether to enable dconf])
12183 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12184     DCONF_CFLAGS=
12185     DCONF_LIBS=
12186     ENABLE_DCONF=
12187     AC_MSG_RESULT([no])
12188 else
12189     ENABLE_DCONF=TRUE
12190     AC_DEFINE(ENABLE_DCONF)
12191     AC_MSG_RESULT([yes])
12193 AC_SUBST([DCONF_CFLAGS])
12194 AC_SUBST([DCONF_LIBS])
12195 AC_SUBST([ENABLE_DCONF])
12197 # pdf import?
12198 AC_MSG_CHECKING([whether to build the PDF import feature])
12199 ENABLE_PDFIMPORT=
12200 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12201     AC_MSG_RESULT([yes])
12202     ENABLE_PDFIMPORT=TRUE
12203     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12204 else
12205     AC_MSG_RESULT([no])
12208 # Pdfium?
12209 AC_MSG_CHECKING([whether to build PDFium])
12210 ENABLE_PDFIUM=
12211 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12212     AC_MSG_RESULT([yes])
12213     ENABLE_PDFIUM=TRUE
12214     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12215 else
12216     AC_MSG_RESULT([no])
12218 AC_SUBST(ENABLE_PDFIUM)
12220 if test "$ENABLE_PDFIUM" = "TRUE"; then
12221     AC_MSG_CHECKING([which OpenJPEG library to use])
12222     if test "$with_system_openjpeg" = "yes"; then
12223         SYSTEM_OPENJPEG2=TRUE
12224         AC_MSG_RESULT([external])
12225         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12226         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12227         FilterLibs "${OPENJPEG2_LIBS}"
12228         OPENJPEG2_LIBS="${filteredlibs}"
12229     else
12230         SYSTEM_OPENJPEG2=FALSE
12231         AC_MSG_RESULT([internal])
12232     fi
12234     AC_MSG_CHECKING([which Abseil library to use])
12235     if test "$with_system_abseil" = "yes"; then
12236         AC_MSG_RESULT([external])
12237         SYSTEM_ABSEIL=TRUE
12238         AC_LANG_PUSH([C++])
12239         PKG_CHECK_MODULES(ABSEIL, absl_bad_optional_access absl_bad_variant_access absl_inlined_vector )
12240         AC_LANG_POP([C++])
12241         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12242         FilterLibs "${ABSEIL_LIBS}"
12243         ABSEIL_LIBS="${filteredlibs}"
12244     else
12245         AC_MSG_RESULT([internal])
12246     fi
12248 AC_SUBST(SYSTEM_OPENJPEG2)
12249 AC_SUBST(SYSTEM_ABSEIL)
12250 AC_SUBST(ABSEIL_CFLAGS)
12251 AC_SUBST(ABSEIL_LIBS)
12253 dnl ===================================================================
12254 dnl Check for poppler
12255 dnl ===================================================================
12256 ENABLE_POPPLER=
12257 AC_MSG_CHECKING([whether to build Poppler])
12258 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12259     AC_MSG_RESULT([yes])
12260     ENABLE_POPPLER=TRUE
12261     AC_DEFINE(HAVE_FEATURE_POPPLER)
12262 else
12263     AC_MSG_RESULT([no])
12265 AC_SUBST(ENABLE_POPPLER)
12267 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12268     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12271 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12272     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12275 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12276     dnl ===================================================================
12277     dnl Check for system poppler
12278     dnl ===================================================================
12279     AC_MSG_CHECKING([which PDF import poppler to use])
12280     if test "$with_system_poppler" = "yes"; then
12281         AC_MSG_RESULT([external])
12282         SYSTEM_POPPLER=TRUE
12283         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12284         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12285         FilterLibs "${POPPLER_LIBS}"
12286         POPPLER_LIBS="${filteredlibs}"
12287     else
12288         AC_MSG_RESULT([internal])
12289         SYSTEM_POPPLER=
12290         BUILD_TYPE="$BUILD_TYPE POPPLER"
12291     fi
12292     AC_DEFINE([ENABLE_PDFIMPORT],1)
12294 AC_SUBST(ENABLE_PDFIMPORT)
12295 AC_SUBST(SYSTEM_POPPLER)
12296 AC_SUBST(POPPLER_CFLAGS)
12297 AC_SUBST(POPPLER_LIBS)
12299 # Skia?
12300 ENABLE_SKIA=
12301 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12302     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12303     if test "$SYSTEM_FREETYPE" = TRUE; then
12304         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12305             [skia_freetype_ok=yes],
12306             [skia_freetype_ok=no])
12307     else # internal is ok
12308         skia_freetype_ok=yes
12309     fi
12310     AC_MSG_CHECKING([whether to build Skia])
12311     if test "$skia_freetype_ok" = "yes"; then
12312         if test "$enable_skia" = "debug"; then
12313             AC_MSG_RESULT([yes (debug)])
12314             ENABLE_SKIA_DEBUG=TRUE
12315         else
12316             AC_MSG_RESULT([yes])
12317             ENABLE_SKIA_DEBUG=
12318         fi
12319         ENABLE_SKIA=TRUE
12320         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12321             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12322         fi
12324         AC_DEFINE(HAVE_FEATURE_SKIA)
12325         BUILD_TYPE="$BUILD_TYPE SKIA"
12327         if test "$OS" = "MACOSX"; then
12328             AC_DEFINE(SK_GANESH,1)
12329             AC_DEFINE(SK_METAL,1)
12330             SKIA_GPU=METAL
12331             AC_SUBST(SKIA_GPU)
12332         else
12333             AC_DEFINE(SK_GANESH,1)
12334             AC_DEFINE(SK_VULKAN,1)
12335             SKIA_GPU=VULKAN
12336             AC_SUBST(SKIA_GPU)
12337         fi
12338     else
12339         AC_MSG_RESULT([no (freetype too old)])
12340         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12341     fi
12343 else
12344     AC_MSG_CHECKING([whether to build Skia])
12345     AC_MSG_RESULT([no])
12347 AC_SUBST(ENABLE_SKIA)
12348 AC_SUBST(ENABLE_SKIA_DEBUG)
12350 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12351 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12352 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12353 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12354 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12355 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12356 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12357 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12358 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12359 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12360 LO_CLANG_VERSION=
12361 HAVE_LO_CLANG_DLLEXPORTINLINES=
12363 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12364     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12365         AC_MSG_CHECKING([for Clang])
12366         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12367     else
12368         if test "$_os" = "WINNT"; then
12369             AC_MSG_CHECKING([for clang-cl])
12370             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12371                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12372             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12373                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12374             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12375                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12376             fi
12377             if test -n "$LO_CLANG_CC"; then
12378                 dnl explicitly set -m32/-m64
12379                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12380                 LO_CLANG_CXX="$LO_CLANG_CC"
12381                 AC_MSG_RESULT([$LO_CLANG_CC])
12382             else
12383                 AC_MSG_RESULT([no])
12384             fi
12386             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12387             echo "#include <stdlib.h>" > conftest.c
12388             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12389                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12390             rm -f conftest.c conftest.obj
12391             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12392                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12393             else
12394                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12395             fi
12396         else
12397             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12398             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12399         fi
12400     fi
12401     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12402         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12403         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12404         if test "$LO_CLANG_VERSION" -lt 50002; then
12405             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12406             LO_CLANG_CC=
12407             LO_CLANG_CXX=
12408         fi
12409     fi
12410     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12411         save_CXX="$CXX"
12412         CXX="$LO_CLANG_CXX"
12413         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12414         AC_LANG_PUSH([C++])
12415         save_CXXFLAGS=$CXXFLAGS
12416         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12417         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12418                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12419                 AC_MSG_RESULT([yes])
12420             ], [AC_MSG_RESULT([no])])
12421         CXXFLAGS=$save_CXXFLAGS
12422         AC_LANG_POP([C++])
12423         CXX="$save_CXX"
12424         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12425             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.])
12426         fi
12427     fi
12428     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12429         # Skia is the default on Windows and Mac, so hard-require Clang.
12430         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12431         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12432             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12433         else
12434             AC_MSG_WARN([Clang compiler not found.])
12435         fi
12436     else
12438         save_CXX="$CXX"
12439         CXX="$LO_CLANG_CXX"
12440         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12441         flag_sse2=-msse2
12442         flag_ssse3=-mssse3
12443         flag_sse41=-msse4.1
12444         flag_sse42=-msse4.2
12445         flag_avx=-mavx
12446         flag_avx2=-mavx2
12447         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12448         flag_avx512f=-mavx512f
12449         flag_f16c=-mf16c
12450         flag_fma=-mfma
12452         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12453         AC_LANG_PUSH([C++])
12454         save_CXXFLAGS=$CXXFLAGS
12455         CXXFLAGS="$CXXFLAGS $flag_sse2"
12456         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12457             #include <emmintrin.h>
12458             int main () {
12459                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12460                 c = _mm_xor_si128 (a, b);
12461                 return 0;
12462             }
12463             ])],
12464             [can_compile_sse2=yes],
12465             [can_compile_sse2=no])
12466         AC_LANG_POP([C++])
12467         CXXFLAGS=$save_CXXFLAGS
12468         AC_MSG_RESULT([${can_compile_sse2}])
12469         if test "${can_compile_sse2}" = "yes" ; then
12470             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12471         fi
12473         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12474         AC_LANG_PUSH([C++])
12475         save_CXXFLAGS=$CXXFLAGS
12476         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12477         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12478             #include <tmmintrin.h>
12479             int main () {
12480                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12481                 c = _mm_maddubs_epi16 (a, b);
12482                 return 0;
12483             }
12484             ])],
12485             [can_compile_ssse3=yes],
12486             [can_compile_ssse3=no])
12487         AC_LANG_POP([C++])
12488         CXXFLAGS=$save_CXXFLAGS
12489         AC_MSG_RESULT([${can_compile_ssse3}])
12490         if test "${can_compile_ssse3}" = "yes" ; then
12491             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12492         fi
12494         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12495         AC_LANG_PUSH([C++])
12496         save_CXXFLAGS=$CXXFLAGS
12497         CXXFLAGS="$CXXFLAGS $flag_sse41"
12498         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12499             #include <smmintrin.h>
12500             int main () {
12501                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12502                 c = _mm_cmpeq_epi64 (a, b);
12503                 return 0;
12504             }
12505             ])],
12506             [can_compile_sse41=yes],
12507             [can_compile_sse41=no])
12508         AC_LANG_POP([C++])
12509         CXXFLAGS=$save_CXXFLAGS
12510         AC_MSG_RESULT([${can_compile_sse41}])
12511         if test "${can_compile_sse41}" = "yes" ; then
12512             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12513         fi
12515         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12516         AC_LANG_PUSH([C++])
12517         save_CXXFLAGS=$CXXFLAGS
12518         CXXFLAGS="$CXXFLAGS $flag_sse42"
12519         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12520             #include <nmmintrin.h>
12521             int main () {
12522                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12523                 c = _mm_cmpgt_epi64 (a, b);
12524                 return 0;
12525             }
12526             ])],
12527             [can_compile_sse42=yes],
12528             [can_compile_sse42=no])
12529         AC_LANG_POP([C++])
12530         CXXFLAGS=$save_CXXFLAGS
12531         AC_MSG_RESULT([${can_compile_sse42}])
12532         if test "${can_compile_sse42}" = "yes" ; then
12533             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12534         fi
12536         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12537         AC_LANG_PUSH([C++])
12538         save_CXXFLAGS=$CXXFLAGS
12539         CXXFLAGS="$CXXFLAGS $flag_avx"
12540         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12541             #include <immintrin.h>
12542             int main () {
12543                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12544                 c = _mm256_xor_ps(a, b);
12545                 return 0;
12546             }
12547             ])],
12548             [can_compile_avx=yes],
12549             [can_compile_avx=no])
12550         AC_LANG_POP([C++])
12551         CXXFLAGS=$save_CXXFLAGS
12552         AC_MSG_RESULT([${can_compile_avx}])
12553         if test "${can_compile_avx}" = "yes" ; then
12554             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12555         fi
12557         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12558         AC_LANG_PUSH([C++])
12559         save_CXXFLAGS=$CXXFLAGS
12560         CXXFLAGS="$CXXFLAGS $flag_avx2"
12561         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12562             #include <immintrin.h>
12563             int main () {
12564                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12565                 c = _mm256_maddubs_epi16(a, b);
12566                 return 0;
12567             }
12568             ])],
12569             [can_compile_avx2=yes],
12570             [can_compile_avx2=no])
12571         AC_LANG_POP([C++])
12572         CXXFLAGS=$save_CXXFLAGS
12573         AC_MSG_RESULT([${can_compile_avx2}])
12574         if test "${can_compile_avx2}" = "yes" ; then
12575             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12576         fi
12578         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12579         AC_LANG_PUSH([C++])
12580         save_CXXFLAGS=$CXXFLAGS
12581         CXXFLAGS="$CXXFLAGS $flag_avx512"
12582         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12583             #include <immintrin.h>
12584             int main () {
12585                 __m512i a = _mm512_loadu_si512(0);
12586                 __m512d v1 = _mm512_load_pd(0);
12587                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12588                 __m512d v2 = _mm512_abs_pd(v1);
12589                 return 0;
12590             }
12591             ])],
12592             [can_compile_avx512=yes],
12593             [can_compile_avx512=no])
12594         AC_LANG_POP([C++])
12595         CXXFLAGS=$save_CXXFLAGS
12596         AC_MSG_RESULT([${can_compile_avx512}])
12597         if test "${can_compile_avx512}" = "yes" ; then
12598             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12599             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12600         fi
12602         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12603         AC_LANG_PUSH([C++])
12604         save_CXXFLAGS=$CXXFLAGS
12605         CXXFLAGS="$CXXFLAGS $flag_f16c"
12606         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12607             #include <immintrin.h>
12608             int main () {
12609                 __m128i a = _mm_set1_epi32 (0);
12610                 __m128 c;
12611                 c = _mm_cvtph_ps(a);
12612                 return 0;
12613             }
12614             ])],
12615             [can_compile_f16c=yes],
12616             [can_compile_f16c=no])
12617         AC_LANG_POP([C++])
12618         CXXFLAGS=$save_CXXFLAGS
12619         AC_MSG_RESULT([${can_compile_f16c}])
12620         if test "${can_compile_f16c}" = "yes" ; then
12621             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12622         fi
12624         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12625         AC_LANG_PUSH([C++])
12626         save_CXXFLAGS=$CXXFLAGS
12627         CXXFLAGS="$CXXFLAGS $flag_fma"
12628         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12629             #include <immintrin.h>
12630             int main () {
12631                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12632                 d = _mm256_fmadd_ps(a, b, c);
12633                 return 0;
12634             }
12635             ])],
12636             [can_compile_fma=yes],
12637             [can_compile_fma=no])
12638         AC_LANG_POP([C++])
12639         CXXFLAGS=$save_CXXFLAGS
12640         AC_MSG_RESULT([${can_compile_fma}])
12641         if test "${can_compile_fma}" = "yes" ; then
12642             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12643         fi
12645         CXX="$save_CXX"
12646     fi
12649 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12651 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12652     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12653     AC_LANG_PUSH([C])
12654     save_CC="$CC"
12655     CC="$LO_CLANG_CC"
12656     save_CFLAGS=$CFLAGS
12657     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12658     dnl an empty program will do, we're checking the compiler flags
12659     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12660                       [use_ccache=yes], [use_ccache=no])
12661     CFLAGS=$save_CFLAGS
12662     CC=$save_CC
12663     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12664         AC_MSG_RESULT([yes])
12665     else
12666         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12667         AC_MSG_RESULT([no])
12668     fi
12669     AC_LANG_POP([C])
12671     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12672     AC_LANG_PUSH([C++])
12673     save_CXX="$CXX"
12674     CXX="$LO_CLANG_CXX"
12675     save_CXXFLAGS=$CXXFLAGS
12676     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12677     dnl an empty program will do, we're checking the compiler flags
12678     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12679                       [use_ccache=yes], [use_ccache=no])
12680     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12681         AC_MSG_RESULT([yes])
12682     else
12683         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12684         AC_MSG_RESULT([no])
12685     fi
12686     CXXFLAGS=$save_CXXFLAGS
12687     CXX=$save_CXX
12688     AC_LANG_POP([C++])
12691 AC_SUBST(LO_CLANG_CC)
12692 AC_SUBST(LO_CLANG_CXX)
12693 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12694 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12695 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12696 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12697 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12698 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12699 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12700 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12701 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12702 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12703 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12704 AC_SUBST(LO_CLANG_VERSION)
12705 AC_SUBST(CLANG_USE_LD)
12706 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12708 SYSTEM_GPGMEPP=
12710 AC_MSG_CHECKING([whether to enable gpgmepp])
12711 if test "$enable_gpgmepp" = no; then
12712     AC_MSG_RESULT([no])
12713 elif test "$enable_mpl_subset" = "yes"; then
12714     AC_MSG_RESULT([no (MPL only)])
12715 elif test "$enable_fuzzers" = "yes"; then
12716     AC_MSG_RESULT([no (oss-fuzz)])
12717 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12718     AC_MSG_RESULT([yes])
12719     dnl ===================================================================
12720     dnl Check for system gpgme
12721     dnl ===================================================================
12722     AC_MSG_CHECKING([which gpgmepp to use])
12723     if test "$with_system_gpgmepp" = "yes"; then
12724         AC_MSG_RESULT([external])
12725         SYSTEM_GPGMEPP=TRUE
12727         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12728         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12729             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12730         AC_CHECK_HEADER(gpgme.h, [],
12731             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12732         AC_CHECK_LIB(gpgmepp, main, [],
12733             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12734         GPGMEPP_LIBS=-lgpgmepp
12735     else
12736         AC_MSG_RESULT([internal])
12737         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12739         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12740         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12741         if test "$_os" != "WINNT"; then
12742             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12743             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12744         fi
12745     fi
12746     ENABLE_GPGMEPP=TRUE
12747     AC_DEFINE([HAVE_FEATURE_GPGME])
12748     AC_PATH_PROG(GPG, gpg)
12749     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12750     # so let's exclude that manually for the moment
12751     if test -n "$GPG" -a "$_os" != "WINNT"; then
12752         # make sure we not only have a working gpgme, but a full working
12753         # gpg installation to run OpenPGP signature verification
12754         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12755     fi
12756     if test "$_os" = "Linux"; then
12757       uid=`id -u`
12758       AC_MSG_CHECKING([for /run/user/$uid])
12759       if test -d /run/user/$uid; then
12760         AC_MSG_RESULT([yes])
12761         AC_PATH_PROG(GPGCONF, gpgconf)
12763         # Older versions of gpgconf are not working as expected, since
12764         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12765         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12766         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12767         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12768         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12769         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12770         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12771           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12772           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12773           if $GPGCONF --dump-options > /dev/null ; then
12774             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12775               AC_MSG_RESULT([yes])
12776               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12777               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12778             else
12779               AC_MSG_RESULT([no])
12780             fi
12781           else
12782             AC_MSG_RESULT([no. missing or broken gpgconf?])
12783           fi
12784         else
12785           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12786         fi
12787       else
12788         AC_MSG_RESULT([no])
12789      fi
12790    fi
12791 else
12792     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12794 AC_SUBST(ENABLE_GPGMEPP)
12795 AC_SUBST(SYSTEM_GPGMEPP)
12796 AC_SUBST(GPG_ERROR_CFLAGS)
12797 AC_SUBST(GPG_ERROR_LIBS)
12798 AC_SUBST(LIBASSUAN_CFLAGS)
12799 AC_SUBST(LIBASSUAN_LIBS)
12800 AC_SUBST(GPGMEPP_CFLAGS)
12801 AC_SUBST(GPGMEPP_LIBS)
12803 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12804 if test "$with_java" != "no"; then
12805     AC_MSG_RESULT([yes])
12806     ENABLE_JAVA_WEBSOCKET=TRUE
12807     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12808     NEED_ANT=TRUE
12809 else
12810     AC_MSG_RESULT([no])
12811     ENABLE_JAVA_WEBSOCKET=
12813 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12815 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12816 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12817     AC_MSG_RESULT([yes])
12818     ENABLE_MEDIAWIKI=TRUE
12819     BUILD_TYPE="$BUILD_TYPE XSLTML"
12820     if test  "x$with_java" = "xno"; then
12821         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12822     fi
12823 else
12824     AC_MSG_RESULT([no])
12825     ENABLE_MEDIAWIKI=
12826     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12828 AC_SUBST(ENABLE_MEDIAWIKI)
12830 AC_MSG_CHECKING([whether to build the Report Builder])
12831 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12832     AC_MSG_RESULT([yes])
12833     ENABLE_REPORTBUILDER=TRUE
12834     AC_MSG_CHECKING([which jfreereport libs to use])
12835     if test "$with_system_jfreereport" = "yes"; then
12836         SYSTEM_JFREEREPORT=TRUE
12837         AC_MSG_RESULT([external])
12838         if test -z $SAC_JAR; then
12839             SAC_JAR=/usr/share/java/sac.jar
12840         fi
12841         if ! test -f $SAC_JAR; then
12842              AC_MSG_ERROR(sac.jar not found.)
12843         fi
12845         if test -z $LIBXML_JAR; then
12846             if test -f /usr/share/java/libxml-1.0.0.jar; then
12847                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12848             elif test -f /usr/share/java/libxml.jar; then
12849                 LIBXML_JAR=/usr/share/java/libxml.jar
12850             else
12851                 AC_MSG_ERROR(libxml.jar replacement not found.)
12852             fi
12853         elif ! test -f $LIBXML_JAR; then
12854             AC_MSG_ERROR(libxml.jar not found.)
12855         fi
12857         if test -z $FLUTE_JAR; then
12858             if test -f /usr/share/java/flute-1.3.0.jar; then
12859                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12860             elif test -f /usr/share/java/flute.jar; then
12861                 FLUTE_JAR=/usr/share/java/flute.jar
12862             else
12863                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12864             fi
12865         elif ! test -f $FLUTE_JAR; then
12866             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12867         fi
12869         if test -z $JFREEREPORT_JAR; then
12870             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12871                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12872             elif test -f /usr/share/java/flow-engine.jar; then
12873                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12874             else
12875                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12876             fi
12877         elif ! test -f  $JFREEREPORT_JAR; then
12878                 AC_MSG_ERROR(jfreereport.jar not found.)
12879         fi
12881         if test -z $LIBLAYOUT_JAR; then
12882             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12883                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12884             elif test -f /usr/share/java/liblayout.jar; then
12885                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12886             else
12887                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12888             fi
12889         elif ! test -f $LIBLAYOUT_JAR; then
12890                 AC_MSG_ERROR(liblayout.jar not found.)
12891         fi
12893         if test -z $LIBLOADER_JAR; then
12894             if test -f /usr/share/java/libloader-1.0.0.jar; then
12895                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12896             elif test -f /usr/share/java/libloader.jar; then
12897                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12898             else
12899                 AC_MSG_ERROR(libloader.jar replacement not found.)
12900             fi
12901         elif ! test -f  $LIBLOADER_JAR; then
12902             AC_MSG_ERROR(libloader.jar not found.)
12903         fi
12905         if test -z $LIBFORMULA_JAR; then
12906             if test -f /usr/share/java/libformula-0.2.0.jar; then
12907                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12908             elif test -f /usr/share/java/libformula.jar; then
12909                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12910             else
12911                 AC_MSG_ERROR(libformula.jar replacement not found.)
12912             fi
12913         elif ! test -f $LIBFORMULA_JAR; then
12914                 AC_MSG_ERROR(libformula.jar not found.)
12915         fi
12917         if test -z $LIBREPOSITORY_JAR; then
12918             if test -f /usr/share/java/librepository-1.0.0.jar; then
12919                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12920             elif test -f /usr/share/java/librepository.jar; then
12921                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12922             else
12923                 AC_MSG_ERROR(librepository.jar replacement not found.)
12924             fi
12925         elif ! test -f $LIBREPOSITORY_JAR; then
12926             AC_MSG_ERROR(librepository.jar not found.)
12927         fi
12929         if test -z $LIBFONTS_JAR; then
12930             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12931                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12932             elif test -f /usr/share/java/libfonts.jar; then
12933                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12934             else
12935                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12936             fi
12937         elif ! test -f $LIBFONTS_JAR; then
12938                 AC_MSG_ERROR(libfonts.jar not found.)
12939         fi
12941         if test -z $LIBSERIALIZER_JAR; then
12942             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12943                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12944             elif test -f /usr/share/java/libserializer.jar; then
12945                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12946             else
12947                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12948             fi
12949         elif ! test -f $LIBSERIALIZER_JAR; then
12950                 AC_MSG_ERROR(libserializer.jar not found.)
12951         fi
12953         if test -z $LIBBASE_JAR; then
12954             if test -f /usr/share/java/libbase-1.0.0.jar; then
12955                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12956             elif test -f /usr/share/java/libbase.jar; then
12957                 LIBBASE_JAR=/usr/share/java/libbase.jar
12958             else
12959                 AC_MSG_ERROR(libbase.jar replacement not found.)
12960             fi
12961         elif ! test -f $LIBBASE_JAR; then
12962             AC_MSG_ERROR(libbase.jar not found.)
12963         fi
12965     else
12966         AC_MSG_RESULT([internal])
12967         SYSTEM_JFREEREPORT=
12968         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12969         NEED_ANT=TRUE
12970     fi
12971     BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
12972 else
12973     AC_MSG_RESULT([no])
12974     ENABLE_REPORTBUILDER=
12975     SYSTEM_JFREEREPORT=
12977 AC_SUBST(ENABLE_REPORTBUILDER)
12978 AC_SUBST(SYSTEM_JFREEREPORT)
12979 AC_SUBST(SAC_JAR)
12980 AC_SUBST(LIBXML_JAR)
12981 AC_SUBST(FLUTE_JAR)
12982 AC_SUBST(JFREEREPORT_JAR)
12983 AC_SUBST(LIBBASE_JAR)
12984 AC_SUBST(LIBLAYOUT_JAR)
12985 AC_SUBST(LIBLOADER_JAR)
12986 AC_SUBST(LIBFORMULA_JAR)
12987 AC_SUBST(LIBREPOSITORY_JAR)
12988 AC_SUBST(LIBFONTS_JAR)
12989 AC_SUBST(LIBSERIALIZER_JAR)
12991 # scripting provider for BeanShell?
12992 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12993 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12994     AC_MSG_RESULT([yes])
12995     ENABLE_SCRIPTING_BEANSHELL=TRUE
12997     dnl ===================================================================
12998     dnl Check for system beanshell
12999     dnl ===================================================================
13000     AC_MSG_CHECKING([which beanshell to use])
13001     if test "$with_system_beanshell" = "yes"; then
13002         AC_MSG_RESULT([external])
13003         SYSTEM_BSH=TRUE
13004         if test -z $BSH_JAR; then
13005             BSH_JAR=/usr/share/java/bsh.jar
13006         fi
13007         if ! test -f $BSH_JAR; then
13008             AC_MSG_ERROR(bsh.jar not found.)
13009         fi
13010     else
13011         AC_MSG_RESULT([internal])
13012         SYSTEM_BSH=
13013         BUILD_TYPE="$BUILD_TYPE BSH"
13014     fi
13015 else
13016     AC_MSG_RESULT([no])
13017     ENABLE_SCRIPTING_BEANSHELL=
13018     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13020 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13021 AC_SUBST(SYSTEM_BSH)
13022 AC_SUBST(BSH_JAR)
13024 # scripting provider for JavaScript?
13025 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13026 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13027     AC_MSG_RESULT([yes])
13028     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13030     dnl ===================================================================
13031     dnl Check for system rhino
13032     dnl ===================================================================
13033     AC_MSG_CHECKING([which rhino to use])
13034     if test "$with_system_rhino" = "yes"; then
13035         AC_MSG_RESULT([external])
13036         SYSTEM_RHINO=TRUE
13037         if test -z $RHINO_JAR; then
13038             RHINO_JAR=/usr/share/java/js.jar
13039         fi
13040         if ! test -f $RHINO_JAR; then
13041             AC_MSG_ERROR(js.jar not found.)
13042         fi
13043     else
13044         AC_MSG_RESULT([internal])
13045         SYSTEM_RHINO=
13046         BUILD_TYPE="$BUILD_TYPE RHINO"
13047         NEED_ANT=TRUE
13048     fi
13049 else
13050     AC_MSG_RESULT([no])
13051     ENABLE_SCRIPTING_JAVASCRIPT=
13052     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13054 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13055 AC_SUBST(SYSTEM_RHINO)
13056 AC_SUBST(RHINO_JAR)
13058 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13059 # paths should be added to library search path. So lets put all 64-bit
13060 # platforms there.
13061 supports_multilib=
13062 case "$host_cpu" in
13063 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13064     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13065         supports_multilib="yes"
13066     fi
13067     ;;
13069     ;;
13070 esac
13072 dnl ===================================================================
13073 dnl QT5 Integration
13074 dnl ===================================================================
13076 QT5_CFLAGS=""
13077 QT5_LIBS=""
13078 QMAKE5="qmake"
13079 MOC5="moc"
13080 QT5_GOBJECT_CFLAGS=""
13081 QT5_GOBJECT_LIBS=""
13082 QT5_HAVE_GOBJECT=""
13083 QT5_PLATFORMS_SRCDIR=""
13084 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13085         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13086         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13087 then
13088     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13089     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13091     if test -n "$supports_multilib"; then
13092         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13093     fi
13095     qt5_test_include="QtWidgets/qapplication.h"
13096     if test "$_os" = "Emscripten"; then
13097         qt5_test_library="libQt5Widgets.a"
13098     else
13099         qt5_test_library="libQt5Widgets.so"
13100     fi
13102     dnl Check for qmake5
13103     if test -n "$QT5DIR"; then
13104         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13105     else
13106         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13107     fi
13108     if test "$QMAKE5" = "no"; then
13109         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13110     else
13111         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13112         if test -z "$qmake5_test_ver"; then
13113             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13114         fi
13115         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13116         qt5_minimal_minor="15"
13117         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13118             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13119         else
13120             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13121         fi
13122     fi
13124     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13125     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13126     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13127     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13129     AC_MSG_CHECKING([for Qt5 headers])
13130     qt5_incdir="no"
13131     for inc_dir in $qt5_incdirs; do
13132         if test -r "$inc_dir/$qt5_test_include"; then
13133             qt5_incdir="$inc_dir"
13134             break
13135         fi
13136     done
13137     AC_MSG_RESULT([$qt5_incdir])
13138     if test "x$qt5_incdir" = "xno"; then
13139         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13140     fi
13141     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13142     AC_LANG_PUSH([C++])
13143     save_CPPFLAGS=$CPPFLAGS
13144     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13145     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13146         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13147     CPPFLAGS=$save_CPPFLAGS
13148     AC_LANG_POP([C++])
13150     AC_MSG_CHECKING([for Qt5 libraries])
13151     qt5_libdir="no"
13152     for lib_dir in $qt5_libdirs; do
13153         if test -r "$lib_dir/$qt5_test_library"; then
13154             qt5_libdir="$lib_dir"
13155             break
13156         fi
13157     done
13158     AC_MSG_RESULT([$qt5_libdir])
13159     if test "x$qt5_libdir" = "xno"; then
13160         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13161     fi
13163     if test "$_os" = "Emscripten"; then
13164         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13165             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13166         fi
13167         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13168             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13169         fi
13171         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13172         if ! test -x "$EMSDK_LLVM_NM"; then
13173             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13174         fi
13175         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13176             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13177         fi
13178         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13179         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13180             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13181         fi
13182         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13183             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13184         fi
13185     fi
13187     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13188     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13189     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13190     if test "$_os" = "Emscripten"; then
13191         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13192     fi
13194     if test "$USING_X11" = TRUE; then
13195         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13196         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13197         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13198         QT5_USING_X11=1
13199         AC_DEFINE(QT5_USING_X11)
13200     fi
13202     dnl Check for Meta Object Compiler
13204     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13205     if test "$MOC5" = "no"; then
13206         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13207 the root of your Qt installation by exporting QT5DIR before running "configure".])
13208     fi
13210     if test "$test_gstreamer_1_0" = yes; then
13211         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13212                 QT5_HAVE_GOBJECT=1
13213                 AC_DEFINE(QT5_HAVE_GOBJECT)
13214             ],
13215             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13216         )
13217     fi
13219 AC_SUBST(QT5_CFLAGS)
13220 AC_SUBST(QT5_LIBS)
13221 AC_SUBST(MOC5)
13222 AC_SUBST(QT5_GOBJECT_CFLAGS)
13223 AC_SUBST(QT5_GOBJECT_LIBS)
13224 AC_SUBST(QT5_HAVE_GOBJECT)
13225 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13227 dnl ===================================================================
13228 dnl QT6 Integration
13229 dnl ===================================================================
13231 QT6_CFLAGS=""
13232 QT6_LIBS=""
13233 QMAKE6="qmake"
13234 MOC6="moc"
13235 QT6_PLATFORMS_SRCDIR=""
13236 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13237         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13238 then
13239     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13240     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13242     if test -n "$supports_multilib"; then
13243         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13244     fi
13246     qt6_test_include="QtWidgets/qapplication.h"
13247     if test "$_os" = "Emscripten"; then
13248         qt6_test_library="libQt6Widgets.a"
13249     else
13250         qt6_test_library="libQt6Widgets.so"
13251     fi
13253     dnl Check for qmake6
13254     if test -n "$QT6DIR"; then
13255         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13256     else
13257         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13258     fi
13259     if test "$QMAKE6" = "no"; then
13260         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13261     else
13262         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13263         if test -z "$qmake6_test_ver"; then
13264             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13265         fi
13266         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13267     fi
13269     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13270     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13271     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13272     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13274     AC_MSG_CHECKING([for Qt6 headers])
13275     qt6_incdir="no"
13276     for inc_dir in $qt6_incdirs; do
13277         if test -r "$inc_dir/$qt6_test_include"; then
13278             qt6_incdir="$inc_dir"
13279             break
13280         fi
13281     done
13282     AC_MSG_RESULT([$qt6_incdir])
13283     if test "x$qt6_incdir" = "xno"; then
13284         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13285     fi
13286     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13287     AC_LANG_PUSH([C++])
13288     save_CPPFLAGS=$CPPFLAGS
13289     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13290     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13291         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13292     CPPFLAGS=$save_CPPFLAGS
13293     AC_LANG_POP([C++])
13295     AC_MSG_CHECKING([for Qt6 libraries])
13296     qt6_libdir="no"
13297     for lib_dir in $qt6_libdirs; do
13298         if test -r "$lib_dir/$qt6_test_library"; then
13299             qt6_libdir="$lib_dir"
13300             break
13301         fi
13302     done
13303     AC_MSG_RESULT([$qt6_libdir])
13304     if test "x$qt6_libdir" = "xno"; then
13305         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13306     fi
13308     if test "$_os" = "Emscripten"; then
13309         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13310             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13311         fi
13312         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13313             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13314         fi
13315     fi
13317     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13318     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13319     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13320     if test "$_os" = "Emscripten"; then
13321         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13322     fi
13324     if test "$USING_X11" = TRUE; then
13325         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13326         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13327         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13328         QT6_USING_X11=1
13329         AC_DEFINE(QT6_USING_X11)
13330     fi
13332     dnl Check for Meta Object Compiler
13334     for lib_dir in $qt6_libdirs; do
13335         if test -z "$qt6_libexec_dirs"; then
13336             qt6_libexec_dirs="$lib_dir/libexec"
13337         else
13338             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13339         fi
13340     done
13341     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH])
13342     if test "$MOC6" = "no"; then
13343         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13344 the root of your Qt installation by exporting QT6DIR before running "configure".])
13345     else
13346         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13347         if test -z "$moc6_test_ver"; then
13348             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13349         fi
13350         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13351     fi
13353 AC_SUBST(QT6_CFLAGS)
13354 AC_SUBST(QT6_LIBS)
13355 AC_SUBST(MOC6)
13356 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13358 dnl ===================================================================
13359 dnl KF5 Integration
13360 dnl ===================================================================
13362 KF5_CFLAGS=""
13363 KF5_LIBS=""
13364 KF5_CONFIG="kf5-config"
13365 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13366         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13367 then
13368     if test "$OS" = "HAIKU"; then
13369         haiku_arch="`echo $RTL_ARCH | tr X x`"
13370         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13371         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13372     fi
13374     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13375     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13376     if test -n "$supports_multilib"; then
13377         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13378     fi
13380     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13381     kf5_test_library="libKF5KIOFileWidgets.so"
13382     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13384     dnl kf5 KDE4 support compatibility installed
13385     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13386     if test "$KF5_CONFIG" != "no"; then
13387         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13388         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13389     fi
13391     dnl Check for KF5 headers
13392     AC_MSG_CHECKING([for KF5 headers])
13393     kf5_incdir="no"
13394     for kf5_check in $kf5_incdirs; do
13395         if test -r "$kf5_check/$kf5_test_include"; then
13396             kf5_incdir="$kf5_check/KF5"
13397             break
13398         fi
13399     done
13400     AC_MSG_RESULT([$kf5_incdir])
13401     if test "x$kf5_incdir" = "xno"; then
13402         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13403     fi
13405     dnl Check for KF5 libraries
13406     AC_MSG_CHECKING([for KF5 libraries])
13407     kf5_libdir="no"
13408     for kf5_check in $kf5_libdirs; do
13409         if test -r "$kf5_check/$kf5_test_library"; then
13410             kf5_libdir="$kf5_check"
13411             break
13412         fi
13413     done
13415     AC_MSG_RESULT([$kf5_libdir])
13416     if test "x$kf5_libdir" = "xno"; then
13417         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13418     fi
13420     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"
13421     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13422     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13424     if test "$USING_X11" = TRUE; then
13425         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13426     fi
13428     AC_LANG_PUSH([C++])
13429     save_CXXFLAGS=$CXXFLAGS
13430     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13431     AC_MSG_CHECKING([whether KDE is >= 5.0])
13432        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13433 #include <kcoreaddons_version.h>
13435 int main(int argc, char **argv) {
13436        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13437        else return 1;
13439        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13440     CXXFLAGS=$save_CXXFLAGS
13441     AC_LANG_POP([C++])
13443 AC_SUBST(KF5_CFLAGS)
13444 AC_SUBST(KF5_LIBS)
13446 dnl ===================================================================
13447 dnl KF6 Integration
13448 dnl ===================================================================
13450 KF6_CFLAGS=""
13451 KF6_LIBS=""
13452 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13453 then
13454     if test "$OS" = "HAIKU"; then
13455         haiku_arch="`echo $RTL_ARCH | tr X x`"
13456         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13457         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13458     fi
13460     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13461     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13462     if test -n "$supports_multilib"; then
13463         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13464     fi
13466     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13467     kf6_test_library="libKF6KIOFileWidgets.so"
13468     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13470     dnl Check for KF6 headers
13471     AC_MSG_CHECKING([for KF6 headers])
13472     kf6_incdir="no"
13473     for kf6_check in $kf6_incdirs; do
13474         if test -r "$kf6_check/$kf6_test_include"; then
13475             kf6_incdir="$kf6_check/KF6"
13476             break
13477         fi
13478     done
13479     AC_MSG_RESULT([$kf6_incdir])
13480     if test "x$kf6_incdir" = "xno"; then
13481         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13482     fi
13484     dnl Check for KF6 libraries
13485     AC_MSG_CHECKING([for KF6 libraries])
13486     kf6_libdir="no"
13487     for kf6_check in $kf6_libdirs; do
13488         if test -r "$kf6_check/$kf6_test_library"; then
13489             kf6_libdir="$kf6_check"
13490             break
13491         fi
13492     done
13494     AC_MSG_RESULT([$kf6_libdir])
13495     if test "x$kf6_libdir" = "xno"; then
13496         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13497     fi
13499     KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfigCore -I$kf6_incdir/KWindowSystem -I$kf6_incdir/KIO -I$kf6_incdir/KIOCore -I$kf6_incdir/KIOWidgets -I$kf6_incdir/KIOFileWidgets -I$qt6_incdir -I$qt6_incdir/QtCore -I$qt6_incdir/QtGui -I$qt6_incdir/QtWidgets -I$qt6_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13500     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13501     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13503     AC_LANG_PUSH([C++])
13504     save_CXXFLAGS=$CXXFLAGS
13505     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13506     dnl KF6 development version as of 2023-06 uses version number 5.240
13507     AC_MSG_CHECKING([whether KDE is >= 5.240])
13508        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13509 #include <kcoreaddons_version.h>
13511 int main(int argc, char **argv) {
13512        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13513        else return 1;
13515        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13516     CXXFLAGS=$save_CXXFLAGS
13517     AC_LANG_POP([C++])
13519 AC_SUBST(KF6_CFLAGS)
13520 AC_SUBST(KF6_LIBS)
13522 dnl ===================================================================
13523 dnl Test whether to include Evolution 2 support
13524 dnl ===================================================================
13525 AC_MSG_CHECKING([whether to enable evolution 2 support])
13526 if test "$enable_evolution2" = yes; then
13527     AC_MSG_RESULT([yes])
13528     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13529     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13530     FilterLibs "${GOBJECT_LIBS}"
13531     GOBJECT_LIBS="${filteredlibs}"
13532     ENABLE_EVOAB2="TRUE"
13533 else
13534     AC_MSG_RESULT([no])
13536 AC_SUBST(ENABLE_EVOAB2)
13537 AC_SUBST(GOBJECT_CFLAGS)
13538 AC_SUBST(GOBJECT_LIBS)
13540 dnl ===================================================================
13541 dnl Test which themes to include
13542 dnl ===================================================================
13543 AC_MSG_CHECKING([which themes to include])
13544 # if none given use default subset of available themes
13545 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13546     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_dark sukapura_dark_svg sukapura_svg"
13549 WITH_THEMES=""
13550 if test "x$with_theme" != "xno"; then
13551     for theme in $with_theme; do
13552         case $theme in
13553         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_dark|sukapura_dark_svg|sukapura_svg) WITH_THEMES="${WITH_THEMES:+$WITH_THEMES }$theme" ;;
13554         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13555         esac
13556     done
13558 AC_MSG_RESULT([$WITH_THEMES])
13559 AC_SUBST([WITH_THEMES])
13561 ###############################################################################
13562 # Extensions checking
13563 ###############################################################################
13564 AC_MSG_CHECKING([for extensions integration])
13565 if test "x$enable_extension_integration" != "xno"; then
13566     WITH_EXTENSION_INTEGRATION=TRUE
13567     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13568     AC_MSG_RESULT([yes, use integration])
13569 else
13570     WITH_EXTENSION_INTEGRATION=
13571     AC_MSG_RESULT([no, do not integrate])
13573 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13575 dnl Should any extra extensions be included?
13576 dnl There are standalone tests for each of these below.
13577 WITH_EXTRA_EXTENSIONS=
13578 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13580 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13581 if test "x$with_java" != "xno"; then
13582     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13585 AC_MSG_CHECKING([whether to build opens___.ttf])
13586 if test "$enable_build_opensymbol" = "yes"; then
13587     AC_MSG_RESULT([yes])
13588     AC_PATH_PROG(FONTFORGE, fontforge)
13589     if test -z "$FONTFORGE"; then
13590         AC_MSG_ERROR([fontforge not installed])
13591     fi
13592 else
13593     AC_MSG_RESULT([no])
13594     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13596 AC_SUBST(FONTFORGE)
13598 dnl ===================================================================
13599 dnl Test whether to include fonts
13600 dnl ===================================================================
13601 AC_MSG_CHECKING([whether to include third-party fonts])
13602 if test "$with_fonts" != "no"; then
13603     AC_MSG_RESULT([yes])
13604     WITH_FONTS=TRUE
13605     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13606     AC_DEFINE(HAVE_MORE_FONTS)
13607 else
13608     AC_MSG_RESULT([no])
13609     WITH_FONTS=
13610     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13612 AC_SUBST(WITH_FONTS)
13615 dnl ===================================================================
13616 dnl Test whether to enable online update service
13617 dnl ===================================================================
13618 AC_MSG_CHECKING([whether to enable online update])
13619 ENABLE_ONLINE_UPDATE=
13620 if test "$enable_online_update" = ""; then
13621     AC_MSG_RESULT([no])
13622 else
13623     if test "$enable_online_update" = "mar"; then
13624         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13625     elif test "$enable_online_update" = "yes"; then
13626         if test "$enable_curl" != "yes"; then
13627             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13628         fi
13629         AC_MSG_RESULT([yes])
13630         ENABLE_ONLINE_UPDATE="TRUE"
13631     else
13632         AC_MSG_RESULT([no])
13633     fi
13635 AC_SUBST(ENABLE_ONLINE_UPDATE)
13638 dnl ===================================================================
13639 dnl Test whether to enable mar online update service
13640 dnl ===================================================================
13641 AC_MSG_CHECKING([whether to enable mar online update])
13642 ENABLE_ONLINE_UPDATE_MAR=
13643 if test "$enable_online_update_mar" = yes; then
13644     AC_MSG_RESULT([yes])
13645     BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13646     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13647     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13648 else
13649     AC_MSG_RESULT([no])
13651 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13653 AC_MSG_CHECKING([for mar online update baseurl])
13654 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13655 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13656     AC_MSG_RESULT([yes])
13657 else
13658     AC_MSG_RESULT([no])
13660 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13662 AC_MSG_CHECKING([for mar online update certificateder])
13663 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13664 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13665     AC_MSG_RESULT([yes])
13666 else
13667     AC_MSG_RESULT([no])
13669 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13671 AC_MSG_CHECKING([for mar online update certificatename])
13672 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13673 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13674     AC_MSG_RESULT([yes])
13675 else
13676     AC_MSG_RESULT([no])
13678 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13680 AC_MSG_CHECKING([for mar online update certificatepath])
13681 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13682 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13683     AC_MSG_RESULT([yes])
13684 else
13685     AC_MSG_RESULT([no])
13687 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13689 AC_MSG_CHECKING([for mar online update serverurl])
13690 ONLINEUPDATE_MAR_SERVERURL=$with_online_update_mar_serverurl
13691 if test -n "$ONLINEUPDATE_MAR_SERVERURL"; then
13692     AC_MSG_RESULT([yes])
13693 else
13694     AC_MSG_RESULT([no])
13696 AC_SUBST(ONLINEUPDATE_MAR_SERVERURL)
13698 AC_MSG_CHECKING([for mar online update uploadurl])
13699 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13700 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13701     AC_MSG_RESULT([yes])
13702 else
13703     AC_MSG_RESULT([no])
13705 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13708 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13709 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13710     if test "x$with_privacy_policy_url" = "xundefined"; then
13711         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13712     fi
13714 AC_SUBST(PRIVACY_POLICY_URL)
13715 dnl ===================================================================
13716 dnl Test whether we need bzip2
13717 dnl ===================================================================
13718 SYSTEM_BZIP2=
13719 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13720     AC_MSG_CHECKING([whether to use system bzip2])
13721     if test "$with_system_bzip2" = yes; then
13722         SYSTEM_BZIP2=TRUE
13723         AC_MSG_RESULT([yes])
13724         PKG_CHECK_MODULES(BZIP2, bzip2)
13725         FilterLibs "${BZIP2_LIBS}"
13726         BZIP2_LIBS="${filteredlibs}"
13727     else
13728         AC_MSG_RESULT([no])
13729         BUILD_TYPE="$BUILD_TYPE BZIP2"
13730     fi
13732 AC_SUBST(SYSTEM_BZIP2)
13733 AC_SUBST(BZIP2_CFLAGS)
13734 AC_SUBST(BZIP2_LIBS)
13736 dnl ===================================================================
13737 dnl Test whether to enable extension update
13738 dnl ===================================================================
13739 AC_MSG_CHECKING([whether to enable extension update])
13740 ENABLE_EXTENSION_UPDATE=
13741 if test "x$enable_extension_update" = "xno"; then
13742     AC_MSG_RESULT([no])
13743 else
13744     AC_MSG_RESULT([yes])
13745     ENABLE_EXTENSION_UPDATE="TRUE"
13746     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13747     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13749 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13752 dnl ===================================================================
13753 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13754 dnl ===================================================================
13755 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13756 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13757     AC_MSG_RESULT([no])
13758     ENABLE_SILENT_MSI=
13759 else
13760     AC_MSG_RESULT([yes])
13761     ENABLE_SILENT_MSI=TRUE
13762     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13764 AC_SUBST(ENABLE_SILENT_MSI)
13766 dnl ===================================================================
13767 dnl Check for WiX tools.
13768 dnl ===================================================================
13769 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13770     AC_MSG_RESULT([no])
13771     ENABLE_WIX=
13772 else
13773     AC_MSG_RESULT([yes])
13774     # FIXME: this should do proper detection, but the path is currently
13775     # hardcoded in msicreator/createmsi.py
13776     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13777       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13778     fi
13779     ENABLE_WIX=TRUE
13781 AC_SUBST(ENABLE_WIX)
13783 AC_MSG_CHECKING([whether and how to use Xinerama])
13784 if test "$USING_X11" = TRUE; then
13785     if test "$x_libraries" = "default_x_libraries"; then
13786         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13787         if test "x$XINERAMALIB" = x; then
13788            XINERAMALIB="/usr/lib"
13789         fi
13790     else
13791         XINERAMALIB="$x_libraries"
13792     fi
13793     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13794         # we have both versions, let the user decide but use the dynamic one
13795         # per default
13796         USE_XINERAMA=TRUE
13797         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13798             XINERAMA_LINK=dynamic
13799         else
13800             XINERAMA_LINK=static
13801         fi
13802     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13803         # we have only the dynamic version
13804         USE_XINERAMA=TRUE
13805         XINERAMA_LINK=dynamic
13806     elif test -e "$XINERAMALIB/libXinerama.a"; then
13807         # static version
13808         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13809             USE_XINERAMA=TRUE
13810             XINERAMA_LINK=static
13811         else
13812             USE_XINERAMA=
13813             XINERAMA_LINK=none
13814         fi
13815     else
13816         # no Xinerama
13817         USE_XINERAMA=
13818         XINERAMA_LINK=none
13819     fi
13820     if test "$USE_XINERAMA" = "TRUE"; then
13821         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13822         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13823             [AC_MSG_ERROR(Xinerama header not found.)], [])
13824         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13825         if test "x$XEXTLIB" = x; then
13826            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13827         fi
13828         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13829         if test "$_os" = "FreeBSD"; then
13830             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13831         fi
13832         if test "$_os" = "Linux"; then
13833             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13834         fi
13835         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13836             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13837     else
13838         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13839     fi
13840 else
13841     USE_XINERAMA=
13842     XINERAMA_LINK=none
13843     AC_MSG_RESULT([no])
13845 AC_SUBST(XINERAMA_LINK)
13847 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13848 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13849     enable_cairo_rgba=yes
13851 if test "$enable_cairo_rgba" = yes; then
13852     AC_DEFINE(ENABLE_CAIRO_RGBA)
13853     ENABLE_CAIRO_RGBA=TRUE
13854     AC_MSG_RESULT([yes])
13855 else
13856     ENABLE_CAIRO_RGBA=
13857     AC_MSG_RESULT([no])
13859 AC_SUBST(ENABLE_CAIRO_RGBA)
13861 dnl ===================================================================
13862 dnl Test whether to build cairo or rely on the system version
13863 dnl ===================================================================
13865 if test "$test_cairo" = "yes"; then
13866     AC_MSG_CHECKING([whether to use the system cairo])
13868     : ${with_system_cairo:=$with_system_libs}
13869     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13870         SYSTEM_CAIRO=TRUE
13871         AC_MSG_RESULT([yes])
13873         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13874         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13875         FilterLibs "${CAIRO_LIBS}"
13876         CAIRO_LIBS="${filteredlibs}"
13878         if test "$test_xrender" = "yes"; then
13879             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13880             AC_LANG_PUSH([C])
13881             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13882 #ifdef PictStandardA8
13883 #else
13884       return fail;
13885 #endif
13886 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13888             AC_LANG_POP([C])
13889         fi
13890     else
13891         AC_MSG_RESULT([no])
13892         BUILD_TYPE="$BUILD_TYPE CAIRO"
13893     fi
13895     if test "$enable_cairo_canvas" != no; then
13896         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13897         ENABLE_CAIRO_CANVAS=TRUE
13898     fi
13901 AC_SUBST(CAIRO_CFLAGS)
13902 AC_SUBST(CAIRO_LIBS)
13903 AC_SUBST(ENABLE_CAIRO_CANVAS)
13904 AC_SUBST(SYSTEM_CAIRO)
13906 dnl ===================================================================
13907 dnl Test whether to use avahi
13908 dnl ===================================================================
13909 if test "$_os" = "WINNT"; then
13910     # Windows uses bundled mDNSResponder
13911     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13912 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13913     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13914                       [ENABLE_AVAHI="TRUE"])
13915     AC_DEFINE(HAVE_FEATURE_AVAHI)
13916     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13917     FilterLibs "${AVAHI_LIBS}"
13918     AVAHI_LIBS="${filteredlibs}"
13921 AC_SUBST(ENABLE_AVAHI)
13922 AC_SUBST(AVAHI_CFLAGS)
13923 AC_SUBST(AVAHI_LIBS)
13925 dnl ===================================================================
13926 dnl Test whether to use liblangtag
13927 dnl ===================================================================
13928 SYSTEM_LIBLANGTAG=
13929 AC_MSG_CHECKING([whether to use system liblangtag])
13930 if test "$with_system_liblangtag" = yes; then
13931     SYSTEM_LIBLANGTAG=TRUE
13932     AC_MSG_RESULT([yes])
13933     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13934     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13935     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13936     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13937     FilterLibs "${LIBLANGTAG_LIBS}"
13938     LIBLANGTAG_LIBS="${filteredlibs}"
13939 else
13940     SYSTEM_LIBLANGTAG=
13941     AC_MSG_RESULT([no])
13942     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13943     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13944     if test "$COM" = "MSC"; then
13945         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13946     else
13947         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13948     fi
13950 AC_SUBST(SYSTEM_LIBLANGTAG)
13951 AC_SUBST(LIBLANGTAG_CFLAGS)
13952 AC_SUBST(LIBLANGTAG_LIBS)
13954 dnl ===================================================================
13955 dnl Test whether to build libpng or rely on the system version
13956 dnl ===================================================================
13958 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13959 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13960 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13962 dnl ===================================================================
13963 dnl Test whether to build libtiff or rely on the system version
13964 dnl ===================================================================
13966 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13968 dnl ===================================================================
13969 dnl Test whether to build libwebp or rely on the system version
13970 dnl ===================================================================
13972 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13974 dnl ===================================================================
13975 dnl Check for runtime JVM search path
13976 dnl ===================================================================
13977 if test "$ENABLE_JAVA" != ""; then
13978     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13979     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13980         AC_MSG_RESULT([yes])
13981         if ! test -d "$with_jvm_path"; then
13982             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13983         fi
13984         if ! test -d "$with_jvm_path"jvm; then
13985             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13986         fi
13987         JVM_ONE_PATH_CHECK="$with_jvm_path"
13988         AC_SUBST(JVM_ONE_PATH_CHECK)
13989     else
13990         AC_MSG_RESULT([no])
13991     fi
13994 dnl ===================================================================
13995 dnl Test for the presence of Ant and that it works
13996 dnl ===================================================================
13998 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13999 # breaks filename decoding, so for the ant section, set it to LANG
14000 LC_ALL=$LANG
14001 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14002     ANT_HOME=; export ANT_HOME
14003     WITH_ANT_HOME=; export WITH_ANT_HOME
14004     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14005         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14006             if test "$_os" = "WINNT"; then
14007                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14008             else
14009                 with_ant_home="$LODE_HOME/opt/ant"
14010             fi
14011         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
14012             with_ant_home="$LODE_HOME/opt/ant"
14013         fi
14014     fi
14015     if test -z "$with_ant_home"; then
14016         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14017     else
14018         if test "$_os" = "WINNT"; then
14019             # AC_PATH_PROGS needs unix path
14020             with_ant_home=`cygpath -u "$with_ant_home"`
14021         fi
14022         AbsolutePath "$with_ant_home"
14023         with_ant_home=$absolute_path
14024         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14025         WITH_ANT_HOME=$with_ant_home
14026         ANT_HOME=$with_ant_home
14027     fi
14029     if test -z "$ANT"; then
14030         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14031     else
14032         # resolve relative or absolute symlink
14033         while test -h "$ANT"; do
14034             a_cwd=`pwd`
14035             a_basename=`basename "$ANT"`
14036             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14037             cd "`dirname "$ANT"`"
14038             cd "`dirname "$a_script"`"
14039             ANT="`pwd`"/"`basename "$a_script"`"
14040             cd "$a_cwd"
14041         done
14043         AC_MSG_CHECKING([if $ANT works])
14044         mkdir -p conftest.dir
14045         a_cwd=$(pwd)
14046         cd conftest.dir
14047         cat > conftest.java << EOF
14048         public class conftest {
14049             int testmethod(int a, int b) {
14050                     return a + b;
14051             }
14052         }
14055         cat > conftest.xml << EOF
14056         <project name="conftest" default="conftest">
14057         <target name="conftest">
14058             <javac srcdir="." includes="conftest.java">
14059             </javac>
14060         </target>
14061         </project>
14064         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14065         if test $? = 0 -a -f ./conftest.class; then
14066             AC_MSG_RESULT([Ant works])
14067             if test -z "$WITH_ANT_HOME"; then
14068                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14069                 if test -z "$ANT_HOME"; then
14070                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14071                 fi
14072             else
14073                 ANT_HOME="$WITH_ANT_HOME"
14074             fi
14075         else
14076             echo "configure: Ant test failed" >&5
14077             cat conftest.java >&5
14078             cat conftest.xml >&5
14079             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14080         fi
14081         cd "$a_cwd"
14082         rm -fr conftest.dir
14083     fi
14084     if test -z "$ANT_HOME"; then
14085         ANT_HOME="NO_ANT_HOME"
14086     else
14087         PathFormat "$ANT_HOME"
14088         ANT_HOME="$formatted_path"
14089         PathFormat "$ANT"
14090         ANT="$formatted_path"
14091     fi
14093     dnl Checking for ant.jar
14094     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14095         AC_MSG_CHECKING([Ant lib directory])
14096         if test -f $ANT_HOME/lib/ant.jar; then
14097             ANT_LIB="$ANT_HOME/lib"
14098         else
14099             if test -f $ANT_HOME/ant.jar; then
14100                 ANT_LIB="$ANT_HOME"
14101             else
14102                 if test -f /usr/share/java/ant.jar; then
14103                     ANT_LIB=/usr/share/java
14104                 else
14105                     if test -f /usr/share/ant-core/lib/ant.jar; then
14106                         ANT_LIB=/usr/share/ant-core/lib
14107                     else
14108                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14109                             ANT_LIB="$ANT_HOME/lib/ant"
14110                         else
14111                             if test -f /usr/share/lib/ant/ant.jar; then
14112                                 ANT_LIB=/usr/share/lib/ant
14113                             else
14114                                 AC_MSG_ERROR([Ant libraries not found!])
14115                             fi
14116                         fi
14117                     fi
14118                 fi
14119             fi
14120         fi
14121         PathFormat "$ANT_LIB"
14122         ANT_LIB="$formatted_path"
14123         AC_MSG_RESULT([Ant lib directory found.])
14124     fi
14126     ant_minver=1.6.0
14127     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14129     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14130     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14131     ant_version_major=`echo $ant_version | cut -d. -f1`
14132     ant_version_minor=`echo $ant_version | cut -d. -f2`
14133     echo "configure: ant_version $ant_version " >&5
14134     echo "configure: ant_version_major $ant_version_major " >&5
14135     echo "configure: ant_version_minor $ant_version_minor " >&5
14136     if test "$ant_version_major" -ge "2"; then
14137         AC_MSG_RESULT([yes, $ant_version])
14138     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14139         AC_MSG_RESULT([yes, $ant_version])
14140     else
14141         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14142     fi
14144     rm -f conftest* core core.* *.core
14146 AC_SUBST(ANT)
14147 AC_SUBST(ANT_HOME)
14148 AC_SUBST(ANT_LIB)
14150 OOO_JUNIT_JAR=
14151 HAMCREST_JAR=
14152 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14153     AC_MSG_CHECKING([for JUnit 4])
14154     if test "$with_junit" = "yes"; then
14155         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14156             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14157         elif test -e /usr/share/java/junit4.jar; then
14158             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14159         else
14160            if test -e /usr/share/lib/java/junit.jar; then
14161               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14162            else
14163               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14164            fi
14165         fi
14166     else
14167         OOO_JUNIT_JAR=$with_junit
14168     fi
14169     if test "$_os" = "WINNT"; then
14170         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14171     fi
14172     printf 'import org.junit.Before;' > conftest.java
14173     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14174         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14175     else
14176         AC_MSG_ERROR(
14177 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14178  specify its pathname via --with-junit=..., or disable it via --without-junit])
14179     fi
14180     rm -f conftest.class conftest.java
14181     if test $OOO_JUNIT_JAR != ""; then
14182         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14183     fi
14185     AC_MSG_CHECKING([for included Hamcrest])
14186     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14187     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14188         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14189     else
14190         AC_MSG_RESULT([Not included])
14191         AC_MSG_CHECKING([for standalone hamcrest jar.])
14192         if test "$with_hamcrest" = "yes"; then
14193             if test -e /usr/share/lib/java/hamcrest.jar; then
14194                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14195             elif test -e /usr/share/java/hamcrest/core.jar; then
14196                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14197             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14198                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14199             else
14200                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14201             fi
14202         else
14203             HAMCREST_JAR=$with_hamcrest
14204         fi
14205         if test "$_os" = "WINNT"; then
14206             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14207         fi
14208         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14209             AC_MSG_RESULT([$HAMCREST_JAR])
14210         else
14211             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),
14212                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14213         fi
14214     fi
14215     rm -f conftest.class conftest.java
14217 AC_SUBST(OOO_JUNIT_JAR)
14218 AC_SUBST(HAMCREST_JAR)
14219 # set back LC_ALL to C after the java related tests...
14220 LC_ALL=C
14222 AC_SUBST(SCPDEFS)
14225 # check for wget and curl
14227 WGET=
14228 CURL=
14230 if test "$enable_fetch_external" != "no"; then
14232 CURL=`which curl 2>/dev/null`
14234 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14235     # wget new enough?
14236     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14237     if test $? -eq 0; then
14238         WGET=$i
14239         break
14240     fi
14241 done
14243 if test -z "$WGET" -a -z "$CURL"; then
14244     AC_MSG_ERROR([neither wget nor curl found!])
14249 AC_SUBST(WGET)
14250 AC_SUBST(CURL)
14253 # check for sha256sum
14255 SHA256SUM=
14257 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14258     eval "$i -a 256 --version" > /dev/null 2>&1
14259     ret=$?
14260     if test $ret -eq 0; then
14261         SHA256SUM="$i -a 256"
14262         break
14263     fi
14264 done
14266 if test -z "$SHA256SUM"; then
14267     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14268         eval "$i --version" > /dev/null 2>&1
14269         ret=$?
14270         if test $ret -eq 0; then
14271             SHA256SUM=$i
14272             break
14273         fi
14274     done
14277 if test -z "$SHA256SUM"; then
14278     AC_MSG_ERROR([no sha256sum found!])
14281 AC_SUBST(SHA256SUM)
14283 dnl ===================================================================
14284 dnl Dealing with l10n options
14285 dnl ===================================================================
14286 AC_MSG_CHECKING([which languages to be built])
14287 # get list of all languages
14288 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14289 # the sed command does the following:
14290 #   + if a line ends with a backslash, append the next line to it
14291 #   + adds " on the beginning of the value (after =)
14292 #   + adds " at the end of the value
14293 #   + removes en-US; we want to put it on the beginning
14294 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14295 [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)]
14296 ALL_LANGS="en-US $completelangiso"
14297 # check the configured localizations
14298 WITH_LANG="$with_lang"
14300 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14301 # (Norwegian is "nb" and "nn".)
14302 if test "$WITH_LANG" = "no"; then
14303     WITH_LANG=
14306 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14307     AC_MSG_RESULT([en-US])
14308 else
14309     AC_MSG_RESULT([$WITH_LANG])
14310     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14311     if test -z "$MSGFMT"; then
14312         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14313             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14314         elif test -x "/opt/lo/bin/msgfmt"; then
14315             MSGFMT="/opt/lo/bin/msgfmt"
14316         else
14317             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14318             if test -z "$MSGFMT"; then
14319                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14320             fi
14321         fi
14322     fi
14323     if test -z "$MSGUNIQ"; then
14324         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14325             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14326         elif test -x "/opt/lo/bin/msguniq"; then
14327             MSGUNIQ="/opt/lo/bin/msguniq"
14328         else
14329             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14330             if test -z "$MSGUNIQ"; then
14331                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14332             fi
14333         fi
14334     fi
14336 AC_SUBST(MSGFMT)
14337 AC_SUBST(MSGUNIQ)
14338 # check that the list is valid
14339 for lang in $WITH_LANG; do
14340     test "$lang" = "ALL" && continue
14341     # need to check for the exact string, so add space before and after the list of all languages
14342     for vl in $ALL_LANGS; do
14343         if test "$vl" = "$lang"; then
14344            break
14345         fi
14346     done
14347     if test "$vl" != "$lang"; then
14348         # if you're reading this - you prolly quoted your languages remove the quotes ...
14349         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14350     fi
14351 done
14352 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14353     echo $WITH_LANG | grep -q en-US
14354     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14356 # list with substituted ALL
14357 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14358 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14359 test "$WITH_LANG" = "en-US" && WITH_LANG=
14360 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14361     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14362     ALL_LANGS=`echo $ALL_LANGS qtz`
14364 AC_SUBST(ALL_LANGS)
14365 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14366 AC_SUBST(WITH_LANG)
14367 AC_SUBST(WITH_LANG_LIST)
14368 AC_SUBST(GIT_NEEDED_SUBMODULES)
14370 WITH_POOR_HELP_LOCALIZATIONS=
14371 if test -d "$SRC_ROOT/translations/source"; then
14372     for l in `ls -1 $SRC_ROOT/translations/source`; do
14373         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14374             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14375         fi
14376     done
14378 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14380 if test -n "$with_locales" -a "$with_locales" != ALL; then
14381     WITH_LOCALES="$with_locales"
14383     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14384     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14385     # config_host/config_locales.h.in
14386     for locale in $WITH_LOCALES; do
14387         lang=${locale%_*}
14389         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14391         case $lang in
14392         hi|mr*ne)
14393             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14394             ;;
14395         bg|ru)
14396             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14397             ;;
14398         esac
14399     done
14400 else
14401     AC_DEFINE(WITH_LOCALE_ALL)
14403 AC_SUBST(WITH_LOCALES)
14405 dnl git submodule update --reference
14406 dnl ===================================================================
14407 if test -n "${GIT_REFERENCE_SRC}"; then
14408     for repo in ${GIT_NEEDED_SUBMODULES}; do
14409         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14410             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14411         fi
14412     done
14414 AC_SUBST(GIT_REFERENCE_SRC)
14416 dnl git submodules linked dirs
14417 dnl ===================================================================
14418 if test -n "${GIT_LINK_SRC}"; then
14419     for repo in ${GIT_NEEDED_SUBMODULES}; do
14420         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14421             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14422         fi
14423     done
14425 AC_SUBST(GIT_LINK_SRC)
14427 dnl branding
14428 dnl ===================================================================
14429 AC_MSG_CHECKING([for alternative branding images directory])
14430 # initialize mapped arrays
14431 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14432 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14434 if test -z "$with_branding" -o "$with_branding" = "no"; then
14435     AC_MSG_RESULT([none])
14436     DEFAULT_BRAND_IMAGES="$brand_files"
14437 else
14438     if ! test -d $with_branding ; then
14439         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14440     else
14441         AC_MSG_RESULT([$with_branding])
14442         CUSTOM_BRAND_DIR="$with_branding"
14443         for lfile in $brand_files
14444         do
14445             if ! test -f $with_branding/$lfile ; then
14446                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14447                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14448             else
14449                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14450             fi
14451         done
14452         check_for_progress="yes"
14453     fi
14455 AC_SUBST([BRAND_INTRO_IMAGES])
14456 AC_SUBST([CUSTOM_BRAND_DIR])
14457 AC_SUBST([CUSTOM_BRAND_IMAGES])
14458 AC_SUBST([DEFAULT_BRAND_IMAGES])
14461 AC_MSG_CHECKING([for 'intro' progress settings])
14462 PROGRESSBARCOLOR=
14463 PROGRESSSIZE=
14464 PROGRESSPOSITION=
14465 PROGRESSFRAMECOLOR=
14466 PROGRESSTEXTCOLOR=
14467 PROGRESSTEXTBASELINE=
14469 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14470     source "$with_branding/progress.conf"
14471     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14472 else
14473     AC_MSG_RESULT([none])
14476 AC_SUBST(PROGRESSBARCOLOR)
14477 AC_SUBST(PROGRESSSIZE)
14478 AC_SUBST(PROGRESSPOSITION)
14479 AC_SUBST(PROGRESSFRAMECOLOR)
14480 AC_SUBST(PROGRESSTEXTCOLOR)
14481 AC_SUBST(PROGRESSTEXTBASELINE)
14484 dnl ===================================================================
14485 dnl Custom build version
14486 dnl ===================================================================
14487 AC_MSG_CHECKING([for extra build ID])
14488 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14489     EXTRA_BUILDID="$with_extra_buildid"
14491 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14492 if test -n "$EXTRA_BUILDID" ; then
14493     AC_MSG_RESULT([$EXTRA_BUILDID])
14494 else
14495     AC_MSG_RESULT([not set])
14497 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14499 OOO_VENDOR=
14500 AC_MSG_CHECKING([for vendor])
14501 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14502     OOO_VENDOR="$USERNAME"
14504     if test -z "$OOO_VENDOR"; then
14505         OOO_VENDOR="$USER"
14506     fi
14508     if test -z "$OOO_VENDOR"; then
14509         OOO_VENDOR="`id -u -n`"
14510     fi
14512     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14513 else
14514     OOO_VENDOR="$with_vendor"
14515     AC_MSG_RESULT([$OOO_VENDOR])
14517 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14518 AC_SUBST(OOO_VENDOR)
14520 if test "$_os" = "Android" ; then
14521     ANDROID_PACKAGE_NAME=
14522     AC_MSG_CHECKING([for Android package name])
14523     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14524         if test -n "$ENABLE_DEBUG"; then
14525             # Default to the package name that makes ndk-gdb happy.
14526             ANDROID_PACKAGE_NAME="org.libreoffice"
14527         else
14528             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14529         fi
14531         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14532     else
14533         ANDROID_PACKAGE_NAME="$with_android_package_name"
14534         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14535     fi
14536     AC_SUBST(ANDROID_PACKAGE_NAME)
14539 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14540 if test "$with_compat_oowrappers" = "yes"; then
14541     WITH_COMPAT_OOWRAPPERS=TRUE
14542     AC_MSG_RESULT(yes)
14543 else
14544     WITH_COMPAT_OOWRAPPERS=
14545     AC_MSG_RESULT(no)
14547 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14549 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14550 AC_MSG_CHECKING([for install dirname])
14551 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14552     INSTALLDIRNAME="$with_install_dirname"
14554 AC_MSG_RESULT([$INSTALLDIRNAME])
14555 AC_SUBST(INSTALLDIRNAME)
14557 AC_MSG_CHECKING([for prefix])
14558 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14559 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14560 PREFIXDIR="$prefix"
14561 AC_MSG_RESULT([$PREFIXDIR])
14562 AC_SUBST(PREFIXDIR)
14564 LIBDIR=[$(eval echo $(eval echo $libdir))]
14565 AC_SUBST(LIBDIR)
14567 DATADIR=[$(eval echo $(eval echo $datadir))]
14568 AC_SUBST(DATADIR)
14570 MANDIR=[$(eval echo $(eval echo $mandir))]
14571 AC_SUBST(MANDIR)
14573 DOCDIR=[$(eval echo $(eval echo $docdir))]
14574 AC_SUBST(DOCDIR)
14576 BINDIR=[$(eval echo $(eval echo $bindir))]
14577 AC_SUBST(BINDIR)
14579 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14580 AC_SUBST(INSTALLDIR)
14582 TESTINSTALLDIR="${BUILDDIR}/test-install"
14583 AC_SUBST(TESTINSTALLDIR)
14586 # ===================================================================
14587 # OAuth2 id and secrets
14588 # ===================================================================
14590 AC_MSG_CHECKING([for Google Drive client id and secret])
14591 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14592     AC_MSG_RESULT([not set])
14593     GDRIVE_CLIENT_ID="\"\""
14594     GDRIVE_CLIENT_SECRET="\"\""
14595 else
14596     AC_MSG_RESULT([set])
14597     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14598     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14600 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14601 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14603 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14604 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14605     AC_MSG_RESULT([not set])
14606     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14607     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14608 else
14609     AC_MSG_RESULT([set])
14610     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14611     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14613 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14614 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14616 AC_MSG_CHECKING([for OneDrive client id and secret])
14617 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14618     AC_MSG_RESULT([not set])
14619     ONEDRIVE_CLIENT_ID="\"\""
14620     ONEDRIVE_CLIENT_SECRET="\"\""
14621 else
14622     AC_MSG_RESULT([set])
14623     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14624     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14626 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14627 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14630 dnl ===================================================================
14631 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14632 dnl --enable-dependency-tracking configure option
14633 dnl ===================================================================
14634 AC_MSG_CHECKING([whether to enable dependency tracking])
14635 if test "$enable_dependency_tracking" = "no"; then
14636     nodep=TRUE
14637     AC_MSG_RESULT([no])
14638 else
14639     AC_MSG_RESULT([yes])
14641 AC_SUBST(nodep)
14643 dnl ===================================================================
14644 dnl Number of CPUs to use during the build
14645 dnl ===================================================================
14646 AC_MSG_CHECKING([for number of processors to use])
14647 # plain --with-parallelism is just the default
14648 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14649     if test "$with_parallelism" = "no"; then
14650         PARALLELISM=0
14651     else
14652         PARALLELISM=$with_parallelism
14653     fi
14654 else
14655     if test "$enable_icecream" = "yes"; then
14656         PARALLELISM="40"
14657     else
14658         case `uname -s` in
14660         Darwin|FreeBSD|NetBSD|OpenBSD)
14661             PARALLELISM=`sysctl -n hw.ncpu`
14662             ;;
14664         Linux)
14665             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14666         ;;
14667         # what else than above does profit here *and* has /proc?
14668         *)
14669             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14670             ;;
14671         esac
14673         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14674         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14675     fi
14678 if test $PARALLELISM -eq 0; then
14679     AC_MSG_RESULT([explicit make -j option needed])
14680 else
14681     AC_MSG_RESULT([$PARALLELISM])
14683 AC_SUBST(PARALLELISM)
14686 # Set up ILIB for MSVC build
14688 ILIB1=
14689 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14690     ILIB="."
14691     if test -n "$JAVA_HOME"; then
14692         ILIB="$ILIB;$JAVA_HOME/lib"
14693     fi
14694     ILIB1=-link
14695     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14696     ILIB="$ILIB;$formatted_path"
14697     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14698     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14699     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14700     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14701         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14702         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14703     fi
14704     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14705     ucrtlibpath_formatted=$formatted_path
14706     ILIB="$ILIB;$ucrtlibpath_formatted"
14707     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14708     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14709         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14710         ILIB="$ILIB;$formatted_path"
14711     else
14712         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14713         ILIB="$ILIB;$formatted_path"
14714     fi
14716     if test "$cross_compiling" != "yes"; then
14717         ILIB_FOR_BUILD="$ILIB"
14718     fi
14720 AC_SUBST(ILIB)
14721 AC_SUBST(ILIB_FOR_BUILD)
14723 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14724 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14725 dnl from consteval constructor initializing const variable",
14726 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14727 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14728 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14729 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14730 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14731 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14732 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14733 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14734 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14735 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14736 AC_LANG_PUSH([C++])
14737 save_CXX=$CXX
14738 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14739     CXX="env LIB=$ILIB $CXX"
14741 save_CXXFLAGS=$CXXFLAGS
14742 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14743 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14744         struct S {
14745             consteval S() { i = 1; }
14746             int i = 0;
14747         };
14748         S const s;
14750         struct S1 {
14751              int a;
14752              consteval S1(int n): a(n) {}
14753         };
14754         struct S2 {
14755             S1 x;
14756             S2(): x(0) {}
14757         };
14759         struct S3 {
14760             consteval S3() {}
14761             union {
14762                 int a;
14763                 unsigned b = 0;
14764             };
14765         };
14766         void f() { S3(); }
14768         struct S4 { consteval S4() = default; };
14769         void f4(bool b) { b ? S4() : S4(); }
14771         struct S5 {
14772             consteval S5() { c = 0; }
14773             char * f() { return &c; }
14774             union {
14775                 char c;
14776                 int i;
14777             };
14778         };
14779         auto s5 = S5().f();
14780     ], [
14781         return (s.i == 1) ? 0 : 1;
14782     ])], [
14783         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14784         AC_MSG_RESULT([yes])
14785     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14786 CXX=$save_CXX
14787 CXXFLAGS=$save_CXXFLAGS
14788 AC_LANG_POP([C++])
14790 # ===================================================================
14791 # Creating bigger shared library to link against
14792 # ===================================================================
14793 AC_MSG_CHECKING([whether to create huge library])
14794 MERGELIBS=
14796 if test $_os = iOS -o $_os = Android; then
14797     # Never any point in mergelibs for these as we build just static
14798     # libraries anyway...
14799     enable_mergelibs=no
14802 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14803     if test $_os != Linux -a $_os != WINNT; then
14804         add_warning "--enable-mergelibs is not tested for this platform"
14805     fi
14806     MERGELIBS="TRUE"
14807     AC_MSG_RESULT([yes])
14808     AC_DEFINE(ENABLE_MERGELIBS)
14809 else
14810     AC_MSG_RESULT([no])
14812 AC_SUBST([MERGELIBS])
14814 dnl ===================================================================
14815 dnl icerun is a wrapper that stops us spawning tens of processes
14816 dnl locally - for tools that can't be executed on the compile cluster
14817 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14818 dnl ===================================================================
14819 AC_MSG_CHECKING([whether to use icerun wrapper])
14820 ICECREAM_RUN=
14821 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14822     ICECREAM_RUN=icerun
14823     AC_MSG_RESULT([yes])
14824 else
14825     AC_MSG_RESULT([no])
14827 AC_SUBST(ICECREAM_RUN)
14829 dnl ===================================================================
14830 dnl Setup the ICECC_VERSION for the build the same way it was set for
14831 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14832 dnl ===================================================================
14833 x_ICECC_VERSION=[\#]
14834 if test -n "$ICECC_VERSION" ; then
14835     x_ICECC_VERSION=
14837 AC_SUBST(x_ICECC_VERSION)
14838 AC_SUBST(ICECC_VERSION)
14840 dnl ===================================================================
14842 AC_MSG_CHECKING([MPL subset])
14843 MPL_SUBSET=
14844 LICENSE="LGPL"
14846 if test "$enable_mpl_subset" = "yes"; then
14847     mpl_error_string=
14848     newline=$'\n    *'
14849     warn_report=false
14850     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14851         warn_report=true
14852     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14853         warn_report=true
14854     fi
14855     if test "$warn_report" = "true"; then
14856         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14857     fi
14858     if test "x$enable_postgresql_sdbc" != "xno"; then
14859         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14860     fi
14861     if test "$enable_lotuswordpro" = "yes"; then
14862         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14863     fi
14864     if test -n "$ENABLE_POPPLER"; then
14865         if test "x$SYSTEM_POPPLER" = "x"; then
14866             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14867         fi
14868     fi
14869     # cf. m4/libo_check_extension.m4
14870     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14871         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14872     fi
14873     denied_themes=
14874     filtered_themes=
14875     for theme in $WITH_THEMES; do
14876         case $theme in
14877         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14878             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14879         *)
14880             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14881         esac
14882     done
14883     if test "x$denied_themes" != "x"; then
14884         if test "x$filtered_themes" == "x"; then
14885             filtered_themes="colibre"
14886         fi
14887         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14888     fi
14890     ENABLE_OPENGL_TRANSITIONS=
14892     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14893         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14894     fi
14896     if test "x$mpl_error_string" != "x"; then
14897         AC_MSG_ERROR([$mpl_error_string])
14898     fi
14900     MPL_SUBSET="TRUE"
14901     LICENSE="MPL-2.0"
14902     AC_DEFINE(MPL_HAVE_SUBSET)
14903     AC_MSG_RESULT([only])
14904 else
14905     AC_MSG_RESULT([no restrictions])
14907 AC_SUBST(MPL_SUBSET)
14908 AC_SUBST(LICENSE)
14910 dnl ===================================================================
14912 AC_MSG_CHECKING([formula logger])
14913 ENABLE_FORMULA_LOGGER=
14915 if test "x$enable_formula_logger" = "xyes"; then
14916     AC_MSG_RESULT([yes])
14917     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14918     ENABLE_FORMULA_LOGGER=TRUE
14919 elif test -n "$ENABLE_DBGUTIL" ; then
14920     AC_MSG_RESULT([yes])
14921     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14922     ENABLE_FORMULA_LOGGER=TRUE
14923 else
14924     AC_MSG_RESULT([no])
14927 AC_SUBST(ENABLE_FORMULA_LOGGER)
14929 dnl ===================================================================
14930 dnl Checking for active Antivirus software.
14931 dnl ===================================================================
14933 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14934     AC_MSG_CHECKING([for active Antivirus software])
14935     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14936     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14937     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14938         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14939             AC_MSG_RESULT([found])
14940             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14941             echo $EICAR_STRING > $SRC_ROOT/eicar
14942             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14943             rm $SRC_ROOT/eicar
14944             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14945                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14946             fi
14947             echo $EICAR_STRING > $BUILDDIR/eicar
14948             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14949             rm $BUILDDIR/eicar
14950             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14951                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14952             fi
14953             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"
14954         else
14955             AC_MSG_RESULT([not found])
14956         fi
14957     else
14958         AC_MSG_RESULT([n/a])
14959     fi
14962 dnl ===================================================================
14964 AC_MSG_CHECKING([for coredumpctl support])
14965 if test -z "$with_coredumpctl" && test $_os != Linux; then
14966     with_coredumpctl=no
14968 if test "$with_coredumpctl" = no; then
14969     WITH_COREDUMPCTL=
14970 else
14971     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14972     AC_PATH_PROG(JQ, jq)
14973     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14974     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14975     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14976         || test -z "$SYSTEMD_RUN"
14977     then
14978         if test -z "$with_coredumpctl"; then
14979             WITH_COREDUMPCTL=
14980         else
14981             if test -z "$COREDUMPCTL"; then
14982                 AC_MSG_ERROR([coredumpctl not found])
14983             fi
14984             if test -z "$JQ"; then
14985                 AC_MSG_ERROR([jq not found])
14986             fi
14987             if test -z "$SYSTEMD_ESCAPE"; then
14988                 AC_MSG_ERROR([systemd-escape not found])
14989             fi
14990             if test -z "$SYSTEMD_RUN"; then
14991                 AC_MSG_ERROR([systemd-run not found])
14992             fi
14993         fi
14994     else
14995         WITH_COREDUMPCTL=TRUE
14996     fi
14998 if test -z "$WITH_COREDUMPCTL"; then
14999     AC_MSG_RESULT([no])
15000 else
15001     AC_MSG_RESULT([yes])
15003 AC_SUBST(COREDUMPCTL)
15004 AC_SUBST(JQ)
15005 AC_SUBST(SYSTEMD_ESCAPE)
15006 AC_SUBST(SYSTEMD_RUN)
15007 AC_SUBST(WITH_COREDUMPCTL)
15009 dnl ===================================================================
15010 dnl Setting up the environment.
15011 dnl ===================================================================
15012 AC_MSG_NOTICE([setting up the build environment variables...])
15014 AC_SUBST(COMPATH)
15016 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15017     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15018         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15019         ATL_INCLUDE="$COMPATH/atlmfc/include"
15020     elif test -d "$COMPATH/atlmfc/lib"; then
15021         ATL_LIB="$COMPATH/atlmfc/lib"
15022         ATL_INCLUDE="$COMPATH/atlmfc/include"
15023     else
15024         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15025         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15026     fi
15027     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15028     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15029     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15032 if test "$build_os" = "cygwin"; then
15033     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15034     PathFormat "/usr/bin/find.exe"
15035     FIND="$formatted_path"
15036     PathFormat "/usr/bin/sort.exe"
15037     SORT="$formatted_path"
15038     PathFormat "/usr/bin/grep.exe"
15039     WIN_GREP="$formatted_path"
15040     PathFormat "/usr/bin/ls.exe"
15041     WIN_LS="$formatted_path"
15042     PathFormat "/usr/bin/touch.exe"
15043     WIN_TOUCH="$formatted_path"
15044 else
15045     FIND=find
15046     SORT=sort
15049 AC_SUBST(ATL_INCLUDE)
15050 AC_SUBST(ATL_LIB)
15051 AC_SUBST(FIND)
15052 AC_SUBST(SORT)
15053 AC_SUBST(WIN_GREP)
15054 AC_SUBST(WIN_LS)
15055 AC_SUBST(WIN_TOUCH)
15057 AC_SUBST(BUILD_TYPE)
15059 AC_SUBST(SOLARINC)
15061 PathFormat "$PERL"
15062 PERL="$formatted_path"
15063 AC_SUBST(PERL)
15065 if test -n "$TMPDIR"; then
15066     TEMP_DIRECTORY="$TMPDIR"
15067 else
15068     TEMP_DIRECTORY="/tmp"
15070 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15071 if test "$build_os" = "cygwin"; then
15072     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15073     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15075 AC_SUBST(TEMP_DIRECTORY)
15076 AC_SUBST(CYGWIN_BASH)
15078 # setup the PATH for the environment
15079 if test -n "$LO_PATH_FOR_BUILD"; then
15080     LO_PATH="$LO_PATH_FOR_BUILD"
15081     case "$host_os" in
15082     cygwin*|wsl*)
15083         pathmunge "$MSVC_HOST_PATH" "before"
15084         ;;
15085     esac
15086 else
15087     LO_PATH="$PATH"
15089     case "$host_os" in
15091     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15092         if test "$ENABLE_JAVA" != ""; then
15093             pathmunge "$JAVA_HOME/bin" "after"
15094         fi
15095         ;;
15097     cygwin*|wsl*)
15098         # Win32 make needs native paths
15099         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15100             LO_PATH=`cygpath -p -m "$PATH"`
15101         fi
15102         if test "$WIN_BUILD_ARCH" = "x64"; then
15103             # needed for msi packaging
15104             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15105         fi
15106         if test "$WIN_BUILD_ARCH" = "arm64"; then
15107             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15108             # the x86 ones probably would work just as well...
15109             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15110         fi
15111         # .NET 4.6 and higher don't have bin directory
15112         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15113             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15114         fi
15115         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15116         pathmunge "$CSC_PATH" "before"
15117         pathmunge "$MIDL_PATH" "before"
15118         pathmunge "$AL_PATH" "before"
15119         pathmunge "$MSVC_MULTI_PATH" "before"
15120         pathmunge "$MSVC_BUILD_PATH" "before"
15121         if test -n "$MSBUILD_PATH" ; then
15122             pathmunge "$MSBUILD_PATH" "before"
15123         fi
15124         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15125         if test "$ENABLE_JAVA" != ""; then
15126             if test -d "$JAVA_HOME/jre/bin/client"; then
15127                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15128             fi
15129             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15130                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15131             fi
15132             pathmunge "$JAVA_HOME/bin" "before"
15133         fi
15134         pathmunge "$MSVC_HOST_PATH" "before"
15135         ;;
15137     solaris*)
15138         pathmunge "/usr/css/bin" "before"
15139         if test "$ENABLE_JAVA" != ""; then
15140             pathmunge "$JAVA_HOME/bin" "after"
15141         fi
15142         ;;
15143     esac
15146 AC_SUBST(LO_PATH)
15148 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15149 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15150     x_LO_ELFCHECK_ALLOWLIST=
15151 else
15152     x_LO_ELFCHECK_ALLOWLIST=[\#]
15154 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15155 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15157 libo_FUZZ_SUMMARY
15159 # Generate a configuration sha256 we can use for deps
15160 if test -f config_host.mk; then
15161     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15163 if test -f config_host_lang.mk; then
15164     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15167 CFLAGS=$my_original_CFLAGS
15168 CXXFLAGS=$my_original_CXXFLAGS
15169 CPPFLAGS=$my_original_CPPFLAGS
15171 AC_CONFIG_LINKS([include:include])
15173 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15174 # BUILD platform configuration] - otherwise breaks cross building
15175 AC_CONFIG_FILES([config_host.mk
15176                  config_host_lang.mk
15177                  Makefile
15178                  bin/bffvalidator.sh
15179                  bin/odfvalidator.sh
15180                  bin/officeotron.sh
15181                  instsetoo_native/util/openoffice.lst
15182                  sysui/desktop/macosx/Info.plist
15183                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15184                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15185                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15187 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15188 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15189 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15190 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15191 AC_CONFIG_HEADERS([config_host/config_clang.h])
15192 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15193 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15194 AC_CONFIG_HEADERS([config_host/config_eot.h])
15195 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15196 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15197 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15198 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15199 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15200 AC_CONFIG_HEADERS([config_host/config_features.h])
15201 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15202 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15203 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15204 AC_CONFIG_HEADERS([config_host/config_folders.h])
15205 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15206 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15207 AC_CONFIG_HEADERS([config_host/config_gio.h])
15208 AC_CONFIG_HEADERS([config_host/config_global.h])
15209 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15210 AC_CONFIG_HEADERS([config_host/config_java.h])
15211 AC_CONFIG_HEADERS([config_host/config_langs.h])
15212 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15213 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15214 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15215 AC_CONFIG_HEADERS([config_host/config_locales.h])
15216 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15217 AC_CONFIG_HEADERS([config_host/config_oox.h])
15218 AC_CONFIG_HEADERS([config_host/config_options.h])
15219 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15220 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15221 AC_CONFIG_HEADERS([config_host/config_skia.h])
15222 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15223 AC_CONFIG_HEADERS([config_host/config_validation.h])
15224 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15225 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15226 AC_CONFIG_HEADERS([config_host/config_version.h])
15227 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15228 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15229 AC_CONFIG_HEADERS([config_host/config_python.h])
15230 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15231 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15232 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15233 AC_OUTPUT
15235 if test "$CROSS_COMPILING" = TRUE; then
15236     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15239 # touch the config timestamp file
15240 if test ! -f config_host.mk.stamp; then
15241     echo > config_host.mk.stamp
15242 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15243     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15244 else
15245     echo > config_host.mk.stamp
15248 # touch the config lang timestamp file
15249 if test ! -f config_host_lang.mk.stamp; then
15250     echo > config_host_lang.mk.stamp
15251 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15252     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15253 else
15254     echo > config_host_lang.mk.stamp
15258 if test \( "$STALE_MAKE" = "TRUE" \) \
15259         -a "$build_os" = "cygwin"; then
15261 cat << _EOS
15262 ****************************************************************************
15263 WARNING:
15264 Your make version is known to be horribly slow, and hard to debug
15265 problems with. To get a reasonably functional make please do:
15267 to install a pre-compiled binary make for Win32
15269  mkdir -p /opt/lo/bin
15270  cd /opt/lo/bin
15271  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15272  cp make-4.2.1-msvc.exe make
15273  chmod +x make
15275 to install from source:
15276 place yourself in a working directory of you choice.
15278  git clone git://git.savannah.gnu.org/make.git
15280  [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"]
15281  set PATH=%PATH%;C:\Cygwin\bin
15282  [or Cygwin64, if that is what you have]
15283  cd path-to-make-repo-you-cloned-above
15284  build_w32.bat --without-guile
15286 should result in a WinRel/gnumake.exe.
15287 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15289 Then re-run autogen.sh
15291 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15292 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15294 _EOS
15298 cat << _EOF
15299 ****************************************************************************
15301 To show information on various make targets and make flags, run:
15302 $GNUMAKE help
15304 To just build, run:
15305 $GNUMAKE
15307 _EOF
15309 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15310     cat << _EOF
15311 After the build has finished successfully, you can immediately run what you built using the command:
15312 _EOF
15314     if test $_os = Darwin; then
15315         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15316     else
15317         echo instdir/program/soffice
15318     fi
15319     cat << _EOF
15321 If you want to run the unit tests, run:
15322 $GNUMAKE check
15324 _EOF
15327 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15328     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15329     cat "$WARNINGS_FILE_FOR_BUILD"
15330     echo
15333 if test -s "$WARNINGS_FILE"; then
15334     echo "HOST config ($WARNINGS_FILE)"
15335     cat "$WARNINGS_FILE"
15338 # Remove unneeded emconfigure artifacts
15339 rm -f a.out a.wasm a.out.js a.out.wasm
15341 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: