tdf#159342 switch off lists in clone formatting
[LibreOffice.git] / configure.ac
blob6a85728e22482a46fdb2c3fd31752ee1ecebc663
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 command -v 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=`command -v git`
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=`command -v gpg`
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 "$(command -v "$(cygpath -u $a)")")"
571                     GNUMAKE_WIN_NATIVE="TRUE"
572                 else
573                     GNUMAKE=`command -v $a`
574                 fi
575             else
576                 GNUMAKE=`command -v $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 ! command -v 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     dnl Some build-side things are conditional on "EMSCRIPTEN in BUILD_TYPE_FOR_HOST":
1427     BUILD_TYPE="$BUILD_TYPE EMSCRIPTEN"
1429 AC_SUBST(EMSDK_FILE_PACKAGER)
1431 ###############################################################################
1432 # Extensions switches --enable/--disable
1433 ###############################################################################
1434 # By default these should be enabled unless having extra dependencies.
1435 # If there is extra dependency over configure options then the enable should
1436 # be automagic based on whether the requiring feature is enabled or not.
1437 # All this options change anything only with --enable-extension-integration.
1439 # The name of this option and its help string makes it sound as if
1440 # extensions are built anyway, just not integrated in the installer,
1441 # if you use --disable-extension-integration. Is that really the
1442 # case?
1444 AC_ARG_ENABLE(ios-simulator,
1445     AS_HELP_STRING([--enable-ios-simulator],
1446         [build for iOS simulator])
1449 libo_FUZZ_ARG_ENABLE(extension-integration,
1450     AS_HELP_STRING([--disable-extension-integration],
1451         [Disable integration of the built extensions in the installer of the
1452          product. Use this switch to disable the integration.])
1455 AC_ARG_ENABLE(avmedia,
1456     AS_HELP_STRING([--disable-avmedia],
1457         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1458 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1460 AC_ARG_ENABLE(database-connectivity,
1461     AS_HELP_STRING([--disable-database-connectivity],
1462         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1465 # This doesn't mean not building (or "integrating") extensions
1466 # (although it probably should; i.e. it should imply
1467 # --disable-extension-integration I guess), it means not supporting
1468 # any extension mechanism at all
1469 libo_FUZZ_ARG_ENABLE(extensions,
1470     AS_HELP_STRING([--disable-extensions],
1471         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1474 AC_ARG_ENABLE(scripting,
1475     AS_HELP_STRING([--disable-scripting],
1476         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1477 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1479 # This is mainly for Android and iOS, but could potentially be used in some
1480 # special case otherwise, too, so factored out as a separate setting
1482 AC_ARG_ENABLE(dynamic-loading,
1483     AS_HELP_STRING([--disable-dynamic-loading],
1484         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1487 libo_FUZZ_ARG_ENABLE(report-builder,
1488     AS_HELP_STRING([--disable-report-builder],
1489         [Disable the Report Builder.])
1492 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1493     AS_HELP_STRING([--enable-ext-wiki-publisher],
1494         [Enable the Wiki Publisher extension.])
1497 libo_FUZZ_ARG_ENABLE(lpsolve,
1498     AS_HELP_STRING([--disable-lpsolve],
1499         [Disable compilation of the lp solve solver ])
1501 libo_FUZZ_ARG_ENABLE(coinmp,
1502     AS_HELP_STRING([--disable-coinmp],
1503         [Disable compilation of the CoinMP solver ])
1506 libo_FUZZ_ARG_ENABLE(pdfimport,
1507     AS_HELP_STRING([--disable-pdfimport],
1508         [Disable building the PDF import feature.])
1511 libo_FUZZ_ARG_ENABLE(pdfium,
1512     AS_HELP_STRING([--disable-pdfium],
1513         [Disable building PDFium. Results in unsecure PDF signature verification.])
1516 libo_FUZZ_ARG_ENABLE(skia,
1517     AS_HELP_STRING([--disable-skia],
1518         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1521 ###############################################################################
1523 dnl ---------- *** ----------
1525 libo_FUZZ_ARG_ENABLE(mergelibs,
1526     AS_HELP_STRING([--enable-mergelibs],
1527         [Merge several of the smaller libraries into one big, "merged", one.])
1530 libo_FUZZ_ARG_ENABLE(breakpad,
1531     AS_HELP_STRING([--enable-breakpad],
1532         [Enables breakpad for crash reporting.])
1535 libo_FUZZ_ARG_ENABLE(crashdump,
1536     AS_HELP_STRING([--disable-crashdump],
1537         [Disable dump.ini and dump-file, when --enable-breakpad])
1540 AC_ARG_ENABLE(fetch-external,
1541     AS_HELP_STRING([--disable-fetch-external],
1542         [Disables fetching external tarballs from web sources.])
1545 AC_ARG_ENABLE(fuzzers,
1546     AS_HELP_STRING([--enable-fuzzers],
1547         [Enables building libfuzzer targets for fuzz testing.])
1550 libo_FUZZ_ARG_ENABLE(pch,
1551     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1552         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1553          Using 'system' will include only external headers, 'base' will add also headers
1554          from base modules, 'normal' will also add all headers except from the module built,
1555          'full' will use all suitable headers even from a module itself.])
1558 libo_FUZZ_ARG_ENABLE(epm,
1559     AS_HELP_STRING([--enable-epm],
1560         [LibreOffice includes self-packaging code, that requires epm, however epm is
1561          useless for large scale package building.])
1564 libo_FUZZ_ARG_ENABLE(odk,
1565     AS_HELP_STRING([--enable-odk],
1566         [Enable building the Office Development Kit, the part that extensions need to build against])
1569 AC_ARG_ENABLE(mpl-subset,
1570     AS_HELP_STRING([--enable-mpl-subset],
1571         [Don't compile any pieces which are not MPL or more liberally licensed])
1574 libo_FUZZ_ARG_ENABLE(evolution2,
1575     AS_HELP_STRING([--enable-evolution2],
1576         [Allows the built-in evolution 2 addressbook connectivity build to be
1577          enabled.])
1580 AC_ARG_ENABLE(avahi,
1581     AS_HELP_STRING([--enable-avahi],
1582         [Determines whether to use Avahi to advertise Impress to remote controls.])
1585 libo_FUZZ_ARG_ENABLE(werror,
1586     AS_HELP_STRING([--enable-werror],
1587         [Turn warnings to errors. (Has no effect in modules where the treating
1588          of warnings as errors is disabled explicitly.)]),
1591 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1592     AS_HELP_STRING([--enable-assert-always-abort],
1593         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1596 libo_FUZZ_ARG_ENABLE(dbgutil,
1597     AS_HELP_STRING([--enable-dbgutil],
1598         [Provide debugging support from --enable-debug and include additional debugging
1599          utilities such as object counting or more expensive checks.
1600          This is the recommended option for developers.
1601          Note that this makes the build ABI incompatible, it is not possible to mix object
1602          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1604 libo_FUZZ_ARG_ENABLE(debug,
1605     AS_HELP_STRING([--enable-debug],
1606         [Include debugging information, disable compiler optimization and inlining plus
1607          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1609 libo_FUZZ_ARG_ENABLE(split-debug,
1610     AS_HELP_STRING([--disable-split-debug],
1611         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1612          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1614 libo_FUZZ_ARG_ENABLE(gdb-index,
1615     AS_HELP_STRING([--disable-gdb-index],
1616         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1617          The feature requires a linker that supports the --gdb-index option.]))
1619 libo_FUZZ_ARG_ENABLE(sal-log,
1620     AS_HELP_STRING([--enable-sal-log],
1621         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1623 libo_FUZZ_ARG_ENABLE(symbols,
1624     AS_HELP_STRING([--enable-symbols],
1625         [Generate debug information.
1626          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1627          otherwise. It is possible to explicitly specify gbuild build targets
1628          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1629          everything in the directory; there is no ordering, more specific overrides
1630          more general, and disabling takes precedence).
1631          Example: --enable-symbols="all -sw/ -Library_sc".]))
1633 libo_FUZZ_ARG_ENABLE(optimized,
1634     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1635         [Whether to compile with optimization flags.
1636          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1637          otherwise. Using 'debug' will try to use only optimizations that should
1638          not interfere with debugging. For Emscripten we default to optimized (-O1)
1639          debug build, as otherwise binaries become too large.]))
1641 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1642     AS_HELP_STRING([--disable-runtime-optimizations],
1643         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1644          JVM JIT) that are known to interact badly with certain dynamic analysis
1645          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1646          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1647          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1649 AC_ARG_WITH(valgrind,
1650     AS_HELP_STRING([--with-valgrind],
1651         [Make availability of Valgrind headers a hard requirement.]))
1653 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1654     AS_HELP_STRING([--enable-compiler-plugins],
1655         [Enable compiler plugins that will perform additional checks during
1656          building. Enabled automatically by --enable-dbgutil.
1657          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1658 COMPILER_PLUGINS_DEBUG=
1659 if test "$enable_compiler_plugins" = debug; then
1660     enable_compiler_plugins=yes
1661     COMPILER_PLUGINS_DEBUG=TRUE
1664 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1665     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1666         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1667          relevant in the --disable-compiler-plugins case.]))
1669 libo_FUZZ_ARG_ENABLE(ooenv,
1670     AS_HELP_STRING([--enable-ooenv],
1671         [Enable ooenv for the instdir installation.]))
1673 AC_ARG_ENABLE(lto,
1674     AS_HELP_STRING([--enable-lto],
1675         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1676          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1677          linker.)]))
1679 AC_ARG_ENABLE(python,
1680     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1681         [Enables or disables Python support at run-time.
1682          Also specifies what Python to use at build-time.
1683          'fully-internal' even forces the internal version for uses of Python
1684          during the build.
1685          On macOS the only choices are
1686          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1687          ]))
1689 libo_FUZZ_ARG_ENABLE(gtk3,
1690     AS_HELP_STRING([--disable-gtk3],
1691         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1692 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1694 AC_ARG_ENABLE(gtk4,
1695     AS_HELP_STRING([--enable-gtk4],
1696         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1698 AC_ARG_ENABLE(atspi-tests,
1699     AS_HELP_STRING([--disable-atspi-tests],
1700         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1702 AC_ARG_ENABLE(introspection,
1703     AS_HELP_STRING([--enable-introspection],
1704         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1705          Linux distributions.)]))
1707 AC_ARG_ENABLE(split-app-modules,
1708     AS_HELP_STRING([--enable-split-app-modules],
1709         [Split file lists for app modules, e.g. base, calc.
1710          Has effect only with make distro-pack-install]),
1713 AC_ARG_ENABLE(split-opt-features,
1714     AS_HELP_STRING([--enable-split-opt-features],
1715         [Split file lists for some optional features, e.g. pyuno, testtool.
1716          Has effect only with make distro-pack-install]),
1719 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1720     AS_HELP_STRING([--disable-cairo-canvas],
1721         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1724 libo_FUZZ_ARG_ENABLE(dbus,
1725     AS_HELP_STRING([--disable-dbus],
1726         [Determines whether to enable features that depend on dbus.
1727          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1728 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1730 libo_FUZZ_ARG_ENABLE(sdremote,
1731     AS_HELP_STRING([--disable-sdremote],
1732         [Determines whether to enable Impress remote control (i.e. the server component).]),
1733 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1735 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1736     AS_HELP_STRING([--disable-sdremote-bluetooth],
1737         [Determines whether to build sdremote with bluetooth support.
1738          Requires dbus on Linux.]))
1740 libo_FUZZ_ARG_ENABLE(gio,
1741     AS_HELP_STRING([--disable-gio],
1742         [Determines whether to use the GIO support.]),
1743 ,test "${enable_gio+set}" = set || enable_gio=yes)
1745 AC_ARG_ENABLE(qt5,
1746     AS_HELP_STRING([--enable-qt5],
1747         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1748          available.]),
1751 AC_ARG_ENABLE(qt6,
1752     AS_HELP_STRING([--enable-qt6],
1753         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1754          available.]),
1757 AC_ARG_ENABLE(kf5,
1758     AS_HELP_STRING([--enable-kf5],
1759         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1760          KF5 are available.]),
1763 AC_ARG_ENABLE(kf6,
1764     AS_HELP_STRING([--enable-kf6],
1765         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1766          KF6 are available.]),
1770 AC_ARG_ENABLE(gtk3_kde5,
1771     AS_HELP_STRING([--enable-gtk3-kde5],
1772         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1773          platforms where Gtk3, Qt5 and Plasma is available.]),
1776 AC_ARG_ENABLE(gen,
1777     AS_HELP_STRING([--enable-gen],
1778         [To select the gen backend in case of --disable-dynamic-loading.
1779          Per default auto-enabled when X11 is used.]),
1780 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1782 AC_ARG_ENABLE(gui,
1783     AS_HELP_STRING([--disable-gui],
1784         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1785 ,enable_gui=yes)
1787 libo_FUZZ_ARG_ENABLE(randr,
1788     AS_HELP_STRING([--disable-randr],
1789         [Disable RandR support in the vcl project.]),
1790 ,test "${enable_randr+set}" = set || enable_randr=yes)
1792 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1793     AS_HELP_STRING([--disable-gstreamer-1-0],
1794         [Disable building with the gstreamer 1.0 avmedia backend.]),
1795 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1797 libo_FUZZ_ARG_ENABLE([eot],
1798     [AS_HELP_STRING([--enable-eot],
1799         [Enable support for Embedded OpenType fonts.])],
1800 ,test "${enable_eot+set}" = set || enable_eot=no)
1802 libo_FUZZ_ARG_ENABLE(cve-tests,
1803     AS_HELP_STRING([--disable-cve-tests],
1804         [Prevent CVE tests to be executed]),
1807 AC_ARG_ENABLE(build-opensymbol,
1808     AS_HELP_STRING([--enable-build-opensymbol],
1809         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1810          fontforge installed.]),
1813 AC_ARG_ENABLE(dependency-tracking,
1814     AS_HELP_STRING([--enable-dependency-tracking],
1815         [Do not reject slow dependency extractors.])[
1816   --disable-dependency-tracking
1817                           Disables generation of dependency information.
1818                           Speed up one-time builds.],
1821 AC_ARG_ENABLE(icecream,
1822     AS_HELP_STRING([--enable-icecream],
1823         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1824          It defaults to /opt/icecream for the location of the icecream gcc/g++
1825          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1828 AC_ARG_ENABLE(ld,
1829     AS_HELP_STRING([--enable-ld=<linker>],
1830         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1831          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1832          If <linker> contains any ':', the part before the first ':' is used as the value of
1833          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1834          needed for Clang 12).]),
1837 libo_FUZZ_ARG_ENABLE(cups,
1838     AS_HELP_STRING([--disable-cups],
1839         [Do not build cups support.])
1842 AC_ARG_ENABLE(ccache,
1843     AS_HELP_STRING([--disable-ccache],
1844         [Do not try to use ccache automatically.
1845          By default we will try to detect if ccache is available; in that case if
1846          CC/CXX are not yet set, and --enable-icecream is not given, we
1847          attempt to use ccache. --disable-ccache disables ccache completely.
1848          Additionally ccache's depend mode is enabled if possible,
1849          use --enable-ccache=nodepend to enable ccache without depend mode.
1853 AC_ARG_ENABLE(z7-debug,
1854     AS_HELP_STRING([--enable-z7-debug],
1855         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1856          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1857          Enabled by default if ccache is detected.]))
1859 libo_FUZZ_ARG_ENABLE(online-update,
1860     AS_HELP_STRING([--enable-online-update],
1861         [Enable the online update service that will check for new versions of
1862          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1865 libo_FUZZ_ARG_ENABLE(online-update-mar,
1866     AS_HELP_STRING([--enable-online-update-mar],
1867         [Enable the experimental Mozilla-like online update service that will
1868          check for new versions of LibreOffice. Disabled by default.]),
1871 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1872     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1873         [Set the base URL value for --enable-online-update-mar.
1874          (Can be left off for debug purposes, even if that may render the feature
1875          non-functional.)]),
1878 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1879     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1880         [Set the certificate DER value for --enable-online-update-mar.
1881          (Can be left off for debug purposes, even if that may render the feature
1882          non-functional.)]),
1885 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1886     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1887         [Set the certificate name value for --enable-online-update-mar.
1888          (Can be left off for debug purposes, even if that may render the feature
1889          non-functional.)]),
1892 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1893     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1894         [Set the certificate path value for --enable-online-update-mar.
1895          (Can be left off for debug purposes, even if that may render the feature
1896          non-functional.)]),
1899 libo_FUZZ_ARG_ENABLE(extension-update,
1900     AS_HELP_STRING([--disable-extension-update],
1901         [Disable possibility to update installed extensions.]),
1904 libo_FUZZ_ARG_ENABLE(release-build,
1905     AS_HELP_STRING([--enable-release-build],
1906         [Enable release build. Note that the "release build" choice is orthogonal to
1907          whether symbols are present, debug info is generated, or optimization
1908          is done.
1909          See https://wiki.documentfoundation.org/Development/DevBuild]),
1912 AC_ARG_ENABLE(windows-build-signing,
1913     AS_HELP_STRING([--enable-windows-build-signing],
1914         [Enable signing of windows binaries (*.exe, *.dll)]),
1917 AC_ARG_ENABLE(silent-msi,
1918     AS_HELP_STRING([--enable-silent-msi],
1919         [Enable MSI with LIMITUI=1 (silent install).]),
1922 AC_ARG_ENABLE(wix,
1923     AS_HELP_STRING([--enable-wix],
1924         [Build Windows installer using WiX.]),
1927 AC_ARG_ENABLE(macosx-code-signing,
1928     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1929         [Sign executables, dylibs, frameworks and the app bundle. If you
1930          don't provide an identity the first suitable certificate
1931          in your keychain is used.]),
1934 AC_ARG_ENABLE(macosx-package-signing,
1935     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1936         [Create a .pkg suitable for uploading to the Mac App Store and sign
1937          it. If you don't provide an identity the first suitable certificate
1938          in your keychain is used.]),
1941 AC_ARG_ENABLE(macosx-sandbox,
1942     AS_HELP_STRING([--enable-macosx-sandbox],
1943         [Make the app bundle run in a sandbox. Requires code signing.
1944          Is required by apps distributed in the Mac App Store, and implies
1945          adherence to App Store rules.]),
1948 AC_ARG_WITH(macosx-bundle-identifier,
1949     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1950         [Define the macOS bundle identifier. Default is the somewhat weird
1951          org.libreoffice.script ("script", huh?).]),
1952 ,with_macosx_bundle_identifier=org.libreoffice.script)
1954 AC_ARG_WITH(macosx-provisioning-profile,
1955     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1956         [Specify the path to a provisioning profile to use]),
1959 AC_ARG_WITH(product-name,
1960     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1961         [Define the product name. Default is AC_PACKAGE_NAME.]),
1962 ,with_product_name=$PRODUCTNAME)
1964 libo_FUZZ_ARG_ENABLE(community-flavor,
1965     AS_HELP_STRING([--disable-community-flavor],
1966         [Disable the Community branding.]),
1969 AC_ARG_WITH(package-version,
1970     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1971         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1974 libo_FUZZ_ARG_ENABLE(readonly-installset,
1975     AS_HELP_STRING([--enable-readonly-installset],
1976         [Prevents any attempts by LibreOffice to write into its installation. That means
1977          at least that no "system-wide" extensions can be added. Partly experimental work in
1978          progress, probably not fully implemented. Always enabled for macOS.]),
1981 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1982     AS_HELP_STRING([--disable-mariadb-sdbc],
1983         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1986 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1987     AS_HELP_STRING([--disable-postgresql-sdbc],
1988         [Disable the build of the PostgreSQL-SDBC driver.])
1991 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1992     AS_HELP_STRING([--disable-lotuswordpro],
1993         [Disable the build of the Lotus Word Pro filter.]),
1994 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1996 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1997     AS_HELP_STRING([--disable-firebird-sdbc],
1998         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1999 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2001 AC_ARG_ENABLE(bogus-pkg-config,
2002     AS_HELP_STRING([--enable-bogus-pkg-config],
2003         [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.]),
2006 AC_ARG_ENABLE(openssl,
2007     AS_HELP_STRING([--disable-openssl],
2008         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2009          components will use NSS. Work in progress,
2010          use only if you are hacking on it.]),
2011 ,enable_openssl=yes)
2013 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2014     AS_HELP_STRING([--enable-cipher-openssl-backend],
2015         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2016          Requires --enable-openssl.]))
2018 AC_ARG_ENABLE(nss,
2019     AS_HELP_STRING([--disable-nss],
2020         [Disable using NSS. If disabled,
2021          components will use openssl. Work in progress,
2022          use only if you are hacking on it.]),
2023 ,enable_nss=yes)
2025 AC_ARG_ENABLE(library-bin-tar,
2026     AS_HELP_STRING([--enable-library-bin-tar],
2027         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2028         Some libraries can save their build result in a tarball
2029         stored in TARFILE_LOCATION. That binary tarball is
2030         uniquely identified by the source tarball,
2031         the content of the config_host.mk file and the content
2032         of the top-level directory in core for that library
2033         If this option is enabled, then if such a tarfile exist, it will be untarred
2034         instead of the source tarfile, and the build step will be skipped for that
2035         library.
2036         If a proper tarfile does not exist, then the normal source-based
2037         build is done for that library and a proper binary tarfile is created
2038         for the next time.]),
2041 AC_ARG_ENABLE(dconf,
2042     AS_HELP_STRING([--disable-dconf],
2043         [Disable the dconf configuration backend (enabled by default where
2044          available).]))
2046 libo_FUZZ_ARG_ENABLE(formula-logger,
2047     AS_HELP_STRING(
2048         [--enable-formula-logger],
2049         [Enable formula logger for logging formula calculation flow in Calc.]
2050     )
2053 AC_ARG_ENABLE(ldap,
2054     AS_HELP_STRING([--disable-ldap],
2055         [Disable LDAP support.]),
2056 ,enable_ldap=yes)
2058 AC_ARG_ENABLE(opencl,
2059     AS_HELP_STRING([--disable-opencl],
2060         [Disable OpenCL support.]),
2061 ,enable_opencl=yes)
2063 libo_FUZZ_ARG_ENABLE(librelogo,
2064     AS_HELP_STRING([--disable-librelogo],
2065         [Do not build LibreLogo.]),
2066 ,enable_librelogo=yes)
2068 AC_ARG_ENABLE(wasm-strip,
2069     AS_HELP_STRING([--enable-wasm-strip],
2070         [Strip the static build like for WASM/emscripten platform.]),
2073 AC_ARG_WITH(main-module,
2074     AS_HELP_STRING([--with-main-module=<writer/calc>],
2075         [Specify which main module to build for wasm.
2076         Default value is 'writer'.]),
2079 AC_ARG_ENABLE(wasm-exceptions,
2080     AS_HELP_STRING([--enable-wasm-exceptions],
2081         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2082         matter of fact, this is currently not finished by any implementation)
2083         (see https://webassembly.org/roadmap/ for the current state]),
2086 AC_ARG_ENABLE(xmlhelp,
2087     AS_HELP_STRING([--disable-xmlhelp],
2088         [Disable XML help support]),
2089 ,enable_xmlhelp=yes)
2091 AC_ARG_ENABLE(customtarget-components,
2092     AS_HELP_STRING([--enable-customtarget-components],
2093         [Generates the static UNO object constructor mapping from the build.]))
2095 dnl ===================================================================
2096 dnl Optional Packages (--with/without-)
2097 dnl ===================================================================
2099 AC_ARG_WITH(gcc-home,
2100     AS_HELP_STRING([--with-gcc-home],
2101         [Specify the location of gcc/g++ manually. This can be used in conjunction
2102          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2103          non-default path.]),
2106 AC_ARG_WITH(gnu-patch,
2107     AS_HELP_STRING([--with-gnu-patch],
2108         [Specify location of GNU patch on Solaris or FreeBSD.]),
2111 AC_ARG_WITH(build-platform-configure-options,
2112     AS_HELP_STRING([--with-build-platform-configure-options],
2113         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2116 AC_ARG_WITH(gnu-cp,
2117     AS_HELP_STRING([--with-gnu-cp],
2118         [Specify location of GNU cp on Solaris or FreeBSD.]),
2121 AC_ARG_WITH(external-tar,
2122     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2123         [Specify an absolute path of where to find (and store) tarfiles.]),
2124     TARFILE_LOCATION=$withval ,
2127 AC_ARG_WITH(referenced-git,
2128     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2129         [Specify another checkout directory to reference. This makes use of
2130                  git submodule update --reference, and saves a lot of diskspace
2131                  when having multiple trees side-by-side.]),
2132     GIT_REFERENCE_SRC=$withval ,
2135 AC_ARG_WITH(linked-git,
2136     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2137         [Specify a directory where the repositories of submodules are located.
2138          This uses a method similar to git-new-workdir to get submodules.]),
2139     GIT_LINK_SRC=$withval ,
2142 AC_ARG_WITH(galleries,
2143     AS_HELP_STRING([--with-galleries],
2144         [Specify how galleries should be built. It is possible either to
2145          build these internally from source ("build"),
2146          or to disable them ("no")]),
2149 AC_ARG_WITH(templates,
2150     AS_HELP_STRING([--with-templates],
2151         [Specify we build with or without template files. It is possible either to
2152          build with templates ("yes"),
2153          or to disable them ("no")]),
2156 AC_ARG_WITH(theme,
2157     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2158         [Choose which themes to include. By default those themes with an '*' are included.
2159          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2160          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2161          *elementary, *elementary_svg,
2162          *karasa_jaga, *karasa_jaga_svg,
2163          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2164          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2167 libo_FUZZ_ARG_WITH(helppack-integration,
2168     AS_HELP_STRING([--without-helppack-integration],
2169         [It will not integrate the helppacks to the installer
2170          of the product. Please use this switch to use the online help
2171          or separate help packages.]),
2174 libo_FUZZ_ARG_WITH(fonts,
2175     AS_HELP_STRING([--without-fonts],
2176         [LibreOffice includes some third-party fonts to provide a reliable basis for
2177          help content, templates, samples, etc. When these fonts are already
2178          known to be available on the system then you should use this option.]),
2181 AC_ARG_WITH(epm,
2182     AS_HELP_STRING([--with-epm],
2183         [Decides which epm to use. Default is to use the one from the system if
2184          one is built. When either this is not there or you say =internal epm
2185          will be built.]),
2188 AC_ARG_WITH(package-format,
2189     AS_HELP_STRING([--with-package-format],
2190         [Specify package format(s) for LibreOffice installation sets. The
2191          implicit --without-package-format leads to no installation sets being
2192          generated. Possible values: archive, bsd, deb, dmg,
2193          installed, msi, pkg, and rpm.
2194          Example: --with-package-format='deb rpm']),
2197 AC_ARG_WITH(tls,
2198     AS_HELP_STRING([--with-tls],
2199         [Decides which TLS/SSL and cryptographic implementations to use for
2200          LibreOffice's code. Default is to use NSS although OpenSSL is also
2201          possible. Notice that selecting NSS restricts the usage of OpenSSL
2202          in LO's code but selecting OpenSSL doesn't restrict by now the
2203          usage of NSS in LO's code. Possible values: openssl, nss.
2204          Example: --with-tls="nss"]),
2207 AC_ARG_WITH(system-libs,
2208     AS_HELP_STRING([--with-system-libs],
2209         [Use libraries already on system -- enables all --with-system-* flags.]),
2212 AC_ARG_WITH(system-bzip2,
2213     AS_HELP_STRING([--with-system-bzip2],
2214         [Use bzip2 already on system. Used when --enable-online-update-mar
2215         or --enable-python=internal]),,
2216     [with_system_bzip2="$with_system_libs"])
2218 AC_ARG_WITH(system-headers,
2219     AS_HELP_STRING([--with-system-headers],
2220         [Use headers already on system -- enables all --with-system-* flags for
2221          external packages whose headers are the only entities used i.e.
2222          boost/odbc/sane-header(s).]),,
2223     [with_system_headers="$with_system_libs"])
2225 AC_ARG_WITH(system-jars,
2226     AS_HELP_STRING([--without-system-jars],
2227         [When building with --with-system-libs, also the needed jars are expected
2228          on the system. Use this to disable that]),,
2229     [with_system_jars="$with_system_libs"])
2231 AC_ARG_WITH(system-cairo,
2232     AS_HELP_STRING([--with-system-cairo],
2233         [Use cairo libraries already on system.  Happens automatically for
2234          (implicit) --enable-gtk3.]))
2236 AC_ARG_WITH(system-epoxy,
2237     AS_HELP_STRING([--with-system-epoxy],
2238         [Use epoxy libraries already on system.  Happens automatically for
2239          (implicit) --enable-gtk3.]),,
2240        [with_system_epoxy="$with_system_libs"])
2242 AC_ARG_WITH(myspell-dicts,
2243     AS_HELP_STRING([--with-myspell-dicts],
2244         [Adds myspell dictionaries to the LibreOffice installation set]),
2247 AC_ARG_WITH(system-dicts,
2248     AS_HELP_STRING([--without-system-dicts],
2249         [Do not use dictionaries from system paths.]),
2252 AC_ARG_WITH(external-dict-dir,
2253     AS_HELP_STRING([--with-external-dict-dir],
2254         [Specify external dictionary dir.]),
2257 AC_ARG_WITH(external-hyph-dir,
2258     AS_HELP_STRING([--with-external-hyph-dir],
2259         [Specify external hyphenation pattern dir.]),
2262 AC_ARG_WITH(external-thes-dir,
2263     AS_HELP_STRING([--with-external-thes-dir],
2264         [Specify external thesaurus dir.]),
2267 AC_ARG_WITH(system-zlib,
2268     AS_HELP_STRING([--with-system-zlib],
2269         [Use zlib already on system.]),,
2270     [with_system_zlib=auto])
2272 AC_ARG_WITH(system-jpeg,
2273     AS_HELP_STRING([--with-system-jpeg],
2274         [Use jpeg already on system.]),,
2275     [with_system_jpeg="$with_system_libs"])
2277 AC_ARG_WITH(system-expat,
2278     AS_HELP_STRING([--with-system-expat],
2279         [Use expat already on system.]),,
2280     [with_system_expat="$with_system_libs"])
2282 AC_ARG_WITH(system-libxml,
2283     AS_HELP_STRING([--with-system-libxml],
2284         [Use libxml/libxslt already on system.]),,
2285     [with_system_libxml=auto])
2287 AC_ARG_WITH(system-openldap,
2288     AS_HELP_STRING([--with-system-openldap],
2289         [Use the OpenLDAP LDAP SDK already on system.]),,
2290     [with_system_openldap="$with_system_libs"])
2292 libo_FUZZ_ARG_ENABLE(poppler,
2293     AS_HELP_STRING([--disable-poppler],
2294         [Disable building Poppler.])
2297 AC_ARG_WITH(system-poppler,
2298     AS_HELP_STRING([--with-system-poppler],
2299         [Use system poppler (only needed for PDF import).]),,
2300     [with_system_poppler="$with_system_libs"])
2302 AC_ARG_WITH(system-abseil,
2303     AS_HELP_STRING([--with-system-abseil],
2304         [Use the abseil libraries already on system.]),,
2305     [with_system_abseil="$with_system_libs"])
2307 AC_ARG_WITH(system-openjpeg,
2308     AS_HELP_STRING([--with-system-openjpeg],
2309         [Use the OpenJPEG library already on system.]),,
2310     [with_system_openjpeg="$with_system_libs"])
2312 libo_FUZZ_ARG_ENABLE(gpgmepp,
2313     AS_HELP_STRING([--disable-gpgmepp],
2314         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2317 AC_ARG_WITH(system-gpgmepp,
2318     AS_HELP_STRING([--with-system-gpgmepp],
2319         [Use gpgmepp already on system]),,
2320     [with_system_gpgmepp="$with_system_libs"])
2322 AC_ARG_WITH(system-mariadb,
2323     AS_HELP_STRING([--with-system-mariadb],
2324         [Use MariaDB/MySQL libraries already on system.]),,
2325     [with_system_mariadb="$with_system_libs"])
2327 AC_ARG_ENABLE(bundle-mariadb,
2328     AS_HELP_STRING([--enable-bundle-mariadb],
2329         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2332 AC_ARG_WITH(system-postgresql,
2333     AS_HELP_STRING([--with-system-postgresql],
2334         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2335          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2336     [with_system_postgresql="$with_system_libs"])
2338 AC_ARG_WITH(libpq-path,
2339     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2340         [Use this PostgreSQL C interface (libpq) installation for building
2341          the PostgreSQL-SDBC extension.]),
2344 AC_ARG_WITH(system-firebird,
2345     AS_HELP_STRING([--with-system-firebird],
2346         [Use Firebird libraries already on system, for building the Firebird-SDBC
2347          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2348     [with_system_firebird="$with_system_libs"])
2350 AC_ARG_WITH(system-libtommath,
2351             AS_HELP_STRING([--with-system-libtommath],
2352                            [Use libtommath already on system]),,
2353             [with_system_libtommath="$with_system_libs"])
2355 AC_ARG_WITH(system-hsqldb,
2356     AS_HELP_STRING([--with-system-hsqldb],
2357         [Use hsqldb already on system.]))
2359 AC_ARG_WITH(hsqldb-jar,
2360     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2361         [Specify path to jarfile manually.]),
2362     HSQLDB_JAR=$withval)
2364 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2365     AS_HELP_STRING([--disable-scripting-beanshell],
2366         [Disable support for scripts in BeanShell.]),
2370 AC_ARG_WITH(system-beanshell,
2371     AS_HELP_STRING([--with-system-beanshell],
2372         [Use beanshell already on system.]),,
2373     [with_system_beanshell="$with_system_jars"])
2375 AC_ARG_WITH(beanshell-jar,
2376     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2377         [Specify path to jarfile manually.]),
2378     BSH_JAR=$withval)
2380 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2381     AS_HELP_STRING([--disable-scripting-javascript],
2382         [Disable support for scripts in JavaScript.]),
2386 AC_ARG_WITH(system-rhino,
2387     AS_HELP_STRING([--with-system-rhino],
2388         [Use rhino already on system.]),,)
2389 #    [with_system_rhino="$with_system_jars"])
2390 # Above is not used as we have different debug interface
2391 # patched into internal rhino. This code needs to be fixed
2392 # before we can enable it by default.
2394 AC_ARG_WITH(rhino-jar,
2395     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2396         [Specify path to jarfile manually.]),
2397     RHINO_JAR=$withval)
2399 AC_ARG_WITH(system-jfreereport,
2400     AS_HELP_STRING([--with-system-jfreereport],
2401         [Use JFreeReport already on system.]),,
2402     [with_system_jfreereport="$with_system_jars"])
2404 AC_ARG_WITH(sac-jar,
2405     AS_HELP_STRING([--with-sac-jar=JARFILE],
2406         [Specify path to jarfile manually.]),
2407     SAC_JAR=$withval)
2409 AC_ARG_WITH(libxml-jar,
2410     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2411         [Specify path to jarfile manually.]),
2412     LIBXML_JAR=$withval)
2414 AC_ARG_WITH(flute-jar,
2415     AS_HELP_STRING([--with-flute-jar=JARFILE],
2416         [Specify path to jarfile manually.]),
2417     FLUTE_JAR=$withval)
2419 AC_ARG_WITH(jfreereport-jar,
2420     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2421         [Specify path to jarfile manually.]),
2422     JFREEREPORT_JAR=$withval)
2424 AC_ARG_WITH(liblayout-jar,
2425     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2426         [Specify path to jarfile manually.]),
2427     LIBLAYOUT_JAR=$withval)
2429 AC_ARG_WITH(libloader-jar,
2430     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2431         [Specify path to jarfile manually.]),
2432     LIBLOADER_JAR=$withval)
2434 AC_ARG_WITH(libformula-jar,
2435     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2436         [Specify path to jarfile manually.]),
2437     LIBFORMULA_JAR=$withval)
2439 AC_ARG_WITH(librepository-jar,
2440     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2441         [Specify path to jarfile manually.]),
2442     LIBREPOSITORY_JAR=$withval)
2444 AC_ARG_WITH(libfonts-jar,
2445     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2446         [Specify path to jarfile manually.]),
2447     LIBFONTS_JAR=$withval)
2449 AC_ARG_WITH(libserializer-jar,
2450     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2451         [Specify path to jarfile manually.]),
2452     LIBSERIALIZER_JAR=$withval)
2454 AC_ARG_WITH(libbase-jar,
2455     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2456         [Specify path to jarfile manually.]),
2457     LIBBASE_JAR=$withval)
2459 AC_ARG_WITH(system-odbc,
2460     AS_HELP_STRING([--with-system-odbc],
2461         [Use the odbc headers already on system.]),,
2462     [with_system_odbc="auto"])
2464 AC_ARG_WITH(system-sane,
2465     AS_HELP_STRING([--with-system-sane],
2466         [Use sane.h already on system.]),,
2467     [with_system_sane="$with_system_headers"])
2469 AC_ARG_WITH(system-bluez,
2470     AS_HELP_STRING([--with-system-bluez],
2471         [Use bluetooth.h already on system.]),,
2472     [with_system_bluez="$with_system_headers"])
2474 AC_ARG_WITH(system-boost,
2475     AS_HELP_STRING([--with-system-boost],
2476         [Use boost already on system.]),,
2477     [with_system_boost="$with_system_headers"])
2479 AC_ARG_WITH(system-dragonbox,
2480     AS_HELP_STRING([--with-system-dragonbox],
2481         [Use dragonbox already on system.]),,
2482     [with_system_dragonbox="$with_system_headers"])
2484 AC_ARG_WITH(system-frozen,
2485     AS_HELP_STRING([--with-system-frozen],
2486         [Use frozen already on system.]),,
2487     [with_system_frozen="$with_system_headers"])
2489 AC_ARG_WITH(system-libfixmath,
2490     AS_HELP_STRING([--with-system-libfixmath],
2491         [Use libfixmath already on system.]),,
2492     [with_system_libfixmath="$with_system_libs"])
2494 AC_ARG_WITH(system-glm,
2495     AS_HELP_STRING([--with-system-glm],
2496         [Use glm already on system.]),,
2497     [with_system_glm="$with_system_headers"])
2499 AC_ARG_WITH(system-hunspell,
2500     AS_HELP_STRING([--with-system-hunspell],
2501         [Use libhunspell already on system.]),,
2502     [with_system_hunspell="$with_system_libs"])
2504 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2505     AS_HELP_STRING([--enable-cairo-rgba],
2506         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2508 libo_FUZZ_ARG_ENABLE(zxing,
2509     AS_HELP_STRING([--disable-zxing],
2510        [Disable use of zxing external library.]))
2512 AC_ARG_WITH(system-zxing,
2513     AS_HELP_STRING([--with-system-zxing],
2514         [Use libzxing already on system.]),,
2515     [with_system_zxing="$with_system_libs"])
2517 AC_ARG_WITH(system-zxcvbn,
2518     AS_HELP_STRING([--with-system-zxcvbn],
2519         [Use libzxcvbn already on system.]),,
2520     [with_system_zxcvbn="$with_system_libs"])
2522 AC_ARG_WITH(system-box2d,
2523     AS_HELP_STRING([--with-system-box2d],
2524         [Use box2d already on system.]),,
2525     [with_system_box2d="$with_system_libs"])
2527 AC_ARG_WITH(system-mythes,
2528     AS_HELP_STRING([--with-system-mythes],
2529         [Use mythes already on system.]),,
2530     [with_system_mythes="$with_system_libs"])
2532 AC_ARG_WITH(system-altlinuxhyph,
2533     AS_HELP_STRING([--with-system-altlinuxhyph],
2534         [Use ALTLinuxhyph already on system.]),,
2535     [with_system_altlinuxhyph="$with_system_libs"])
2537 AC_ARG_WITH(system-lpsolve,
2538     AS_HELP_STRING([--with-system-lpsolve],
2539         [Use lpsolve already on system.]),,
2540     [with_system_lpsolve="$with_system_libs"])
2542 AC_ARG_WITH(system-coinmp,
2543     AS_HELP_STRING([--with-system-coinmp],
2544         [Use CoinMP already on system.]),,
2545     [with_system_coinmp="$with_system_libs"])
2547 AC_ARG_WITH(system-liblangtag,
2548     AS_HELP_STRING([--with-system-liblangtag],
2549         [Use liblangtag library already on system.]),,
2550     [with_system_liblangtag="$with_system_libs"])
2552 AC_ARG_WITH(system-lockfile,
2553     AS_HELP_STRING([--with-system-lockfile[=file]],
2554         [Detect a system lockfile program or use the \$file argument.]))
2556 AC_ARG_WITH(webdav,
2557     AS_HELP_STRING([--without-webdav],
2558         [Disable WebDAV support in the UCB.]))
2560 AC_ARG_WITH(linker-hash-style,
2561     AS_HELP_STRING([--with-linker-hash-style],
2562         [Use linker with --hash-style=<style> when linking shared objects.
2563          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2564          if supported on the build system, and "sysv" otherwise.]))
2566 AC_ARG_WITH(jdk-home,
2567     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2568         [If you have installed JDK 17 or later on your system please supply the
2569          path here. Note that this is not the location of the java command but the
2570          location of the entire distribution. In case of cross-compiling, this
2571          is the JDK of the host os. Use --with-build-platform-configure-options
2572          to point to a different build platform JDK.]),
2575 AC_ARG_WITH(help,
2576     AS_HELP_STRING([--with-help],
2577         [Enable the build of help. There is a special parameter "common" that
2578          can be used to bundle only the common part, .e.g help-specific icons.
2579          This is useful when you build the helpcontent separately.])
2580     [
2581                           Usage:     --with-help    build the old local help
2582                                  --without-help     no local help (default)
2583                                  --with-help=html   build the new HTML local help
2584                                  --with-help=online build the new HTML online help
2585     ],
2588 AC_ARG_WITH(omindex,
2589    AS_HELP_STRING([--with-omindex],
2590         [Enable the support of xapian-omega index for online help.])
2591    [
2592                          Usage: --with-omindex=server prepare the pages for omindex
2593                                 but let xapian-omega be built in server.
2594                                 --with-omindex=noxap do not prepare online pages
2595                                 for xapian-omega
2596   ],
2599 libo_FUZZ_ARG_WITH(java,
2600     AS_HELP_STRING([--with-java=<java command>],
2601         [Specify the name of the Java interpreter command. Typically "java"
2602          which is the default.
2604          To build without support for Java components, applets, accessibility
2605          or the XML filters written in Java, use --without-java or --with-java=no.]),
2606     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2607     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2610 AC_ARG_WITH(jvm-path,
2611     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2612         [Use a specific JVM search path at runtime.
2613          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2616 AC_ARG_WITH(ant-home,
2617     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2618         [If you have installed Apache Ant on your system, please supply the path here.
2619          Note that this is not the location of the Ant binary but the location
2620          of the entire distribution.]),
2623 AC_ARG_WITH(symbol-config,
2624     AS_HELP_STRING([--with-symbol-config],
2625         [Configuration for the crashreport symbol upload]),
2626         [],
2627         [with_symbol_config=no])
2629 AC_ARG_WITH(export-validation,
2630     AS_HELP_STRING([--without-export-validation],
2631         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2632 ,with_export_validation=auto)
2634 AC_ARG_WITH(bffvalidator,
2635     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2636         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2637          Requires installed Microsoft Office Binary File Format Validator.
2638          Note: export-validation (--with-export-validation) is required to be turned on.
2639          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2640 ,with_bffvalidator=no)
2642 libo_FUZZ_ARG_WITH(junit,
2643     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2644         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2645          --without-junit disables those tests. Not relevant in the --without-java case.]),
2646 ,with_junit=yes)
2648 AC_ARG_WITH(hamcrest,
2649     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2650         [Specifies the hamcrest jar file to use for JUnit-based tests.
2651          --without-junit disables those tests. Not relevant in the --without-java case.]),
2652 ,with_hamcrest=yes)
2654 AC_ARG_WITH(perl-home,
2655     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2656         [If you have installed Perl 5 Distribution, on your system, please
2657          supply the path here. Note that this is not the location of the Perl
2658          binary but the location of the entire distribution.]),
2661 libo_FUZZ_ARG_WITH(doxygen,
2662     AS_HELP_STRING(
2663         [--with-doxygen=<absolute path to doxygen executable>],
2664         [Specifies the doxygen executable to use when generating ODK C/C++
2665          documentation. --without-doxygen disables generation of ODK C/C++
2666          documentation. Not relevant in the --disable-odk case.]),
2667 ,with_doxygen=yes)
2669 AC_ARG_WITH(visual-studio,
2670     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2671         [Specify which Visual Studio version to use in case several are
2672          installed. Currently 2019 (default) and 2022 are supported.]),
2675 AC_ARG_WITH(windows-sdk,
2676     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2677         [Specify which Windows SDK, or "Windows Kit", version to use
2678          in case the one that came with the selected Visual Studio
2679          is not what you want for some reason. Note that not all compiler/SDK
2680          combinations are supported. The intent is that this option should not
2681          be needed.]),
2684 AC_ARG_WITH(lang,
2685     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2686         [Use this option to build LibreOffice with additional UI language support.
2687          English (US) is always included by default.
2688          Separate multiple languages with space.
2689          For all languages, use --with-lang=ALL.]),
2692 AC_ARG_WITH(locales,
2693     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2694         [Use this option to limit the locale information built in.
2695          Separate multiple locales with space.
2696          Very experimental and might well break stuff.
2697          Just a desperate measure to shrink code and data size.
2698          By default all the locales available is included.
2699          Just works with --disable-dynloading. Defaults to "ALL".
2700          This option is completely unrelated to --with-lang.])
2701     [
2702                           Affects also our character encoding conversion
2703                           tables for encodings mainly targeted for a
2704                           particular locale, like EUC-CN and EUC-TW for
2705                           zh, ISO-2022-JP for ja.
2707                           Affects also our add-on break iterator data for
2708                           some languages.
2710                           For the default, all locales, don't use this switch at all.
2711                           Specifying just the language part of a locale means all matching
2712                           locales will be included.
2713     ],
2716 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2717 libo_FUZZ_ARG_WITH(krb5,
2718     AS_HELP_STRING([--with-krb5],
2719         [Enable MIT Kerberos 5 support in modules that support it.
2720          By default automatically enabled on platforms
2721          where a good system Kerberos 5 is available.]),
2724 libo_FUZZ_ARG_WITH(gssapi,
2725     AS_HELP_STRING([--with-gssapi],
2726         [Enable GSSAPI support in modules that support it.
2727          By default automatically enabled on platforms
2728          where a good system GSSAPI is available.]),
2731 libo_FUZZ_ARG_WITH(lxml,
2732     AS_HELP_STRING([--without-lxml],
2733         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2734          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2735          report widget classes and ids.]),
2738 libo_FUZZ_ARG_WITH(latest-c++,
2739     AS_HELP_STRING([--with-latest-c++],
2740         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2741          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2742         [with_latest_c__=no])
2744 AC_ARG_WITH(gtk3-build,
2745     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2746         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2747          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2749 dnl ===================================================================
2750 dnl Branding
2751 dnl ===================================================================
2753 AC_ARG_WITH(branding,
2754     AS_HELP_STRING([--with-branding=/path/to/images],
2755         [Use given path to retrieve branding images set.])
2756     [
2757                           Search for intro.png about.svg and logo.svg.
2758                           If any is missing, default ones will be used instead.
2760                           Search also progress.conf for progress
2761                           settings on intro screen :
2763                           PROGRESSBARCOLOR="255,255,255" Set color of
2764                           progress bar. Comma separated RGB decimal values.
2765                           PROGRESSSIZE="407,6" Set size of progress bar.
2766                           Comma separated decimal values (width, height).
2767                           PROGRESSPOSITION="61,317" Set position of progress
2768                           bar from left,top. Comma separated decimal values.
2769                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2770                           bar frame. Comma separated RGB decimal values.
2771                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2772                           bar text. Comma separated RGB decimal values.
2773                           PROGRESSTEXTBASELINE="287" Set vertical position of
2774                           progress bar text from top. Decimal value.
2776                           Default values will be used if not found.
2777     ],
2781 AC_ARG_WITH(extra-buildid,
2782     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2783         [Show addition build identification in about dialog.]),
2787 AC_ARG_WITH(vendor,
2788     AS_HELP_STRING([--with-vendor="John the Builder"],
2789         [Set vendor of the build.]),
2792 AC_ARG_WITH(privacy-policy-url,
2793     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2794         [The URL to your privacy policy (needed when
2795          enabling online-update or crashreporting via breakpad)]),
2796         [if test "x$with_privacy_policy_url" = "xyes"; then
2797             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2798          elif test "x$with_privacy_policy_url" = "xno"; then
2799             with_privacy_policy_url="undefined"
2800          fi]
2801 ,[with_privacy_policy_url="undefined"])
2803 AC_ARG_WITH(android-package-name,
2804     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2805         [Set Android package name of the build.]),
2808 AC_ARG_WITH(compat-oowrappers,
2809     AS_HELP_STRING([--with-compat-oowrappers],
2810         [Install oo* wrappers in parallel with
2811          lo* ones to keep backward compatibility.
2812          Has effect only with make distro-pack-install]),
2815 AC_ARG_WITH(os-version,
2816     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2817         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2820 AC_ARG_WITH(parallelism,
2821     AS_HELP_STRING([--with-parallelism],
2822         [Number of jobs to run simultaneously during build. Parallel builds can
2823         save a lot of time on multi-cpu machines. Defaults to the number of
2824         CPUs on the machine, unless you configure --enable-icecream - then to
2825         40.]),
2828 AC_ARG_WITH(all-tarballs,
2829     AS_HELP_STRING([--with-all-tarballs],
2830         [Download all external tarballs unconditionally]))
2832 AC_ARG_WITH(gdrive-client-id,
2833     AS_HELP_STRING([--with-gdrive-client-id],
2834         [Provides the client id of the application for OAuth2 authentication
2835         on Google Drive. If either this or --with-gdrive-client-secret is
2836         empty, the feature will be disabled]),
2839 AC_ARG_WITH(gdrive-client-secret,
2840     AS_HELP_STRING([--with-gdrive-client-secret],
2841         [Provides the client secret of the application for OAuth2
2842         authentication on Google Drive. If either this or
2843         --with-gdrive-client-id is empty, the feature will be disabled]),
2846 AC_ARG_WITH(alfresco-cloud-client-id,
2847     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2848         [Provides the client id of the application for OAuth2 authentication
2849         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2850         empty, the feature will be disabled]),
2853 AC_ARG_WITH(alfresco-cloud-client-secret,
2854     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2855         [Provides the client secret of the application for OAuth2
2856         authentication on Alfresco Cloud. If either this or
2857         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2860 AC_ARG_WITH(onedrive-client-id,
2861     AS_HELP_STRING([--with-onedrive-client-id],
2862         [Provides the client id of the application for OAuth2 authentication
2863         on OneDrive. If either this or --with-onedrive-client-secret is
2864         empty, the feature will be disabled]),
2867 AC_ARG_WITH(onedrive-client-secret,
2868     AS_HELP_STRING([--with-onedrive-client-secret],
2869         [Provides the client secret of the application for OAuth2
2870         authentication on OneDrive. If either this or
2871         --with-onedrive-client-id is empty, the feature will be disabled]),
2874 dnl Check for coredumpctl support to present information about crashing test processes:
2875 AC_ARG_WITH(coredumpctl,
2876     AS_HELP_STRING([--with-coredumpctl],
2877         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2878         processes.]))
2880 AC_ARG_WITH(buildconfig-recorded,
2881     AS_HELP_STRING([--with-buildconfig-recorded],
2882         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2885 AC_MSG_CHECKING([whether to record build config])
2886 if test -z "$with_buildconfig_recorded"; then
2887     with_buildconfig_recorded=no
2889 if test "$with_buildconfig_recorded" = no; then
2890     AC_MSG_RESULT([no])
2891 else
2892     AC_MSG_RESULT([yes])
2893     # replace backslashes, to get a valid c++ string
2894     config_args=$(echo $ac_configure_args | tr '\\' '/')
2895     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2896     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2899 dnl ===================================================================
2900 dnl Do we want to use pre-build binary tarball for recompile
2901 dnl ===================================================================
2903 if test "$enable_library_bin_tar" = "yes" ; then
2904     USE_LIBRARY_BIN_TAR=TRUE
2905 else
2906     USE_LIBRARY_BIN_TAR=
2908 AC_SUBST(USE_LIBRARY_BIN_TAR)
2910 dnl ===================================================================
2911 dnl Test whether build target is Release Build
2912 dnl ===================================================================
2913 AC_MSG_CHECKING([whether build target is Release Build])
2914 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2915     AC_MSG_RESULT([no])
2916     ENABLE_RELEASE_BUILD=
2917     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2918     dnl the newlines and then complains about spaces.
2919     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/>'
2920 else
2921     AC_MSG_RESULT([yes])
2922     ENABLE_RELEASE_BUILD=TRUE
2923     GET_TASK_ALLOW_ENTITLEMENT=
2925 AC_SUBST(ENABLE_RELEASE_BUILD)
2926 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2928 AC_MSG_CHECKING([whether to build a Community flavor])
2929 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2930     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2931     AC_MSG_RESULT([yes])
2932 else
2933     AC_MSG_RESULT([no])
2936 dnl ===================================================================
2937 dnl Test whether to sign Windows Build
2938 dnl ===================================================================
2939 AC_MSG_CHECKING([whether to sign windows build])
2940 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2941     AC_MSG_RESULT([yes])
2942     WINDOWS_BUILD_SIGNING="TRUE"
2943 else
2944     AC_MSG_RESULT([no])
2945     WINDOWS_BUILD_SIGNING="FALSE"
2947 AC_SUBST(WINDOWS_BUILD_SIGNING)
2949 dnl ===================================================================
2950 dnl MacOSX build and runtime environment options
2951 dnl ===================================================================
2953 AC_ARG_WITH(macosx-version-min-required,
2954     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2955         [set the minimum OS version needed to run the built LibreOffice])
2956     [
2957                           e. g.: --with-macosx-version-min-required=10.15
2958     ],
2961 dnl ===================================================================
2962 dnl Check for incompatible options set by fuzzing, and reset those
2963 dnl automatically to working combinations
2964 dnl ===================================================================
2966 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2967         "$enable_dbus" != "$enable_avahi"; then
2968     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2969     enable_avahi=$enable_dbus
2972 add_lopath_after ()
2974     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2975         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2976     fi
2979 add_lopath_before ()
2981     local IFS=${P_SEP}
2982     local path_cleanup
2983     local dir
2984     for dir in $LO_PATH ; do
2985         if test "$dir" != "$1" ; then
2986             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2987         fi
2988     done
2989     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2992 dnl ===================================================================
2993 dnl check for required programs (grep, awk, sed, bash)
2994 dnl ===================================================================
2996 pathmunge ()
2998     local new_path
2999     if test -n "$1"; then
3000         if test "$build_os" = "cygwin"; then
3001             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3002                 PathFormat "$1"
3003                 new_path=`cygpath -sm "$formatted_path"`
3004             else
3005                 PathFormat "$1"
3006                 new_path=`cygpath -u "$formatted_path"`
3007             fi
3008         else
3009             new_path="$1"
3010         fi
3011         if test "$2" = "after"; then
3012             add_lopath_after "$new_path"
3013         else
3014             add_lopath_before "$new_path"
3015         fi
3016     fi
3019 AC_PROG_AWK
3020 AC_PATH_PROG( AWK, $AWK)
3021 if test -z "$AWK"; then
3022     AC_MSG_ERROR([install awk to run this script])
3025 AC_PATH_PROG(BASH, bash)
3026 if test -z "$BASH"; then
3027     AC_MSG_ERROR([bash not found in \$PATH])
3029 AC_SUBST(BASH)
3031 # prefer parallel compression tools, if available
3032 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3033 if test -z "$COMPRESSIONTOOL"; then
3034     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3035     if test -z "$COMPRESSIONTOOL"; then
3036         AC_MSG_ERROR([gzip not found in \$PATH])
3037     fi
3039 AC_SUBST(COMPRESSIONTOOL)
3041 AC_MSG_CHECKING([for GNU or BSD tar])
3042 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3043     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3044     if test $? -eq 0;  then
3045         GNUTAR=$a
3046         break
3047     fi
3048 done
3049 AC_MSG_RESULT($GNUTAR)
3050 if test -z "$GNUTAR"; then
3051     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3053 AC_SUBST(GNUTAR)
3055 AC_MSG_CHECKING([for tar's option to strip components])
3056 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3057 if test $? -eq 0; then
3058     STRIP_COMPONENTS="--strip-components"
3059 else
3060     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3061     if test $? -eq 0; then
3062         STRIP_COMPONENTS="--strip-path"
3063     else
3064         STRIP_COMPONENTS="unsupported"
3065     fi
3067 AC_MSG_RESULT($STRIP_COMPONENTS)
3068 if test x$STRIP_COMPONENTS = xunsupported; then
3069     AC_MSG_ERROR([you need a tar that is able to strip components.])
3071 AC_SUBST(STRIP_COMPONENTS)
3073 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3074 dnl desktop OSes from "mobile" ones.
3076 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3077 dnl In other words, that when building for an OS that is not a
3078 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3080 dnl Note the direction of the implication; there is no assumption that
3081 dnl cross-compiling would imply a non-desktop OS.
3083 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3084     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3085     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3086     if test "$_os" != Emscripten; then
3087         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3088     fi
3091 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3092 # also work with the default gtk3 plugin.
3093 if test "$enable_wasm_strip" = "yes"; then
3094     enable_avmedia=no
3095     enable_libcmis=no
3096     enable_coinmp=no
3097     enable_cups=no
3098     test "$_os" = Emscripten && enable_curl=no
3099     enable_database_connectivity=no
3100     enable_dbus=no
3101     enable_dconf=no
3102     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3103     enable_extension_integration=no
3104     enable_extensions=no
3105     enable_extension_update=no
3106     enable_gio=no
3107     enable_gpgmepp=no
3108     enable_ldap=no
3109     enable_lotuswordpro=no
3110     enable_lpsolve=no
3111     enable_nss=no
3112     enable_odk=no
3113     enable_online_update=no
3114     enable_opencl=no
3115     enable_pdfimport=no
3116     enable_randr=no
3117     enable_report_builder=no
3118     enable_scripting=no
3119     enable_sdremote_bluetooth=no
3120     enable_skia=no
3121     enable_xmlhelp=no
3122     enable_zxing=no
3123     test_libepubgen=no
3124     test_libcdr=no
3125     test_libcmis=no
3126     test_libetonyek=no
3127     test_libfreehand=no
3128     test_libmspub=no
3129     test_libpagemaker=no
3130     test_libqxp=no
3131     test_libvisio=no
3132     test_libzmf=no
3133     test_webdav=no
3134     with_galleries=no
3135     with_templates=no
3136     with_webdav=no
3137     with_x=no
3139     test "${with_fonts+set}" = set || with_fonts=yes
3140     test "${with_locales+set}" = set || with_locales=en
3142     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3143     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3144     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3145     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3146 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3147     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3148     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3149     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3150     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3151 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3152     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3153     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3154     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3155     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3156     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3157     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3158     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3159     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3162 EMSCRIPTEN_NEH_MAJOR=3
3163 EMSCRIPTEN_NEH_MINOR=1
3164 EMSCRIPTEN_NEH_TINY=3
3165 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3167 if test "$enable_wasm_exceptions" = yes; then
3168     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3169     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3170     if test $? -ne 0; then
3171         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3172     else
3173         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3174     fi
3175     ENABLE_WASM_EXCEPTIONS=TRUE
3177 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3179 # Whether to build "avmedia" functionality or not.
3181 if test "$enable_avmedia" = yes; then
3182     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3183     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3184 else
3185     test_gstreamer_1_0=no
3188 # Decide whether to build database connectivity stuff (including Base) or not.
3189 if test "$enable_database_connectivity" != no; then
3190     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3191     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3192 else
3193     if test "$_os" = iOS; then
3194         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3195     fi
3196     disable_database_connectivity_dependencies
3199 if test -z "$enable_extensions"; then
3200     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3201     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3202         enable_extensions=yes
3203     fi
3206 DISABLE_SCRIPTING=''
3207 if test "$enable_scripting" = yes; then
3208     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3209     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3210 else
3211     DISABLE_SCRIPTING='TRUE'
3212     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3215 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3216     # Disable dynamic_loading always for iOS and Android
3217     enable_dynamic_loading=no
3218 elif test -z "$enable_dynamic_loading"; then
3219     # Otherwise enable it unless specifically disabled
3220     enable_dynamic_loading=yes
3223 DISABLE_DYNLOADING=''
3224 if test "$enable_dynamic_loading" = yes; then
3225     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3226 else
3227     DISABLE_DYNLOADING='TRUE'
3228     if test $_os != iOS -a $_os != Android; then
3229         enable_database_connectivity=no
3230         enable_nss=no
3231         enable_odk=no
3232         enable_python=no
3233         enable_skia=no
3234         with_java=no
3235     fi
3237 AC_SUBST(DISABLE_DYNLOADING)
3239 ENABLE_CUSTOMTARGET_COMPONENTS=
3240 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3241     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3242     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3243         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3244     fi
3246 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3248 if test "$enable_extensions" = yes; then
3249     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3250     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3251 else
3252     enable_extension_integration=no
3253     enable_extension_update=no
3256 # remember SYSBASE value
3257 AC_SUBST(SYSBASE)
3259 dnl ===================================================================
3260 dnl  Sort out various gallery compilation options
3261 dnl ===================================================================
3262 WITH_GALLERY_BUILD=TRUE
3263 AC_MSG_CHECKING([how to build and package galleries])
3264 if test -n "${with_galleries}"; then
3265     if test "$with_galleries" = "build"; then
3266         if test "$enable_database_connectivity" = no; then
3267             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3268         fi
3269         AC_MSG_RESULT([build from source images internally])
3270     elif test "$with_galleries" = "no"; then
3271         WITH_GALLERY_BUILD=
3272         AC_MSG_RESULT([disable non-internal gallery build])
3273     else
3274         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3275     fi
3276 else
3277     if test $_os != iOS -a $_os != Android; then
3278         AC_MSG_RESULT([internal src images for desktop])
3279     else
3280         WITH_GALLERY_BUILD=
3281         AC_MSG_RESULT([disable src image build])
3282     fi
3284 AC_SUBST(WITH_GALLERY_BUILD)
3286 dnl ===================================================================
3287 dnl  Sort out various templates compilation options
3288 dnl ===================================================================
3289 WITH_TEMPLATES=TRUE
3290 AC_MSG_CHECKING([build with or without template files])
3291 if test -n "${with_templates}"; then
3292     if test "$with_templates" = "yes"; then
3293         AC_MSG_RESULT([enable all templates])
3294     elif test "$with_templates" = "no"; then
3295         WITH_TEMPLATES=
3296         AC_MSG_RESULT([disable non-internal templates])
3297     else
3298         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3299     fi
3300 else
3301     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3302         AC_MSG_RESULT([enable all templates])
3303     else
3304         WITH_TEMPLATES=
3305         AC_MSG_RESULT([disable non-internal templates])
3306     fi
3308 AC_SUBST(WITH_TEMPLATES)
3310 dnl ===================================================================
3311 dnl  Checks if ccache is available
3312 dnl ===================================================================
3313 CCACHE_DEPEND_MODE=
3314 if test "$enable_ccache" = "no"; then
3315     CCACHE=""
3316 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3317     case "%$CC%$CXX%" in
3318     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3319     # assume that's good then
3320     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3321         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3322         CCACHE_DEPEND_MODE=1
3323         ;;
3324     *)
3325         # try to use our own ccache if it is available and CCACHE was not already defined
3326         if test -z "$CCACHE"; then
3327             if test "$_os" = "WINNT"; then
3328                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3329             fi
3330             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3331                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3332             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3333                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3334             fi
3335         fi
3336         AC_PATH_PROG([CCACHE],[ccache],[not found])
3337         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3338             CCACHE=`win_short_path_for_make "$CCACHE"`
3339             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3340             rm -f conftest.txt
3341             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3342             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3343             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3344                 AC_MSG_RESULT(yes)
3345             else
3346                 AC_MSG_RESULT(no)
3347                 CCACHE="not found"
3348             fi
3349             rm -f conftest.txt
3350         fi
3351         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3352             # on windows/VC perhaps sccache is around?
3353             case "%$CC%$CXX%" in
3354             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3355             # assume that's good then
3356             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3357                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3358                 CCACHE_DEPEND_MODE=1
3359                 SCCACHE=1
3360                 ;;
3361             *)
3362                 # for sharing code below, reuse CCACHE env var
3363                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3364                 if test "$CCACHE" != "not found"; then
3365                     CCACHE=`win_short_path_for_make "$CCACHE"`
3366                     SCCACHE=1
3367                     CCACHE_DEPEND_MODE=1
3368                 fi
3369                 ;;
3370             esac
3371         fi
3372         if test "$CCACHE" = "not found"; then
3373             CCACHE=""
3374         fi
3375         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3376             CCACHE_DEPEND_MODE=1
3377             # Need to check for ccache version: otherwise prevents
3378             # caching of the results (like "-x objective-c++" for Mac)
3379             if test $_os = Darwin -o $_os = iOS; then
3380                 # Check ccache version
3381                 AC_MSG_CHECKING([whether version of ccache is suitable])
3382                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3383                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3384                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3385                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3386                 else
3387                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3388                     CCACHE=""
3389                     CCACHE_DEPEND_MODE=
3390                 fi
3391             fi
3392         fi
3393         if test "$enable_ccache" = yes && test -z "$CCACHE"; then
3394             AC_MSG_ERROR([No suitable ccache found])
3395         fi
3396         ;;
3397     esac
3398 else
3399     CCACHE=""
3401 if test "$enable_ccache" = "nodepend"; then
3402     CCACHE_DEPEND_MODE=""
3404 AC_SUBST(CCACHE_DEPEND_MODE)
3406 # sccache defaults are good enough
3407 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3408     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3409     # or (...) max_size = 20.0 G
3410     # -p works with both 4.2 and 4.4
3411     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3412     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3413     if test "$ccache_size" = ""; then
3414         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3415         if test "$ccache_size" = ""; then
3416             ccache_size=0
3417         fi
3418         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3419         if test $ccache_size -lt 1024; then
3420             CCACHE=""
3421             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3422             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3423         else
3424             # warn that ccache may be too small for debug build
3425             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3426             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3427         fi
3428     else
3429         if test $ccache_size -lt 5; then
3430             #warn that ccache may be too small for debug build
3431             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3432             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3433         fi
3434     fi
3437 ENABLE_Z7_DEBUG=
3438 if test "$enable_z7_debug" != no; then
3439     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3440         ENABLE_Z7_DEBUG=TRUE
3441     fi
3442 else
3443     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3444     add_warning "ccache will not work with --disable-z7-debug"
3446 AC_SUBST(ENABLE_Z7_DEBUG)
3448 dnl ===================================================================
3449 dnl  Checks for C compiler,
3450 dnl  The check for the C++ compiler is later on.
3451 dnl ===================================================================
3452 if test "$_os" != "WINNT"; then
3453     GCC_HOME_SET="true"
3454     AC_MSG_CHECKING([gcc home])
3455     if test -z "$with_gcc_home"; then
3456         if test "$enable_icecream" = "yes"; then
3457             if test -d "/usr/lib/icecc/bin"; then
3458                 GCC_HOME="/usr/lib/icecc/"
3459             elif test -d "/usr/libexec/icecc/bin"; then
3460                 GCC_HOME="/usr/libexec/icecc/"
3461             elif test -d "/opt/icecream/bin"; then
3462                 GCC_HOME="/opt/icecream/"
3463             else
3464                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3466             fi
3467         else
3468             GCC_HOME=`command -v gcc | $SED -e s,/bin/gcc,,`
3469             GCC_HOME_SET="false"
3470         fi
3471     else
3472         GCC_HOME="$with_gcc_home"
3473     fi
3474     AC_MSG_RESULT($GCC_HOME)
3475     AC_SUBST(GCC_HOME)
3477     if test "$GCC_HOME_SET" = "true"; then
3478         if test -z "$CC"; then
3479             CC="$GCC_HOME/bin/gcc"
3480             CC_BASE="gcc"
3481         fi
3482         if test -z "$CXX"; then
3483             CXX="$GCC_HOME/bin/g++"
3484             CXX_BASE="g++"
3485         fi
3486     fi
3489 COMPATH=`dirname "$CC"`
3490 if test "$COMPATH" = "."; then
3491     AC_PATH_PROGS(COMPATH, $CC)
3492     dnl double square bracket to get single because of M4 quote...
3493     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3495 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3497 dnl ===================================================================
3498 dnl Java support
3499 dnl ===================================================================
3500 AC_MSG_CHECKING([whether to build with Java support])
3501 if test "$with_java" != "no"; then
3502     if test "$DISABLE_SCRIPTING" = TRUE; then
3503         AC_MSG_RESULT([no, overridden by --disable-scripting])
3504         ENABLE_JAVA=""
3505         with_java=no
3506     else
3507         AC_MSG_RESULT([yes])
3508         ENABLE_JAVA="TRUE"
3509         AC_DEFINE(HAVE_FEATURE_JAVA)
3510     fi
3511 else
3512     AC_MSG_RESULT([no])
3513     ENABLE_JAVA=""
3516 AC_SUBST(ENABLE_JAVA)
3518 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3520 dnl ENABLE_JAVA="" indicate no Java support at all
3522 dnl ===================================================================
3523 dnl Check macOS SDK and compiler
3524 dnl ===================================================================
3526 if test $_os = Darwin; then
3528     # The SDK in the currently selected Xcode should be found.
3530     AC_MSG_CHECKING([what macOS SDK to use])
3531     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3532     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3533     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3534     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3535     # problems that existed in the PPC days with target versions not being respected or random
3536     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3537     # SDK version is enough, no need to do both...
3538     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3539     if test ! -d "$MACOSX_SDK_PATH"; then
3540         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3541     fi
3542     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3543     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3544     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3545     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3546     # 10.10.2 is 101002
3547     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3548     # correct version in case such an old SDK is specified, it will be rejected later anyway
3549     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3550     if test $MACOSX_SDK_VERSION -lt 101500; then
3551         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3552     fi
3553     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3554         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3555     fi
3556     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3558     AC_MSG_CHECKING([what minimum version of macOS to require])
3559     if test "$with_macosx_version_min_required" = "" ; then
3560         if test "$host_cpu" = x86_64; then
3561             with_macosx_version_min_required="10.15";
3562         else
3563             with_macosx_version_min_required="11.0";
3564         fi
3565     fi
3566     # see same notes about MACOSX_SDK_VERSION above
3567     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3568     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3569         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3570     fi
3571     AC_MSG_RESULT([$with_macosx_version_min_required])
3573     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3574     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3575         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3576     else
3577         AC_MSG_RESULT([yes])
3578     fi
3580     # export this so that "xcrun" invocations later return matching values
3581     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3582     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3583     export DEVELOPER_DIR
3584     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3585     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3587     AC_MSG_CHECKING([whether Xcode is new enough])
3588     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3589     my_xcode_ver2=${my_xcode_ver1#Xcode }
3590     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3591     if test "$my_xcode_ver3" -ge 1205; then
3592         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3593         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3594             if test "$my_xcode_ver3" -ge 1600; then
3595                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3596                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3597                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3598             fi
3599             if test "$my_xcode_ver3" -ge 1500; then
3600                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3601                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3602                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3603                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3604                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3605                 x_LDFLAGS=
3606             fi
3607         fi
3608     else
3609         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3610     fi
3612     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3613     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3615     LIBTOOL=/usr/bin/libtool
3616     INSTALL_NAME_TOOL=install_name_tool
3617     if test -z "$save_CC"; then
3618         stdlib=-stdlib=libc++
3620         AC_MSG_CHECKING([what C compiler to use])
3621         CC="`xcrun -find clang`"
3622         CC_BASE=`first_arg_basename "$CC"`
3623         if test "$host_cpu" = x86_64; then
3624             CC+=" -target x86_64-apple-macos"
3625         else
3626             CC+=" -target arm64-apple-macos"
3627         fi
3628         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3629         AC_MSG_RESULT([$CC])
3631         AC_MSG_CHECKING([what C++ compiler to use])
3632         CXX="`xcrun -find clang++`"
3633         CXX_BASE=`first_arg_basename "$CXX"`
3634         if test "$host_cpu" = x86_64; then
3635             CXX+=" -target x86_64-apple-macos"
3636         else
3637             CXX+=" -target arm64-apple-macos"
3638         fi
3639         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3640         AC_MSG_RESULT([$CXX])
3642         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3643         AR=`xcrun -find ar`
3644         NM=`xcrun -find nm`
3645         STRIP=`xcrun -find strip`
3646         LIBTOOL=`xcrun -find libtool`
3647         RANLIB=`xcrun -find ranlib`
3648     fi
3650     AC_MSG_CHECKING([whether to do code signing])
3652     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3653         AC_MSG_RESULT([no])
3654     else
3655         if test "$enable_macosx_code_signing" = yes; then
3656             # By default use the first suitable certificate (?).
3658             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3659             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3660             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3661             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3662             # "Developer ID Application" one.
3663             identity="Developer ID Application:"
3664         else
3665             identity=$enable_macosx_code_signing
3666         fi
3667         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3668         if test -n "$identity"; then
3669             MACOSX_CODESIGNING_IDENTITY=$identity
3670             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3671             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3672         else
3673             AC_MSG_ERROR([cannot determine identity to use])
3674         fi
3675     fi
3677     AC_MSG_CHECKING([whether to create a Mac App Store package])
3679     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3680         AC_MSG_RESULT([no])
3681     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3682         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3683     else
3684         if test "$enable_macosx_package_signing" = yes; then
3685             # By default use the first suitable certificate.
3686             # It should be a "3rd Party Mac Developer Installer" one
3687             identity="3rd Party Mac Developer Installer:"
3688         else
3689             identity=$enable_macosx_package_signing
3690         fi
3691         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3692         if test -n "$identity"; then
3693             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3694             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3695             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3696         else
3697             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3698         fi
3699     fi
3701     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3702         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3703     fi
3705     AC_MSG_CHECKING([whether to sandbox the application])
3707     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3708         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3709     elif test "$enable_macosx_sandbox" = yes; then
3710         ENABLE_MACOSX_SANDBOX=TRUE
3711         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3712         AC_MSG_RESULT([yes])
3713     else
3714         AC_MSG_RESULT([no])
3715     fi
3717     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3718     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3719     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3721     if test -n "$with_macosx_provisioning_profile" ; then
3722         if test ! -f "$with_macosx_provisioning_profile"; then
3723             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3724         else
3725             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3726             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3727                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3728                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3729                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3730         fi
3731     fi
3733 AC_SUBST(MACOSX_SDK_PATH)
3734 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3735 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3736 AC_SUBST(INSTALL_NAME_TOOL)
3737 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3738 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3739 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3740 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3741 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3742 AC_SUBST(MACOSX_PROVISIONING_INFO)
3743 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3744 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3745 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3747 dnl ===================================================================
3748 dnl Check iOS SDK and compiler
3749 dnl ===================================================================
3751 if test $_os = iOS; then
3752     AC_MSG_CHECKING([what iOS SDK to use])
3754     if test "$enable_ios_simulator" = "yes"; then
3755         platformlc=iphonesimulator
3756         versionmin=-mios-simulator-version-min=14.5
3757     else
3758         platformlc=iphoneos
3759         versionmin=-miphoneos-version-min=14.5
3760     fi
3762     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3764     if ! test -d "$sysroot"; then
3765         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3766     fi
3768     AC_MSG_RESULT($sysroot)
3770     stdlib="-stdlib=libc++"
3772     AC_MSG_CHECKING([what C compiler to use])
3773     CC="`xcrun -find clang`"
3774     CC_BASE=`first_arg_basename "$CC"`
3775     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3776     AC_MSG_RESULT([$CC])
3778     AC_MSG_CHECKING([what C++ compiler to use])
3779     CXX="`xcrun -find clang++`"
3780     CXX_BASE=`first_arg_basename "$CXX"`
3781     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3782     AC_MSG_RESULT([$CXX])
3784     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3785     AR=`xcrun -find ar`
3786     NM=`xcrun -find nm`
3787     STRIP=`xcrun -find strip`
3788     LIBTOOL=`xcrun -find libtool`
3789     RANLIB=`xcrun -find ranlib`
3792 AC_MSG_CHECKING([whether to treat the installation as read-only])
3794 if test $_os = Darwin; then
3795     enable_readonly_installset=yes
3796 elif test "$enable_extensions" != yes; then
3797     enable_readonly_installset=yes
3799 if test "$enable_readonly_installset" = yes; then
3800     AC_MSG_RESULT([yes])
3801     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3802 else
3803     AC_MSG_RESULT([no])
3806 dnl ===================================================================
3807 dnl Structure of install set
3808 dnl ===================================================================
3810 if test $_os = Darwin; then
3811     LIBO_BIN_FOLDER=MacOS
3812     LIBO_ETC_FOLDER=Resources
3813     LIBO_LIBEXEC_FOLDER=MacOS
3814     LIBO_LIB_FOLDER=Frameworks
3815     LIBO_LIB_PYUNO_FOLDER=Resources
3816     LIBO_SHARE_FOLDER=Resources
3817     LIBO_SHARE_HELP_FOLDER=Resources/help
3818     LIBO_SHARE_JAVA_FOLDER=Resources/java
3819     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3820     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3821     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3822     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3823     LIBO_URE_BIN_FOLDER=MacOS
3824     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3825     LIBO_URE_LIB_FOLDER=Frameworks
3826     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3827     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3828 elif test $_os = WINNT; then
3829     LIBO_BIN_FOLDER=program
3830     LIBO_ETC_FOLDER=program
3831     LIBO_LIBEXEC_FOLDER=program
3832     LIBO_LIB_FOLDER=program
3833     LIBO_LIB_PYUNO_FOLDER=program
3834     LIBO_SHARE_FOLDER=share
3835     LIBO_SHARE_HELP_FOLDER=help
3836     LIBO_SHARE_JAVA_FOLDER=program/classes
3837     LIBO_SHARE_PRESETS_FOLDER=presets
3838     LIBO_SHARE_READMES_FOLDER=readmes
3839     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3840     LIBO_SHARE_SHELL_FOLDER=program/shell
3841     LIBO_URE_BIN_FOLDER=program
3842     LIBO_URE_ETC_FOLDER=program
3843     LIBO_URE_LIB_FOLDER=program
3844     LIBO_URE_MISC_FOLDER=program
3845     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3846 else
3847     LIBO_BIN_FOLDER=program
3848     LIBO_ETC_FOLDER=program
3849     LIBO_LIBEXEC_FOLDER=program
3850     LIBO_LIB_FOLDER=program
3851     LIBO_LIB_PYUNO_FOLDER=program
3852     LIBO_SHARE_FOLDER=share
3853     LIBO_SHARE_HELP_FOLDER=help
3854     LIBO_SHARE_JAVA_FOLDER=program/classes
3855     LIBO_SHARE_PRESETS_FOLDER=presets
3856     LIBO_SHARE_READMES_FOLDER=readmes
3857     if test "$enable_fuzzers" != yes; then
3858         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3859     else
3860         LIBO_SHARE_RESOURCE_FOLDER=resource
3861     fi
3862     LIBO_SHARE_SHELL_FOLDER=program/shell
3863     LIBO_URE_BIN_FOLDER=program
3864     LIBO_URE_ETC_FOLDER=program
3865     LIBO_URE_LIB_FOLDER=program
3866     LIBO_URE_MISC_FOLDER=program
3867     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3869 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3870 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3871 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3872 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3873 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3874 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3875 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3876 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3877 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3878 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3879 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3880 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3886 # Not all of them needed in config_host.mk, add more if need arises
3887 AC_SUBST(LIBO_BIN_FOLDER)
3888 AC_SUBST(LIBO_ETC_FOLDER)
3889 AC_SUBST(LIBO_LIB_FOLDER)
3890 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3891 AC_SUBST(LIBO_SHARE_FOLDER)
3892 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3893 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3894 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3895 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3896 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3897 AC_SUBST(LIBO_URE_BIN_FOLDER)
3898 AC_SUBST(LIBO_URE_ETC_FOLDER)
3899 AC_SUBST(LIBO_URE_LIB_FOLDER)
3900 AC_SUBST(LIBO_URE_MISC_FOLDER)
3901 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3903 dnl ===================================================================
3904 dnl Windows specific tests and stuff
3905 dnl ===================================================================
3907 reg_get_value()
3909     # Return value: $regvalue
3910     unset regvalue
3912     if test "$build_os" = "wsl"; then
3913         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3914         return
3915     fi
3917     local _regentry="/proc/registry${1}/${2}"
3918     if test -f "$_regentry"; then
3919         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3920         # Registry keys read via /proc/registry* are always \0 terminated!
3921         local _regvalue=$(tr -d '\0' < "$_regentry")
3922         if test $? -eq 0; then
3923             regvalue=$_regvalue
3924         fi
3925     fi
3928 # Get a value from the 32-bit side of the Registry
3929 reg_get_value_32()
3931     reg_get_value "32" "$1"
3934 # Get a value from the 64-bit side of the Registry
3935 reg_get_value_64()
3937     reg_get_value "64" "$1"
3940 reg_list_values()
3942     # Return value: $reglist
3943     unset reglist
3945     if test "$build_os" = "wsl"; then
3946         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3947         return
3948     fi
3950     reglist=$(ls "/proc/registry${1}/${2}")
3953 # List values from the 32-bit side of the Registry
3954 reg_list_values_32()
3956     reg_list_values "32" "$1"
3959 # List values from the 64-bit side of the Registry
3960 reg_list_values_64()
3962     reg_list_values "64" "$1"
3965 case "$host_os" in
3966 cygwin*|wsl*)
3967     COM=MSC
3968     OS=WNT
3969     RTL_OS=Windows
3970     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3971         P_SEP=";"
3972     else
3973         P_SEP=:
3974     fi
3975     case "$host_cpu" in
3976     x86_64)
3977         CPUNAME=X86_64
3978         RTL_ARCH=X86_64
3979         PLATFORMID=windows_x86_64
3980         WINDOWS_X64=1
3981         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3982         WIN_HOST_ARCH="x64"
3983         WIN_MULTI_ARCH="x86"
3984         WIN_HOST_BITS=64
3985         ;;
3986     i*86)
3987         CPUNAME=INTEL
3988         RTL_ARCH=x86
3989         PLATFORMID=windows_x86
3990         WIN_HOST_ARCH="x86"
3991         WIN_HOST_BITS=32
3992         WIN_OTHER_ARCH="x64"
3993         ;;
3994     aarch64)
3995         CPUNAME=AARCH64
3996         RTL_ARCH=AARCH64
3997         PLATFORMID=windows_aarch64
3998         WINDOWS_X64=1
3999         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4000         WIN_HOST_ARCH="arm64"
4001         WIN_HOST_BITS=64
4002         with_ucrt_dir=no
4003         ;;
4004     *)
4005         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4006         ;;
4007     esac
4009     case "$build_cpu" in
4010     x86_64) WIN_BUILD_ARCH="x64" ;;
4011     i*86) WIN_BUILD_ARCH="x86" ;;
4012     aarch64) WIN_BUILD_ARCH="arm64" ;;
4013     *)
4014         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4015         ;;
4016     esac
4018     SCPDEFS="$SCPDEFS -D_MSC_VER"
4019     ;;
4020 esac
4022 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4023 # other-arch won't, but wouldn't break the build (x64 on x86).
4024 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4025     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4029 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4030     # To allow building Windows multi-arch releases without cross-tooling
4031     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4032         cross_compiling="yes"
4033     fi
4036 if test "$cross_compiling" = "yes"; then
4037     export CROSS_COMPILING=TRUE
4038     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4039         ENABLE_WASM_STRIP=TRUE
4040     fi
4041     if test "$_os" = "Emscripten"; then
4042         if test "$with_main_module" = "calc"; then
4043             ENABLE_WASM_STRIP_WRITER=TRUE
4044         elif test "$with_main_module" = "writer"; then
4045             ENABLE_WASM_STRIP_CALC=TRUE
4046         fi
4047     fi
4048 else
4049     CROSS_COMPILING=
4050     BUILD_TYPE="$BUILD_TYPE NATIVE"
4052 AC_SUBST(CROSS_COMPILING)
4053 AC_SUBST(ENABLE_WASM_STRIP)
4054 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4055 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4057 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4058 # NOTE: must _not_ be used for bundled external libraries!
4059 ISYSTEM=
4060 if test "$GCC" = "yes"; then
4061     AC_MSG_CHECKING( for -isystem )
4062     save_CFLAGS=$CFLAGS
4063     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4064     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4065     CFLAGS=$save_CFLAGS
4066     if test -n "$ISYSTEM"; then
4067         AC_MSG_RESULT(yes)
4068     else
4069         AC_MSG_RESULT(no)
4070     fi
4072 if test -z "$ISYSTEM"; then
4073     # fall back to using -I
4074     ISYSTEM=-I
4076 AC_SUBST(ISYSTEM)
4078 dnl ===================================================================
4079 dnl  Check which Visual Studio compiler is used
4080 dnl ===================================================================
4082 map_vs_year_to_version()
4084     # Return value: $vsversion
4086     unset vsversion
4088     case $1 in
4089     2019)
4090         vsversion=16;;
4091     2022)
4092         vsversion=17;;
4093     2022preview)
4094         vsversion=17.9;;
4095     *)
4096         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4097     esac
4100 vs_versions_to_check()
4102     # Args: $1 (optional) : versions to check, in the order of preference
4103     # Return value: $vsversions
4105     unset vsversions
4107     if test -n "$1"; then
4108         map_vs_year_to_version "$1"
4109         vsversions=$vsversion
4110     else
4111         # Default version is 2019
4112         vsversions="16"
4113     fi
4116 win_get_env_from_vsdevcmdbat()
4118     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4119     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4120     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4121     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4122     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4123     local result
4124     if test "$build_os" = "wsl"; then
4125         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4126     else
4127         chmod +x $WRAPPERBATCHFILEPATH
4128         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4129     fi
4130     rm -f $WRAPPERBATCHFILEPATH
4131     printf '%s' "$result"
4134 find_ucrt()
4136     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4137     if test -n "$regvalue"; then
4138         PathFormat "$regvalue"
4139         UCRTSDKDIR=$formatted_path_unix
4140         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4141         UCRTVERSION=$regvalue
4142         # Rest if not exist
4143         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4144           UCRTSDKDIR=
4145         fi
4146     fi
4147     if test -z "$UCRTSDKDIR"; then
4148         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4149         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4150         if test -f "$ide_env_file"; then
4151             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4152             UCRTSDKDIR=$formatted_path
4153             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4154             dnl Hack needed at least by tml:
4155             if test "$UCRTVERSION" = 10.0.15063.0 \
4156                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4157                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4158             then
4159                 UCRTVERSION=10.0.14393.0
4160             fi
4161         else
4162           AC_MSG_ERROR([No UCRT found])
4163         fi
4164     fi
4167 find_msvc()
4169     # Find Visual C++
4170     # Args: $1 (optional) : The VS version year
4171     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4173     unset vctest vctoolset vcnumwithdot vcbuildnumber
4175     vs_versions_to_check "$1"
4176     if test "$build_os" = wsl; then
4177         vswhere="$PROGRAMFILESX86"
4178         if test -z "$vswhere"; then
4179             vswhere="c:\\Program Files (x86)"
4180         fi
4181     else
4182         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4183     fi
4184     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4185     PathFormat "$vswhere"
4186     vswhere=$formatted_path_unix
4187     for ver in $vsversions; do
4188         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4189         if test -z "$vswhereoutput"; then
4190             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4191         fi
4192         # Fall back to all MS products (this includes VC++ Build Tools)
4193         if ! test -n "$vswhereoutput"; then
4194             AC_MSG_CHECKING([VC++ Build Tools and similar])
4195             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4196         fi
4197         if test -n "$vswhereoutput"; then
4198             PathFormat "$vswhereoutput"
4199             vctest=$formatted_path_unix
4200             break
4201         fi
4202     done
4204     if test -n "$vctest"; then
4205         vcnumwithdot="$ver"
4206         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4207             vcnumwithdot=$vcnumwithdot.0
4208         fi
4209         case "$vcnumwithdot" in
4210         16.0)
4211             vcyear=2019
4212             vctoolset=v142
4213             ;;
4214         17.0 | 17.9)
4215             vcyear=2022
4216             vctoolset=v143
4217             ;;
4218         esac
4219         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4221     fi
4224 test_cl_exe()
4226     AC_MSG_CHECKING([$1 compiler])
4228     CL_EXE_PATH="$2/cl.exe"
4230     if test ! -f "$CL_EXE_PATH"; then
4231         if test "$1" = "multi-arch"; then
4232             AC_MSG_WARN([no compiler (cl.exe) in $2])
4233             return 1
4234         else
4235             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4236         fi
4237     fi
4239     dnl ===========================================================
4240     dnl  Check for the corresponding mspdb*.dll
4241     dnl ===========================================================
4243     # MSVC 15.0 has libraries from 14.0?
4244     mspdbnum="140"
4246     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4247         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4248     fi
4250     # The compiles has to find its shared libraries
4251     OLD_PATH="$PATH"
4252     TEMP_PATH=`cygpath -d "$2"`
4253     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4255     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4256         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4257     fi
4259     PATH="$OLD_PATH"
4261     AC_MSG_RESULT([$CL_EXE_PATH])
4264 SOLARINC=
4265 MSBUILD_PATH=
4266 DEVENV=
4267 if test "$_os" = "WINNT"; then
4268     AC_MSG_CHECKING([Visual C++])
4269     find_msvc "$with_visual_studio"
4270     if test -z "$vctest"; then
4271         if test -n "$with_visual_studio"; then
4272             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4273         else
4274             AC_MSG_ERROR([no Visual Studio installation found])
4275         fi
4276     fi
4277     AC_MSG_RESULT([])
4279     VC_PRODUCT_DIR="$vctest/VC"
4280     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4282     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4283     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4284         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4285         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4286         if test $? -ne 0; then
4287             WIN_MULTI_ARCH=""
4288             WIN_OTHER_ARCH=""
4289         fi
4290     fi
4292     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4293         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4294         test_cl_exe "build" "$MSVC_BUILD_PATH"
4295     fi
4297     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4298         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4299         test_cl_exe "host" "$MSVC_HOST_PATH"
4300     else
4301         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4302     fi
4304     AC_MSG_CHECKING([for short pathname of VC product directory])
4305     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4306     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4308     UCRTSDKDIR=
4309     UCRTVERSION=
4311     AC_MSG_CHECKING([for UCRT location])
4312     find_ucrt
4313     # find_ucrt errors out if it doesn't find it
4314     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4315     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4316     ucrtincpath_formatted=$formatted_path
4317     # SOLARINC is used for external modules and must be set too.
4318     # And no, it's not sufficient to set SOLARINC only, as configure
4319     # itself doesn't honour it.
4320     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4321     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4322     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4323     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4325     AC_SUBST(UCRTSDKDIR)
4326     AC_SUBST(UCRTVERSION)
4328     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4329     # Find the proper version of MSBuild.exe to use based on the VS version
4330     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4331     if test -z "$regvalue" ; then
4332         if test "$WIN_BUILD_ARCH" != "x64"; then
4333             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4334         else
4335             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4336         fi
4337     fi
4338     if test -d "$regvalue" ; then
4339         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4340         AC_MSG_RESULT([$regvalue])
4341     else
4342         AC_MSG_ERROR([MSBuild.exe location not found])
4343     fi
4345     # Find the version of devenv.exe
4346     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4347     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4348     DEVENV_unix=$(cygpath -u "$DEVENV")
4349     if test ! -e "$DEVENV_unix"; then
4350         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4351     fi
4353     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4354     dnl needed when building CLR code:
4355     if test -z "$MSVC_CXX"; then
4356         # This gives us a posix path with 8.3 filename restrictions
4357         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4358     fi
4360     if test -z "$CC"; then
4361         CC=$MSVC_CXX
4362         CC_BASE=`first_arg_basename "$CC"`
4363     fi
4364     if test -z "$CXX"; then
4365         CXX=$MSVC_CXX
4366         CXX_BASE=`first_arg_basename "$CXX"`
4367     fi
4369     if test -n "$CC"; then
4370         # Remove /cl.exe from CC case insensitive
4371         AC_MSG_NOTICE([found Visual C++ $vcyear])
4373         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4374         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4376         PathFormat "$COMPATH"
4377         COMPATH=`win_short_path_for_make "$formatted_path"`
4379         VCVER=$vcnumwithdot
4380         VCTOOLSET=$vctoolset
4382         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4383         # are always "better", we list them in reverse chronological order.
4385         case "$vcnumwithdot" in
4386         16.0 | 17.0 | 17.9)
4387             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4388             ;;
4389         esac
4391         # The expectation is that --with-windows-sdk should not need to be used
4392         if test -n "$with_windows_sdk"; then
4393             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4394             *" "$with_windows_sdk" "*)
4395                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4396                 ;;
4397             *)
4398                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4399                 ;;
4400             esac
4401         fi
4403         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4404         ac_objext=obj
4405         ac_exeext=exe
4407     else
4408         AC_MSG_ERROR([Visual C++ not found after all, huh])
4409     fi
4411     # ERROR if VS version < 16.5
4412     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4413     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4414         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4415         // between Visual Studio versions and _MSC_VER:
4416         #if _MSC_VER < 1925
4417         #error
4418         #endif
4419     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4421     # WARN if VS version < 16.10
4422     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4423     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4424         #if _MSC_VER < 1929
4425         #error
4426         #endif
4427     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4429     if test $vs2019_recommended_version = yes; then
4430         AC_MSG_RESULT([yes])
4431     else
4432         AC_MSG_WARN([no])
4433         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."
4434     fi
4436     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4437     # version of the Explorer extension (and maybe other small
4438     # bits, too) needed when installing a 32-bit LibreOffice on a
4439     # 64-bit OS. The 64-bit Explorer extension is a feature that
4440     # has been present since long in OOo. Don't confuse it with
4441     # building LibreOffice itself as 64-bit code.
4443     BUILD_X64=
4444     CXX_X64_BINARY=
4446     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4447         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4448         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4449              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4450         then
4451             BUILD_X64=TRUE
4452             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4453             AC_MSG_RESULT([found])
4454         else
4455             AC_MSG_RESULT([not found])
4456             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4457         fi
4458     elif test "$WIN_HOST_ARCH" = "x64"; then
4459         CXX_X64_BINARY=$CXX
4460     fi
4461     AC_SUBST(BUILD_X64)
4463     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4464     AC_SUBST(CXX_X64_BINARY)
4466     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4467     # needed to support TWAIN scan on both 32- and 64-bit systems
4469     case "$WIN_HOST_ARCH" in
4470     x64)
4471         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4472         if test -n "$CXX_X86_BINARY"; then
4473             BUILD_X86=TRUE
4474             AC_MSG_RESULT([preset])
4475         elif test -n "$WIN_MULTI_ARCH"; then
4476             BUILD_X86=TRUE
4477             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4478             AC_MSG_RESULT([found])
4479         else
4480             AC_MSG_RESULT([not found])
4481             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4482         fi
4483         ;;
4484     x86)
4485         BUILD_X86=TRUE
4486         CXX_X86_BINARY=$MSVC_CXX
4487         ;;
4488     esac
4489     AC_SUBST(BUILD_X86)
4490     AC_SUBST(CXX_X86_BINARY)
4492 AC_SUBST(VCVER)
4493 AC_SUBST(VCTOOLSET)
4494 AC_SUBST(DEVENV)
4495 AC_SUBST(MSVC_CXX)
4497 COM_IS_CLANG=
4498 AC_MSG_CHECKING([whether the compiler is actually Clang])
4499 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4500     #ifndef __clang__
4501     you lose
4502     #endif
4503     int foo=42;
4504     ]])],
4505     [AC_MSG_RESULT([yes])
4506      COM_IS_CLANG=TRUE],
4507     [AC_MSG_RESULT([no])])
4508 AC_SUBST(COM_IS_CLANG)
4510 CLANGVER=
4511 if test "$COM_IS_CLANG" = TRUE; then
4512     AC_MSG_CHECKING([whether Clang is new enough])
4513     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4514         #if !defined __apple_build_version__
4515         #error
4516         #endif
4517         ]])],
4518         [my_apple_clang=yes],[my_apple_clang=])
4519     if test "$my_apple_clang" = yes; then
4520         AC_MSG_RESULT([assumed yes (Apple Clang)])
4521     elif test "$_os" = Emscripten; then
4522         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4523     else
4524         if test "$_os" = WINNT; then
4525             dnl In which case, assume clang-cl:
4526             my_args="/EP /TC"
4527         else
4528             my_args="-E -P"
4529         fi
4530         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4531         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4532         CLANGVER=`echo $clang_version \
4533             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4534         if test "$CLANGVER" -ge 120000; then
4535             AC_MSG_RESULT([yes ($clang_version)])
4536         else
4537             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4538         fi
4539         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4540         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4541     fi
4544 SHOWINCLUDES_PREFIX=
4545 if test "$_os" = WINNT; then
4546     dnl We need to guess the prefix of the -showIncludes output, it can be
4547     dnl localized
4548     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4549     echo "#include <stdlib.h>" > conftest.c
4550     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4551         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4552     rm -f conftest.c conftest.obj
4553     if test -z "$SHOWINCLUDES_PREFIX"; then
4554         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4555     else
4556         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4557     fi
4559 AC_SUBST(SHOWINCLUDES_PREFIX)
4562 # prefix C with ccache if needed
4564 if test "$CCACHE" != ""; then
4565     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4567     AC_LANG_PUSH([C])
4568     save_CFLAGS=$CFLAGS
4569     CFLAGS="$CFLAGS --ccache-skip -O2"
4570     # msvc does not fail on unknown options, check stdout
4571     if test "$COM" = MSC; then
4572         CFLAGS="$CFLAGS -nologo"
4573     fi
4574     save_ac_c_werror_flag=$ac_c_werror_flag
4575     ac_c_werror_flag=yes
4576     dnl an empty program will do, we're checking the compiler flags
4577     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4578                       [use_ccache=yes], [use_ccache=no])
4579     CFLAGS=$save_CFLAGS
4580     ac_c_werror_flag=$save_ac_c_werror_flag
4581     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4582         AC_MSG_RESULT([yes])
4583     else
4584         CC="$CCACHE $CC"
4585         CC_BASE="ccache $CC_BASE"
4586         AC_MSG_RESULT([no])
4587     fi
4588     AC_LANG_POP([C])
4591 # ===================================================================
4592 # check various GCC options that Clang does not support now but maybe
4593 # will somewhen in the future, check them even for GCC, so that the
4594 # flags are set
4595 # ===================================================================
4597 HAVE_GCC_GGDB2=
4598 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4599     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4600     save_CFLAGS=$CFLAGS
4601     CFLAGS="$CFLAGS -Werror -ggdb2"
4602     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4603     CFLAGS=$save_CFLAGS
4604     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4605         AC_MSG_RESULT([yes])
4606     else
4607         AC_MSG_RESULT([no])
4608     fi
4610     if test "$host_cpu" = "m68k"; then
4611         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4612         save_CFLAGS=$CFLAGS
4613         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4614         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4615         CFLAGS=$save_CFLAGS
4616         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4617             AC_MSG_RESULT([yes])
4618         else
4619             AC_MSG_ERROR([no])
4620         fi
4621     fi
4623 AC_SUBST(HAVE_GCC_GGDB2)
4625 dnl ===================================================================
4626 dnl  Test the gcc version
4627 dnl ===================================================================
4628 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4629     AC_MSG_CHECKING([the GCC version])
4630     _gcc_version=`$CC -dumpfullversion`
4631     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4632         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4633     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4635     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4637     if test "$gcc_full_version" -lt 120000; then
4638         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4639     fi
4640 else
4641     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4642     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4643     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4644     # (which reports itself as GCC 4.2.1).
4645     GCC_VERSION=
4647 AC_SUBST(GCC_VERSION)
4649 dnl Set the ENABLE_DBGUTIL variable
4650 dnl ===================================================================
4651 AC_MSG_CHECKING([whether to build with additional debug utilities])
4652 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4653     ENABLE_DBGUTIL="TRUE"
4654     # this is an extra var so it can have different default on different MSVC
4655     # versions (in case there are version specific problems with it)
4656     MSVC_USE_DEBUG_RUNTIME="TRUE"
4658     AC_MSG_RESULT([yes])
4659     # cppunit and graphite expose STL in public headers
4660     if test "$with_system_cppunit" = "yes"; then
4661         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4662     else
4663         with_system_cppunit=no
4664     fi
4665     if test "$with_system_graphite" = "yes"; then
4666         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4667     else
4668         with_system_graphite=no
4669     fi
4670     if test "$with_system_orcus" = "yes"; then
4671         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4672     else
4673         with_system_orcus=no
4674     fi
4675     if test "$with_system_libcmis" = "yes"; then
4676         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4677     else
4678         with_system_libcmis=no
4679     fi
4680     if test "$with_system_hunspell" = "yes"; then
4681         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4682     else
4683         with_system_hunspell=no
4684     fi
4685     if test "$with_system_gpgmepp" = "yes"; then
4686         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4687     else
4688         with_system_gpgmepp=no
4689     fi
4690     if test "$with_system_zxing" = "yes"; then
4691         AC_MSG_ERROR([--with-system-zxing conflicts with --enable-dbgutil])
4692     else
4693         with_system_zxing=no
4694     fi
4695     if test "$with_system_poppler" = "yes"; then
4696         AC_MSG_ERROR([--with-system-poppler conflicts with --enable-dbgutil])
4697     else
4698         with_system_poppler=no
4699     fi
4700     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4701     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4702     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4703     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4704     # of those two is using the system variant:
4705     if test "$with_system_libnumbertext" = "yes"; then
4706         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4707     else
4708         with_system_libnumbertext=no
4709     fi
4710     if test "$with_system_libwps" = "yes"; then
4711         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4712     else
4713         with_system_libwps=no
4714     fi
4715 else
4716     ENABLE_DBGUTIL=""
4717     MSVC_USE_DEBUG_RUNTIME=""
4718     AC_MSG_RESULT([no])
4720 AC_SUBST(ENABLE_DBGUTIL)
4721 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4723 dnl Set the ENABLE_DEBUG variable.
4724 dnl ===================================================================
4725 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4726     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4728 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4729     if test -z "$libo_fuzzed_enable_debug"; then
4730         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4731     else
4732         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4733         enable_debug=yes
4734     fi
4737 AC_MSG_CHECKING([whether to do a debug build])
4738 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4739     ENABLE_DEBUG="TRUE"
4740     if test -n "$ENABLE_DBGUTIL" ; then
4741         AC_MSG_RESULT([yes (dbgutil)])
4742     else
4743         AC_MSG_RESULT([yes])
4744     fi
4745 else
4746     ENABLE_DEBUG=""
4747     AC_MSG_RESULT([no])
4749 AC_SUBST(ENABLE_DEBUG)
4751 dnl ===================================================================
4752 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4753 dnl This is done only after compiler checks (need to know if Clang is
4754 dnl used, for different defaults) and after checking if a debug build
4755 dnl is wanted (non-debug builds get the default linker if not explicitly
4756 dnl specified otherwise).
4757 dnl All checks for linker features/options should come after this.
4758 dnl ===================================================================
4759 check_use_ld()
4761     use_ld=-fuse-ld=${1%%:*}
4762     use_ld_path=${1#*:}
4763     if test "$use_ld_path" != "$1"; then
4764         if test "$COM_IS_CLANG" = TRUE; then
4765             if test "$CLANGVER" -ge 120000; then
4766                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4767             else
4768                 use_ld="-fuse-ld=${use_ld_path}"
4769             fi
4770         else
4771             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4772             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4773             # pickup the alternative linker, when called by libtool for linking.
4774             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4775             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4776         fi
4777     fi
4778     use_ld_fail_if_error=$2
4779     use_ld_ok=
4780     AC_MSG_CHECKING([for $use_ld linker support])
4781     use_ld_ldflags_save="$LDFLAGS"
4782     LDFLAGS="$LDFLAGS $use_ld"
4783     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4784 #include <stdio.h>
4785         ],[
4786 printf ("hello world\n");
4787         ])], USE_LD=$use_ld, [])
4788     if test -n "$USE_LD"; then
4789         AC_MSG_RESULT( yes )
4790         use_ld_ok=yes
4791     else
4792         if test -n "$use_ld_fail_if_error"; then
4793             AC_MSG_ERROR( no )
4794         else
4795             AC_MSG_RESULT( no )
4796         fi
4797     fi
4798     if test -n "$use_ld_ok"; then
4799         dnl keep the value of LDFLAGS
4800         return 0
4801     fi
4802     LDFLAGS="$use_ld_ldflags_save"
4803     return 1
4805 USE_LD=
4806 if test "$enable_ld" != "no"; then
4807     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4808         if test -n "$enable_ld"; then
4809             check_use_ld "$enable_ld" fail_if_error
4810         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4811             dnl non-debug builds default to the default linker
4812             true
4813         elif test -n "$COM_IS_CLANG"; then
4814             check_use_ld lld
4815             if test $? -ne 0; then
4816                 check_use_ld gold
4817                 if test $? -ne 0; then
4818                     check_use_ld mold
4819                 fi
4820             fi
4821         else
4822             # For gcc first try gold, new versions also support lld/mold.
4823             check_use_ld gold
4824             if test $? -ne 0; then
4825                 check_use_ld lld
4826                 if test $? -ne 0; then
4827                     check_use_ld mold
4828                 fi
4829             fi
4830         fi
4831         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4832         rm conftest.out
4833         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4834         if test -z "$ld_used"; then
4835             ld_used="unknown"
4836         fi
4837         AC_MSG_CHECKING([for linker that is used])
4838         AC_MSG_RESULT([$ld_used])
4839         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4840             if echo "$ld_used" | grep -q "^GNU ld"; then
4841                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4842                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4843             fi
4844         fi
4845     else
4846         if test "$enable_ld" = "yes"; then
4847             AC_MSG_ERROR([--enable-ld not supported])
4848         fi
4849     fi
4851 AC_SUBST(USE_LD)
4852 AC_SUBST(LD)
4854 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4855 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4856     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4857     bsymbolic_functions_ldflags_save=$LDFLAGS
4858     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4859     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4860 #include <stdio.h>
4861         ],[
4862 printf ("hello world\n");
4863         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4864     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4865         AC_MSG_RESULT( found )
4866     else
4867         AC_MSG_RESULT( not found )
4868     fi
4869     LDFLAGS=$bsymbolic_functions_ldflags_save
4871 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4873 LD_GC_SECTIONS=
4874 if test "$GCC" = "yes"; then
4875     for flag in "--gc-sections" "-dead_strip"; do
4876         AC_MSG_CHECKING([for $flag linker support])
4877         ldflags_save=$LDFLAGS
4878         LDFLAGS="$LDFLAGS -Wl,$flag"
4879         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4880 #include <stdio.h>
4881             ],[
4882 printf ("hello world\n");
4883             ])],[
4884             LD_GC_SECTIONS="-Wl,$flag"
4885             AC_MSG_RESULT( found )
4886             ], [
4887             AC_MSG_RESULT( not found )
4888             ])
4889         LDFLAGS=$ldflags_save
4890         if test -n "$LD_GC_SECTIONS"; then
4891             break
4892         fi
4893     done
4895 AC_SUBST(LD_GC_SECTIONS)
4897 HAVE_EXTERNAL_DWARF=
4898 if test "$enable_split_debug" != no; then
4899     use_split_debug=
4900     if test -n "$ENABLE_LTO"; then
4901         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4902     elif test "$enable_split_debug" = yes; then
4903         use_split_debug=1
4904     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4905     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4906         use_split_debug=1
4907     fi
4908     if test -n "$use_split_debug"; then
4909         if test "$_os" = "Emscripten"; then
4910             TEST_CC_FLAG=-gseparate-dwarf
4911         else
4912             TEST_CC_FLAG=-gsplit-dwarf
4913         fi
4914         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4915         save_CFLAGS=$CFLAGS
4916         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4917         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4918         CFLAGS=$save_CFLAGS
4919         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4920             AC_MSG_RESULT([yes])
4921         else
4922             if test "$enable_split_debug" = yes; then
4923                 AC_MSG_ERROR([no])
4924             else
4925                 AC_MSG_RESULT([no])
4926             fi
4927         fi
4928     fi
4929     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4930         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4931         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4932     fi
4934 AC_SUBST(HAVE_EXTERNAL_DWARF)
4936 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4937 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4938 save_CFLAGS=$CFLAGS
4939 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4940 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4941 CFLAGS=$save_CFLAGS
4942 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4943     AC_MSG_RESULT([yes])
4944 else
4945     AC_MSG_RESULT([no])
4947 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4949 ENABLE_GDB_INDEX=
4950 if test "$enable_gdb_index" != "no"; then
4951     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4952     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4953         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4954         save_CFLAGS=$CFLAGS
4955         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4956         have_ggnu_pubnames=
4957         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4958         if test "$have_ggnu_pubnames" != "TRUE"; then
4959             if test "$enable_gdb_index" = "yes"; then
4960                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4961             else
4962                 AC_MSG_RESULT( no )
4963             fi
4964         else
4965             AC_MSG_RESULT( yes )
4966             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4967             ldflags_save=$LDFLAGS
4968             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4969             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4970 #include <stdio.h>
4971                 ],[
4972 printf ("hello world\n");
4973                 ])], ENABLE_GDB_INDEX=TRUE, [])
4974             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4975                 AC_MSG_RESULT( yes )
4976             else
4977                 if test "$enable_gdb_index" = "yes"; then
4978                     AC_MSG_ERROR( no )
4979                 else
4980                     AC_MSG_RESULT( no )
4981                 fi
4982             fi
4983             LDFLAGS=$ldflags_save
4984         fi
4985         CFLAGS=$save_CFLAGS
4986         fi
4987     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4988         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4989         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4990     fi
4992 AC_SUBST(ENABLE_GDB_INDEX)
4994 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4995     enable_sal_log=yes
4997 if test "$enable_sal_log" = yes; then
4998     ENABLE_SAL_LOG=TRUE
5000 AC_SUBST(ENABLE_SAL_LOG)
5002 dnl Check for enable symbols option
5003 dnl ===================================================================
5004 AC_MSG_CHECKING([whether to generate debug information])
5005 if test -z "$enable_symbols"; then
5006     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5007         enable_symbols=yes
5008     else
5009         enable_symbols=no
5010     fi
5012 if test "$enable_symbols" = yes; then
5013     ENABLE_SYMBOLS_FOR=all
5014     AC_MSG_RESULT([yes])
5015 elif test "$enable_symbols" = no; then
5016     ENABLE_SYMBOLS_FOR=
5017     AC_MSG_RESULT([no])
5018 else
5019     # Selective debuginfo.
5020     ENABLE_SYMBOLS_FOR="$enable_symbols"
5021     AC_MSG_RESULT([for "$enable_symbols"])
5023 AC_SUBST(ENABLE_SYMBOLS_FOR)
5025 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5026     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5027     AC_MSG_CHECKING([whether enough memory is available for linking])
5028     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5029     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5030     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5031         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5032     else
5033         AC_MSG_RESULT([yes])
5034     fi
5037 ENABLE_OPTIMIZED=
5038 ENABLE_OPTIMIZED_DEBUG=
5039 AC_MSG_CHECKING([whether to compile with optimization flags])
5040 if test -z "$enable_optimized"; then
5041     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5042         enable_optimized=no
5043     else
5044         enable_optimized=yes
5045     fi
5047 if test "$enable_optimized" = yes; then
5048     ENABLE_OPTIMIZED=TRUE
5049     AC_MSG_RESULT([yes])
5050 elif test "$enable_optimized" = debug; then
5051     ENABLE_OPTIMIZED_DEBUG=TRUE
5052     AC_MSG_RESULT([yes (debug)])
5053     HAVE_GCC_OG=
5054     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5055         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5056         save_CFLAGS=$CFLAGS
5057         CFLAGS="$CFLAGS -Werror -Og"
5058         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5059         CFLAGS=$save_CFLAGS
5060         if test "$HAVE_GCC_OG" = "TRUE"; then
5061             AC_MSG_RESULT([yes])
5062         else
5063             AC_MSG_RESULT([no])
5064         fi
5065     fi
5066     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5067         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5068     fi
5069 else
5070     AC_MSG_RESULT([no])
5072 AC_SUBST(ENABLE_OPTIMIZED)
5073 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5076 # determine CPUNAME, OS, ...
5078 case "$host_os" in
5080 cygwin*|wsl*)
5081     # Already handled
5082     ;;
5084 darwin*)
5085     COM=GCC
5086     OS=MACOSX
5087     RTL_OS=MacOSX
5088     P_SEP=:
5090     case "$host_cpu" in
5091     aarch64|arm64)
5092         if test "$enable_ios_simulator" = "yes"; then
5093             OS=iOS
5094         else
5095             CPUNAME=AARCH64
5096             RTL_ARCH=AARCH64
5097             PLATFORMID=macosx_aarch64
5098         fi
5099         ;;
5100     x86_64)
5101         if test "$enable_ios_simulator" = "yes"; then
5102             OS=iOS
5103         fi
5104         CPUNAME=X86_64
5105         RTL_ARCH=X86_64
5106         PLATFORMID=macosx_x86_64
5107         ;;
5108     *)
5109         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5110         ;;
5111     esac
5112     ;;
5114 ios*)
5115     COM=GCC
5116     OS=iOS
5117     RTL_OS=iOS
5118     P_SEP=:
5120     case "$host_cpu" in
5121     aarch64|arm64)
5122         if test "$enable_ios_simulator" = "yes"; then
5123             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5124         fi
5125         ;;
5126     *)
5127         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5128         ;;
5129     esac
5130     CPUNAME=AARCH64
5131     RTL_ARCH=AARCH64
5132     PLATFORMID=ios_arm64
5133     ;;
5135 dragonfly*)
5136     COM=GCC
5137     OS=DRAGONFLY
5138     RTL_OS=DragonFly
5139     P_SEP=:
5141     case "$host_cpu" in
5142     i*86)
5143         CPUNAME=INTEL
5144         RTL_ARCH=x86
5145         PLATFORMID=dragonfly_x86
5146         ;;
5147     x86_64)
5148         CPUNAME=X86_64
5149         RTL_ARCH=X86_64
5150         PLATFORMID=dragonfly_x86_64
5151         ;;
5152     *)
5153         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5154         ;;
5155     esac
5156     ;;
5158 freebsd*)
5159     COM=GCC
5160     RTL_OS=FreeBSD
5161     OS=FREEBSD
5162     P_SEP=:
5164     case "$host_cpu" in
5165     aarch64)
5166         CPUNAME=AARCH64
5167         PLATFORMID=freebsd_aarch64
5168         RTL_ARCH=AARCH64
5169         ;;
5170     i*86)
5171         CPUNAME=INTEL
5172         RTL_ARCH=x86
5173         PLATFORMID=freebsd_x86
5174         ;;
5175     x86_64|amd64)
5176         CPUNAME=X86_64
5177         RTL_ARCH=X86_64
5178         PLATFORMID=freebsd_x86_64
5179         ;;
5180     powerpc64)
5181         CPUNAME=POWERPC64
5182         RTL_ARCH=PowerPC_64
5183         PLATFORMID=freebsd_powerpc64
5184         ;;
5185     powerpc|powerpcspe)
5186         CPUNAME=POWERPC
5187         RTL_ARCH=PowerPC
5188         PLATFORMID=freebsd_powerpc
5189         ;;
5190     *)
5191         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5192         ;;
5193     esac
5194     ;;
5196 haiku*)
5197     COM=GCC
5198     GUIBASE=haiku
5199     RTL_OS=Haiku
5200     OS=HAIKU
5201     P_SEP=:
5203     case "$host_cpu" in
5204     i*86)
5205         CPUNAME=INTEL
5206         RTL_ARCH=x86
5207         PLATFORMID=haiku_x86
5208         ;;
5209     x86_64|amd64)
5210         CPUNAME=X86_64
5211         RTL_ARCH=X86_64
5212         PLATFORMID=haiku_x86_64
5213         ;;
5214     *)
5215         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5216         ;;
5217     esac
5218     ;;
5220 kfreebsd*)
5221     COM=GCC
5222     OS=LINUX
5223     RTL_OS=kFreeBSD
5224     P_SEP=:
5226     case "$host_cpu" in
5228     i*86)
5229         CPUNAME=INTEL
5230         RTL_ARCH=x86
5231         PLATFORMID=kfreebsd_x86
5232         ;;
5233     x86_64)
5234         CPUNAME=X86_64
5235         RTL_ARCH=X86_64
5236         PLATFORMID=kfreebsd_x86_64
5237         ;;
5238     *)
5239         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5240         ;;
5241     esac
5242     ;;
5244 linux-gnu*|linux-musl*)
5245     COM=GCC
5246     OS=LINUX
5247     RTL_OS=Linux
5248     P_SEP=:
5250     case "$host_cpu" in
5252     aarch64)
5253         CPUNAME=AARCH64
5254         PLATFORMID=linux_aarch64
5255         RTL_ARCH=AARCH64
5256         EPM_FLAGS="-a arm64"
5257         ;;
5258     alpha)
5259         CPUNAME=AXP
5260         RTL_ARCH=ALPHA
5261         PLATFORMID=linux_alpha
5262         ;;
5263     arm*)
5264         CPUNAME=ARM
5265         EPM_FLAGS="-a arm"
5266         RTL_ARCH=ARM_EABI
5267         PLATFORMID=linux_arm_eabi
5268         case "$host_cpu" in
5269         arm*-linux)
5270             RTL_ARCH=ARM_OABI
5271             PLATFORMID=linux_arm_oabi
5272             ;;
5273         esac
5274         ;;
5275     hppa)
5276         CPUNAME=HPPA
5277         RTL_ARCH=HPPA
5278         EPM_FLAGS="-a hppa"
5279         PLATFORMID=linux_hppa
5280         ;;
5281     i*86)
5282         CPUNAME=INTEL
5283         RTL_ARCH=x86
5284         PLATFORMID=linux_x86
5285         ;;
5286     ia64)
5287         CPUNAME=IA64
5288         RTL_ARCH=IA64
5289         PLATFORMID=linux_ia64
5290         ;;
5291     mips)
5292         CPUNAME=MIPS
5293         RTL_ARCH=MIPS_EB
5294         EPM_FLAGS="-a mips"
5295         PLATFORMID=linux_mips_eb
5296         ;;
5297     mips64)
5298         CPUNAME=MIPS64
5299         RTL_ARCH=MIPS64_EB
5300         EPM_FLAGS="-a mips64"
5301         PLATFORMID=linux_mips64_eb
5302         ;;
5303     mips64el)
5304         CPUNAME=MIPS64
5305         RTL_ARCH=MIPS64_EL
5306         EPM_FLAGS="-a mips64el"
5307         PLATFORMID=linux_mips64_el
5308         ;;
5309     mipsel)
5310         CPUNAME=MIPS
5311         RTL_ARCH=MIPS_EL
5312         EPM_FLAGS="-a mipsel"
5313         PLATFORMID=linux_mips_el
5314         ;;
5315     riscv64)
5316         CPUNAME=RISCV64
5317         RTL_ARCH=RISCV64
5318         EPM_FLAGS="-a riscv64"
5319         PLATFORMID=linux_riscv64
5320         ;;
5321     m68k)
5322         CPUNAME=M68K
5323         RTL_ARCH=M68K
5324         PLATFORMID=linux_m68k
5325         ;;
5326     powerpc)
5327         CPUNAME=POWERPC
5328         RTL_ARCH=PowerPC
5329         PLATFORMID=linux_powerpc
5330         ;;
5331     powerpc64)
5332         CPUNAME=POWERPC64
5333         RTL_ARCH=PowerPC_64
5334         PLATFORMID=linux_powerpc64
5335         ;;
5336     powerpc64le)
5337         CPUNAME=POWERPC64
5338         RTL_ARCH=PowerPC_64_LE
5339         PLATFORMID=linux_powerpc64_le
5340         ;;
5341     sparc)
5342         CPUNAME=SPARC
5343         RTL_ARCH=SPARC
5344         PLATFORMID=linux_sparc
5345         ;;
5346     sparc64)
5347         CPUNAME=SPARC64
5348         RTL_ARCH=SPARC64
5349         PLATFORMID=linux_sparc64
5350         ;;
5351     s390x)
5352         CPUNAME=S390X
5353         RTL_ARCH=S390x
5354         PLATFORMID=linux_s390x
5355         ;;
5356     x86_64)
5357         CPUNAME=X86_64
5358         RTL_ARCH=X86_64
5359         PLATFORMID=linux_x86_64
5360         ;;
5361     loongarch64)
5362         CPUNAME=LOONGARCH64
5363         RTL_ARCH=LOONGARCH64
5364         PLATFORMID=linux_loongarch64
5365         ;;
5366     *)
5367         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5368         ;;
5369     esac
5370     ;;
5372 linux-android*)
5373     COM=GCC
5374     OS=ANDROID
5375     RTL_OS=Android
5376     P_SEP=:
5378     case "$host_cpu" in
5380     arm|armel)
5381         CPUNAME=ARM
5382         RTL_ARCH=ARM_EABI
5383         PLATFORMID=android_arm_eabi
5384         ;;
5385     aarch64)
5386         CPUNAME=AARCH64
5387         RTL_ARCH=AARCH64
5388         PLATFORMID=android_aarch64
5389         ;;
5390     i*86)
5391         CPUNAME=INTEL
5392         RTL_ARCH=x86
5393         PLATFORMID=android_x86
5394         ;;
5395     x86_64)
5396         CPUNAME=X86_64
5397         RTL_ARCH=X86_64
5398         PLATFORMID=android_x86_64
5399         ;;
5400     *)
5401         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5402         ;;
5403     esac
5404     ;;
5406 *netbsd*)
5407     COM=GCC
5408     OS=NETBSD
5409     RTL_OS=NetBSD
5410     P_SEP=:
5412     case "$host_cpu" in
5413     i*86)
5414         CPUNAME=INTEL
5415         RTL_ARCH=x86
5416         PLATFORMID=netbsd_x86
5417         ;;
5418     powerpc)
5419         CPUNAME=POWERPC
5420         RTL_ARCH=PowerPC
5421         PLATFORMID=netbsd_powerpc
5422         ;;
5423     sparc)
5424         CPUNAME=SPARC
5425         RTL_ARCH=SPARC
5426         PLATFORMID=netbsd_sparc
5427         ;;
5428     x86_64)
5429         CPUNAME=X86_64
5430         RTL_ARCH=X86_64
5431         PLATFORMID=netbsd_x86_64
5432         ;;
5433     *)
5434         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5435         ;;
5436     esac
5437     ;;
5439 openbsd*)
5440     COM=GCC
5441     OS=OPENBSD
5442     RTL_OS=OpenBSD
5443     P_SEP=:
5445     case "$host_cpu" in
5446     i*86)
5447         CPUNAME=INTEL
5448         RTL_ARCH=x86
5449         PLATFORMID=openbsd_x86
5450         ;;
5451     x86_64)
5452         CPUNAME=X86_64
5453         RTL_ARCH=X86_64
5454         PLATFORMID=openbsd_x86_64
5455         ;;
5456     *)
5457         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5458         ;;
5459     esac
5460     SOLARINC="$SOLARINC -I/usr/local/include"
5461     ;;
5463 solaris*)
5464     COM=GCC
5465     OS=SOLARIS
5466     RTL_OS=Solaris
5467     P_SEP=:
5469     case "$host_cpu" in
5470     i*86)
5471         CPUNAME=INTEL
5472         RTL_ARCH=x86
5473         PLATFORMID=solaris_x86
5474         ;;
5475     sparc)
5476         CPUNAME=SPARC
5477         RTL_ARCH=SPARC
5478         PLATFORMID=solaris_sparc
5479         ;;
5480     sparc64)
5481         CPUNAME=SPARC64
5482         RTL_ARCH=SPARC64
5483         PLATFORMID=solaris_sparc64
5484         ;;
5485     *)
5486         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5487         ;;
5488     esac
5489     SOLARINC="$SOLARINC -I/usr/local/include"
5490     ;;
5492 emscripten*)
5493     COM=GCC
5494     OS=EMSCRIPTEN
5495     RTL_OS=Emscripten
5496     P_SEP=:
5498     case "$host_cpu" in
5499     wasm32|wasm64)
5500         ;;
5501     *)
5502         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5503         ;;
5504     esac
5505     CPUNAME=INTEL
5506     RTL_ARCH=x86
5507     PLATFORMID=linux_x86
5508     ;;
5511     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5512     ;;
5513 esac
5515 DISABLE_GUI=""
5516 if test "$enable_gui" = "no"; then
5517     if test "$using_x11" != yes; then
5518         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5519     fi
5520     USING_X11=
5521     DISABLE_GUI=TRUE
5522     test_epoxy=no
5523 else
5524     AC_DEFINE(HAVE_FEATURE_UI)
5526 AC_SUBST(DISABLE_GUI)
5528 if test "$with_x" = "no"; then
5529     USING_X11=
5532 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5533     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5536 if test "$using_x11" = yes; then
5537     if test "$USING_X11" = TRUE; then
5538         AC_DEFINE(USING_X11)
5539     else
5540         disable_x11_tests
5541         if test "$DISABLE_DYNLOADING" = TRUE; then
5542             test_qt5=yes
5543         fi
5544     fi
5545 else
5546     if test "$USING_X11" = TRUE; then
5547         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5548     fi
5551 WORKDIR="${BUILDDIR}/workdir"
5552 INSTDIR="${BUILDDIR}/instdir"
5553 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5554 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5555 AC_SUBST(COM)
5556 AC_SUBST(CPUNAME)
5557 AC_SUBST(RTL_OS)
5558 AC_SUBST(RTL_ARCH)
5559 AC_SUBST(EPM_FLAGS)
5560 AC_SUBST(USING_X11)
5561 AC_SUBST([INSTDIR])
5562 AC_SUBST([INSTROOT])
5563 AC_SUBST([INSTROOTBASE])
5564 AC_SUBST(OS)
5565 AC_SUBST(P_SEP)
5566 AC_SUBST(WORKDIR)
5567 AC_SUBST(PLATFORMID)
5568 AC_SUBST(WINDOWS_X64)
5569 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5570 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5572 if test "$OS" = WNT -a "$COM" = MSC; then
5573     case "$CPUNAME" in
5574     INTEL) CPPU_ENV=msci ;;
5575     X86_64) CPPU_ENV=mscx ;;
5576     AARCH64) CPPU_ENV=msca ;;
5577     *)
5578         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5579         ;;
5580     esac
5581 else
5582     CPPU_ENV=gcc3
5584 AC_SUBST(CPPU_ENV)
5586 dnl ===================================================================
5587 dnl Test which package format to use
5588 dnl ===================================================================
5589 AC_MSG_CHECKING([which package format to use])
5590 if test -n "$with_package_format" -a "$with_package_format" != no; then
5591     for i in $with_package_format; do
5592         case "$i" in
5593         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5594             ;;
5595         *)
5596             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5597 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5598 deb - Debian software distribution
5599 pkg - Solaris software distribution
5600 rpm - RedHat software distribution
5602 LibreOffice additionally supports:
5603 archive - .tar.gz or .zip
5604 dmg - macOS .dmg
5605 installed - installation tree
5606 msi - Windows .msi
5607         ])
5608             ;;
5609         esac
5610     done
5611     # fakeroot is needed to ensure correct file ownerships/permissions
5612     # inside deb packages and tar archives created on Linux and Solaris.
5613     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5614         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5615         if test "$FAKEROOT" = "no"; then
5616             AC_MSG_ERROR(
5617                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5618         fi
5619     fi
5620     PKGFORMAT="$with_package_format"
5621     AC_MSG_RESULT([$PKGFORMAT])
5622 else
5623     PKGFORMAT=
5624     AC_MSG_RESULT([none])
5626 AC_SUBST(PKGFORMAT)
5628 dnl ===================================================================
5629 dnl handle help related options
5631 dnl If you change help related options, please update README.help
5632 dnl ===================================================================
5634 ENABLE_HTMLHELP=
5635 HELP_OMINDEX_PAGE=
5636 HELP_ONLINE=
5637 WITH_HELPPACKS=
5639 AC_MSG_CHECKING([which help to build])
5640 if test -n "$with_help" -a "$with_help" != "no"; then
5641     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5642     BUILD_TYPE="$BUILD_TYPE HELP"
5643     case "$with_help" in
5644     "html")
5645         ENABLE_HTMLHELP=TRUE
5646         WITH_HELPPACKS=TRUE
5647         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5648         AC_MSG_RESULT([HTML (local)])
5649         ;;
5650     "online")
5651         ENABLE_HTMLHELP=TRUE
5652         HELP_ONLINE=TRUE
5653         AC_MSG_RESULT([HTML (online)])
5654         ;;
5655     yes)
5656         WITH_HELPPACKS=TRUE
5657         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5658         AC_MSG_RESULT([XML (local)])
5659         ;;
5660     *)
5661         AC_MSG_ERROR([Unknown --with-help=$with_help])
5662         ;;
5663     esac
5664 else
5665     AC_MSG_RESULT([no])
5668 AC_MSG_CHECKING([if we need to build the help index tooling])
5669 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5670     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5671     test_clucene=yes
5672     AC_MSG_RESULT([yes])
5673 else
5674     AC_MSG_RESULT([no])
5677 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5678 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5679     if test "$HELP_ONLINE" != TRUE; then
5680         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5681     fi
5682     case "$with_omindex" in
5683     "server")
5684         HELP_OMINDEX_PAGE=TRUE
5685         AC_MSG_RESULT([SERVER])
5686         ;;
5687     "noxap")
5688         AC_MSG_RESULT([NOXAP])
5689         ;;
5690     *)
5691         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5692         ;;
5693     esac
5694 else
5695     AC_MSG_RESULT([no])
5698 AC_MSG_CHECKING([whether to include the XML-help support])
5699 if test "$enable_xmlhelp" = yes; then
5700     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5701     test_clucene=yes
5702     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5703     AC_MSG_RESULT([yes])
5704 else
5705     if test "$with_help" = yes; then
5706         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5707     fi
5708     AC_MSG_RESULT([no])
5711 dnl Test whether to integrate helppacks into the product's installer
5712 AC_MSG_CHECKING([for helppack integration])
5713 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5714     AC_MSG_RESULT([no integration])
5715 else
5716     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5717     AC_MSG_RESULT([integration])
5720 AC_SUBST([ENABLE_HTMLHELP])
5721 AC_SUBST([HELP_OMINDEX_PAGE])
5722 AC_SUBST([HELP_ONLINE])
5723 # WITH_HELPPACKS is used only in configure
5725 dnl ===================================================================
5726 dnl Set up a different compiler to produce tools to run on the build
5727 dnl machine when doing cross-compilation
5728 dnl ===================================================================
5730 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5731 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5732 if test "$cross_compiling" = "yes"; then
5733     AC_MSG_CHECKING([for BUILD platform configuration])
5734     echo
5735     rm -rf CONF-FOR-BUILD config_build.mk
5736     mkdir CONF-FOR-BUILD
5737     # Here must be listed all files needed when running the configure script. In particular, also
5738     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5739     # keep them in the same order as there.
5740     (cd $SRC_ROOT && tar cf - \
5741         config.guess \
5742         bin/get_config_variables \
5743         solenv/bin/getcompver.awk \
5744         solenv/inc/langlist.mk \
5745         download.lst \
5746         config_host.mk.in \
5747         config_host_lang.mk.in \
5748         Makefile.in \
5749         bin/bffvalidator.sh.in \
5750         bin/odfvalidator.sh.in \
5751         bin/officeotron.sh.in \
5752         instsetoo_native/util/openoffice.lst.in \
5753         config_host/*.in \
5754         sysui/desktop/macosx/Info.plist.in \
5755         sysui/desktop/macosx/hardened_runtime.xcent.in \
5756         sysui/desktop/macosx/lo.xcent.in \
5757         .vscode/vs-code-template.code-workspace.in \
5758         solenv/lockfile/autoconf.h.in \
5759         ) \
5760     | (cd CONF-FOR-BUILD && tar xf -)
5761     cp configure CONF-FOR-BUILD
5762     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5763     (
5764     unset COM USING_X11 OS CPUNAME
5765     unset CC CXX SYSBASE CFLAGS
5766     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5767     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5768     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5769     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5770     if test -n "$CC_FOR_BUILD"; then
5771         export CC="$CC_FOR_BUILD"
5772         CC_BASE=`first_arg_basename "$CC"`
5773     fi
5774     if test -n "$CXX_FOR_BUILD"; then
5775         export CXX="$CXX_FOR_BUILD"
5776         CXX_BASE=`first_arg_basename "$CXX"`
5777     fi
5778     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5779     cd CONF-FOR-BUILD
5781     # Handle host configuration, which affects the cross-toolset too
5782     sub_conf_opts=""
5783     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5784     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5785     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5786     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5787     if test -n "$ENABLE_JAVA"; then
5788         case "$_os" in
5789         Android)
5790             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5791             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5792             ;;
5793         *)
5794             if test -z "$with_jdk_home"; then
5795                 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.])
5796             fi
5797             ;;
5798         esac
5799     else
5800         sub_conf_opts="$sub_conf_opts --without-java"
5801     fi
5802     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5803     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5804     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5805     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5806     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5807     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5808     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5809     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5810     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5811     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5812     if test "$_os" = "Emscripten"; then
5813         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5814         if test "${with_main_module+set}" = set; then
5815             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5816         else
5817             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5818         fi
5819     fi
5820     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5821     # when cross-compiling for aarch64, overriding the defaults below
5822     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5824     # Don't bother having configure look for stuff not needed for the build platform anyway
5825     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5826     sub_conf_defaults=" \
5827         --build="$build_alias" \
5828         --disable-cairo-canvas \
5829         --disable-cups \
5830         --disable-customtarget-components \
5831         --disable-firebird-sdbc \
5832         --disable-gpgmepp \
5833         --disable-gstreamer-1-0 \
5834         --disable-gtk3 \
5835         --disable-gtk4 \
5836         --disable-libcmis \
5837         --disable-mariadb-sdbc \
5838         --disable-nss \
5839         --disable-online-update \
5840         --disable-opencl \
5841         --disable-openssl \
5842         --disable-pdfimport \
5843         --disable-postgresql-sdbc \
5844         --disable-skia \
5845         --disable-xmlhelp \
5846         --enable-dynamic-loading \
5847         --enable-icecream="$enable_icecream" \
5848         --without-doxygen \
5849         --without-tls \
5850         --without-webdav \
5851         --without-x \
5853     # single quotes added for better readability in case of spaces
5854     echo "    Running CONF-FOR-BUILD/configure" \
5855         $sub_conf_defaults \
5856         --with-parallelism="'$with_parallelism'" \
5857         --with-theme="'$with_theme'" \
5858         --with-vendor="'$with_vendor'" \
5859         $sub_conf_opts \
5860         $with_build_platform_configure_options \
5861         --srcdir=$srcdir
5863     ./configure \
5864         $sub_conf_defaults \
5865         --with-parallelism="$with_parallelism" \
5866         --with-theme="$with_theme" \
5867         "--with-vendor=$with_vendor" \
5868         $sub_conf_opts \
5869         $with_build_platform_configure_options \
5870         --srcdir=$srcdir \
5871         2>&1 | sed -e 's/^/    /'
5872     if test [${PIPESTATUS[0]}] -ne 0; then
5873         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5874     fi
5876     # filter permitted build targets
5877     PERMITTED_BUILD_TARGETS="
5878         ARGON2
5879         AVMEDIA
5880         BOOST
5881         BZIP2
5882         CAIRO
5883         CLUCENE
5884         CURL
5885         DBCONNECTIVITY
5886         DESKTOP
5887         DRAGONBOX
5888         DYNLOADING
5889         EPOXY
5890         EXPAT
5891         FROZEN
5892         GLM
5893         GRAPHITE
5894         HARFBUZZ
5895         HELPTOOLS
5896         ICU
5897         LCMS2
5898         LIBJPEG_TURBO
5899         LIBLANGTAG
5900         LibO
5901         LIBFFI
5902         LIBPN
5903         LIBTIFF
5904         LIBWEBP
5905         LIBXML2
5906         LIBXSLT
5907         MDDS
5908         NATIVE
5909         OPENSSL
5910         ORCUS
5911         PYTHON
5912         REPORTBUILDER
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=`command -v $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 \`command -v 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.69],,[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], [LIBFIXMATH_LIBS=-llibfixmath],
10669                  [AC_CHECK_LIB([fixmath], [fix16_mul], [LIBFIXMATH_LIBS=-lfixmath],
10670                                [AC_MSG_ERROR(libfixmath lib not found or functional)])])
10671     AC_LANG_POP([C++])
10672 else
10673     AC_MSG_RESULT([internal])
10674     SYSTEM_LIBFIXMATH=
10675     LIBFIXMATH_LIBS=
10677 AC_SUBST([SYSTEM_LIBFIXMATH])
10678 AC_SUBST([LIBFIXMATH_LIBS])
10680 dnl ===================================================================
10681 dnl Check for system glm
10682 dnl ===================================================================
10683 AC_MSG_CHECKING([which glm to use])
10684 if test "$with_system_glm" = "yes"; then
10685     AC_MSG_RESULT([external])
10686     SYSTEM_GLM=TRUE
10687     AC_LANG_PUSH([C++])
10688     AC_CHECK_HEADER([glm/glm.hpp], [],
10689        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10690     AC_LANG_POP([C++])
10691 else
10692     AC_MSG_RESULT([internal])
10693     BUILD_TYPE="$BUILD_TYPE GLM"
10694     SYSTEM_GLM=
10695     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10697 AC_SUBST([GLM_CFLAGS])
10698 AC_SUBST([SYSTEM_GLM])
10700 dnl ===================================================================
10701 dnl Check for system odbc
10702 dnl ===================================================================
10703 AC_MSG_CHECKING([which odbc headers to use])
10704 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
10705     AC_MSG_RESULT([external])
10706     SYSTEM_ODBC_HEADERS=TRUE
10708     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10709         save_CPPFLAGS=$CPPFLAGS
10710         find_winsdk
10711         PathFormat "$winsdktest"
10712         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"
10713         AC_CHECK_HEADER(sqlext.h, [],
10714             [AC_MSG_ERROR(odbc not found. install odbc)],
10715             [#include <windows.h>])
10716         CPPFLAGS=$save_CPPFLAGS
10717     else
10718         AC_CHECK_HEADER(sqlext.h, [],
10719             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10720     fi
10721 elif test "$enable_database_connectivity" = no; then
10722     AC_MSG_RESULT([none])
10723 else
10724     AC_MSG_RESULT([internal])
10725     SYSTEM_ODBC_HEADERS=
10727 AC_SUBST(SYSTEM_ODBC_HEADERS)
10729 dnl ===================================================================
10730 dnl Check for system NSS
10731 dnl ===================================================================
10732 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10733     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10734     AC_DEFINE(HAVE_FEATURE_NSS)
10735     ENABLE_NSS=TRUE
10736 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10737     with_tls=openssl
10739 AC_SUBST(ENABLE_NSS)
10741 dnl ===================================================================
10742 dnl Enable LDAP support
10743 dnl ===================================================================
10745 if test "$test_openldap" = yes; then
10746     AC_MSG_CHECKING([whether to enable LDAP support])
10747     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10748         AC_MSG_RESULT([yes])
10749         ENABLE_LDAP=TRUE
10750     else
10751         if test "$enable_ldap" != "yes"; then
10752             AC_MSG_RESULT([no])
10753         else
10754             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10755         fi
10756     fi
10758 dnl ===================================================================
10759 dnl Check for system openldap
10760 dnl ===================================================================
10762     if test "$ENABLE_LDAP" = TRUE; then
10763         AC_MSG_CHECKING([which openldap library to use])
10764         if test "$with_system_openldap" = yes; then
10765             AC_MSG_RESULT([external])
10766             SYSTEM_OPENLDAP=TRUE
10767             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10768             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10769             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10770         else
10771             AC_MSG_RESULT([internal])
10772             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10773         fi
10774     fi
10777 AC_SUBST(ENABLE_LDAP)
10778 AC_SUBST(SYSTEM_OPENLDAP)
10780 dnl ===================================================================
10781 dnl Check for TLS/SSL and cryptographic implementation to use
10782 dnl ===================================================================
10783 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10784 if test -n "$with_tls"; then
10785     case $with_tls in
10786     openssl)
10787         AC_DEFINE(USE_TLS_OPENSSL)
10788         TLS=OPENSSL
10789         AC_MSG_RESULT([$TLS])
10791         if test "$enable_openssl" != "yes"; then
10792             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10793         fi
10795         # warn that OpenSSL has been selected but not all TLS code has this option
10796         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10797         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10798         ;;
10799     nss)
10800         AC_DEFINE(USE_TLS_NSS)
10801         TLS=NSS
10802         AC_MSG_RESULT([$TLS])
10803         ;;
10804     no)
10805         AC_MSG_RESULT([none])
10806         AC_MSG_WARN([Skipping TLS/SSL])
10807         ;;
10808     *)
10809         AC_MSG_RESULT([])
10810         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10811 openssl - OpenSSL
10812 nss - Mozilla's Network Security Services (NSS)
10813     ])
10814         ;;
10815     esac
10816 else
10817     # default to using NSS, it results in smaller oox lib
10818     AC_DEFINE(USE_TLS_NSS)
10819     TLS=NSS
10820     AC_MSG_RESULT([$TLS])
10822 AC_SUBST(TLS)
10824 dnl ===================================================================
10825 dnl Check for system sane
10826 dnl ===================================================================
10827 AC_MSG_CHECKING([which sane header to use])
10828 if test "$with_system_sane" = "yes"; then
10829     AC_MSG_RESULT([external])
10830     AC_CHECK_HEADER(sane/sane.h, [],
10831       [AC_MSG_ERROR(sane not found. install sane)], [])
10832 else
10833     AC_MSG_RESULT([internal])
10834     BUILD_TYPE="$BUILD_TYPE SANE"
10837 dnl ===================================================================
10838 dnl Check for system icu
10839 dnl ===================================================================
10840 ICU_MAJOR=73
10841 ICU_MINOR=2
10842 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10843 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10844 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10845 if test "$SYSTEM_ICU" = TRUE; then
10846     AC_LANG_PUSH([C++])
10847     AC_MSG_CHECKING([for unicode/rbbi.h])
10848     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10849     AC_LANG_POP([C++])
10851     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10852     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10853     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10855     if test "$CROSS_COMPILING" != TRUE; then
10856         # using the system icu tools can lead to version confusion, use the
10857         # ones from the build environment when cross-compiling
10858         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10859         if test -z "$SYSTEM_GENBRK"; then
10860             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10861         fi
10862         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10863         if test -z "$SYSTEM_GENCCODE"; then
10864             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10865         fi
10866         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10867         if test -z "$SYSTEM_GENCMN"; then
10868             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10869         fi
10870     fi
10873 AC_SUBST(SYSTEM_GENBRK)
10874 AC_SUBST(SYSTEM_GENCCODE)
10875 AC_SUBST(SYSTEM_GENCMN)
10876 AC_SUBST(ICU_MAJOR)
10877 AC_SUBST(ICU_MINOR)
10879 dnl ==================================================================
10880 dnl CURL
10881 dnl ==================================================================
10882 if test "$enable_curl" == "yes"; then
10883     AC_DEFINE([HAVE_FEATURE_CURL])
10886 dnl ==================================================================
10887 dnl Breakpad
10888 dnl ==================================================================
10889 DEFAULT_CRASHDUMP_VALUE="true"
10890 AC_MSG_CHECKING([whether to enable breakpad])
10891 if test "$enable_breakpad" != yes; then
10892     AC_MSG_RESULT([no])
10893 else
10894     if test "$enable_curl" != "yes"; then
10895         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10896     fi
10897     AC_MSG_RESULT([yes])
10898     ENABLE_BREAKPAD="TRUE"
10899     AC_DEFINE(ENABLE_BREAKPAD)
10900     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10901     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10903     AC_MSG_CHECKING([for disable crash dump])
10904     if test "$enable_crashdump" = no; then
10905         DEFAULT_CRASHDUMP_VALUE="false"
10906         AC_MSG_RESULT([yes])
10907     else
10908        AC_MSG_RESULT([no])
10909     fi
10911     AC_MSG_CHECKING([for crashreport config])
10912     if test "$with_symbol_config" = "no"; then
10913         BREAKPAD_SYMBOL_CONFIG="invalid"
10914         AC_MSG_RESULT([no])
10915     else
10916         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10917         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10918         AC_MSG_RESULT([yes])
10919     fi
10920     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10922 AC_SUBST(ENABLE_BREAKPAD)
10923 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10925 dnl ==================================================================
10926 dnl libcmis
10927 dnl ==================================================================
10928 if test "$enable_libcmis" == "yes"; then
10929     if test "$enable_curl" != "yes"; then
10930         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10931     fi
10934 dnl ===================================================================
10935 dnl Orcus
10936 dnl ===================================================================
10937 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10938 if test "$with_system_orcus" != "yes"; then
10939     if test "$SYSTEM_BOOST" = "TRUE"; then
10940         dnl Link with Boost.System
10941         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10942         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10943         dnl in documentation has no effect.
10944         AX_BOOST_SYSTEM
10945     fi
10947 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10948 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10949 AC_SUBST([BOOST_SYSTEM_LIB])
10950 AC_SUBST(SYSTEM_LIBORCUS)
10952 dnl ===================================================================
10953 dnl HarfBuzz
10954 dnl ===================================================================
10955 harfbuzz_required_version=5.1.0
10957 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10958 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10959 case "$_os" in
10960     Linux)
10961         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10962         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10963         ;;
10964     *)
10965         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10966         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10967         ;;
10968 esac
10969 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10970 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10972 if test "$COM" = "MSC"; then # override the above
10973     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10974     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10977 if test "$with_system_harfbuzz" = "yes"; then
10978     if test "$with_system_graphite" = "no"; then
10979         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10980     fi
10981     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10982     save_LIBS="$LIBS"
10983     save_CFLAGS="$CFLAGS"
10984     LIBS="$LIBS $HARFBUZZ_LIBS"
10985     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10986     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10987     LIBS="$save_LIBS"
10988     CFLAGS="$save_CFLAGS"
10989 else
10990     if test "$with_system_graphite" = "yes"; then
10991         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10992     fi
10995 if test "$USING_X11" = TRUE; then
10996     AC_PATH_X
10997     AC_PATH_XTRA
10998     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11000     if test -z "$x_includes"; then
11001         x_includes="default_x_includes"
11002     fi
11003     if test -z "$x_libraries"; then
11004         x_libraries="default_x_libraries"
11005     fi
11006     CFLAGS="$CFLAGS $X_CFLAGS"
11007     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11008     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11009 else
11010     x_includes="no_x_includes"
11011     x_libraries="no_x_libraries"
11014 if test "$USING_X11" = TRUE; then
11015     dnl ===================================================================
11016     dnl Check for extension headers
11017     dnl ===================================================================
11018     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11019      [#include <X11/extensions/shape.h>])
11021     # vcl needs ICE and SM
11022     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11023     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11024         [AC_MSG_ERROR(ICE library not found)])
11025     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11026     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11027         [AC_MSG_ERROR(SM library not found)])
11030 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11031     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11032     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11035 dnl ===================================================================
11036 dnl Check for system Xrender
11037 dnl ===================================================================
11038 AC_MSG_CHECKING([whether to use Xrender])
11039 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11040     AC_MSG_RESULT([yes])
11041     PKG_CHECK_MODULES(XRENDER, xrender)
11042     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11043     FilterLibs "${XRENDER_LIBS}"
11044     XRENDER_LIBS="${filteredlibs}"
11045     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11046       [AC_MSG_ERROR(libXrender not found or functional)], [])
11047     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11048       [AC_MSG_ERROR(Xrender not found. install X)], [])
11049 else
11050     AC_MSG_RESULT([no])
11052 AC_SUBST(XRENDER_CFLAGS)
11053 AC_SUBST(XRENDER_LIBS)
11055 dnl ===================================================================
11056 dnl Check for XRandr
11057 dnl ===================================================================
11058 AC_MSG_CHECKING([whether to enable RandR support])
11059 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11060     AC_MSG_RESULT([yes])
11061     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11062     if test "$ENABLE_RANDR" != "TRUE"; then
11063         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11064                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11065         XRANDR_CFLAGS=" "
11066         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11067           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11068         XRANDR_LIBS="-lXrandr "
11069         ENABLE_RANDR="TRUE"
11070     fi
11071     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11072     FilterLibs "${XRANDR_LIBS}"
11073     XRANDR_LIBS="${filteredlibs}"
11074 else
11075     ENABLE_RANDR=""
11076     AC_MSG_RESULT([no])
11078 AC_SUBST(XRANDR_CFLAGS)
11079 AC_SUBST(XRANDR_LIBS)
11080 AC_SUBST(ENABLE_RANDR)
11082 if test -z "$with_webdav"; then
11083     with_webdav=$test_webdav
11086 AC_MSG_CHECKING([for WebDAV support])
11087 case "$with_webdav" in
11089     AC_MSG_RESULT([no])
11090     WITH_WEBDAV=""
11091     ;;
11093     AC_MSG_RESULT([yes])
11094     # curl is already mandatory (almost) and checked elsewhere
11095     if test "$enable_curl" = "no"; then
11096         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11097     fi
11098     WITH_WEBDAV=TRUE
11099     ;;
11100 esac
11101 AC_SUBST(WITH_WEBDAV)
11103 dnl ===================================================================
11104 dnl Check for disabling cve_tests
11105 dnl ===================================================================
11106 AC_MSG_CHECKING([whether to execute CVE tests])
11107 # If not explicitly enabled or disabled, default
11108 if test -z "$enable_cve_tests"; then
11109     case "$OS" in
11110     WNT)
11111         # Default cves off for Windows with its wild and wonderful
11112         # variety of AV software kicking in and panicking
11113         enable_cve_tests=no
11114         ;;
11115     *)
11116         # otherwise yes
11117         enable_cve_tests=yes
11118         ;;
11119     esac
11121 if test "$enable_cve_tests" = "no"; then
11122     AC_MSG_RESULT([no])
11123     DISABLE_CVE_TESTS=TRUE
11124     AC_SUBST(DISABLE_CVE_TESTS)
11125 else
11126     AC_MSG_RESULT([yes])
11129 dnl ===================================================================
11130 dnl Check for system openssl
11131 dnl ===================================================================
11132 ENABLE_OPENSSL=
11133 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11134 if test "$enable_openssl" = "yes"; then
11135     AC_MSG_RESULT([no])
11136     ENABLE_OPENSSL=TRUE
11137     if test "$_os" = Darwin ; then
11138         # OpenSSL is deprecated when building for 10.7 or later.
11139         #
11140         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11141         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11143         with_system_openssl=no
11144         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11145     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11146             && test "$with_system_openssl" != "no"; then
11147         with_system_openssl=yes
11148         SYSTEM_OPENSSL=TRUE
11149         OPENSSL_CFLAGS=
11150         OPENSSL_LIBS="-lssl -lcrypto"
11151     else
11152         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11153         if test -n "${SYSTEM_OPENSSL}"; then
11154             AC_DEFINE([SYSTEM_OPENSSL])
11155         fi
11156     fi
11157     if test "$with_system_openssl" = "yes"; then
11158         AC_MSG_CHECKING([whether openssl supports SHA512])
11159         AC_LANG_PUSH([C])
11160         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11161             SHA512_CTX context;
11162 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11163         AC_LANG_POP(C)
11164     fi
11165 else
11166     AC_MSG_RESULT([yes])
11168     # warn that although OpenSSL is disabled, system libraries may depend on it
11169     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11170     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11173 AC_SUBST([ENABLE_OPENSSL])
11175 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11176     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11177         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11178         enable_cipher_openssl_backend=no
11179     else
11180         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11181     fi
11183 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11184 ENABLE_CIPHER_OPENSSL_BACKEND=
11185 if test "$enable_cipher_openssl_backend" = yes; then
11186     AC_MSG_RESULT([yes])
11187     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11188 else
11189     AC_MSG_RESULT([no])
11191 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11193 dnl ===================================================================
11194 dnl Select the crypto backends used by LO
11195 dnl ===================================================================
11197 if test "$build_crypto" = yes; then
11198     if test "$OS" = WNT; then
11199         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11200         AC_DEFINE([USE_CRYPTO_MSCAPI])
11201     elif test "$ENABLE_NSS" = TRUE; then
11202         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11203         AC_DEFINE([USE_CRYPTO_NSS])
11204     fi
11207 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11208 if test "$COM" = "MSC"; then
11209     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11210 else
11211     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11213 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11215 dnl ===================================================================
11216 dnl Check for system redland
11217 dnl ===================================================================
11218 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11219 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11220 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11221 if test "$with_system_redland" = "yes"; then
11222     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11223             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11224 else
11225     RAPTOR_MAJOR="0"
11226     RASQAL_MAJOR="3"
11227     REDLAND_MAJOR="0"
11229 AC_SUBST(RAPTOR_MAJOR)
11230 AC_SUBST(RASQAL_MAJOR)
11231 AC_SUBST(REDLAND_MAJOR)
11233 dnl ===================================================================
11234 dnl Check for system hunspell
11235 dnl ===================================================================
11236 AC_MSG_CHECKING([which libhunspell to use])
11237 if test "$with_system_hunspell" = "yes"; then
11238     AC_MSG_RESULT([external])
11239     SYSTEM_HUNSPELL=TRUE
11240     AC_LANG_PUSH([C++])
11241     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11242     if test "$HUNSPELL_PC" != "TRUE"; then
11243         AC_CHECK_HEADER(hunspell.hxx, [],
11244             [
11245             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11246             [AC_MSG_ERROR(hunspell headers not found.)], [])
11247             ], [])
11248         AC_CHECK_LIB([hunspell], [main], [:],
11249            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11250         HUNSPELL_LIBS=-lhunspell
11251     fi
11252     AC_LANG_POP([C++])
11253     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11254     FilterLibs "${HUNSPELL_LIBS}"
11255     HUNSPELL_LIBS="${filteredlibs}"
11256 else
11257     AC_MSG_RESULT([internal])
11258     SYSTEM_HUNSPELL=
11259     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11260     if test "$COM" = "MSC"; then
11261         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11262     else
11263         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11264     fi
11265     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11267 AC_SUBST(SYSTEM_HUNSPELL)
11268 AC_SUBST(HUNSPELL_CFLAGS)
11269 AC_SUBST(HUNSPELL_LIBS)
11271 dnl ===================================================================
11272 dnl Check for system zxcvbn
11273 dnl ===================================================================
11274 AC_MSG_CHECKING([which zxcvbn to use])
11275 if test "$with_system_zxcvbn" = "yes"; then
11276     AC_MSG_RESULT([external])
11277     SYSTEM_ZXCVBN=TRUE
11278     AC_CHECK_HEADER(zxcvbn.h, [],
11279        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11280     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11281         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11282 else
11283    AC_MSG_RESULT([internal])
11284    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11285    SYSTEM_ZXCVBN=
11287 AC_SUBST(SYSTEM_ZXCVBN)
11289 dnl ===================================================================
11290 dnl Check for system zxing
11291 dnl ===================================================================
11292 AC_MSG_CHECKING([whether to use zxing])
11293 if test "$enable_zxing" = "no"; then
11294     AC_MSG_RESULT([no])
11295     ENABLE_ZXING=
11296     SYSTEM_ZXING=
11297 else
11298     AC_MSG_RESULT([yes])
11299     ENABLE_ZXING=TRUE
11300     AC_MSG_CHECKING([which libzxing to use])
11301     if test "$with_system_zxing" = "yes"; then
11302         AC_MSG_RESULT([external])
11303         SYSTEM_ZXING=TRUE
11304         ZXING_CFLAGS=
11305         AC_LANG_PUSH([C++])
11306         save_CXXFLAGS=$CXXFLAGS
11307         save_IFS=$IFS
11308         IFS=$P_SEP
11309         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11310             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11311             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11312             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11313             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11314             dnl unsetting IFS."):
11315             IFS=$save_IFS
11316             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11317             dnl ignore them here:
11318             if test -z "$i"; then
11319                 continue
11320             fi
11321             dnl TODO: White space in $i would cause problems:
11322             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11323             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11324                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11325         done
11326         CXXFLAGS=$save_CXXFLAGS
11327         if test -z "$ZXING_CFLAGS"; then
11328             AC_MSG_ERROR(zxing headers not found.)
11329         fi
11330         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11331             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11332             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11333         AC_LANG_POP([C++])
11334         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11335         FilterLibs "${ZXING_LIBS}"
11336         ZXING_LIBS="${filteredlibs}"
11337     else
11338         AC_MSG_RESULT([internal])
11339         SYSTEM_ZXING=
11340         BUILD_TYPE="$BUILD_TYPE ZXING"
11341         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11342     fi
11343     if test "$ENABLE_ZXING" = TRUE; then
11344         AC_DEFINE(ENABLE_ZXING)
11345     fi
11346     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11347     AC_LANG_PUSH([C++])
11348     save_CXXFLAGS=$CXXFLAGS
11349     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11350     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11351             #include <BitMatrix.h>
11352             #include <BitMatrixIO.h>
11353             int main(){
11354                 ZXing::BitMatrix matrix(1, 1);
11355                 matrix.set(0, 0, true);
11356                 ZXing::ToSVG(matrix);
11357                 return 0;
11358             }
11359         ])], [
11360             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11361             AC_MSG_RESULT([yes])
11362         ], [AC_MSG_RESULT([no])])
11363     CXXFLAGS=$save_CXXFLAGS
11364     AC_LANG_POP([C++])
11365     AC_SUBST(HAVE_ZXING_TOSVG)
11367 AC_SUBST(SYSTEM_ZXING)
11368 AC_SUBST(ENABLE_ZXING)
11369 AC_SUBST(ZXING_CFLAGS)
11370 AC_SUBST(ZXING_LIBS)
11372 dnl ===================================================================
11373 dnl Check for system box2d
11374 dnl ===================================================================
11375 AC_MSG_CHECKING([which box2d to use])
11376 if test "$with_system_box2d" = "yes"; then
11377     AC_MSG_RESULT([external])
11378     SYSTEM_BOX2D=TRUE
11379     AC_LANG_PUSH([C++])
11380     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11381         [BOX2D_H_FOUND='FALSE'])
11382     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11383         _BOX2D_LIB=box2d
11384         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11385     else
11386         # fail this. there's no other alternative to check when we are here.
11387         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11388             [AC_MSG_ERROR(box2d headers not found.)])
11389         _BOX2D_LIB=Box2D
11390         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11391     fi
11392     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11393         [ AC_MSG_ERROR(box2d library not found.) ], [])
11394     BOX2D_LIBS=-l$_BOX2D_LIB
11395     AC_LANG_POP([C++])
11396     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11397     FilterLibs "${BOX2D_LIBS}"
11398     BOX2D_LIBS="${filteredlibs}"
11399 else
11400     AC_MSG_RESULT([internal])
11401     SYSTEM_BOX2D=
11402     BUILD_TYPE="$BUILD_TYPE BOX2D"
11404 AC_SUBST(SYSTEM_BOX2D)
11405 AC_SUBST(BOX2D_CFLAGS)
11406 AC_SUBST(BOX2D_LIBS)
11408 dnl ===================================================================
11409 dnl Checking for altlinuxhyph
11410 dnl ===================================================================
11411 AC_MSG_CHECKING([which altlinuxhyph to use])
11412 if test "$with_system_altlinuxhyph" = "yes"; then
11413     AC_MSG_RESULT([external])
11414     SYSTEM_HYPH=TRUE
11415     AC_CHECK_HEADER(hyphen.h, [],
11416        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11417     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11418        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11419        [#include <hyphen.h>])
11420     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11421         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11422     if test -z "$HYPHEN_LIB"; then
11423         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11424            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11425     fi
11426     if test -z "$HYPHEN_LIB"; then
11427         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11428            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11429     fi
11430 else
11431     AC_MSG_RESULT([internal])
11432     SYSTEM_HYPH=
11433     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11434     if test "$COM" = "MSC"; then
11435         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11436     else
11437         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11438     fi
11440 AC_SUBST(SYSTEM_HYPH)
11441 AC_SUBST(HYPHEN_LIB)
11443 dnl ===================================================================
11444 dnl Checking for mythes
11445 dnl ===================================================================
11446 AC_MSG_CHECKING([which mythes to use])
11447 if test "$with_system_mythes" = "yes"; then
11448     AC_MSG_RESULT([external])
11449     SYSTEM_MYTHES=TRUE
11450     AC_LANG_PUSH([C++])
11451     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11452     if test "$MYTHES_PKGCONFIG" = "no"; then
11453         AC_CHECK_HEADER(mythes.hxx, [],
11454             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11455         AC_CHECK_LIB([mythes-1.2], [main], [:],
11456             [ MYTHES_FOUND=no], [])
11457     if test "$MYTHES_FOUND" = "no"; then
11458         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11459                 [ MYTHES_FOUND=no], [])
11460     fi
11461     if test "$MYTHES_FOUND" = "no"; then
11462         AC_MSG_ERROR([mythes library not found!.])
11463     fi
11464     fi
11465     AC_LANG_POP([C++])
11466     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11467     FilterLibs "${MYTHES_LIBS}"
11468     MYTHES_LIBS="${filteredlibs}"
11469 else
11470     AC_MSG_RESULT([internal])
11471     SYSTEM_MYTHES=
11472     BUILD_TYPE="$BUILD_TYPE MYTHES"
11473     if test "$COM" = "MSC"; then
11474         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11475     else
11476         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11477     fi
11479 AC_SUBST(SYSTEM_MYTHES)
11480 AC_SUBST(MYTHES_CFLAGS)
11481 AC_SUBST(MYTHES_LIBS)
11483 dnl ===================================================================
11484 dnl How should we build the linear programming solver ?
11485 dnl ===================================================================
11487 ENABLE_COINMP=
11488 AC_MSG_CHECKING([whether to build with CoinMP])
11489 if test "$enable_coinmp" != "no"; then
11490     ENABLE_COINMP=TRUE
11491     AC_MSG_RESULT([yes])
11492     if test "$with_system_coinmp" = "yes"; then
11493         SYSTEM_COINMP=TRUE
11494         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11495         FilterLibs "${COINMP_LIBS}"
11496         COINMP_LIBS="${filteredlibs}"
11497     else
11498         BUILD_TYPE="$BUILD_TYPE COINMP"
11499     fi
11500 else
11501     AC_MSG_RESULT([no])
11503 AC_SUBST(ENABLE_COINMP)
11504 AC_SUBST(SYSTEM_COINMP)
11505 AC_SUBST(COINMP_CFLAGS)
11506 AC_SUBST(COINMP_LIBS)
11508 ENABLE_LPSOLVE=
11509 AC_MSG_CHECKING([whether to build with lpsolve])
11510 if test "$enable_lpsolve" != "no"; then
11511     ENABLE_LPSOLVE=TRUE
11512     AC_MSG_RESULT([yes])
11513 else
11514     AC_MSG_RESULT([no])
11516 AC_SUBST(ENABLE_LPSOLVE)
11518 if test "$ENABLE_LPSOLVE" = TRUE; then
11519     AC_MSG_CHECKING([which lpsolve to use])
11520     if test "$with_system_lpsolve" = "yes"; then
11521         AC_MSG_RESULT([external])
11522         SYSTEM_LPSOLVE=TRUE
11523         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11524            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11525         save_LIBS=$LIBS
11526         # some systems need this. Like Ubuntu...
11527         AC_CHECK_LIB(m, floor)
11528         AC_CHECK_LIB(dl, dlopen)
11529         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11530             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11531         LIBS=$save_LIBS
11532     else
11533         AC_MSG_RESULT([internal])
11534         SYSTEM_LPSOLVE=
11535         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11536     fi
11538 AC_SUBST(SYSTEM_LPSOLVE)
11540 dnl ===================================================================
11541 dnl Checking for libexttextcat
11542 dnl ===================================================================
11543 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11544 if test "$with_system_libexttextcat" = "yes"; then
11545     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11547 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11549 dnl ===================================================================
11550 dnl Checking for libnumbertext
11551 dnl ===================================================================
11552 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11553 if test "$with_system_libnumbertext" = "yes"; then
11554     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11555     SYSTEM_LIBNUMBERTEXT=YES
11556 else
11557     SYSTEM_LIBNUMBERTEXT=
11559 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11560 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11562 dnl ***************************************
11563 dnl testing libc version for Linux...
11564 dnl ***************************************
11565 if test "$_os" = "Linux"; then
11566     AC_MSG_CHECKING([whether the libc is recent enough])
11567     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11568     #include <features.h>
11569     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11570     #error glibc >= 2.1 is required
11571     #endif
11572     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11575 dnl =========================================
11576 dnl Check for uuidgen
11577 dnl =========================================
11578 if test "$_os" = "WINNT"; then
11579     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11580     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11581     UUIDGEN=uuidgen.exe
11582     AC_SUBST(UUIDGEN)
11583 else
11584     AC_PATH_PROG([UUIDGEN], [uuidgen])
11585     if test -z "$UUIDGEN"; then
11586         AC_MSG_WARN([uuid is needed for building installation sets])
11587     fi
11590 dnl ***************************************
11591 dnl Checking for bison and flex
11592 dnl ***************************************
11593 AC_PATH_PROG(BISON, bison)
11594 if test -z "$BISON"; then
11595     AC_MSG_ERROR([no bison found in \$PATH, install it])
11596 else
11597     AC_MSG_CHECKING([the bison version])
11598     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11599     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11600     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11601     dnl cause
11602     dnl
11603     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]
11604     dnl   typedef union YYSTYPE
11605     dnl           ~~~~~~^~~~~~~
11606     dnl
11607     dnl while at least 3.4.1 is know to be good:
11608     if test "$COMPILER_PLUGINS" = TRUE; then
11609         if test "$_bison_longver" -lt 2004; then
11610             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11611         fi
11612     else
11613         if test "$_bison_longver" -lt 2000; then
11614             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11615         fi
11616     fi
11618 AC_SUBST([BISON])
11620 AC_PATH_PROG(FLEX, flex)
11621 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11622     FLEX=`cygpath -m $FLEX`
11624 if test -z "$FLEX"; then
11625     AC_MSG_ERROR([no flex found in \$PATH, install it])
11626 else
11627     AC_MSG_CHECKING([the flex version])
11628     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11629     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11630         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11631     fi
11633 AC_SUBST([FLEX])
11635 AC_PATH_PROG(DIFF, diff)
11636 if test -z "$DIFF"; then
11637     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11639 AC_SUBST([DIFF])
11641 AC_PATH_PROG(UNIQ, uniq)
11642 if test -z "$UNIQ"; then
11643     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11645 AC_SUBST([UNIQ])
11647 dnl ***************************************
11648 dnl Checking for patch
11649 dnl ***************************************
11650 AC_PATH_PROG(PATCH, patch)
11651 if test -z "$PATCH"; then
11652     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11655 dnl On Solaris or macOS, check if --with-gnu-patch was used
11656 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11657     if test -z "$with_gnu_patch"; then
11658         GNUPATCH=$PATCH
11659     else
11660         if test -x "$with_gnu_patch"; then
11661             GNUPATCH=$with_gnu_patch
11662         else
11663             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11664         fi
11665     fi
11667     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11668     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11669         AC_MSG_RESULT([yes])
11670     else
11671         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11672             AC_MSG_RESULT([no, but accepted (Apple patch)])
11673             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11674         else
11675             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11676         fi
11677     fi
11678 else
11679     GNUPATCH=$PATCH
11682 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11683     GNUPATCH=`cygpath -m $GNUPATCH`
11686 dnl We also need to check for --with-gnu-cp
11688 if test -z "$with_gnu_cp"; then
11689     # check the place where the good stuff is hidden on Solaris...
11690     if test -x /usr/gnu/bin/cp; then
11691         GNUCP=/usr/gnu/bin/cp
11692     else
11693         AC_PATH_PROGS(GNUCP, gnucp cp)
11694     fi
11695     if test -z $GNUCP; then
11696         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11697     fi
11698 else
11699     if test -x "$with_gnu_cp"; then
11700         GNUCP=$with_gnu_cp
11701     else
11702         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11703     fi
11706 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11707     GNUCP=`cygpath -m $GNUCP`
11710 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11711 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11712     AC_MSG_RESULT([yes])
11713 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11714     AC_MSG_RESULT([yes])
11715 else
11716     case "$build_os" in
11717     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11718         x_GNUCP=[\#]
11719         GNUCP=''
11720         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11721         ;;
11722     *)
11723         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11724         ;;
11725     esac
11728 AC_SUBST(GNUPATCH)
11729 AC_SUBST(GNUCP)
11730 AC_SUBST(x_GNUCP)
11732 dnl ***************************************
11733 dnl testing assembler path
11734 dnl ***************************************
11735 ML_EXE=""
11736 if test "$_os" = "WINNT"; then
11737     case "$WIN_HOST_ARCH" in
11738     x86) assembler=ml.exe ;;
11739     x64) assembler=ml64.exe ;;
11740     arm64) assembler=armasm64.exe ;;
11741     esac
11743     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11744     if test -f "$MSVC_HOST_PATH/$assembler"; then
11745         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11746         AC_MSG_RESULT([$ML_EXE])
11747     else
11748         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11749     fi
11752 AC_SUBST(ML_EXE)
11754 dnl ===================================================================
11755 dnl We need zip and unzip
11756 dnl ===================================================================
11757 AC_PATH_PROG(ZIP, zip)
11758 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11759 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11760     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],,)
11763 AC_PATH_PROG(UNZIP, unzip)
11764 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11766 dnl ===================================================================
11767 dnl Zip must be a specific type for different build types.
11768 dnl ===================================================================
11769 if test $build_os = cygwin; then
11770     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11771         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11772     fi
11775 dnl ===================================================================
11776 dnl We need touch with -h option support.
11777 dnl ===================================================================
11778 AC_PATH_PROG(TOUCH, touch)
11779 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11780 touch "$WARNINGS_FILE"
11781 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11782     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],,)
11785 dnl ===================================================================
11786 dnl Check for system epoxy
11787 dnl ===================================================================
11788 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11789 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11791 dnl ===================================================================
11792 dnl Show which vclplugs will be built.
11793 dnl ===================================================================
11794 R=""
11796 libo_ENABLE_VCLPLUG([gen])
11797 libo_ENABLE_VCLPLUG([gtk3])
11798 libo_ENABLE_VCLPLUG([gtk3_kde5])
11799 libo_ENABLE_VCLPLUG([gtk4])
11800 libo_ENABLE_VCLPLUG([kf5])
11801 libo_ENABLE_VCLPLUG([kf6])
11802 libo_ENABLE_VCLPLUG([qt5])
11803 libo_ENABLE_VCLPLUG([qt6])
11805 if test "$_os" = "WINNT"; then
11806     R="$R win"
11807 elif test "$_os" = "Darwin"; then
11808     R="$R osx"
11809 elif test "$_os" = "iOS"; then
11810     R="ios"
11811 elif test "$_os" = Android; then
11812     R="android"
11815 build_vcl_plugins="$R"
11816 if test -z "$build_vcl_plugins"; then
11817     build_vcl_plugins=" none"
11819 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11820 VCL_PLUGIN_INFO=$R
11821 AC_SUBST([VCL_PLUGIN_INFO])
11823 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11824     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11827 dnl ===================================================================
11828 dnl Check for GTK libraries
11829 dnl ===================================================================
11831 GTK3_CFLAGS=""
11832 GTK3_LIBS=""
11833 ENABLE_GTKTILEDVIEWER=""
11834 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11835     if test "$with_system_cairo" = no; then
11836         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.'
11837     fi
11838     : ${with_system_cairo:=yes}
11839     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)
11840     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11841     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11842     FilterLibs "${GTK3_LIBS}"
11843     GTK3_LIBS="${filteredlibs}"
11845     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11846     if test "$with_system_epoxy" != "yes"; then
11847         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11848         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11849                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11850     fi
11851 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11852     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11853     if test "$build_os" = "cygwin"; then
11854         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11855         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11856     fi
11858     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11859     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11860     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11861     FilterLibs "${GTK3_LIBS}"
11862     GTK3_LIBS="${filteredlibs}"
11863     ENABLE_GTKTILEDVIEWER="yes"
11865 AC_SUBST(GTK3_LIBS)
11866 AC_SUBST(GTK3_CFLAGS)
11867 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11869 GTK4_CFLAGS=""
11870 GTK4_LIBS=""
11871 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11872     if test "$with_system_cairo" = no; then
11873         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11874     fi
11875     : ${with_system_cairo:=yes}
11876     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11877     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11878     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11879     FilterLibs "${GTK4_LIBS}"
11880     GTK4_LIBS="${filteredlibs}"
11882     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11883     if test "$with_system_epoxy" != "yes"; then
11884         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11885         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11886                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11887     fi
11889 AC_SUBST(GTK4_LIBS)
11890 AC_SUBST(GTK4_CFLAGS)
11892 if test "$enable_introspection" = yes; then
11893     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11894         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11895     else
11896         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11897     fi
11900 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11901 if ! test "$ENABLE_GTK3" = TRUE; then
11902     if test "$enable_atspi_tests" = yes; then
11903         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11904     fi
11905     enable_atspi_tests=no
11907 if ! test "$enable_atspi_tests" = no; then
11908     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11909     if ! test "$XVFB_RUN" = no; then
11910         dnl make sure the found xvfb-run actually works
11911         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11912         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11913             AC_MSG_RESULT([yes])
11914         else
11915             AC_MSG_RESULT([no])
11916             XVFB_RUN=no
11917         fi
11918     fi
11919     if test "$XVFB_RUN" = no; then
11920         if test "$enable_atspi_tests" = yes; then
11921             AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11922         fi
11923         enable_atspi_tests=no
11924     fi
11926 if ! test "$enable_atspi_tests" = no; then
11927     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11928     if test "$DBUS_LAUNCH" = no; then
11929         if test "$enable_atspi_tests" = yes; then
11930             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11931         fi
11932         enable_atspi_tests=no
11933     fi
11935 if ! test "$enable_atspi_tests" = no; then
11936     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11937                       [if test "$enable_atspi_tests" = yes; then
11938                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11939                        else
11940                            enable_atspi_tests=no
11941                        fi])
11943 if ! test "x$enable_atspi_tests" = xno; then
11944     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11945                       [have_atspi_scroll_to=1],
11946                       [have_atspi_scroll_to=0])
11947     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11948                        [Whether AT-SPI2 has the scrollTo API])
11950 ENABLE_ATSPI_TESTS=
11951 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11952 AC_SUBST([ENABLE_ATSPI_TESTS])
11954 dnl ===================================================================
11955 dnl check for dbus support
11956 dnl ===================================================================
11957 ENABLE_DBUS=""
11958 DBUS_CFLAGS=""
11959 DBUS_LIBS=""
11960 DBUS_GLIB_CFLAGS=""
11961 DBUS_GLIB_LIBS=""
11962 DBUS_HAVE_GLIB=""
11964 if test "$enable_dbus" = "no"; then
11965     test_dbus=no
11968 AC_MSG_CHECKING([whether to enable DBUS support])
11969 if test "$test_dbus" = "yes"; then
11970     ENABLE_DBUS="TRUE"
11971     AC_MSG_RESULT([yes])
11972     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11973     AC_DEFINE(ENABLE_DBUS)
11974     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11975     FilterLibs "${DBUS_LIBS}"
11976     DBUS_LIBS="${filteredlibs}"
11978     # Glib is needed for BluetoothServer
11979     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11980     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11981         [
11982             DBUS_HAVE_GLIB="TRUE"
11983             AC_DEFINE(DBUS_HAVE_GLIB,1)
11984         ],
11985         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11986     )
11987 else
11988     AC_MSG_RESULT([no])
11991 AC_SUBST(ENABLE_DBUS)
11992 AC_SUBST(DBUS_CFLAGS)
11993 AC_SUBST(DBUS_LIBS)
11994 AC_SUBST(DBUS_GLIB_CFLAGS)
11995 AC_SUBST(DBUS_GLIB_LIBS)
11996 AC_SUBST(DBUS_HAVE_GLIB)
11998 AC_MSG_CHECKING([whether to enable Impress remote control])
11999 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12000     AC_MSG_RESULT([yes])
12001     ENABLE_SDREMOTE=TRUE
12002     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
12003         <true/>"
12004     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12006     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12007         # The Bluetooth code doesn't compile with macOS SDK 10.15
12008         if test "$enable_sdremote_bluetooth" = yes; then
12009             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12010         fi
12011         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12012         enable_sdremote_bluetooth=no
12013     fi
12014     # If not explicitly enabled or disabled, default
12015     if test -z "$enable_sdremote_bluetooth"; then
12016         case "$OS" in
12017         LINUX|MACOSX|WNT)
12018             # Default to yes for these
12019             enable_sdremote_bluetooth=yes
12020             ;;
12021         *)
12022             # otherwise no
12023             enable_sdremote_bluetooth=no
12024             ;;
12025         esac
12026     fi
12027     # $enable_sdremote_bluetooth is guaranteed non-empty now
12029     if test "$enable_sdremote_bluetooth" != "no"; then
12030         if test "$OS" = "LINUX"; then
12031             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12032                 AC_MSG_RESULT([yes])
12033                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12034                 dnl ===================================================================
12035                 dnl Check for system bluez
12036                 dnl ===================================================================
12037                 AC_MSG_CHECKING([which Bluetooth header to use])
12038                 if test "$with_system_bluez" = "yes"; then
12039                     AC_MSG_RESULT([external])
12040                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12041                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12042                     SYSTEM_BLUEZ=TRUE
12043                 else
12044                     AC_MSG_RESULT([internal])
12045                     SYSTEM_BLUEZ=
12046                 fi
12047             else
12048                 AC_MSG_RESULT([no, dbus disabled])
12049                 ENABLE_SDREMOTE_BLUETOOTH=
12050                 SYSTEM_BLUEZ=
12051             fi
12052         else
12053             AC_MSG_RESULT([yes])
12054             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12055             SYSTEM_BLUEZ=
12056             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12057         <key>com.apple.security.device.bluetooth</key>
12058         <true/>"
12059         fi
12060     else
12061         AC_MSG_RESULT([no])
12062         ENABLE_SDREMOTE_BLUETOOTH=
12063         SYSTEM_BLUEZ=
12064     fi
12065 else
12066     ENABLE_SDREMOTE=
12067     SYSTEM_BLUEZ=
12068     AC_MSG_RESULT([no])
12070 AC_SUBST(ENABLE_SDREMOTE)
12071 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12072 AC_SUBST(SDREMOTE_ENTITLEMENT)
12073 AC_SUBST(SYSTEM_BLUEZ)
12075 dnl ===================================================================
12076 dnl Check whether to enable GIO support
12077 dnl ===================================================================
12078 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12079     AC_MSG_CHECKING([whether to enable GIO support])
12080     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12081         dnl Need at least 2.26 for the dbus support.
12082         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12083                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12084         if test "$ENABLE_GIO" = "TRUE"; then
12085             AC_DEFINE(ENABLE_GIO)
12086             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12087             FilterLibs "${GIO_LIBS}"
12088             GIO_LIBS="${filteredlibs}"
12089         fi
12090     else
12091         AC_MSG_RESULT([no])
12092     fi
12094 AC_SUBST(ENABLE_GIO)
12095 AC_SUBST(GIO_CFLAGS)
12096 AC_SUBST(GIO_LIBS)
12099 dnl ===================================================================
12101 SPLIT_APP_MODULES=""
12102 if test "$enable_split_app_modules" = "yes"; then
12103     SPLIT_APP_MODULES="TRUE"
12105 AC_SUBST(SPLIT_APP_MODULES)
12107 SPLIT_OPT_FEATURES=""
12108 if test "$enable_split_opt_features" = "yes"; then
12109     SPLIT_OPT_FEATURES="TRUE"
12111 AC_SUBST(SPLIT_OPT_FEATURES)
12113 dnl ===================================================================
12114 dnl Check whether the GStreamer libraries are available.
12115 dnl ===================================================================
12117 ENABLE_GSTREAMER_1_0=""
12119 if test "$test_gstreamer_1_0" = yes; then
12121     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12122     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12123         ENABLE_GSTREAMER_1_0="TRUE"
12124         AC_MSG_RESULT([yes])
12125         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12126         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12127         FilterLibs "${GSTREAMER_1_0_LIBS}"
12128         GSTREAMER_1_0_LIBS="${filteredlibs}"
12129         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12130     else
12131         AC_MSG_RESULT([no])
12132     fi
12134 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12135 AC_SUBST(GSTREAMER_1_0_LIBS)
12136 AC_SUBST(ENABLE_GSTREAMER_1_0)
12138 ENABLE_OPENGL_TRANSITIONS=
12139 ENABLE_OPENGL_CANVAS=
12140 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12141    : # disable
12142 elif test "$_os" = "Darwin"; then
12143     # We use frameworks on macOS, no need for detail checks
12144     ENABLE_OPENGL_TRANSITIONS=TRUE
12145     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12146     ENABLE_OPENGL_CANVAS=TRUE
12147 elif test $_os = WINNT; then
12148     ENABLE_OPENGL_TRANSITIONS=TRUE
12149     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12150     ENABLE_OPENGL_CANVAS=TRUE
12151 else
12152     if test "$USING_X11" = TRUE; then
12153         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12154         ENABLE_OPENGL_TRANSITIONS=TRUE
12155         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12156         ENABLE_OPENGL_CANVAS=TRUE
12157     fi
12160 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12161 AC_SUBST(ENABLE_OPENGL_CANVAS)
12163 dnl =================================================
12164 dnl Check whether to build with OpenCL support.
12165 dnl =================================================
12167 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12168     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12169     # platform (optional at run-time, used through clew).
12170     BUILD_TYPE="$BUILD_TYPE OPENCL"
12171     AC_DEFINE(HAVE_FEATURE_OPENCL)
12174 dnl =================================================
12175 dnl Check whether to build with dconf support.
12176 dnl =================================================
12178 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12179     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12180         if test "$enable_dconf" = yes; then
12181             AC_MSG_ERROR([dconf not found])
12182         else
12183             enable_dconf=no
12184         fi])
12186 AC_MSG_CHECKING([whether to enable dconf])
12187 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12188     DCONF_CFLAGS=
12189     DCONF_LIBS=
12190     ENABLE_DCONF=
12191     AC_MSG_RESULT([no])
12192 else
12193     ENABLE_DCONF=TRUE
12194     AC_DEFINE(ENABLE_DCONF)
12195     AC_MSG_RESULT([yes])
12197 AC_SUBST([DCONF_CFLAGS])
12198 AC_SUBST([DCONF_LIBS])
12199 AC_SUBST([ENABLE_DCONF])
12201 # pdf import?
12202 AC_MSG_CHECKING([whether to build the PDF import feature])
12203 ENABLE_PDFIMPORT=
12204 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12205     AC_MSG_RESULT([yes])
12206     ENABLE_PDFIMPORT=TRUE
12207     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12208 else
12209     AC_MSG_RESULT([no])
12212 # Pdfium?
12213 AC_MSG_CHECKING([whether to build PDFium])
12214 ENABLE_PDFIUM=
12215 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12216     AC_MSG_RESULT([yes])
12217     ENABLE_PDFIUM=TRUE
12218     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12219 else
12220     AC_MSG_RESULT([no])
12222 AC_SUBST(ENABLE_PDFIUM)
12224 if test "$ENABLE_PDFIUM" = "TRUE"; then
12225     AC_MSG_CHECKING([which OpenJPEG library to use])
12226     if test "$with_system_openjpeg" = "yes"; then
12227         SYSTEM_OPENJPEG2=TRUE
12228         AC_MSG_RESULT([external])
12229         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12230         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12231         FilterLibs "${OPENJPEG2_LIBS}"
12232         OPENJPEG2_LIBS="${filteredlibs}"
12233     else
12234         SYSTEM_OPENJPEG2=FALSE
12235         AC_MSG_RESULT([internal])
12236     fi
12238     AC_MSG_CHECKING([which Abseil library to use])
12239     if test "$with_system_abseil" = "yes"; then
12240         AC_MSG_RESULT([external])
12241         SYSTEM_ABSEIL=TRUE
12242         AC_LANG_PUSH([C++])
12243         PKG_CHECK_MODULES(ABSEIL, absl_bad_optional_access absl_bad_variant_access absl_inlined_vector )
12244         AC_LANG_POP([C++])
12245         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12246         FilterLibs "${ABSEIL_LIBS}"
12247         ABSEIL_LIBS="${filteredlibs}"
12248     else
12249         AC_MSG_RESULT([internal])
12250     fi
12252 AC_SUBST(SYSTEM_OPENJPEG2)
12253 AC_SUBST(SYSTEM_ABSEIL)
12254 AC_SUBST(ABSEIL_CFLAGS)
12255 AC_SUBST(ABSEIL_LIBS)
12257 dnl ===================================================================
12258 dnl Check for poppler
12259 dnl ===================================================================
12260 ENABLE_POPPLER=
12261 AC_MSG_CHECKING([whether to build Poppler])
12262 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12263     AC_MSG_RESULT([yes])
12264     ENABLE_POPPLER=TRUE
12265     AC_DEFINE(HAVE_FEATURE_POPPLER)
12266 else
12267     AC_MSG_RESULT([no])
12269 AC_SUBST(ENABLE_POPPLER)
12271 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12272     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12275 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12276     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12279 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12280     dnl ===================================================================
12281     dnl Check for system poppler
12282     dnl ===================================================================
12283     AC_MSG_CHECKING([which PDF import poppler to use])
12284     if test "$with_system_poppler" = "yes"; then
12285         AC_MSG_RESULT([external])
12286         SYSTEM_POPPLER=TRUE
12287         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12288         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12289         FilterLibs "${POPPLER_LIBS}"
12290         POPPLER_LIBS="${filteredlibs}"
12291     else
12292         AC_MSG_RESULT([internal])
12293         SYSTEM_POPPLER=
12294         BUILD_TYPE="$BUILD_TYPE POPPLER"
12295     fi
12296     AC_DEFINE([ENABLE_PDFIMPORT],1)
12298 AC_SUBST(ENABLE_PDFIMPORT)
12299 AC_SUBST(SYSTEM_POPPLER)
12300 AC_SUBST(POPPLER_CFLAGS)
12301 AC_SUBST(POPPLER_LIBS)
12303 # Skia?
12304 ENABLE_SKIA=
12305 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12306     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12307     if test "$SYSTEM_FREETYPE" = TRUE; then
12308         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12309             [skia_freetype_ok=yes],
12310             [skia_freetype_ok=no])
12311     else # internal is ok
12312         skia_freetype_ok=yes
12313     fi
12314     AC_MSG_CHECKING([whether to build Skia])
12315     if test "$skia_freetype_ok" = "yes"; then
12316         if test "$enable_skia" = "debug"; then
12317             AC_MSG_RESULT([yes (debug)])
12318             ENABLE_SKIA_DEBUG=TRUE
12319         else
12320             AC_MSG_RESULT([yes])
12321             ENABLE_SKIA_DEBUG=
12322         fi
12323         ENABLE_SKIA=TRUE
12324         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12325             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12326         fi
12328         AC_DEFINE(HAVE_FEATURE_SKIA)
12329         BUILD_TYPE="$BUILD_TYPE SKIA"
12331         if test "$OS" = "MACOSX"; then
12332             AC_DEFINE(SK_GANESH,1)
12333             AC_DEFINE(SK_METAL,1)
12334             SKIA_GPU=METAL
12335             AC_SUBST(SKIA_GPU)
12336         else
12337             AC_DEFINE(SK_GANESH,1)
12338             AC_DEFINE(SK_VULKAN,1)
12339             SKIA_GPU=VULKAN
12340             AC_SUBST(SKIA_GPU)
12341         fi
12342     else
12343         AC_MSG_RESULT([no (freetype too old)])
12344         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12345     fi
12347 else
12348     AC_MSG_CHECKING([whether to build Skia])
12349     AC_MSG_RESULT([no])
12351 AC_SUBST(ENABLE_SKIA)
12352 AC_SUBST(ENABLE_SKIA_DEBUG)
12354 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12355 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12356 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12357 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12358 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12359 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12360 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12361 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12362 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12363 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12364 LO_CLANG_VERSION=
12365 HAVE_LO_CLANG_DLLEXPORTINLINES=
12367 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12368     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12369         AC_MSG_CHECKING([for Clang])
12370         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12371     else
12372         if test "$_os" = "WINNT"; then
12373             AC_MSG_CHECKING([for clang-cl])
12374             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12375                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12376             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12377                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12378             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12379                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12380             fi
12381             if test -n "$LO_CLANG_CC"; then
12382                 dnl explicitly set -m32/-m64
12383                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12384                 LO_CLANG_CXX="$LO_CLANG_CC"
12385                 AC_MSG_RESULT([$LO_CLANG_CC])
12386             else
12387                 AC_MSG_RESULT([no])
12388             fi
12390             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12391             echo "#include <stdlib.h>" > conftest.c
12392             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12393                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12394             rm -f conftest.c conftest.obj
12395             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12396                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12397             else
12398                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12399             fi
12400         else
12401             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12402             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12403         fi
12404     fi
12405     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12406         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12407         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12408         if test "$LO_CLANG_VERSION" -lt 50002; then
12409             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12410             LO_CLANG_CC=
12411             LO_CLANG_CXX=
12412         fi
12413     fi
12414     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12415         save_CXX="$CXX"
12416         CXX="$LO_CLANG_CXX"
12417         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12418         AC_LANG_PUSH([C++])
12419         save_CXXFLAGS=$CXXFLAGS
12420         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12421         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12422                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12423                 AC_MSG_RESULT([yes])
12424             ], [AC_MSG_RESULT([no])])
12425         CXXFLAGS=$save_CXXFLAGS
12426         AC_LANG_POP([C++])
12427         CXX="$save_CXX"
12428         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12429             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.])
12430         fi
12431     fi
12432     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12433         # Skia is the default on Windows and Mac, so hard-require Clang.
12434         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12435         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12436             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12437         else
12438             AC_MSG_WARN([Clang compiler not found.])
12439         fi
12440     else
12442         save_CXX="$CXX"
12443         CXX="$LO_CLANG_CXX"
12444         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12445         flag_sse2=-msse2
12446         flag_ssse3=-mssse3
12447         flag_sse41=-msse4.1
12448         flag_sse42=-msse4.2
12449         flag_avx=-mavx
12450         flag_avx2=-mavx2
12451         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12452         flag_avx512f=-mavx512f
12453         flag_f16c=-mf16c
12454         flag_fma=-mfma
12456         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12457         AC_LANG_PUSH([C++])
12458         save_CXXFLAGS=$CXXFLAGS
12459         CXXFLAGS="$CXXFLAGS $flag_sse2"
12460         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12461             #include <emmintrin.h>
12462             int main () {
12463                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12464                 c = _mm_xor_si128 (a, b);
12465                 return 0;
12466             }
12467             ])],
12468             [can_compile_sse2=yes],
12469             [can_compile_sse2=no])
12470         AC_LANG_POP([C++])
12471         CXXFLAGS=$save_CXXFLAGS
12472         AC_MSG_RESULT([${can_compile_sse2}])
12473         if test "${can_compile_sse2}" = "yes" ; then
12474             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12475         fi
12477         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12478         AC_LANG_PUSH([C++])
12479         save_CXXFLAGS=$CXXFLAGS
12480         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12481         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12482             #include <tmmintrin.h>
12483             int main () {
12484                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12485                 c = _mm_maddubs_epi16 (a, b);
12486                 return 0;
12487             }
12488             ])],
12489             [can_compile_ssse3=yes],
12490             [can_compile_ssse3=no])
12491         AC_LANG_POP([C++])
12492         CXXFLAGS=$save_CXXFLAGS
12493         AC_MSG_RESULT([${can_compile_ssse3}])
12494         if test "${can_compile_ssse3}" = "yes" ; then
12495             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12496         fi
12498         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12499         AC_LANG_PUSH([C++])
12500         save_CXXFLAGS=$CXXFLAGS
12501         CXXFLAGS="$CXXFLAGS $flag_sse41"
12502         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12503             #include <smmintrin.h>
12504             int main () {
12505                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12506                 c = _mm_cmpeq_epi64 (a, b);
12507                 return 0;
12508             }
12509             ])],
12510             [can_compile_sse41=yes],
12511             [can_compile_sse41=no])
12512         AC_LANG_POP([C++])
12513         CXXFLAGS=$save_CXXFLAGS
12514         AC_MSG_RESULT([${can_compile_sse41}])
12515         if test "${can_compile_sse41}" = "yes" ; then
12516             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12517         fi
12519         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12520         AC_LANG_PUSH([C++])
12521         save_CXXFLAGS=$CXXFLAGS
12522         CXXFLAGS="$CXXFLAGS $flag_sse42"
12523         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12524             #include <nmmintrin.h>
12525             int main () {
12526                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12527                 c = _mm_cmpgt_epi64 (a, b);
12528                 return 0;
12529             }
12530             ])],
12531             [can_compile_sse42=yes],
12532             [can_compile_sse42=no])
12533         AC_LANG_POP([C++])
12534         CXXFLAGS=$save_CXXFLAGS
12535         AC_MSG_RESULT([${can_compile_sse42}])
12536         if test "${can_compile_sse42}" = "yes" ; then
12537             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12538         fi
12540         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12541         AC_LANG_PUSH([C++])
12542         save_CXXFLAGS=$CXXFLAGS
12543         CXXFLAGS="$CXXFLAGS $flag_avx"
12544         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12545             #include <immintrin.h>
12546             int main () {
12547                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12548                 c = _mm256_xor_ps(a, b);
12549                 return 0;
12550             }
12551             ])],
12552             [can_compile_avx=yes],
12553             [can_compile_avx=no])
12554         AC_LANG_POP([C++])
12555         CXXFLAGS=$save_CXXFLAGS
12556         AC_MSG_RESULT([${can_compile_avx}])
12557         if test "${can_compile_avx}" = "yes" ; then
12558             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12559         fi
12561         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12562         AC_LANG_PUSH([C++])
12563         save_CXXFLAGS=$CXXFLAGS
12564         CXXFLAGS="$CXXFLAGS $flag_avx2"
12565         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12566             #include <immintrin.h>
12567             int main () {
12568                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12569                 c = _mm256_maddubs_epi16(a, b);
12570                 return 0;
12571             }
12572             ])],
12573             [can_compile_avx2=yes],
12574             [can_compile_avx2=no])
12575         AC_LANG_POP([C++])
12576         CXXFLAGS=$save_CXXFLAGS
12577         AC_MSG_RESULT([${can_compile_avx2}])
12578         if test "${can_compile_avx2}" = "yes" ; then
12579             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12580         fi
12582         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12583         AC_LANG_PUSH([C++])
12584         save_CXXFLAGS=$CXXFLAGS
12585         CXXFLAGS="$CXXFLAGS $flag_avx512"
12586         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12587             #include <immintrin.h>
12588             int main () {
12589                 __m512i a = _mm512_loadu_si512(0);
12590                 __m512d v1 = _mm512_load_pd(0);
12591                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12592                 __m512d v2 = _mm512_abs_pd(v1);
12593                 return 0;
12594             }
12595             ])],
12596             [can_compile_avx512=yes],
12597             [can_compile_avx512=no])
12598         AC_LANG_POP([C++])
12599         CXXFLAGS=$save_CXXFLAGS
12600         AC_MSG_RESULT([${can_compile_avx512}])
12601         if test "${can_compile_avx512}" = "yes" ; then
12602             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12603             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12604         fi
12606         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12607         AC_LANG_PUSH([C++])
12608         save_CXXFLAGS=$CXXFLAGS
12609         CXXFLAGS="$CXXFLAGS $flag_f16c"
12610         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12611             #include <immintrin.h>
12612             int main () {
12613                 __m128i a = _mm_set1_epi32 (0);
12614                 __m128 c;
12615                 c = _mm_cvtph_ps(a);
12616                 return 0;
12617             }
12618             ])],
12619             [can_compile_f16c=yes],
12620             [can_compile_f16c=no])
12621         AC_LANG_POP([C++])
12622         CXXFLAGS=$save_CXXFLAGS
12623         AC_MSG_RESULT([${can_compile_f16c}])
12624         if test "${can_compile_f16c}" = "yes" ; then
12625             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12626         fi
12628         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12629         AC_LANG_PUSH([C++])
12630         save_CXXFLAGS=$CXXFLAGS
12631         CXXFLAGS="$CXXFLAGS $flag_fma"
12632         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12633             #include <immintrin.h>
12634             int main () {
12635                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12636                 d = _mm256_fmadd_ps(a, b, c);
12637                 return 0;
12638             }
12639             ])],
12640             [can_compile_fma=yes],
12641             [can_compile_fma=no])
12642         AC_LANG_POP([C++])
12643         CXXFLAGS=$save_CXXFLAGS
12644         AC_MSG_RESULT([${can_compile_fma}])
12645         if test "${can_compile_fma}" = "yes" ; then
12646             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12647         fi
12649         CXX="$save_CXX"
12650     fi
12653 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12655 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12656     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12657     AC_LANG_PUSH([C])
12658     save_CC="$CC"
12659     CC="$LO_CLANG_CC"
12660     save_CFLAGS=$CFLAGS
12661     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12662     dnl an empty program will do, we're checking the compiler flags
12663     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12664                       [use_ccache=yes], [use_ccache=no])
12665     CFLAGS=$save_CFLAGS
12666     CC=$save_CC
12667     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12668         AC_MSG_RESULT([yes])
12669     else
12670         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12671         AC_MSG_RESULT([no])
12672     fi
12673     AC_LANG_POP([C])
12675     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12676     AC_LANG_PUSH([C++])
12677     save_CXX="$CXX"
12678     CXX="$LO_CLANG_CXX"
12679     save_CXXFLAGS=$CXXFLAGS
12680     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12681     dnl an empty program will do, we're checking the compiler flags
12682     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12683                       [use_ccache=yes], [use_ccache=no])
12684     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12685         AC_MSG_RESULT([yes])
12686     else
12687         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12688         AC_MSG_RESULT([no])
12689     fi
12690     CXXFLAGS=$save_CXXFLAGS
12691     CXX=$save_CXX
12692     AC_LANG_POP([C++])
12695 AC_SUBST(LO_CLANG_CC)
12696 AC_SUBST(LO_CLANG_CXX)
12697 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12698 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12699 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12700 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12701 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12702 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12703 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12704 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12705 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12706 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12707 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12708 AC_SUBST(LO_CLANG_VERSION)
12709 AC_SUBST(CLANG_USE_LD)
12710 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12712 SYSTEM_GPGMEPP=
12714 AC_MSG_CHECKING([whether to enable gpgmepp])
12715 if test "$enable_gpgmepp" = no; then
12716     AC_MSG_RESULT([no])
12717 elif test "$enable_mpl_subset" = "yes"; then
12718     AC_MSG_RESULT([no (MPL only)])
12719 elif test "$enable_fuzzers" = "yes"; then
12720     AC_MSG_RESULT([no (oss-fuzz)])
12721 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12722     AC_MSG_RESULT([yes])
12723     dnl ===================================================================
12724     dnl Check for system gpgme
12725     dnl ===================================================================
12726     AC_MSG_CHECKING([which gpgmepp to use])
12727     if test "$with_system_gpgmepp" = "yes"; then
12728         AC_MSG_RESULT([external])
12729         SYSTEM_GPGMEPP=TRUE
12731         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12732         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12733             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12734         AC_CHECK_HEADER(gpgme.h, [],
12735             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12736         AC_CHECK_LIB(gpgmepp, main, [],
12737             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12738         GPGMEPP_LIBS=-lgpgmepp
12739     else
12740         AC_MSG_RESULT([internal])
12741         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12743         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12744         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12745         if test "$_os" != "WINNT"; then
12746             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12747             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12748         fi
12749     fi
12750     ENABLE_GPGMEPP=TRUE
12751     AC_DEFINE([HAVE_FEATURE_GPGME])
12752     AC_PATH_PROG(GPG, gpg)
12753     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12754     # so let's exclude that manually for the moment
12755     if test -n "$GPG" -a "$_os" != "WINNT"; then
12756         # make sure we not only have a working gpgme, but a full working
12757         # gpg installation to run OpenPGP signature verification
12758         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12759     fi
12760     if test "$_os" = "Linux"; then
12761       uid=`id -u`
12762       AC_MSG_CHECKING([for /run/user/$uid])
12763       if test -d /run/user/$uid; then
12764         AC_MSG_RESULT([yes])
12765         AC_PATH_PROG(GPGCONF, gpgconf)
12767         # Older versions of gpgconf are not working as expected, since
12768         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12769         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12770         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12771         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12772         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12773         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12774         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12775           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12776           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12777           if $GPGCONF --dump-options > /dev/null ; then
12778             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12779               AC_MSG_RESULT([yes])
12780               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12781               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12782             else
12783               AC_MSG_RESULT([no])
12784             fi
12785           else
12786             AC_MSG_RESULT([no. missing or broken gpgconf?])
12787           fi
12788         else
12789           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12790         fi
12791       else
12792         AC_MSG_RESULT([no])
12793      fi
12794    fi
12795 else
12796     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12798 AC_SUBST(ENABLE_GPGMEPP)
12799 AC_SUBST(SYSTEM_GPGMEPP)
12800 AC_SUBST(GPG_ERROR_CFLAGS)
12801 AC_SUBST(GPG_ERROR_LIBS)
12802 AC_SUBST(LIBASSUAN_CFLAGS)
12803 AC_SUBST(LIBASSUAN_LIBS)
12804 AC_SUBST(GPGMEPP_CFLAGS)
12805 AC_SUBST(GPGMEPP_LIBS)
12807 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12808 if test "$with_java" != "no"; then
12809     AC_MSG_RESULT([yes])
12810     ENABLE_JAVA_WEBSOCKET=TRUE
12811     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12812     NEED_ANT=TRUE
12813 else
12814     AC_MSG_RESULT([no])
12815     ENABLE_JAVA_WEBSOCKET=
12817 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12819 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12820 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12821     AC_MSG_RESULT([yes])
12822     ENABLE_MEDIAWIKI=TRUE
12823     BUILD_TYPE="$BUILD_TYPE XSLTML"
12824     if test  "x$with_java" = "xno"; then
12825         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12826     fi
12827 else
12828     AC_MSG_RESULT([no])
12829     ENABLE_MEDIAWIKI=
12830     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12832 AC_SUBST(ENABLE_MEDIAWIKI)
12834 AC_MSG_CHECKING([whether to build the Report Builder])
12835 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12836     AC_MSG_RESULT([yes])
12837     ENABLE_REPORTBUILDER=TRUE
12838     AC_MSG_CHECKING([which jfreereport libs to use])
12839     if test "$with_system_jfreereport" = "yes"; then
12840         SYSTEM_JFREEREPORT=TRUE
12841         AC_MSG_RESULT([external])
12842         if test -z $SAC_JAR; then
12843             SAC_JAR=/usr/share/java/sac.jar
12844         fi
12845         if ! test -f $SAC_JAR; then
12846              AC_MSG_ERROR(sac.jar not found.)
12847         fi
12849         if test -z $LIBXML_JAR; then
12850             if test -f /usr/share/java/libxml-1.0.0.jar; then
12851                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12852             elif test -f /usr/share/java/libxml.jar; then
12853                 LIBXML_JAR=/usr/share/java/libxml.jar
12854             else
12855                 AC_MSG_ERROR(libxml.jar replacement not found.)
12856             fi
12857         elif ! test -f $LIBXML_JAR; then
12858             AC_MSG_ERROR(libxml.jar not found.)
12859         fi
12861         if test -z $FLUTE_JAR; then
12862             if test -f /usr/share/java/flute-1.3.0.jar; then
12863                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12864             elif test -f /usr/share/java/flute.jar; then
12865                 FLUTE_JAR=/usr/share/java/flute.jar
12866             else
12867                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12868             fi
12869         elif ! test -f $FLUTE_JAR; then
12870             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12871         fi
12873         if test -z $JFREEREPORT_JAR; then
12874             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12875                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12876             elif test -f /usr/share/java/flow-engine.jar; then
12877                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12878             else
12879                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12880             fi
12881         elif ! test -f  $JFREEREPORT_JAR; then
12882                 AC_MSG_ERROR(jfreereport.jar not found.)
12883         fi
12885         if test -z $LIBLAYOUT_JAR; then
12886             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12887                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12888             elif test -f /usr/share/java/liblayout.jar; then
12889                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12890             else
12891                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12892             fi
12893         elif ! test -f $LIBLAYOUT_JAR; then
12894                 AC_MSG_ERROR(liblayout.jar not found.)
12895         fi
12897         if test -z $LIBLOADER_JAR; then
12898             if test -f /usr/share/java/libloader-1.0.0.jar; then
12899                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12900             elif test -f /usr/share/java/libloader.jar; then
12901                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12902             else
12903                 AC_MSG_ERROR(libloader.jar replacement not found.)
12904             fi
12905         elif ! test -f  $LIBLOADER_JAR; then
12906             AC_MSG_ERROR(libloader.jar not found.)
12907         fi
12909         if test -z $LIBFORMULA_JAR; then
12910             if test -f /usr/share/java/libformula-0.2.0.jar; then
12911                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12912             elif test -f /usr/share/java/libformula.jar; then
12913                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12914             else
12915                 AC_MSG_ERROR(libformula.jar replacement not found.)
12916             fi
12917         elif ! test -f $LIBFORMULA_JAR; then
12918                 AC_MSG_ERROR(libformula.jar not found.)
12919         fi
12921         if test -z $LIBREPOSITORY_JAR; then
12922             if test -f /usr/share/java/librepository-1.0.0.jar; then
12923                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12924             elif test -f /usr/share/java/librepository.jar; then
12925                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12926             else
12927                 AC_MSG_ERROR(librepository.jar replacement not found.)
12928             fi
12929         elif ! test -f $LIBREPOSITORY_JAR; then
12930             AC_MSG_ERROR(librepository.jar not found.)
12931         fi
12933         if test -z $LIBFONTS_JAR; then
12934             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12935                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12936             elif test -f /usr/share/java/libfonts.jar; then
12937                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12938             else
12939                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12940             fi
12941         elif ! test -f $LIBFONTS_JAR; then
12942                 AC_MSG_ERROR(libfonts.jar not found.)
12943         fi
12945         if test -z $LIBSERIALIZER_JAR; then
12946             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12947                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12948             elif test -f /usr/share/java/libserializer.jar; then
12949                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12950             else
12951                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12952             fi
12953         elif ! test -f $LIBSERIALIZER_JAR; then
12954                 AC_MSG_ERROR(libserializer.jar not found.)
12955         fi
12957         if test -z $LIBBASE_JAR; then
12958             if test -f /usr/share/java/libbase-1.0.0.jar; then
12959                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12960             elif test -f /usr/share/java/libbase.jar; then
12961                 LIBBASE_JAR=/usr/share/java/libbase.jar
12962             else
12963                 AC_MSG_ERROR(libbase.jar replacement not found.)
12964             fi
12965         elif ! test -f $LIBBASE_JAR; then
12966             AC_MSG_ERROR(libbase.jar not found.)
12967         fi
12969     else
12970         AC_MSG_RESULT([internal])
12971         SYSTEM_JFREEREPORT=
12972         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12973         NEED_ANT=TRUE
12974     fi
12975     BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
12976 else
12977     AC_MSG_RESULT([no])
12978     ENABLE_REPORTBUILDER=
12979     SYSTEM_JFREEREPORT=
12981 AC_SUBST(ENABLE_REPORTBUILDER)
12982 AC_SUBST(SYSTEM_JFREEREPORT)
12983 AC_SUBST(SAC_JAR)
12984 AC_SUBST(LIBXML_JAR)
12985 AC_SUBST(FLUTE_JAR)
12986 AC_SUBST(JFREEREPORT_JAR)
12987 AC_SUBST(LIBBASE_JAR)
12988 AC_SUBST(LIBLAYOUT_JAR)
12989 AC_SUBST(LIBLOADER_JAR)
12990 AC_SUBST(LIBFORMULA_JAR)
12991 AC_SUBST(LIBREPOSITORY_JAR)
12992 AC_SUBST(LIBFONTS_JAR)
12993 AC_SUBST(LIBSERIALIZER_JAR)
12995 # scripting provider for BeanShell?
12996 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12997 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12998     AC_MSG_RESULT([yes])
12999     ENABLE_SCRIPTING_BEANSHELL=TRUE
13001     dnl ===================================================================
13002     dnl Check for system beanshell
13003     dnl ===================================================================
13004     AC_MSG_CHECKING([which beanshell to use])
13005     if test "$with_system_beanshell" = "yes"; then
13006         AC_MSG_RESULT([external])
13007         SYSTEM_BSH=TRUE
13008         if test -z $BSH_JAR; then
13009             BSH_JAR=/usr/share/java/bsh.jar
13010         fi
13011         if ! test -f $BSH_JAR; then
13012             AC_MSG_ERROR(bsh.jar not found.)
13013         fi
13014     else
13015         AC_MSG_RESULT([internal])
13016         SYSTEM_BSH=
13017         BUILD_TYPE="$BUILD_TYPE BSH"
13018     fi
13019 else
13020     AC_MSG_RESULT([no])
13021     ENABLE_SCRIPTING_BEANSHELL=
13022     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13024 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13025 AC_SUBST(SYSTEM_BSH)
13026 AC_SUBST(BSH_JAR)
13028 # scripting provider for JavaScript?
13029 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13030 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13031     AC_MSG_RESULT([yes])
13032     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13034     dnl ===================================================================
13035     dnl Check for system rhino
13036     dnl ===================================================================
13037     AC_MSG_CHECKING([which rhino to use])
13038     if test "$with_system_rhino" = "yes"; then
13039         AC_MSG_RESULT([external])
13040         SYSTEM_RHINO=TRUE
13041         if test -z $RHINO_JAR; then
13042             RHINO_JAR=/usr/share/java/js.jar
13043         fi
13044         if ! test -f $RHINO_JAR; then
13045             AC_MSG_ERROR(js.jar not found.)
13046         fi
13047     else
13048         AC_MSG_RESULT([internal])
13049         SYSTEM_RHINO=
13050         BUILD_TYPE="$BUILD_TYPE RHINO"
13051         NEED_ANT=TRUE
13052     fi
13053 else
13054     AC_MSG_RESULT([no])
13055     ENABLE_SCRIPTING_JAVASCRIPT=
13056     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13058 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13059 AC_SUBST(SYSTEM_RHINO)
13060 AC_SUBST(RHINO_JAR)
13062 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13063 # paths should be added to library search path. So lets put all 64-bit
13064 # platforms there.
13065 supports_multilib=
13066 case "$host_cpu" in
13067 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13068     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13069         supports_multilib="yes"
13070     fi
13071     ;;
13073     ;;
13074 esac
13076 dnl ===================================================================
13077 dnl QT5 Integration
13078 dnl ===================================================================
13080 QT5_CFLAGS=""
13081 QT5_LIBS=""
13082 QMAKE5="qmake"
13083 MOC5="moc"
13084 QT5_GOBJECT_CFLAGS=""
13085 QT5_GOBJECT_LIBS=""
13086 QT5_HAVE_GOBJECT=""
13087 QT5_PLATFORMS_SRCDIR=""
13088 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13089         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13090         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13091 then
13092     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13093     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13095     if test -n "$supports_multilib"; then
13096         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13097     fi
13099     qt5_test_include="QtWidgets/qapplication.h"
13100     if test "$_os" = "Emscripten"; then
13101         qt5_test_library="libQt5Widgets.a"
13102     else
13103         qt5_test_library="libQt5Widgets.so"
13104     fi
13106     dnl Check for qmake5
13107     if test -n "$QT5DIR"; then
13108         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13109     else
13110         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13111     fi
13112     if test "$QMAKE5" = "no"; then
13113         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13114     else
13115         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13116         if test -z "$qmake5_test_ver"; then
13117             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13118         fi
13119         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13120         qt5_minimal_minor="15"
13121         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13122             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13123         else
13124             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13125         fi
13126     fi
13128     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13129     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13130     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13131     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13133     AC_MSG_CHECKING([for Qt5 headers])
13134     qt5_incdir="no"
13135     for inc_dir in $qt5_incdirs; do
13136         if test -r "$inc_dir/$qt5_test_include"; then
13137             qt5_incdir="$inc_dir"
13138             break
13139         fi
13140     done
13141     AC_MSG_RESULT([$qt5_incdir])
13142     if test "x$qt5_incdir" = "xno"; then
13143         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13144     fi
13145     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13146     AC_LANG_PUSH([C++])
13147     save_CPPFLAGS=$CPPFLAGS
13148     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13149     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13150         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13151     CPPFLAGS=$save_CPPFLAGS
13152     AC_LANG_POP([C++])
13154     AC_MSG_CHECKING([for Qt5 libraries])
13155     qt5_libdir="no"
13156     for lib_dir in $qt5_libdirs; do
13157         if test -r "$lib_dir/$qt5_test_library"; then
13158             qt5_libdir="$lib_dir"
13159             break
13160         fi
13161     done
13162     AC_MSG_RESULT([$qt5_libdir])
13163     if test "x$qt5_libdir" = "xno"; then
13164         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13165     fi
13167     if test "$_os" = "Emscripten"; then
13168         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13169             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13170         fi
13171         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13172             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13173         fi
13175         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13176         if ! test -x "$EMSDK_LLVM_NM"; then
13177             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13178         fi
13179         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13180             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13181         fi
13182         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13183         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13184             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13185         fi
13186         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13187             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13188         fi
13189     fi
13191     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13192     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13193     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13194     if test "$_os" = "Emscripten"; then
13195         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13196     fi
13198     if test "$USING_X11" = TRUE; then
13199         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13200         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13201         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13202         QT5_USING_X11=1
13203         AC_DEFINE(QT5_USING_X11)
13204     fi
13206     dnl Check for Meta Object Compiler
13208     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13209     if test "$MOC5" = "no"; then
13210         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13211 the root of your Qt installation by exporting QT5DIR before running "configure".])
13212     fi
13214     if test "$test_gstreamer_1_0" = yes; then
13215         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13216                 QT5_HAVE_GOBJECT=1
13217                 AC_DEFINE(QT5_HAVE_GOBJECT)
13218             ],
13219             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13220         )
13221     fi
13223 AC_SUBST(QT5_CFLAGS)
13224 AC_SUBST(QT5_LIBS)
13225 AC_SUBST(MOC5)
13226 AC_SUBST(QT5_GOBJECT_CFLAGS)
13227 AC_SUBST(QT5_GOBJECT_LIBS)
13228 AC_SUBST(QT5_HAVE_GOBJECT)
13229 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13231 dnl ===================================================================
13232 dnl QT6 Integration
13233 dnl ===================================================================
13235 QT6_CFLAGS=""
13236 QT6_LIBS=""
13237 QMAKE6="qmake"
13238 MOC6="moc"
13239 QT6_PLATFORMS_SRCDIR=""
13240 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13241         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13242 then
13243     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13244     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13246     if test -n "$supports_multilib"; then
13247         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13248     fi
13250     qt6_test_include="QtWidgets/qapplication.h"
13251     if test "$_os" = "Emscripten"; then
13252         qt6_test_library="libQt6Widgets.a"
13253     else
13254         qt6_test_library="libQt6Widgets.so"
13255     fi
13257     dnl Check for qmake6
13258     if test -n "$QT6DIR"; then
13259         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13260     else
13261         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13262     fi
13263     if test "$QMAKE6" = "no"; then
13264         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13265     else
13266         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13267         if test -z "$qmake6_test_ver"; then
13268             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13269         fi
13270         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13271     fi
13273     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13274     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13275     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13276     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13278     AC_MSG_CHECKING([for Qt6 headers])
13279     qt6_incdir="no"
13280     for inc_dir in $qt6_incdirs; do
13281         if test -r "$inc_dir/$qt6_test_include"; then
13282             qt6_incdir="$inc_dir"
13283             break
13284         fi
13285     done
13286     AC_MSG_RESULT([$qt6_incdir])
13287     if test "x$qt6_incdir" = "xno"; then
13288         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13289     fi
13290     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13291     AC_LANG_PUSH([C++])
13292     save_CPPFLAGS=$CPPFLAGS
13293     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13294     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13295         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13296     CPPFLAGS=$save_CPPFLAGS
13297     AC_LANG_POP([C++])
13299     AC_MSG_CHECKING([for Qt6 libraries])
13300     qt6_libdir="no"
13301     for lib_dir in $qt6_libdirs; do
13302         if test -r "$lib_dir/$qt6_test_library"; then
13303             qt6_libdir="$lib_dir"
13304             break
13305         fi
13306     done
13307     AC_MSG_RESULT([$qt6_libdir])
13308     if test "x$qt6_libdir" = "xno"; then
13309         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13310     fi
13312     if test "$_os" = "Emscripten"; then
13313         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13314             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13315         fi
13316         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13317             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13318         fi
13319     fi
13321     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13322     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13323     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13324     if test "$_os" = "Emscripten"; then
13325         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13326     fi
13328     if test "$USING_X11" = TRUE; then
13329         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13330         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13331         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13332         QT6_USING_X11=1
13333         AC_DEFINE(QT6_USING_X11)
13334     fi
13336     dnl Check for Meta Object Compiler
13338     for lib_dir in $qt6_libdirs; do
13339         if test -z "$qt6_libexec_dirs"; then
13340             qt6_libexec_dirs="$lib_dir/libexec"
13341         else
13342             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13343         fi
13344     done
13345     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])
13346     if test "$MOC6" = "no"; then
13347         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13348 the root of your Qt installation by exporting QT6DIR before running "configure".])
13349     else
13350         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13351         if test -z "$moc6_test_ver"; then
13352             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13353         fi
13354         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13355     fi
13357 AC_SUBST(QT6_CFLAGS)
13358 AC_SUBST(QT6_LIBS)
13359 AC_SUBST(MOC6)
13360 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13362 dnl ===================================================================
13363 dnl KF5 Integration
13364 dnl ===================================================================
13366 KF5_CFLAGS=""
13367 KF5_LIBS=""
13368 KF5_CONFIG="kf5-config"
13369 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13370         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13371 then
13372     if test "$OS" = "HAIKU"; then
13373         haiku_arch="`echo $RTL_ARCH | tr X x`"
13374         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13375         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13376     fi
13378     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13379     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13380     if test -n "$supports_multilib"; then
13381         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13382     fi
13384     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13385     kf5_test_library="libKF5KIOFileWidgets.so"
13386     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13388     dnl kf5 KDE4 support compatibility installed
13389     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13390     if test "$KF5_CONFIG" != "no"; then
13391         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13392         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13393     fi
13395     dnl Check for KF5 headers
13396     AC_MSG_CHECKING([for KF5 headers])
13397     kf5_incdir="no"
13398     for kf5_check in $kf5_incdirs; do
13399         if test -r "$kf5_check/$kf5_test_include"; then
13400             kf5_incdir="$kf5_check/KF5"
13401             break
13402         fi
13403     done
13404     AC_MSG_RESULT([$kf5_incdir])
13405     if test "x$kf5_incdir" = "xno"; then
13406         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13407     fi
13409     dnl Check for KF5 libraries
13410     AC_MSG_CHECKING([for KF5 libraries])
13411     kf5_libdir="no"
13412     for kf5_check in $kf5_libdirs; do
13413         if test -r "$kf5_check/$kf5_test_library"; then
13414             kf5_libdir="$kf5_check"
13415             break
13416         fi
13417     done
13419     AC_MSG_RESULT([$kf5_libdir])
13420     if test "x$kf5_libdir" = "xno"; then
13421         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13422     fi
13424     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"
13425     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13426     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13428     if test "$USING_X11" = TRUE; then
13429         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13430     fi
13432     AC_LANG_PUSH([C++])
13433     save_CXXFLAGS=$CXXFLAGS
13434     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13435     AC_MSG_CHECKING([whether KDE is >= 5.0])
13436        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13437 #include <kcoreaddons_version.h>
13439 int main(int argc, char **argv) {
13440        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13441        else return 1;
13443        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13444     CXXFLAGS=$save_CXXFLAGS
13445     AC_LANG_POP([C++])
13447 AC_SUBST(KF5_CFLAGS)
13448 AC_SUBST(KF5_LIBS)
13450 dnl ===================================================================
13451 dnl KF6 Integration
13452 dnl ===================================================================
13454 KF6_CFLAGS=""
13455 KF6_LIBS=""
13456 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13457 then
13458     if test "$OS" = "HAIKU"; then
13459         haiku_arch="`echo $RTL_ARCH | tr X x`"
13460         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13461         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13462     fi
13464     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13465     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13466     if test -n "$supports_multilib"; then
13467         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13468     fi
13470     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13471     kf6_test_library="libKF6KIOFileWidgets.so"
13472     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13474     dnl Check for KF6 headers
13475     AC_MSG_CHECKING([for KF6 headers])
13476     kf6_incdir="no"
13477     for kf6_check in $kf6_incdirs; do
13478         if test -r "$kf6_check/$kf6_test_include"; then
13479             kf6_incdir="$kf6_check/KF6"
13480             break
13481         fi
13482     done
13483     AC_MSG_RESULT([$kf6_incdir])
13484     if test "x$kf6_incdir" = "xno"; then
13485         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13486     fi
13488     dnl Check for KF6 libraries
13489     AC_MSG_CHECKING([for KF6 libraries])
13490     kf6_libdir="no"
13491     for kf6_check in $kf6_libdirs; do
13492         if test -r "$kf6_check/$kf6_test_library"; then
13493             kf6_libdir="$kf6_check"
13494             break
13495         fi
13496     done
13498     AC_MSG_RESULT([$kf6_libdir])
13499     if test "x$kf6_libdir" = "xno"; then
13500         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13501     fi
13503     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"
13504     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13505     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13507     AC_LANG_PUSH([C++])
13508     save_CXXFLAGS=$CXXFLAGS
13509     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13510     dnl KF6 development version as of 2023-06 uses version number 5.240
13511     AC_MSG_CHECKING([whether KDE is >= 5.240])
13512        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13513 #include <kcoreaddons_version.h>
13515 int main(int argc, char **argv) {
13516        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13517        else return 1;
13519        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13520     CXXFLAGS=$save_CXXFLAGS
13521     AC_LANG_POP([C++])
13523 AC_SUBST(KF6_CFLAGS)
13524 AC_SUBST(KF6_LIBS)
13526 dnl ===================================================================
13527 dnl Test whether to include Evolution 2 support
13528 dnl ===================================================================
13529 AC_MSG_CHECKING([whether to enable evolution 2 support])
13530 if test "$enable_evolution2" = yes; then
13531     AC_MSG_RESULT([yes])
13532     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13533     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13534     FilterLibs "${GOBJECT_LIBS}"
13535     GOBJECT_LIBS="${filteredlibs}"
13536     ENABLE_EVOAB2="TRUE"
13537 else
13538     AC_MSG_RESULT([no])
13540 AC_SUBST(ENABLE_EVOAB2)
13541 AC_SUBST(GOBJECT_CFLAGS)
13542 AC_SUBST(GOBJECT_LIBS)
13544 dnl ===================================================================
13545 dnl Test which themes to include
13546 dnl ===================================================================
13547 AC_MSG_CHECKING([which themes to include])
13548 # if none given use default subset of available themes
13549 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13550     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"
13553 WITH_THEMES=""
13554 if test "x$with_theme" != "xno"; then
13555     for theme in $with_theme; do
13556         case $theme in
13557         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" ;;
13558         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13559         esac
13560     done
13562 AC_MSG_RESULT([$WITH_THEMES])
13563 AC_SUBST([WITH_THEMES])
13565 ###############################################################################
13566 # Extensions checking
13567 ###############################################################################
13568 AC_MSG_CHECKING([for extensions integration])
13569 if test "x$enable_extension_integration" != "xno"; then
13570     WITH_EXTENSION_INTEGRATION=TRUE
13571     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13572     AC_MSG_RESULT([yes, use integration])
13573 else
13574     WITH_EXTENSION_INTEGRATION=
13575     AC_MSG_RESULT([no, do not integrate])
13577 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13579 dnl Should any extra extensions be included?
13580 dnl There are standalone tests for each of these below.
13581 WITH_EXTRA_EXTENSIONS=
13582 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13584 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13585 if test "x$with_java" != "xno"; then
13586     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13589 AC_MSG_CHECKING([whether to build opens___.ttf])
13590 if test "$enable_build_opensymbol" = "yes"; then
13591     AC_MSG_RESULT([yes])
13592     AC_PATH_PROG(FONTFORGE, fontforge)
13593     if test -z "$FONTFORGE"; then
13594         AC_MSG_ERROR([fontforge not installed])
13595     fi
13596 else
13597     AC_MSG_RESULT([no])
13598     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13600 AC_SUBST(FONTFORGE)
13602 dnl ===================================================================
13603 dnl Test whether to include fonts
13604 dnl ===================================================================
13605 AC_MSG_CHECKING([whether to include third-party fonts])
13606 if test "$with_fonts" != "no"; then
13607     AC_MSG_RESULT([yes])
13608     WITH_FONTS=TRUE
13609     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13610     AC_DEFINE(HAVE_MORE_FONTS)
13611 else
13612     AC_MSG_RESULT([no])
13613     WITH_FONTS=
13614     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13616 AC_SUBST(WITH_FONTS)
13619 dnl ===================================================================
13620 dnl Test whether to enable online update service
13621 dnl ===================================================================
13622 AC_MSG_CHECKING([whether to enable online update])
13623 ENABLE_ONLINE_UPDATE=
13624 if test "$enable_online_update" = ""; then
13625     AC_MSG_RESULT([no])
13626 else
13627     if test "$enable_online_update" = "mar"; then
13628         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13629     elif test "$enable_online_update" = "yes"; then
13630         if test "$enable_curl" != "yes"; then
13631             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13632         fi
13633         AC_MSG_RESULT([yes])
13634         ENABLE_ONLINE_UPDATE="TRUE"
13635     else
13636         AC_MSG_RESULT([no])
13637     fi
13639 AC_SUBST(ENABLE_ONLINE_UPDATE)
13642 dnl ===================================================================
13643 dnl Test whether to enable mar online update service
13644 dnl ===================================================================
13645 AC_MSG_CHECKING([whether to enable mar online update])
13646 ENABLE_ONLINE_UPDATE_MAR=
13647 if test "$enable_online_update_mar" = yes; then
13648     AC_MSG_RESULT([yes])
13649     BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13650     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13651     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13652 else
13653     AC_MSG_RESULT([no])
13655 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13657 AC_MSG_CHECKING([for mar online update baseurl])
13658 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13659 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13660     AC_MSG_RESULT([yes])
13661 else
13662     AC_MSG_RESULT([no])
13664 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13666 AC_MSG_CHECKING([for mar online update certificateder])
13667 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13668 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13669     AC_MSG_RESULT([yes])
13670 else
13671     AC_MSG_RESULT([no])
13673 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13675 AC_MSG_CHECKING([for mar online update certificatename])
13676 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13677 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13678     AC_MSG_RESULT([yes])
13679 else
13680     AC_MSG_RESULT([no])
13682 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13684 AC_MSG_CHECKING([for mar online update certificatepath])
13685 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13686 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13687     AC_MSG_RESULT([yes])
13688 else
13689     AC_MSG_RESULT([no])
13691 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13694 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13695 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13696     if test "x$with_privacy_policy_url" = "xundefined"; then
13697         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13698     fi
13700 AC_SUBST(PRIVACY_POLICY_URL)
13701 dnl ===================================================================
13702 dnl Test whether we need bzip2
13703 dnl ===================================================================
13704 SYSTEM_BZIP2=
13705 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13706     AC_MSG_CHECKING([whether to use system bzip2])
13707     if test "$with_system_bzip2" = yes; then
13708         SYSTEM_BZIP2=TRUE
13709         AC_MSG_RESULT([yes])
13710         PKG_CHECK_MODULES(BZIP2, bzip2)
13711         FilterLibs "${BZIP2_LIBS}"
13712         BZIP2_LIBS="${filteredlibs}"
13713     else
13714         AC_MSG_RESULT([no])
13715         BUILD_TYPE="$BUILD_TYPE BZIP2"
13716     fi
13718 AC_SUBST(SYSTEM_BZIP2)
13719 AC_SUBST(BZIP2_CFLAGS)
13720 AC_SUBST(BZIP2_LIBS)
13722 dnl ===================================================================
13723 dnl Test whether to enable extension update
13724 dnl ===================================================================
13725 AC_MSG_CHECKING([whether to enable extension update])
13726 ENABLE_EXTENSION_UPDATE=
13727 if test "x$enable_extension_update" = "xno"; then
13728     AC_MSG_RESULT([no])
13729 else
13730     AC_MSG_RESULT([yes])
13731     ENABLE_EXTENSION_UPDATE="TRUE"
13732     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13733     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13735 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13738 dnl ===================================================================
13739 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13740 dnl ===================================================================
13741 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13742 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13743     AC_MSG_RESULT([no])
13744     ENABLE_SILENT_MSI=
13745 else
13746     AC_MSG_RESULT([yes])
13747     ENABLE_SILENT_MSI=TRUE
13748     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13750 AC_SUBST(ENABLE_SILENT_MSI)
13752 dnl ===================================================================
13753 dnl Check for WiX tools.
13754 dnl ===================================================================
13755 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13756     AC_MSG_RESULT([no])
13757     ENABLE_WIX=
13758 else
13759     AC_MSG_RESULT([yes])
13760     # FIXME: this should do proper detection, but the path is currently
13761     # hardcoded in msicreator/createmsi.py
13762     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13763       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13764     fi
13765     ENABLE_WIX=TRUE
13767 AC_SUBST(ENABLE_WIX)
13769 AC_MSG_CHECKING([whether and how to use Xinerama])
13770 if test "$USING_X11" = TRUE; then
13771     if test "$x_libraries" = "default_x_libraries"; then
13772         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13773         if test "x$XINERAMALIB" = x; then
13774            XINERAMALIB="/usr/lib"
13775         fi
13776     else
13777         XINERAMALIB="$x_libraries"
13778     fi
13779     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13780         # we have both versions, let the user decide but use the dynamic one
13781         # per default
13782         USE_XINERAMA=TRUE
13783         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13784             XINERAMA_LINK=dynamic
13785         else
13786             XINERAMA_LINK=static
13787         fi
13788     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13789         # we have only the dynamic version
13790         USE_XINERAMA=TRUE
13791         XINERAMA_LINK=dynamic
13792     elif test -e "$XINERAMALIB/libXinerama.a"; then
13793         # static version
13794         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13795             USE_XINERAMA=TRUE
13796             XINERAMA_LINK=static
13797         else
13798             USE_XINERAMA=
13799             XINERAMA_LINK=none
13800         fi
13801     else
13802         # no Xinerama
13803         USE_XINERAMA=
13804         XINERAMA_LINK=none
13805     fi
13806     if test "$USE_XINERAMA" = "TRUE"; then
13807         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13808         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13809             [AC_MSG_ERROR(Xinerama header not found.)], [])
13810         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13811         if test "x$XEXTLIB" = x; then
13812            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13813         fi
13814         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13815         if test "$_os" = "FreeBSD"; then
13816             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13817         fi
13818         if test "$_os" = "Linux"; then
13819             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13820         fi
13821         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13822             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13823     else
13824         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13825     fi
13826 else
13827     USE_XINERAMA=
13828     XINERAMA_LINK=none
13829     AC_MSG_RESULT([no])
13831 AC_SUBST(XINERAMA_LINK)
13833 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13834 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13835     enable_cairo_rgba=yes
13837 if test "$enable_cairo_rgba" = yes; then
13838     AC_DEFINE(ENABLE_CAIRO_RGBA)
13839     ENABLE_CAIRO_RGBA=TRUE
13840     AC_MSG_RESULT([yes])
13841 else
13842     ENABLE_CAIRO_RGBA=
13843     AC_MSG_RESULT([no])
13845 AC_SUBST(ENABLE_CAIRO_RGBA)
13847 dnl ===================================================================
13848 dnl Test whether to build cairo or rely on the system version
13849 dnl ===================================================================
13851 if test "$test_cairo" = "yes"; then
13852     AC_MSG_CHECKING([whether to use the system cairo])
13854     : ${with_system_cairo:=$with_system_libs}
13855     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13856         SYSTEM_CAIRO=TRUE
13857         AC_MSG_RESULT([yes])
13859         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13860         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13861         FilterLibs "${CAIRO_LIBS}"
13862         CAIRO_LIBS="${filteredlibs}"
13864         if test "$test_xrender" = "yes"; then
13865             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13866             AC_LANG_PUSH([C])
13867             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13868 #ifdef PictStandardA8
13869 #else
13870       return fail;
13871 #endif
13872 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13874             AC_LANG_POP([C])
13875         fi
13876     else
13877         AC_MSG_RESULT([no])
13878         BUILD_TYPE="$BUILD_TYPE CAIRO"
13879     fi
13881     if test "$enable_cairo_canvas" != no; then
13882         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13883         ENABLE_CAIRO_CANVAS=TRUE
13884     fi
13887 AC_SUBST(CAIRO_CFLAGS)
13888 AC_SUBST(CAIRO_LIBS)
13889 AC_SUBST(ENABLE_CAIRO_CANVAS)
13890 AC_SUBST(SYSTEM_CAIRO)
13892 dnl ===================================================================
13893 dnl Test whether to use avahi
13894 dnl ===================================================================
13895 if test "$_os" = "WINNT"; then
13896     # Windows uses bundled mDNSResponder
13897     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13898 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13899     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13900                       [ENABLE_AVAHI="TRUE"])
13901     AC_DEFINE(HAVE_FEATURE_AVAHI)
13902     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13903     FilterLibs "${AVAHI_LIBS}"
13904     AVAHI_LIBS="${filteredlibs}"
13907 AC_SUBST(ENABLE_AVAHI)
13908 AC_SUBST(AVAHI_CFLAGS)
13909 AC_SUBST(AVAHI_LIBS)
13911 dnl ===================================================================
13912 dnl Test whether to use liblangtag
13913 dnl ===================================================================
13914 SYSTEM_LIBLANGTAG=
13915 AC_MSG_CHECKING([whether to use system liblangtag])
13916 if test "$with_system_liblangtag" = yes; then
13917     SYSTEM_LIBLANGTAG=TRUE
13918     AC_MSG_RESULT([yes])
13919     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13920     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13921     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13922     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13923     FilterLibs "${LIBLANGTAG_LIBS}"
13924     LIBLANGTAG_LIBS="${filteredlibs}"
13925 else
13926     SYSTEM_LIBLANGTAG=
13927     AC_MSG_RESULT([no])
13928     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13929     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13930     if test "$COM" = "MSC"; then
13931         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13932     else
13933         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13934     fi
13936 AC_SUBST(SYSTEM_LIBLANGTAG)
13937 AC_SUBST(LIBLANGTAG_CFLAGS)
13938 AC_SUBST(LIBLANGTAG_LIBS)
13940 dnl ===================================================================
13941 dnl Test whether to build libpng or rely on the system version
13942 dnl ===================================================================
13944 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13945 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13946 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13948 dnl ===================================================================
13949 dnl Test whether to build libtiff or rely on the system version
13950 dnl ===================================================================
13952 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13954 dnl ===================================================================
13955 dnl Test whether to build libwebp or rely on the system version
13956 dnl ===================================================================
13958 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13960 dnl ===================================================================
13961 dnl Check for runtime JVM search path
13962 dnl ===================================================================
13963 if test "$ENABLE_JAVA" != ""; then
13964     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13965     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13966         AC_MSG_RESULT([yes])
13967         if ! test -d "$with_jvm_path"; then
13968             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13969         fi
13970         if ! test -d "$with_jvm_path"jvm; then
13971             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13972         fi
13973         JVM_ONE_PATH_CHECK="$with_jvm_path"
13974         AC_SUBST(JVM_ONE_PATH_CHECK)
13975     else
13976         AC_MSG_RESULT([no])
13977     fi
13980 dnl ===================================================================
13981 dnl Test for the presence of Ant and that it works
13982 dnl ===================================================================
13984 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13985 # breaks filename decoding, so for the ant section, set it to LANG
13986 LC_ALL=$LANG
13987 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13988     ANT_HOME=; export ANT_HOME
13989     WITH_ANT_HOME=; export WITH_ANT_HOME
13990     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13991         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13992             if test "$_os" = "WINNT"; then
13993                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13994             else
13995                 with_ant_home="$LODE_HOME/opt/ant"
13996             fi
13997         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13998             with_ant_home="$LODE_HOME/opt/ant"
13999         fi
14000     fi
14001     if test -z "$with_ant_home"; then
14002         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14003     else
14004         if test "$_os" = "WINNT"; then
14005             # AC_PATH_PROGS needs unix path
14006             with_ant_home=`cygpath -u "$with_ant_home"`
14007         fi
14008         AbsolutePath "$with_ant_home"
14009         with_ant_home=$absolute_path
14010         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14011         WITH_ANT_HOME=$with_ant_home
14012         ANT_HOME=$with_ant_home
14013     fi
14015     if test -z "$ANT"; then
14016         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14017     else
14018         # resolve relative or absolute symlink
14019         while test -h "$ANT"; do
14020             a_cwd=`pwd`
14021             a_basename=`basename "$ANT"`
14022             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14023             cd "`dirname "$ANT"`"
14024             cd "`dirname "$a_script"`"
14025             ANT="`pwd`"/"`basename "$a_script"`"
14026             cd "$a_cwd"
14027         done
14029         AC_MSG_CHECKING([if $ANT works])
14030         mkdir -p conftest.dir
14031         a_cwd=$(pwd)
14032         cd conftest.dir
14033         cat > conftest.java << EOF
14034         public class conftest {
14035             int testmethod(int a, int b) {
14036                     return a + b;
14037             }
14038         }
14041         cat > conftest.xml << EOF
14042         <project name="conftest" default="conftest">
14043         <target name="conftest">
14044             <javac srcdir="." includes="conftest.java">
14045             </javac>
14046         </target>
14047         </project>
14050         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14051         if test $? = 0 -a -f ./conftest.class; then
14052             AC_MSG_RESULT([Ant works])
14053             if test -z "$WITH_ANT_HOME"; then
14054                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14055                 if test -z "$ANT_HOME"; then
14056                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14057                 fi
14058             else
14059                 ANT_HOME="$WITH_ANT_HOME"
14060             fi
14061         else
14062             echo "configure: Ant test failed" >&5
14063             cat conftest.java >&5
14064             cat conftest.xml >&5
14065             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14066         fi
14067         cd "$a_cwd"
14068         rm -fr conftest.dir
14069     fi
14070     if test -z "$ANT_HOME"; then
14071         ANT_HOME="NO_ANT_HOME"
14072     else
14073         PathFormat "$ANT_HOME"
14074         ANT_HOME="$formatted_path"
14075         PathFormat "$ANT"
14076         ANT="$formatted_path"
14077     fi
14079     dnl Checking for ant.jar
14080     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14081         AC_MSG_CHECKING([Ant lib directory])
14082         if test -f $ANT_HOME/lib/ant.jar; then
14083             ANT_LIB="$ANT_HOME/lib"
14084         else
14085             if test -f $ANT_HOME/ant.jar; then
14086                 ANT_LIB="$ANT_HOME"
14087             else
14088                 if test -f /usr/share/java/ant.jar; then
14089                     ANT_LIB=/usr/share/java
14090                 else
14091                     if test -f /usr/share/ant-core/lib/ant.jar; then
14092                         ANT_LIB=/usr/share/ant-core/lib
14093                     else
14094                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14095                             ANT_LIB="$ANT_HOME/lib/ant"
14096                         else
14097                             if test -f /usr/share/lib/ant/ant.jar; then
14098                                 ANT_LIB=/usr/share/lib/ant
14099                             else
14100                                 AC_MSG_ERROR([Ant libraries not found!])
14101                             fi
14102                         fi
14103                     fi
14104                 fi
14105             fi
14106         fi
14107         PathFormat "$ANT_LIB"
14108         ANT_LIB="$formatted_path"
14109         AC_MSG_RESULT([Ant lib directory found.])
14110     fi
14112     ant_minver=1.6.0
14113     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14115     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14116     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14117     ant_version_major=`echo $ant_version | cut -d. -f1`
14118     ant_version_minor=`echo $ant_version | cut -d. -f2`
14119     echo "configure: ant_version $ant_version " >&5
14120     echo "configure: ant_version_major $ant_version_major " >&5
14121     echo "configure: ant_version_minor $ant_version_minor " >&5
14122     if test "$ant_version_major" -ge "2"; then
14123         AC_MSG_RESULT([yes, $ant_version])
14124     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14125         AC_MSG_RESULT([yes, $ant_version])
14126     else
14127         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14128     fi
14130     rm -f conftest* core core.* *.core
14132 AC_SUBST(ANT)
14133 AC_SUBST(ANT_HOME)
14134 AC_SUBST(ANT_LIB)
14136 OOO_JUNIT_JAR=
14137 HAMCREST_JAR=
14138 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14139     AC_MSG_CHECKING([for JUnit 4])
14140     if test "$with_junit" = "yes"; then
14141         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14142             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14143         elif test -e /usr/share/java/junit4.jar; then
14144             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14145         else
14146            if test -e /usr/share/lib/java/junit.jar; then
14147               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14148            else
14149               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14150            fi
14151         fi
14152     else
14153         OOO_JUNIT_JAR=$with_junit
14154     fi
14155     if test "$_os" = "WINNT"; then
14156         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14157     fi
14158     printf 'import org.junit.Before;' > conftest.java
14159     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14160         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14161     else
14162         AC_MSG_ERROR(
14163 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14164  specify its pathname via --with-junit=..., or disable it via --without-junit])
14165     fi
14166     rm -f conftest.class conftest.java
14167     if test $OOO_JUNIT_JAR != ""; then
14168         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14169     fi
14171     AC_MSG_CHECKING([for included Hamcrest])
14172     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14173     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14174         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14175     else
14176         AC_MSG_RESULT([Not included])
14177         AC_MSG_CHECKING([for standalone hamcrest jar.])
14178         if test "$with_hamcrest" = "yes"; then
14179             if test -e /usr/share/lib/java/hamcrest.jar; then
14180                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14181             elif test -e /usr/share/java/hamcrest/core.jar; then
14182                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14183             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14184                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14185             else
14186                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14187             fi
14188         else
14189             HAMCREST_JAR=$with_hamcrest
14190         fi
14191         if test "$_os" = "WINNT"; then
14192             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14193         fi
14194         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14195             AC_MSG_RESULT([$HAMCREST_JAR])
14196         else
14197             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),
14198                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14199         fi
14200     fi
14201     rm -f conftest.class conftest.java
14203 AC_SUBST(OOO_JUNIT_JAR)
14204 AC_SUBST(HAMCREST_JAR)
14205 # set back LC_ALL to C after the java related tests...
14206 LC_ALL=C
14208 AC_SUBST(SCPDEFS)
14211 # check for wget and curl
14213 WGET=
14214 CURL=
14216 if test "$enable_fetch_external" != "no"; then
14218 CURL=`command -v curl`
14220 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14221     # wget new enough?
14222     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14223     if test $? -eq 0; then
14224         WGET=$i
14225         break
14226     fi
14227 done
14229 if test -z "$WGET" -a -z "$CURL"; then
14230     AC_MSG_ERROR([neither wget nor curl found!])
14235 AC_SUBST(WGET)
14236 AC_SUBST(CURL)
14239 # check for sha256sum
14241 SHA256SUM=
14243 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14244     eval "$i -a 256 --version" > /dev/null 2>&1
14245     ret=$?
14246     if test $ret -eq 0; then
14247         SHA256SUM="$i -a 256"
14248         break
14249     fi
14250 done
14252 if test -z "$SHA256SUM"; then
14253     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14254         eval "$i --version" > /dev/null 2>&1
14255         ret=$?
14256         if test $ret -eq 0; then
14257             SHA256SUM=$i
14258             break
14259         fi
14260     done
14263 if test -z "$SHA256SUM"; then
14264     AC_MSG_ERROR([no sha256sum found!])
14267 AC_SUBST(SHA256SUM)
14269 dnl ===================================================================
14270 dnl Dealing with l10n options
14271 dnl ===================================================================
14272 AC_MSG_CHECKING([which languages to be built])
14273 # get list of all languages
14274 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14275 # the sed command does the following:
14276 #   + if a line ends with a backslash, append the next line to it
14277 #   + adds " on the beginning of the value (after =)
14278 #   + adds " at the end of the value
14279 #   + removes en-US; we want to put it on the beginning
14280 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14281 [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)]
14282 ALL_LANGS="en-US $completelangiso"
14283 # check the configured localizations
14284 WITH_LANG="$with_lang"
14286 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14287 # (Norwegian is "nb" and "nn".)
14288 if test "$WITH_LANG" = "no"; then
14289     WITH_LANG=
14292 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14293     AC_MSG_RESULT([en-US])
14294 else
14295     AC_MSG_RESULT([$WITH_LANG])
14296     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14297     if test -z "$MSGFMT"; then
14298         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14299             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14300         elif test -x "/opt/lo/bin/msgfmt"; then
14301             MSGFMT="/opt/lo/bin/msgfmt"
14302         else
14303             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14304             if test -z "$MSGFMT"; then
14305                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14306             fi
14307         fi
14308     fi
14309     if test -z "$MSGUNIQ"; then
14310         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14311             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14312         elif test -x "/opt/lo/bin/msguniq"; then
14313             MSGUNIQ="/opt/lo/bin/msguniq"
14314         else
14315             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14316             if test -z "$MSGUNIQ"; then
14317                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14318             fi
14319         fi
14320     fi
14322 AC_SUBST(MSGFMT)
14323 AC_SUBST(MSGUNIQ)
14324 # check that the list is valid
14325 for lang in $WITH_LANG; do
14326     test "$lang" = "ALL" && continue
14327     # need to check for the exact string, so add space before and after the list of all languages
14328     for vl in $ALL_LANGS; do
14329         if test "$vl" = "$lang"; then
14330            break
14331         fi
14332     done
14333     if test "$vl" != "$lang"; then
14334         # if you're reading this - you prolly quoted your languages remove the quotes ...
14335         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14336     fi
14337 done
14338 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14339     echo $WITH_LANG | grep -q en-US
14340     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14342 # list with substituted ALL
14343 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14344 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14345 test "$WITH_LANG" = "en-US" && WITH_LANG=
14346 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14347     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14348     ALL_LANGS=`echo $ALL_LANGS qtz`
14350 AC_SUBST(ALL_LANGS)
14351 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14352 AC_SUBST(WITH_LANG)
14353 AC_SUBST(WITH_LANG_LIST)
14354 AC_SUBST(GIT_NEEDED_SUBMODULES)
14356 WITH_POOR_HELP_LOCALIZATIONS=
14357 if test -d "$SRC_ROOT/translations/source"; then
14358     for l in `ls -1 $SRC_ROOT/translations/source`; do
14359         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14360             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14361         fi
14362     done
14364 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14366 if test -n "$with_locales" -a "$with_locales" != ALL; then
14367     WITH_LOCALES="$with_locales"
14369     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14370     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14371     # config_host/config_locales.h.in
14372     for locale in $WITH_LOCALES; do
14373         lang=${locale%_*}
14375         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14377         case $lang in
14378         hi|mr*ne)
14379             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14380             ;;
14381         bg|ru)
14382             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14383             ;;
14384         esac
14385     done
14386 else
14387     AC_DEFINE(WITH_LOCALE_ALL)
14389 AC_SUBST(WITH_LOCALES)
14391 dnl git submodule update --reference
14392 dnl ===================================================================
14393 if test -n "${GIT_REFERENCE_SRC}"; then
14394     for repo in ${GIT_NEEDED_SUBMODULES}; do
14395         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14396             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14397         fi
14398     done
14400 AC_SUBST(GIT_REFERENCE_SRC)
14402 dnl git submodules linked dirs
14403 dnl ===================================================================
14404 if test -n "${GIT_LINK_SRC}"; then
14405     for repo in ${GIT_NEEDED_SUBMODULES}; do
14406         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14407             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14408         fi
14409     done
14411 AC_SUBST(GIT_LINK_SRC)
14413 dnl branding
14414 dnl ===================================================================
14415 AC_MSG_CHECKING([for alternative branding images directory])
14416 # initialize mapped arrays
14417 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14418 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14420 if test -z "$with_branding" -o "$with_branding" = "no"; then
14421     AC_MSG_RESULT([none])
14422     DEFAULT_BRAND_IMAGES="$brand_files"
14423 else
14424     if ! test -d $with_branding ; then
14425         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14426     else
14427         AC_MSG_RESULT([$with_branding])
14428         CUSTOM_BRAND_DIR="$with_branding"
14429         for lfile in $brand_files
14430         do
14431             if ! test -f $with_branding/$lfile ; then
14432                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14433                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14434             else
14435                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14436             fi
14437         done
14438         check_for_progress="yes"
14439     fi
14441 AC_SUBST([BRAND_INTRO_IMAGES])
14442 AC_SUBST([CUSTOM_BRAND_DIR])
14443 AC_SUBST([CUSTOM_BRAND_IMAGES])
14444 AC_SUBST([DEFAULT_BRAND_IMAGES])
14447 AC_MSG_CHECKING([for 'intro' progress settings])
14448 PROGRESSBARCOLOR=
14449 PROGRESSSIZE=
14450 PROGRESSPOSITION=
14451 PROGRESSFRAMECOLOR=
14452 PROGRESSTEXTCOLOR=
14453 PROGRESSTEXTBASELINE=
14455 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14456     source "$with_branding/progress.conf"
14457     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14458 else
14459     AC_MSG_RESULT([none])
14462 AC_SUBST(PROGRESSBARCOLOR)
14463 AC_SUBST(PROGRESSSIZE)
14464 AC_SUBST(PROGRESSPOSITION)
14465 AC_SUBST(PROGRESSFRAMECOLOR)
14466 AC_SUBST(PROGRESSTEXTCOLOR)
14467 AC_SUBST(PROGRESSTEXTBASELINE)
14470 dnl ===================================================================
14471 dnl Custom build version
14472 dnl ===================================================================
14473 AC_MSG_CHECKING([for extra build ID])
14474 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14475     EXTRA_BUILDID="$with_extra_buildid"
14477 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14478 if test -n "$EXTRA_BUILDID" ; then
14479     AC_MSG_RESULT([$EXTRA_BUILDID])
14480 else
14481     AC_MSG_RESULT([not set])
14483 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14485 OOO_VENDOR=
14486 AC_MSG_CHECKING([for vendor])
14487 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14488     OOO_VENDOR="$USERNAME"
14490     if test -z "$OOO_VENDOR"; then
14491         OOO_VENDOR="$USER"
14492     fi
14494     if test -z "$OOO_VENDOR"; then
14495         OOO_VENDOR="`id -u -n`"
14496     fi
14498     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14499 else
14500     OOO_VENDOR="$with_vendor"
14501     AC_MSG_RESULT([$OOO_VENDOR])
14503 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14504 AC_SUBST(OOO_VENDOR)
14506 if test "$_os" = "Android" ; then
14507     ANDROID_PACKAGE_NAME=
14508     AC_MSG_CHECKING([for Android package name])
14509     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14510         if test -n "$ENABLE_DEBUG"; then
14511             # Default to the package name that makes ndk-gdb happy.
14512             ANDROID_PACKAGE_NAME="org.libreoffice"
14513         else
14514             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14515         fi
14517         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14518     else
14519         ANDROID_PACKAGE_NAME="$with_android_package_name"
14520         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14521     fi
14522     AC_SUBST(ANDROID_PACKAGE_NAME)
14525 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14526 if test "$with_compat_oowrappers" = "yes"; then
14527     WITH_COMPAT_OOWRAPPERS=TRUE
14528     AC_MSG_RESULT(yes)
14529 else
14530     WITH_COMPAT_OOWRAPPERS=
14531     AC_MSG_RESULT(no)
14533 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14535 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14536 AC_MSG_CHECKING([for install dirname])
14537 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14538     INSTALLDIRNAME="$with_install_dirname"
14540 AC_MSG_RESULT([$INSTALLDIRNAME])
14541 AC_SUBST(INSTALLDIRNAME)
14543 AC_MSG_CHECKING([for prefix])
14544 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14545 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14546 PREFIXDIR="$prefix"
14547 AC_MSG_RESULT([$PREFIXDIR])
14548 AC_SUBST(PREFIXDIR)
14550 LIBDIR=[$(eval echo $(eval echo $libdir))]
14551 AC_SUBST(LIBDIR)
14553 DATADIR=[$(eval echo $(eval echo $datadir))]
14554 AC_SUBST(DATADIR)
14556 MANDIR=[$(eval echo $(eval echo $mandir))]
14557 AC_SUBST(MANDIR)
14559 DOCDIR=[$(eval echo $(eval echo $docdir))]
14560 AC_SUBST(DOCDIR)
14562 BINDIR=[$(eval echo $(eval echo $bindir))]
14563 AC_SUBST(BINDIR)
14565 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14566 AC_SUBST(INSTALLDIR)
14568 TESTINSTALLDIR="${BUILDDIR}/test-install"
14569 AC_SUBST(TESTINSTALLDIR)
14572 # ===================================================================
14573 # OAuth2 id and secrets
14574 # ===================================================================
14576 AC_MSG_CHECKING([for Google Drive client id and secret])
14577 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14578     AC_MSG_RESULT([not set])
14579     GDRIVE_CLIENT_ID="\"\""
14580     GDRIVE_CLIENT_SECRET="\"\""
14581 else
14582     AC_MSG_RESULT([set])
14583     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14584     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14586 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14587 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14589 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14590 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14591     AC_MSG_RESULT([not set])
14592     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14593     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14594 else
14595     AC_MSG_RESULT([set])
14596     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14597     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14599 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14600 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14602 AC_MSG_CHECKING([for OneDrive client id and secret])
14603 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14604     AC_MSG_RESULT([not set])
14605     ONEDRIVE_CLIENT_ID="\"\""
14606     ONEDRIVE_CLIENT_SECRET="\"\""
14607 else
14608     AC_MSG_RESULT([set])
14609     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14610     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14612 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14613 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14616 dnl ===================================================================
14617 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14618 dnl --enable-dependency-tracking configure option
14619 dnl ===================================================================
14620 AC_MSG_CHECKING([whether to enable dependency tracking])
14621 if test "$enable_dependency_tracking" = "no"; then
14622     nodep=TRUE
14623     AC_MSG_RESULT([no])
14624 else
14625     AC_MSG_RESULT([yes])
14627 AC_SUBST(nodep)
14629 dnl ===================================================================
14630 dnl Number of CPUs to use during the build
14631 dnl ===================================================================
14632 AC_MSG_CHECKING([for number of processors to use])
14633 # plain --with-parallelism is just the default
14634 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14635     if test "$with_parallelism" = "no"; then
14636         PARALLELISM=0
14637     else
14638         PARALLELISM=$with_parallelism
14639     fi
14640 else
14641     if test "$enable_icecream" = "yes"; then
14642         PARALLELISM="40"
14643     else
14644         case `uname -s` in
14646         Darwin|FreeBSD|NetBSD|OpenBSD)
14647             PARALLELISM=`sysctl -n hw.ncpu`
14648             ;;
14650         Linux)
14651             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14652         ;;
14653         # what else than above does profit here *and* has /proc?
14654         *)
14655             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14656             ;;
14657         esac
14659         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14660         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14661     fi
14664 if test $PARALLELISM -eq 0; then
14665     AC_MSG_RESULT([explicit make -j option needed])
14666 else
14667     AC_MSG_RESULT([$PARALLELISM])
14669 AC_SUBST(PARALLELISM)
14672 # Set up ILIB for MSVC build
14674 ILIB1=
14675 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14676     ILIB="."
14677     if test -n "$JAVA_HOME"; then
14678         ILIB="$ILIB;$JAVA_HOME/lib"
14679     fi
14680     ILIB1=-link
14681     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14682     ILIB="$ILIB;$formatted_path"
14683     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14684     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14685     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14686     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14687         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14688         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14689     fi
14690     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14691     ucrtlibpath_formatted=$formatted_path
14692     ILIB="$ILIB;$ucrtlibpath_formatted"
14693     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14694     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14695         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14696         ILIB="$ILIB;$formatted_path"
14697     else
14698         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14699         ILIB="$ILIB;$formatted_path"
14700     fi
14702     if test "$cross_compiling" != "yes"; then
14703         ILIB_FOR_BUILD="$ILIB"
14704     fi
14706 AC_SUBST(ILIB)
14707 AC_SUBST(ILIB_FOR_BUILD)
14709 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14710 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14711 dnl from consteval constructor initializing const variable",
14712 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14713 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14714 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14715 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14716 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14717 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14718 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14719 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14720 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14721 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14722 AC_LANG_PUSH([C++])
14723 save_CXX=$CXX
14724 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14725     CXX="env LIB=$ILIB $CXX"
14727 save_CXXFLAGS=$CXXFLAGS
14728 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14729 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14730         struct S {
14731             consteval S() { i = 1; }
14732             int i = 0;
14733         };
14734         S const s;
14736         struct S1 {
14737              int a;
14738              consteval S1(int n): a(n) {}
14739         };
14740         struct S2 {
14741             S1 x;
14742             S2(): x(0) {}
14743         };
14745         struct S3 {
14746             consteval S3() {}
14747             union {
14748                 int a;
14749                 unsigned b = 0;
14750             };
14751         };
14752         void f() { S3(); }
14754         struct S4 { consteval S4() = default; };
14755         void f4(bool b) { b ? S4() : S4(); }
14757         struct S5 {
14758             consteval S5() { c = 0; }
14759             char * f() { return &c; }
14760             union {
14761                 char c;
14762                 int i;
14763             };
14764         };
14765         auto s5 = S5().f();
14766     ], [
14767         return (s.i == 1) ? 0 : 1;
14768     ])], [
14769         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14770         AC_MSG_RESULT([yes])
14771     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14772 CXX=$save_CXX
14773 CXXFLAGS=$save_CXXFLAGS
14774 AC_LANG_POP([C++])
14776 # ===================================================================
14777 # Creating bigger shared library to link against
14778 # ===================================================================
14779 AC_MSG_CHECKING([whether to create huge library])
14780 MERGELIBS=
14782 if test $_os = iOS -o $_os = Android; then
14783     # Never any point in mergelibs for these as we build just static
14784     # libraries anyway...
14785     enable_mergelibs=no
14788 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14789     if test $_os != Linux -a $_os != WINNT; then
14790         add_warning "--enable-mergelibs is not tested for this platform"
14791     fi
14792     MERGELIBS="TRUE"
14793     AC_MSG_RESULT([yes])
14794     AC_DEFINE(ENABLE_MERGELIBS)
14795 else
14796     AC_MSG_RESULT([no])
14798 AC_SUBST([MERGELIBS])
14800 dnl ===================================================================
14801 dnl icerun is a wrapper that stops us spawning tens of processes
14802 dnl locally - for tools that can't be executed on the compile cluster
14803 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14804 dnl ===================================================================
14805 AC_MSG_CHECKING([whether to use icerun wrapper])
14806 ICECREAM_RUN=
14807 if test "$enable_icecream" = "yes" && command -v icerun >/dev/null ; then
14808     ICECREAM_RUN=icerun
14809     AC_MSG_RESULT([yes])
14810 else
14811     AC_MSG_RESULT([no])
14813 AC_SUBST(ICECREAM_RUN)
14815 dnl ===================================================================
14816 dnl Setup the ICECC_VERSION for the build the same way it was set for
14817 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14818 dnl ===================================================================
14819 x_ICECC_VERSION=[\#]
14820 if test -n "$ICECC_VERSION" ; then
14821     x_ICECC_VERSION=
14823 AC_SUBST(x_ICECC_VERSION)
14824 AC_SUBST(ICECC_VERSION)
14826 dnl ===================================================================
14828 AC_MSG_CHECKING([MPL subset])
14829 MPL_SUBSET=
14830 LICENSE="LGPL"
14832 if test "$enable_mpl_subset" = "yes"; then
14833     mpl_error_string=
14834     newline=$'\n    *'
14835     warn_report=false
14836     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14837         warn_report=true
14838     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14839         warn_report=true
14840     fi
14841     if test "$warn_report" = "true"; then
14842         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14843     fi
14844     if test "x$enable_postgresql_sdbc" != "xno"; then
14845         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14846     fi
14847     if test "$enable_lotuswordpro" = "yes"; then
14848         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14849     fi
14850     if test -n "$ENABLE_POPPLER"; then
14851         if test "x$SYSTEM_POPPLER" = "x"; then
14852             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14853         fi
14854     fi
14855     # cf. m4/libo_check_extension.m4
14856     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14857         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14858     fi
14859     denied_themes=
14860     filtered_themes=
14861     for theme in $WITH_THEMES; do
14862         case $theme in
14863         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14864             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14865         *)
14866             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14867         esac
14868     done
14869     if test "x$denied_themes" != "x"; then
14870         if test "x$filtered_themes" == "x"; then
14871             filtered_themes="colibre"
14872         fi
14873         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14874     fi
14876     ENABLE_OPENGL_TRANSITIONS=
14878     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14879         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14880     fi
14882     if test "x$mpl_error_string" != "x"; then
14883         AC_MSG_ERROR([$mpl_error_string])
14884     fi
14886     MPL_SUBSET="TRUE"
14887     LICENSE="MPL-2.0"
14888     AC_DEFINE(MPL_HAVE_SUBSET)
14889     AC_MSG_RESULT([only])
14890 else
14891     AC_MSG_RESULT([no restrictions])
14893 AC_SUBST(MPL_SUBSET)
14894 AC_SUBST(LICENSE)
14896 dnl ===================================================================
14898 AC_MSG_CHECKING([formula logger])
14899 ENABLE_FORMULA_LOGGER=
14901 if test "x$enable_formula_logger" = "xyes"; then
14902     AC_MSG_RESULT([yes])
14903     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14904     ENABLE_FORMULA_LOGGER=TRUE
14905 elif test -n "$ENABLE_DBGUTIL" ; then
14906     AC_MSG_RESULT([yes])
14907     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14908     ENABLE_FORMULA_LOGGER=TRUE
14909 else
14910     AC_MSG_RESULT([no])
14913 AC_SUBST(ENABLE_FORMULA_LOGGER)
14915 dnl ===================================================================
14916 dnl Checking for active Antivirus software.
14917 dnl ===================================================================
14919 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14920     AC_MSG_CHECKING([for active Antivirus software])
14921     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14922     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14923     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14924         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14925             AC_MSG_RESULT([found])
14926             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14927             echo $EICAR_STRING > $SRC_ROOT/eicar
14928             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14929             rm $SRC_ROOT/eicar
14930             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14931                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14932             fi
14933             echo $EICAR_STRING > $BUILDDIR/eicar
14934             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14935             rm $BUILDDIR/eicar
14936             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14937                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14938             fi
14939             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"
14940         else
14941             AC_MSG_RESULT([not found])
14942         fi
14943     else
14944         AC_MSG_RESULT([n/a])
14945     fi
14948 dnl ===================================================================
14950 AC_MSG_CHECKING([for coredumpctl support])
14951 if test -z "$with_coredumpctl" && test $_os != Linux; then
14952     with_coredumpctl=no
14954 if test "$with_coredumpctl" = no; then
14955     WITH_COREDUMPCTL=
14956 else
14957     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14958     AC_PATH_PROG(JQ, jq)
14959     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14960     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14961     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14962         || test -z "$SYSTEMD_RUN"
14963     then
14964         if test -z "$with_coredumpctl"; then
14965             WITH_COREDUMPCTL=
14966         else
14967             if test -z "$COREDUMPCTL"; then
14968                 AC_MSG_ERROR([coredumpctl not found])
14969             fi
14970             if test -z "$JQ"; then
14971                 AC_MSG_ERROR([jq not found])
14972             fi
14973             if test -z "$SYSTEMD_ESCAPE"; then
14974                 AC_MSG_ERROR([systemd-escape not found])
14975             fi
14976             if test -z "$SYSTEMD_RUN"; then
14977                 AC_MSG_ERROR([systemd-run not found])
14978             fi
14979         fi
14980     else
14981         WITH_COREDUMPCTL=TRUE
14982     fi
14984 if test -z "$WITH_COREDUMPCTL"; then
14985     AC_MSG_RESULT([no])
14986 else
14987     AC_MSG_RESULT([yes])
14989 AC_SUBST(COREDUMPCTL)
14990 AC_SUBST(JQ)
14991 AC_SUBST(SYSTEMD_ESCAPE)
14992 AC_SUBST(SYSTEMD_RUN)
14993 AC_SUBST(WITH_COREDUMPCTL)
14995 dnl ===================================================================
14996 dnl Setting up the environment.
14997 dnl ===================================================================
14998 AC_MSG_NOTICE([setting up the build environment variables...])
15000 AC_SUBST(COMPATH)
15002 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15003     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15004         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15005         ATL_INCLUDE="$COMPATH/atlmfc/include"
15006     elif test -d "$COMPATH/atlmfc/lib"; then
15007         ATL_LIB="$COMPATH/atlmfc/lib"
15008         ATL_INCLUDE="$COMPATH/atlmfc/include"
15009     else
15010         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15011         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15012     fi
15013     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15014     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15015     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15018 if test "$build_os" = "cygwin"; then
15019     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15020     PathFormat "/usr/bin/find.exe"
15021     FIND="$formatted_path"
15022     PathFormat "/usr/bin/sort.exe"
15023     SORT="$formatted_path"
15024     PathFormat "/usr/bin/grep.exe"
15025     WIN_GREP="$formatted_path"
15026     PathFormat "/usr/bin/ls.exe"
15027     WIN_LS="$formatted_path"
15028     PathFormat "/usr/bin/touch.exe"
15029     WIN_TOUCH="$formatted_path"
15030 else
15031     FIND=find
15032     SORT=sort
15035 AC_SUBST(ATL_INCLUDE)
15036 AC_SUBST(ATL_LIB)
15037 AC_SUBST(FIND)
15038 AC_SUBST(SORT)
15039 AC_SUBST(WIN_GREP)
15040 AC_SUBST(WIN_LS)
15041 AC_SUBST(WIN_TOUCH)
15043 AC_SUBST(BUILD_TYPE)
15045 AC_SUBST(SOLARINC)
15047 PathFormat "$PERL"
15048 PERL="$formatted_path"
15049 AC_SUBST(PERL)
15051 if test -n "$TMPDIR"; then
15052     TEMP_DIRECTORY="$TMPDIR"
15053 else
15054     TEMP_DIRECTORY="/tmp"
15056 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15057 if test "$build_os" = "cygwin"; then
15058     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15059     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15061 AC_SUBST(TEMP_DIRECTORY)
15062 AC_SUBST(CYGWIN_BASH)
15064 # setup the PATH for the environment
15065 if test -n "$LO_PATH_FOR_BUILD"; then
15066     LO_PATH="$LO_PATH_FOR_BUILD"
15067     case "$host_os" in
15068     cygwin*|wsl*)
15069         pathmunge "$MSVC_HOST_PATH" "before"
15070         ;;
15071     esac
15072 else
15073     LO_PATH="$PATH"
15075     case "$host_os" in
15077     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15078         if test "$ENABLE_JAVA" != ""; then
15079             pathmunge "$JAVA_HOME/bin" "after"
15080         fi
15081         ;;
15083     cygwin*|wsl*)
15084         # Win32 make needs native paths
15085         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15086             LO_PATH=`cygpath -p -m "$PATH"`
15087         fi
15088         if test "$WIN_BUILD_ARCH" = "x64"; then
15089             # needed for msi packaging
15090             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15091         fi
15092         if test "$WIN_BUILD_ARCH" = "arm64"; then
15093             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15094             # the x86 ones probably would work just as well...
15095             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15096         fi
15097         # .NET 4.6 and higher don't have bin directory
15098         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15099             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15100         fi
15101         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15102         pathmunge "$CSC_PATH" "before"
15103         pathmunge "$MIDL_PATH" "before"
15104         pathmunge "$AL_PATH" "before"
15105         pathmunge "$MSVC_MULTI_PATH" "before"
15106         pathmunge "$MSVC_BUILD_PATH" "before"
15107         if test -n "$MSBUILD_PATH" ; then
15108             pathmunge "$MSBUILD_PATH" "before"
15109         fi
15110         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15111         if test "$ENABLE_JAVA" != ""; then
15112             if test -d "$JAVA_HOME/jre/bin/client"; then
15113                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15114             fi
15115             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15116                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15117             fi
15118             pathmunge "$JAVA_HOME/bin" "before"
15119         fi
15120         pathmunge "$MSVC_HOST_PATH" "before"
15121         ;;
15123     solaris*)
15124         pathmunge "/usr/css/bin" "before"
15125         if test "$ENABLE_JAVA" != ""; then
15126             pathmunge "$JAVA_HOME/bin" "after"
15127         fi
15128         ;;
15129     esac
15132 AC_SUBST(LO_PATH)
15134 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15135 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15136     x_LO_ELFCHECK_ALLOWLIST=
15137 else
15138     x_LO_ELFCHECK_ALLOWLIST=[\#]
15140 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15141 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15143 libo_FUZZ_SUMMARY
15145 # Generate a configuration sha256 we can use for deps
15146 if test -f config_host.mk; then
15147     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15149 if test -f config_host_lang.mk; then
15150     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15153 CFLAGS=$my_original_CFLAGS
15154 CXXFLAGS=$my_original_CXXFLAGS
15155 CPPFLAGS=$my_original_CPPFLAGS
15157 AC_CONFIG_LINKS([include:include])
15159 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15160 # BUILD platform configuration] - otherwise breaks cross building
15161 AC_CONFIG_FILES([config_host.mk
15162                  config_host_lang.mk
15163                  Makefile
15164                  bin/bffvalidator.sh
15165                  bin/odfvalidator.sh
15166                  bin/officeotron.sh
15167                  instsetoo_native/util/openoffice.lst
15168                  sysui/desktop/macosx/Info.plist
15169                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15170                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15171                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15173 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15174 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15175 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15176 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15177 AC_CONFIG_HEADERS([config_host/config_clang.h])
15178 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15179 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15180 AC_CONFIG_HEADERS([config_host/config_eot.h])
15181 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15182 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15183 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15184 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15185 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15186 AC_CONFIG_HEADERS([config_host/config_features.h])
15187 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15188 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15189 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15190 AC_CONFIG_HEADERS([config_host/config_folders.h])
15191 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15192 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15193 AC_CONFIG_HEADERS([config_host/config_gio.h])
15194 AC_CONFIG_HEADERS([config_host/config_global.h])
15195 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15196 AC_CONFIG_HEADERS([config_host/config_java.h])
15197 AC_CONFIG_HEADERS([config_host/config_langs.h])
15198 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15199 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15200 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15201 AC_CONFIG_HEADERS([config_host/config_locales.h])
15202 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15203 AC_CONFIG_HEADERS([config_host/config_oox.h])
15204 AC_CONFIG_HEADERS([config_host/config_options.h])
15205 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15206 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15207 AC_CONFIG_HEADERS([config_host/config_skia.h])
15208 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15209 AC_CONFIG_HEADERS([config_host/config_validation.h])
15210 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15211 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15212 AC_CONFIG_HEADERS([config_host/config_version.h])
15213 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15214 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15215 AC_CONFIG_HEADERS([config_host/config_python.h])
15216 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15217 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15218 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15219 AC_OUTPUT
15221 if test "$CROSS_COMPILING" = TRUE; then
15222     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15225 # touch the config timestamp file
15226 if test ! -f config_host.mk.stamp; then
15227     echo > config_host.mk.stamp
15228 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15229     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15230 else
15231     echo > config_host.mk.stamp
15234 # touch the config lang timestamp file
15235 if test ! -f config_host_lang.mk.stamp; then
15236     echo > config_host_lang.mk.stamp
15237 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15238     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15239 else
15240     echo > config_host_lang.mk.stamp
15244 if test \( "$STALE_MAKE" = "TRUE" \) \
15245         -a "$build_os" = "cygwin"; then
15247 cat << _EOS
15248 ****************************************************************************
15249 WARNING:
15250 Your make version is known to be horribly slow, and hard to debug
15251 problems with. To get a reasonably functional make please do:
15253 to install a pre-compiled binary make for Win32
15255  mkdir -p /opt/lo/bin
15256  cd /opt/lo/bin
15257  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15258  cp make-4.2.1-msvc.exe make
15259  chmod +x make
15261 to install from source:
15262 place yourself in a working directory of you choice.
15264  git clone git://git.savannah.gnu.org/make.git
15266  [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"]
15267  set PATH=%PATH%;C:\Cygwin\bin
15268  [or Cygwin64, if that is what you have]
15269  cd path-to-make-repo-you-cloned-above
15270  build_w32.bat --without-guile
15272 should result in a WinRel/gnumake.exe.
15273 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15275 Then re-run autogen.sh
15277 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15278 Alternatively, you can install the 'new' make where ever you want and make sure that `command -v make` finds it.
15280 _EOS
15284 cat << _EOF
15285 ****************************************************************************
15287 To show information on various make targets and make flags, run:
15288 $GNUMAKE help
15290 To just build, run:
15291 $GNUMAKE
15293 _EOF
15295 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15296     cat << _EOF
15297 After the build has finished successfully, you can immediately run what you built using the command:
15298 _EOF
15300     if test $_os = Darwin; then
15301         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15302     else
15303         echo instdir/program/soffice
15304     fi
15305     cat << _EOF
15307 If you want to run the unit tests, run:
15308 $GNUMAKE check
15310 _EOF
15313 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15314     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15315     cat "$WARNINGS_FILE_FOR_BUILD"
15316     echo
15319 if test -s "$WARNINGS_FILE"; then
15320     echo "HOST config ($WARNINGS_FILE)"
15321     cat "$WARNINGS_FILE"
15324 # Remove unneeded emconfigure artifacts
15325 rm -f a.out a.wasm a.out.js a.out.wasm
15327 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: