tdf#43848 fix selection in table with split/merged cells
[LibreOffice.git] / configure.ac
blob721851c52d87b5ffdc72bcb15e28b54620ceb45e
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     if test -z "$EMSCRIPTEN_VERSION_H"; then
1386         AS_IF([test -z "$EMSDK"],
1387               [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1388         EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1389     fi
1390     if test -f "$EMSCRIPTEN_VERSION_H"; then
1391         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1392         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1393         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1394     else
1395         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1396         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1397         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1398         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1399     fi
1401     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1403     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1404     if test $? -eq 0; then
1405         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1406     else
1407         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1408     fi
1410     EMSCRIPTEN_ERROR=0
1411     if ! command -v emconfigure >/dev/null 2>&1; then
1412         AC_MSG_WARN([emconfigure must be in your \$PATH])
1413         EMSCRIPTEN_ERROR=1
1414     fi
1415     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1416         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1417         EMSCRIPTEN_ERROR=1
1418     fi
1419     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1420     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1421         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1422         EMSCRIPTEN_ERROR=1
1423     fi
1424     if test $EMSCRIPTEN_ERROR -ne 0; then
1425         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1426     fi
1428     dnl Some build-side things are conditional on "EMSCRIPTEN in BUILD_TYPE_FOR_HOST":
1429     BUILD_TYPE="$BUILD_TYPE EMSCRIPTEN"
1431 AC_SUBST(EMSDK_FILE_PACKAGER)
1433 ###############################################################################
1434 # Extensions switches --enable/--disable
1435 ###############################################################################
1436 # By default these should be enabled unless having extra dependencies.
1437 # If there is extra dependency over configure options then the enable should
1438 # be automagic based on whether the requiring feature is enabled or not.
1439 # All this options change anything only with --enable-extension-integration.
1441 # The name of this option and its help string makes it sound as if
1442 # extensions are built anyway, just not integrated in the installer,
1443 # if you use --disable-extension-integration. Is that really the
1444 # case?
1446 AC_ARG_ENABLE(ios-simulator,
1447     AS_HELP_STRING([--enable-ios-simulator],
1448         [build for iOS simulator])
1451 libo_FUZZ_ARG_ENABLE(extension-integration,
1452     AS_HELP_STRING([--disable-extension-integration],
1453         [Disable integration of the built extensions in the installer of the
1454          product. Use this switch to disable the integration.])
1457 AC_ARG_ENABLE(avmedia,
1458     AS_HELP_STRING([--disable-avmedia],
1459         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1460 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1462 AC_ARG_ENABLE(database-connectivity,
1463     AS_HELP_STRING([--disable-database-connectivity],
1464         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1467 # This doesn't mean not building (or "integrating") extensions
1468 # (although it probably should; i.e. it should imply
1469 # --disable-extension-integration I guess), it means not supporting
1470 # any extension mechanism at all
1471 libo_FUZZ_ARG_ENABLE(extensions,
1472     AS_HELP_STRING([--disable-extensions],
1473         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1476 AC_ARG_ENABLE(scripting,
1477     AS_HELP_STRING([--disable-scripting],
1478         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1479 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1481 # This is mainly for Android and iOS, but could potentially be used in some
1482 # special case otherwise, too, so factored out as a separate setting
1484 AC_ARG_ENABLE(dynamic-loading,
1485     AS_HELP_STRING([--disable-dynamic-loading],
1486         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1489 libo_FUZZ_ARG_ENABLE(report-builder,
1490     AS_HELP_STRING([--disable-report-builder],
1491         [Disable the Report Builder.])
1494 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1495     AS_HELP_STRING([--enable-ext-wiki-publisher],
1496         [Enable the Wiki Publisher extension.])
1499 libo_FUZZ_ARG_ENABLE(lpsolve,
1500     AS_HELP_STRING([--disable-lpsolve],
1501         [Disable compilation of the lp solve solver ])
1503 libo_FUZZ_ARG_ENABLE(coinmp,
1504     AS_HELP_STRING([--disable-coinmp],
1505         [Disable compilation of the CoinMP solver ])
1508 libo_FUZZ_ARG_ENABLE(pdfimport,
1509     AS_HELP_STRING([--disable-pdfimport],
1510         [Disable building the PDF import feature.])
1513 libo_FUZZ_ARG_ENABLE(pdfium,
1514     AS_HELP_STRING([--disable-pdfium],
1515         [Disable building PDFium. Results in unsecure PDF signature verification.])
1518 libo_FUZZ_ARG_ENABLE(skia,
1519     AS_HELP_STRING([--disable-skia],
1520         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1523 ###############################################################################
1525 dnl ---------- *** ----------
1527 libo_FUZZ_ARG_ENABLE(mergelibs,
1528     AS_HELP_STRING([--enable-mergelibs],
1529         [Merge several of the smaller libraries into one big, "merged", one.])
1532 libo_FUZZ_ARG_ENABLE(breakpad,
1533     AS_HELP_STRING([--enable-breakpad],
1534         [Enables breakpad for crash reporting.])
1537 libo_FUZZ_ARG_ENABLE(crashdump,
1538     AS_HELP_STRING([--disable-crashdump],
1539         [Disable dump.ini and dump-file, when --enable-breakpad])
1542 AC_ARG_ENABLE(fetch-external,
1543     AS_HELP_STRING([--disable-fetch-external],
1544         [Disables fetching external tarballs from web sources.])
1547 AC_ARG_ENABLE(fuzzers,
1548     AS_HELP_STRING([--enable-fuzzers],
1549         [Enables building libfuzzer targets for fuzz testing.])
1552 libo_FUZZ_ARG_ENABLE(pch,
1553     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1554         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1555          Using 'system' will include only external headers, 'base' will add also headers
1556          from base modules, 'normal' will also add all headers except from the module built,
1557          'full' will use all suitable headers even from a module itself.])
1560 libo_FUZZ_ARG_ENABLE(epm,
1561     AS_HELP_STRING([--enable-epm],
1562         [LibreOffice includes self-packaging code, that requires epm, however epm is
1563          useless for large scale package building.])
1566 libo_FUZZ_ARG_ENABLE(odk,
1567     AS_HELP_STRING([--enable-odk],
1568         [Enable building the Office Development Kit, the part that extensions need to build against])
1571 AC_ARG_ENABLE(mpl-subset,
1572     AS_HELP_STRING([--enable-mpl-subset],
1573         [Don't compile any pieces which are not MPL or more liberally licensed])
1576 libo_FUZZ_ARG_ENABLE(evolution2,
1577     AS_HELP_STRING([--enable-evolution2],
1578         [Allows the built-in evolution 2 addressbook connectivity build to be
1579          enabled.])
1582 AC_ARG_ENABLE(avahi,
1583     AS_HELP_STRING([--enable-avahi],
1584         [Determines whether to use Avahi to advertise Impress to remote controls.])
1587 libo_FUZZ_ARG_ENABLE(werror,
1588     AS_HELP_STRING([--enable-werror],
1589         [Turn warnings to errors. (Has no effect in modules where the treating
1590          of warnings as errors is disabled explicitly.)]),
1593 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1594     AS_HELP_STRING([--enable-assert-always-abort],
1595         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1598 libo_FUZZ_ARG_ENABLE(dbgutil,
1599     AS_HELP_STRING([--enable-dbgutil],
1600         [Provide debugging support from --enable-debug and include additional debugging
1601          utilities such as object counting or more expensive checks.
1602          This is the recommended option for developers.
1603          Note that this makes the build ABI incompatible, it is not possible to mix object
1604          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1606 libo_FUZZ_ARG_ENABLE(debug,
1607     AS_HELP_STRING([--enable-debug],
1608         [Include debugging information, disable compiler optimization and inlining plus
1609          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1611 libo_FUZZ_ARG_ENABLE(split-debug,
1612     AS_HELP_STRING([--disable-split-debug],
1613         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1614          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1616 libo_FUZZ_ARG_ENABLE(gdb-index,
1617     AS_HELP_STRING([--disable-gdb-index],
1618         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1619          The feature requires a linker that supports the --gdb-index option.]))
1621 libo_FUZZ_ARG_ENABLE(sal-log,
1622     AS_HELP_STRING([--enable-sal-log],
1623         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1625 libo_FUZZ_ARG_ENABLE(symbols,
1626     AS_HELP_STRING([--enable-symbols],
1627         [Generate debug information.
1628          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1629          otherwise. It is possible to explicitly specify gbuild build targets
1630          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1631          everything in the directory; there is no ordering, more specific overrides
1632          more general, and disabling takes precedence).
1633          Example: --enable-symbols="all -sw/ -Library_sc".]))
1635 libo_FUZZ_ARG_ENABLE(optimized,
1636     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1637         [Whether to compile with optimization flags.
1638          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1639          otherwise. Using 'debug' will try to use only optimizations that should
1640          not interfere with debugging. For Emscripten we default to optimized (-O1)
1641          debug build, as otherwise binaries become too large.]))
1643 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1644     AS_HELP_STRING([--disable-runtime-optimizations],
1645         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1646          JVM JIT) that are known to interact badly with certain dynamic analysis
1647          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1648          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1649          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1651 AC_ARG_WITH(valgrind,
1652     AS_HELP_STRING([--with-valgrind],
1653         [Make availability of Valgrind headers a hard requirement.]))
1655 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1656     AS_HELP_STRING([--enable-compiler-plugins],
1657         [Enable compiler plugins that will perform additional checks during
1658          building. Enabled automatically by --enable-dbgutil.
1659          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1660 COMPILER_PLUGINS_DEBUG=
1661 if test "$enable_compiler_plugins" = debug; then
1662     enable_compiler_plugins=yes
1663     COMPILER_PLUGINS_DEBUG=TRUE
1666 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1667     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1668         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1669          relevant in the --disable-compiler-plugins case.]))
1671 libo_FUZZ_ARG_ENABLE(ooenv,
1672     AS_HELP_STRING([--enable-ooenv],
1673         [Enable ooenv for the instdir installation.]))
1675 AC_ARG_ENABLE(lto,
1676     AS_HELP_STRING([--enable-lto],
1677         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1678          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1679          linker.)]))
1681 AC_ARG_ENABLE(python,
1682     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1683         [Enables or disables Python support at run-time.
1684          Also specifies what Python to use at build-time.
1685          'fully-internal' even forces the internal version for uses of Python
1686          during the build.
1687          On macOS the only choices are
1688          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1689          ]))
1691 libo_FUZZ_ARG_ENABLE(gtk3,
1692     AS_HELP_STRING([--disable-gtk3],
1693         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1694 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1696 AC_ARG_ENABLE(gtk4,
1697     AS_HELP_STRING([--enable-gtk4],
1698         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1700 AC_ARG_ENABLE(atspi-tests,
1701     AS_HELP_STRING([--disable-atspi-tests],
1702         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1704 AC_ARG_ENABLE(introspection,
1705     AS_HELP_STRING([--enable-introspection],
1706         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1707          Linux distributions.)]))
1709 AC_ARG_ENABLE(split-app-modules,
1710     AS_HELP_STRING([--enable-split-app-modules],
1711         [Split file lists for app modules, e.g. base, calc.
1712          Has effect only with make distro-pack-install]),
1715 AC_ARG_ENABLE(split-opt-features,
1716     AS_HELP_STRING([--enable-split-opt-features],
1717         [Split file lists for some optional features, e.g. pyuno, testtool.
1718          Has effect only with make distro-pack-install]),
1721 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1722     AS_HELP_STRING([--disable-cairo-canvas],
1723         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1726 libo_FUZZ_ARG_ENABLE(dbus,
1727     AS_HELP_STRING([--disable-dbus],
1728         [Determines whether to enable features that depend on dbus.
1729          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1730 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1732 libo_FUZZ_ARG_ENABLE(sdremote,
1733     AS_HELP_STRING([--disable-sdremote],
1734         [Determines whether to enable Impress remote control (i.e. the server component).]),
1735 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1737 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1738     AS_HELP_STRING([--disable-sdremote-bluetooth],
1739         [Determines whether to build sdremote with bluetooth support.
1740          Requires dbus on Linux.]))
1742 libo_FUZZ_ARG_ENABLE(gio,
1743     AS_HELP_STRING([--disable-gio],
1744         [Determines whether to use the GIO support.]),
1745 ,test "${enable_gio+set}" = set || enable_gio=yes)
1747 AC_ARG_ENABLE(qt5,
1748     AS_HELP_STRING([--enable-qt5],
1749         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1750          available.]),
1753 AC_ARG_ENABLE(qt6,
1754     AS_HELP_STRING([--enable-qt6],
1755         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1756          available.]),
1759 AC_ARG_ENABLE(kf5,
1760     AS_HELP_STRING([--enable-kf5],
1761         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1762          KF5 are available.]),
1765 AC_ARG_ENABLE(kf6,
1766     AS_HELP_STRING([--enable-kf6],
1767         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1768          KF6 are available.]),
1772 AC_ARG_ENABLE(gtk3_kde5,
1773     AS_HELP_STRING([--enable-gtk3-kde5],
1774         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1775          platforms where Gtk3, Qt5 and Plasma is available.]),
1778 AC_ARG_ENABLE(gen,
1779     AS_HELP_STRING([--enable-gen],
1780         [To select the gen backend in case of --disable-dynamic-loading.
1781          Per default auto-enabled when X11 is used.]),
1782 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1784 AC_ARG_ENABLE(gui,
1785     AS_HELP_STRING([--disable-gui],
1786         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1787 ,enable_gui=yes)
1789 libo_FUZZ_ARG_ENABLE(randr,
1790     AS_HELP_STRING([--disable-randr],
1791         [Disable RandR support in the vcl project.]),
1792 ,test "${enable_randr+set}" = set || enable_randr=yes)
1794 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1795     AS_HELP_STRING([--disable-gstreamer-1-0],
1796         [Disable building with the gstreamer 1.0 avmedia backend.]),
1797 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1799 libo_FUZZ_ARG_ENABLE([eot],
1800     [AS_HELP_STRING([--enable-eot],
1801         [Enable support for Embedded OpenType fonts.])],
1802 ,test "${enable_eot+set}" = set || enable_eot=no)
1804 libo_FUZZ_ARG_ENABLE(cve-tests,
1805     AS_HELP_STRING([--disable-cve-tests],
1806         [Prevent CVE tests to be executed]),
1809 AC_ARG_ENABLE(build-opensymbol,
1810     AS_HELP_STRING([--enable-build-opensymbol],
1811         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1812          fontforge installed.]),
1815 AC_ARG_ENABLE(dependency-tracking,
1816     AS_HELP_STRING([--enable-dependency-tracking],
1817         [Do not reject slow dependency extractors.])[
1818   --disable-dependency-tracking
1819                           Disables generation of dependency information.
1820                           Speed up one-time builds.],
1823 AC_ARG_ENABLE(icecream,
1824     AS_HELP_STRING([--enable-icecream],
1825         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1826          It defaults to /opt/icecream for the location of the icecream gcc/g++
1827          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1830 AC_ARG_ENABLE(ld,
1831     AS_HELP_STRING([--enable-ld=<linker>],
1832         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1833          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1834          If <linker> contains any ':', the part before the first ':' is used as the value of
1835          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1836          needed for Clang 12).]),
1839 libo_FUZZ_ARG_ENABLE(cups,
1840     AS_HELP_STRING([--disable-cups],
1841         [Do not build cups support.])
1844 AC_ARG_ENABLE(ccache,
1845     AS_HELP_STRING([--disable-ccache],
1846         [Do not try to use ccache automatically.
1847          By default we will try to detect if ccache is available; in that case if
1848          CC/CXX are not yet set, and --enable-icecream is not given, we
1849          attempt to use ccache. --disable-ccache disables ccache completely.
1850          Additionally ccache's depend mode is enabled if possible,
1851          use --enable-ccache=nodepend to enable ccache without depend mode.
1855 AC_ARG_ENABLE(z7-debug,
1856     AS_HELP_STRING([--enable-z7-debug],
1857         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1858          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1859          Enabled by default if ccache is detected.]))
1861 libo_FUZZ_ARG_ENABLE(online-update,
1862     AS_HELP_STRING([--enable-online-update],
1863         [Enable the online update service that will check for new versions of
1864          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1867 libo_FUZZ_ARG_ENABLE(online-update-mar,
1868     AS_HELP_STRING([--enable-online-update-mar],
1869         [Enable the experimental Mozilla-like online update service that will
1870          check for new versions of LibreOffice. Disabled by default.]),
1873 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1874     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1875         [Set the base URL value for --enable-online-update-mar.
1876          (Can be left off for debug purposes, even if that may render the feature
1877          non-functional.)]),
1880 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1881     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1882         [Set the certificate DER value for --enable-online-update-mar.
1883          (Can be left off for debug purposes, even if that may render the feature
1884          non-functional.)]),
1887 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1888     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1889         [Set the certificate name value for --enable-online-update-mar.
1890          (Can be left off for debug purposes, even if that may render the feature
1891          non-functional.)]),
1894 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1895     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1896         [Set the certificate path value for --enable-online-update-mar.
1897          (Can be left off for debug purposes, even if that may render the feature
1898          non-functional.)]),
1901 libo_FUZZ_ARG_ENABLE(extension-update,
1902     AS_HELP_STRING([--disable-extension-update],
1903         [Disable possibility to update installed extensions.]),
1906 libo_FUZZ_ARG_ENABLE(release-build,
1907     AS_HELP_STRING([--enable-release-build],
1908         [Enable release build. Note that the "release build" choice is orthogonal to
1909          whether symbols are present, debug info is generated, or optimization
1910          is done.
1911          See https://wiki.documentfoundation.org/Development/DevBuild]),
1914 AC_ARG_ENABLE(windows-build-signing,
1915     AS_HELP_STRING([--enable-windows-build-signing],
1916         [Enable signing of windows binaries (*.exe, *.dll)]),
1919 AC_ARG_ENABLE(silent-msi,
1920     AS_HELP_STRING([--enable-silent-msi],
1921         [Enable MSI with LIMITUI=1 (silent install).]),
1924 AC_ARG_ENABLE(wix,
1925     AS_HELP_STRING([--enable-wix],
1926         [Build Windows installer using WiX.]),
1929 AC_ARG_ENABLE(macosx-code-signing,
1930     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1931         [Sign executables, dylibs, frameworks and the app bundle. If you
1932          don't provide an identity the first suitable certificate
1933          in your keychain is used.]),
1936 AC_ARG_ENABLE(macosx-package-signing,
1937     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1938         [Create a .pkg suitable for uploading to the Mac App Store and sign
1939          it. If you don't provide an identity the first suitable certificate
1940          in your keychain is used.]),
1943 AC_ARG_ENABLE(macosx-sandbox,
1944     AS_HELP_STRING([--enable-macosx-sandbox],
1945         [Make the app bundle run in a sandbox. Requires code signing.
1946          Is required by apps distributed in the Mac App Store, and implies
1947          adherence to App Store rules.]),
1950 AC_ARG_WITH(macosx-bundle-identifier,
1951     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1952         [Define the macOS bundle identifier. Default is the somewhat weird
1953          org.libreoffice.script ("script", huh?).]),
1954 ,with_macosx_bundle_identifier=org.libreoffice.script)
1956 AC_ARG_WITH(macosx-provisioning-profile,
1957     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1958         [Specify the path to a provisioning profile to use]),
1961 AC_ARG_WITH(product-name,
1962     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1963         [Define the product name. Default is AC_PACKAGE_NAME.]),
1964 ,with_product_name=$PRODUCTNAME)
1966 libo_FUZZ_ARG_ENABLE(community-flavor,
1967     AS_HELP_STRING([--disable-community-flavor],
1968         [Disable the Community branding.]),
1971 AC_ARG_WITH(package-version,
1972     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1973         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1976 libo_FUZZ_ARG_ENABLE(readonly-installset,
1977     AS_HELP_STRING([--enable-readonly-installset],
1978         [Prevents any attempts by LibreOffice to write into its installation. That means
1979          at least that no "system-wide" extensions can be added. Partly experimental work in
1980          progress, probably not fully implemented. Always enabled for macOS.]),
1983 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1984     AS_HELP_STRING([--disable-mariadb-sdbc],
1985         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1988 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1989     AS_HELP_STRING([--disable-postgresql-sdbc],
1990         [Disable the build of the PostgreSQL-SDBC driver.])
1993 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1994     AS_HELP_STRING([--disable-lotuswordpro],
1995         [Disable the build of the Lotus Word Pro filter.]),
1996 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1998 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1999     AS_HELP_STRING([--disable-firebird-sdbc],
2000         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2001 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2003 AC_ARG_ENABLE(bogus-pkg-config,
2004     AS_HELP_STRING([--enable-bogus-pkg-config],
2005         [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.]),
2008 AC_ARG_ENABLE(openssl,
2009     AS_HELP_STRING([--disable-openssl],
2010         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2011          components will use NSS. Work in progress,
2012          use only if you are hacking on it.]),
2013 ,enable_openssl=yes)
2015 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2016     AS_HELP_STRING([--enable-cipher-openssl-backend],
2017         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2018          Requires --enable-openssl.]))
2020 AC_ARG_ENABLE(nss,
2021     AS_HELP_STRING([--disable-nss],
2022         [Disable using NSS. If disabled,
2023          components will use openssl. Work in progress,
2024          use only if you are hacking on it.]),
2025 ,enable_nss=yes)
2027 AC_ARG_ENABLE(library-bin-tar,
2028     AS_HELP_STRING([--enable-library-bin-tar],
2029         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2030         Some libraries can save their build result in a tarball
2031         stored in TARFILE_LOCATION. That binary tarball is
2032         uniquely identified by the source tarball,
2033         the content of the config_host.mk file and the content
2034         of the top-level directory in core for that library
2035         If this option is enabled, then if such a tarfile exist, it will be untarred
2036         instead of the source tarfile, and the build step will be skipped for that
2037         library.
2038         If a proper tarfile does not exist, then the normal source-based
2039         build is done for that library and a proper binary tarfile is created
2040         for the next time.]),
2043 AC_ARG_ENABLE(dconf,
2044     AS_HELP_STRING([--disable-dconf],
2045         [Disable the dconf configuration backend (enabled by default where
2046          available).]))
2048 libo_FUZZ_ARG_ENABLE(formula-logger,
2049     AS_HELP_STRING(
2050         [--enable-formula-logger],
2051         [Enable formula logger for logging formula calculation flow in Calc.]
2052     )
2055 AC_ARG_ENABLE(ldap,
2056     AS_HELP_STRING([--disable-ldap],
2057         [Disable LDAP support.]),
2058 ,enable_ldap=yes)
2060 AC_ARG_ENABLE(opencl,
2061     AS_HELP_STRING([--disable-opencl],
2062         [Disable OpenCL support.]),
2063 ,enable_opencl=yes)
2065 libo_FUZZ_ARG_ENABLE(librelogo,
2066     AS_HELP_STRING([--disable-librelogo],
2067         [Do not build LibreLogo.]),
2068 ,enable_librelogo=yes)
2070 AC_ARG_ENABLE(wasm-strip,
2071     AS_HELP_STRING([--enable-wasm-strip],
2072         [Strip the static build like for WASM/emscripten platform.]),
2075 AC_ARG_WITH(main-module,
2076     AS_HELP_STRING([--with-main-module=<writer/calc>],
2077         [Specify which main module to build for wasm.
2078         Default value is 'writer'.]),
2081 AC_ARG_ENABLE(wasm-exceptions,
2082     AS_HELP_STRING([--enable-wasm-exceptions],
2083         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2084         matter of fact, this is currently not finished by any implementation)
2085         (see https://webassembly.org/roadmap/ for the current state]),
2088 AC_ARG_ENABLE(xmlhelp,
2089     AS_HELP_STRING([--disable-xmlhelp],
2090         [Disable XML help support]),
2091 ,enable_xmlhelp=yes)
2093 AC_ARG_ENABLE(customtarget-components,
2094     AS_HELP_STRING([--enable-customtarget-components],
2095         [Generates the static UNO object constructor mapping from the build.]))
2097 dnl ===================================================================
2098 dnl Optional Packages (--with/without-)
2099 dnl ===================================================================
2101 AC_ARG_WITH(gcc-home,
2102     AS_HELP_STRING([--with-gcc-home],
2103         [Specify the location of gcc/g++ manually. This can be used in conjunction
2104          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2105          non-default path.]),
2108 AC_ARG_WITH(gnu-patch,
2109     AS_HELP_STRING([--with-gnu-patch],
2110         [Specify location of GNU patch on Solaris or FreeBSD.]),
2113 AC_ARG_WITH(build-platform-configure-options,
2114     AS_HELP_STRING([--with-build-platform-configure-options],
2115         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2118 AC_ARG_WITH(gnu-cp,
2119     AS_HELP_STRING([--with-gnu-cp],
2120         [Specify location of GNU cp on Solaris or FreeBSD.]),
2123 AC_ARG_WITH(external-tar,
2124     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2125         [Specify an absolute path of where to find (and store) tarfiles.]),
2126     TARFILE_LOCATION=$withval ,
2129 AC_ARG_WITH(referenced-git,
2130     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2131         [Specify another checkout directory to reference. This makes use of
2132                  git submodule update --reference, and saves a lot of diskspace
2133                  when having multiple trees side-by-side.]),
2134     GIT_REFERENCE_SRC=$withval ,
2137 AC_ARG_WITH(linked-git,
2138     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2139         [Specify a directory where the repositories of submodules are located.
2140          This uses a method similar to git-new-workdir to get submodules.]),
2141     GIT_LINK_SRC=$withval ,
2144 AC_ARG_WITH(galleries,
2145     AS_HELP_STRING([--with-galleries],
2146         [Specify how galleries should be built. It is possible either to
2147          build these internally from source ("build"),
2148          or to disable them ("no")]),
2151 AC_ARG_WITH(templates,
2152     AS_HELP_STRING([--with-templates],
2153         [Specify we build with or without template files. It is possible either to
2154          build with templates ("yes"),
2155          or to disable them ("no")]),
2158 AC_ARG_WITH(theme,
2159     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2160         [Choose which themes to include. By default those themes with an '*' are included.
2161          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2162          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2163          *elementary, *elementary_svg,
2164          *karasa_jaga, *karasa_jaga_svg,
2165          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2166          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2169 libo_FUZZ_ARG_WITH(helppack-integration,
2170     AS_HELP_STRING([--without-helppack-integration],
2171         [It will not integrate the helppacks to the installer
2172          of the product. Please use this switch to use the online help
2173          or separate help packages.]),
2176 libo_FUZZ_ARG_WITH(fonts,
2177     AS_HELP_STRING([--without-fonts],
2178         [LibreOffice includes some third-party fonts to provide a reliable basis for
2179          help content, templates, samples, etc. When these fonts are already
2180          known to be available on the system then you should use this option.]),
2183 AC_ARG_WITH(epm,
2184     AS_HELP_STRING([--with-epm],
2185         [Decides which epm to use. Default is to use the one from the system if
2186          one is built. When either this is not there or you say =internal epm
2187          will be built.]),
2190 AC_ARG_WITH(package-format,
2191     AS_HELP_STRING([--with-package-format],
2192         [Specify package format(s) for LibreOffice installation sets. The
2193          implicit --without-package-format leads to no installation sets being
2194          generated. Possible values: archive, bsd, deb, dmg,
2195          installed, msi, pkg, and rpm.
2196          Example: --with-package-format='deb rpm']),
2199 AC_ARG_WITH(tls,
2200     AS_HELP_STRING([--with-tls],
2201         [Decides which TLS/SSL and cryptographic implementations to use for
2202          LibreOffice's code. Default is to use NSS although OpenSSL is also
2203          possible. Notice that selecting NSS restricts the usage of OpenSSL
2204          in LO's code but selecting OpenSSL doesn't restrict by now the
2205          usage of NSS in LO's code. Possible values: openssl, nss.
2206          Example: --with-tls="nss"]),
2209 AC_ARG_WITH(system-libs,
2210     AS_HELP_STRING([--with-system-libs],
2211         [Use libraries already on system -- enables all --with-system-* flags.]),
2214 AC_ARG_WITH(system-bzip2,
2215     AS_HELP_STRING([--with-system-bzip2],
2216         [Use bzip2 already on system. Used when --enable-online-update-mar
2217         or --enable-python=internal]),,
2218     [with_system_bzip2="$with_system_libs"])
2220 AC_ARG_WITH(system-headers,
2221     AS_HELP_STRING([--with-system-headers],
2222         [Use headers already on system -- enables all --with-system-* flags for
2223          external packages whose headers are the only entities used i.e.
2224          boost/odbc/sane-header(s).]),,
2225     [with_system_headers="$with_system_libs"])
2227 AC_ARG_WITH(system-jars,
2228     AS_HELP_STRING([--without-system-jars],
2229         [When building with --with-system-libs, also the needed jars are expected
2230          on the system. Use this to disable that]),,
2231     [with_system_jars="$with_system_libs"])
2233 AC_ARG_WITH(system-cairo,
2234     AS_HELP_STRING([--with-system-cairo],
2235         [Use cairo libraries already on system.  Happens automatically for
2236          (implicit) --enable-gtk3.]))
2238 AC_ARG_WITH(system-epoxy,
2239     AS_HELP_STRING([--with-system-epoxy],
2240         [Use epoxy libraries already on system.  Happens automatically for
2241          (implicit) --enable-gtk3.]),,
2242        [with_system_epoxy="$with_system_libs"])
2244 AC_ARG_WITH(myspell-dicts,
2245     AS_HELP_STRING([--with-myspell-dicts],
2246         [Adds myspell dictionaries to the LibreOffice installation set]),
2249 AC_ARG_WITH(system-dicts,
2250     AS_HELP_STRING([--without-system-dicts],
2251         [Do not use dictionaries from system paths.]),
2254 AC_ARG_WITH(external-dict-dir,
2255     AS_HELP_STRING([--with-external-dict-dir],
2256         [Specify external dictionary dir.]),
2259 AC_ARG_WITH(external-hyph-dir,
2260     AS_HELP_STRING([--with-external-hyph-dir],
2261         [Specify external hyphenation pattern dir.]),
2264 AC_ARG_WITH(external-thes-dir,
2265     AS_HELP_STRING([--with-external-thes-dir],
2266         [Specify external thesaurus dir.]),
2269 AC_ARG_WITH(system-zlib,
2270     AS_HELP_STRING([--with-system-zlib],
2271         [Use zlib already on system.]),,
2272     [with_system_zlib=auto])
2274 AC_ARG_WITH(system-jpeg,
2275     AS_HELP_STRING([--with-system-jpeg],
2276         [Use jpeg already on system.]),,
2277     [with_system_jpeg="$with_system_libs"])
2279 AC_ARG_WITH(system-expat,
2280     AS_HELP_STRING([--with-system-expat],
2281         [Use expat already on system.]),,
2282     [with_system_expat="$with_system_libs"])
2284 AC_ARG_WITH(system-libxml,
2285     AS_HELP_STRING([--with-system-libxml],
2286         [Use libxml/libxslt already on system.]),,
2287     [with_system_libxml=auto])
2289 AC_ARG_WITH(system-openldap,
2290     AS_HELP_STRING([--with-system-openldap],
2291         [Use the OpenLDAP LDAP SDK already on system.]),,
2292     [with_system_openldap="$with_system_libs"])
2294 libo_FUZZ_ARG_ENABLE(poppler,
2295     AS_HELP_STRING([--disable-poppler],
2296         [Disable building Poppler.])
2299 AC_ARG_WITH(system-poppler,
2300     AS_HELP_STRING([--with-system-poppler],
2301         [Use system poppler (only needed for PDF import).]),,
2302     [with_system_poppler="$with_system_libs"])
2304 AC_ARG_WITH(system-abseil,
2305     AS_HELP_STRING([--with-system-abseil],
2306         [Use the abseil libraries already on system.]),,
2307     [with_system_abseil="$with_system_libs"])
2309 AC_ARG_WITH(system-openjpeg,
2310     AS_HELP_STRING([--with-system-openjpeg],
2311         [Use the OpenJPEG library already on system.]),,
2312     [with_system_openjpeg="$with_system_libs"])
2314 libo_FUZZ_ARG_ENABLE(gpgmepp,
2315     AS_HELP_STRING([--disable-gpgmepp],
2316         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2319 AC_ARG_WITH(system-gpgmepp,
2320     AS_HELP_STRING([--with-system-gpgmepp],
2321         [Use gpgmepp already on system]),,
2322     [with_system_gpgmepp="$with_system_libs"])
2324 AC_ARG_WITH(system-mariadb,
2325     AS_HELP_STRING([--with-system-mariadb],
2326         [Use MariaDB/MySQL libraries already on system.]),,
2327     [with_system_mariadb="$with_system_libs"])
2329 AC_ARG_ENABLE(bundle-mariadb,
2330     AS_HELP_STRING([--enable-bundle-mariadb],
2331         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2334 AC_ARG_WITH(system-postgresql,
2335     AS_HELP_STRING([--with-system-postgresql],
2336         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2337          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2338     [with_system_postgresql="$with_system_libs"])
2340 AC_ARG_WITH(libpq-path,
2341     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2342         [Use this PostgreSQL C interface (libpq) installation for building
2343          the PostgreSQL-SDBC extension.]),
2346 AC_ARG_WITH(system-firebird,
2347     AS_HELP_STRING([--with-system-firebird],
2348         [Use Firebird libraries already on system, for building the Firebird-SDBC
2349          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2350     [with_system_firebird="$with_system_libs"])
2352 AC_ARG_WITH(system-libtommath,
2353             AS_HELP_STRING([--with-system-libtommath],
2354                            [Use libtommath already on system]),,
2355             [with_system_libtommath="$with_system_libs"])
2357 AC_ARG_WITH(system-hsqldb,
2358     AS_HELP_STRING([--with-system-hsqldb],
2359         [Use hsqldb already on system.]))
2361 AC_ARG_WITH(hsqldb-jar,
2362     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2363         [Specify path to jarfile manually.]),
2364     HSQLDB_JAR=$withval)
2366 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2367     AS_HELP_STRING([--disable-scripting-beanshell],
2368         [Disable support for scripts in BeanShell.]),
2372 AC_ARG_WITH(system-beanshell,
2373     AS_HELP_STRING([--with-system-beanshell],
2374         [Use beanshell already on system.]),,
2375     [with_system_beanshell="$with_system_jars"])
2377 AC_ARG_WITH(beanshell-jar,
2378     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2379         [Specify path to jarfile manually.]),
2380     BSH_JAR=$withval)
2382 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2383     AS_HELP_STRING([--disable-scripting-javascript],
2384         [Disable support for scripts in JavaScript.]),
2388 AC_ARG_WITH(system-rhino,
2389     AS_HELP_STRING([--with-system-rhino],
2390         [Use rhino already on system.]),,)
2391 #    [with_system_rhino="$with_system_jars"])
2392 # Above is not used as we have different debug interface
2393 # patched into internal rhino. This code needs to be fixed
2394 # before we can enable it by default.
2396 AC_ARG_WITH(rhino-jar,
2397     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2398         [Specify path to jarfile manually.]),
2399     RHINO_JAR=$withval)
2401 AC_ARG_WITH(system-jfreereport,
2402     AS_HELP_STRING([--with-system-jfreereport],
2403         [Use JFreeReport already on system.]),,
2404     [with_system_jfreereport="$with_system_jars"])
2406 AC_ARG_WITH(sac-jar,
2407     AS_HELP_STRING([--with-sac-jar=JARFILE],
2408         [Specify path to jarfile manually.]),
2409     SAC_JAR=$withval)
2411 AC_ARG_WITH(libxml-jar,
2412     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2413         [Specify path to jarfile manually.]),
2414     LIBXML_JAR=$withval)
2416 AC_ARG_WITH(flute-jar,
2417     AS_HELP_STRING([--with-flute-jar=JARFILE],
2418         [Specify path to jarfile manually.]),
2419     FLUTE_JAR=$withval)
2421 AC_ARG_WITH(jfreereport-jar,
2422     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2423         [Specify path to jarfile manually.]),
2424     JFREEREPORT_JAR=$withval)
2426 AC_ARG_WITH(liblayout-jar,
2427     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2428         [Specify path to jarfile manually.]),
2429     LIBLAYOUT_JAR=$withval)
2431 AC_ARG_WITH(libloader-jar,
2432     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2433         [Specify path to jarfile manually.]),
2434     LIBLOADER_JAR=$withval)
2436 AC_ARG_WITH(libformula-jar,
2437     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2438         [Specify path to jarfile manually.]),
2439     LIBFORMULA_JAR=$withval)
2441 AC_ARG_WITH(librepository-jar,
2442     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2443         [Specify path to jarfile manually.]),
2444     LIBREPOSITORY_JAR=$withval)
2446 AC_ARG_WITH(libfonts-jar,
2447     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2448         [Specify path to jarfile manually.]),
2449     LIBFONTS_JAR=$withval)
2451 AC_ARG_WITH(libserializer-jar,
2452     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2453         [Specify path to jarfile manually.]),
2454     LIBSERIALIZER_JAR=$withval)
2456 AC_ARG_WITH(libbase-jar,
2457     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2458         [Specify path to jarfile manually.]),
2459     LIBBASE_JAR=$withval)
2461 AC_ARG_WITH(system-odbc,
2462     AS_HELP_STRING([--with-system-odbc],
2463         [Use the odbc headers already on system.]),,
2464     [with_system_odbc="auto"])
2466 AC_ARG_WITH(system-sane,
2467     AS_HELP_STRING([--with-system-sane],
2468         [Use sane.h already on system.]),,
2469     [with_system_sane="$with_system_headers"])
2471 AC_ARG_WITH(system-bluez,
2472     AS_HELP_STRING([--with-system-bluez],
2473         [Use bluetooth.h already on system.]),,
2474     [with_system_bluez="$with_system_headers"])
2476 AC_ARG_WITH(system-boost,
2477     AS_HELP_STRING([--with-system-boost],
2478         [Use boost already on system.]),,
2479     [with_system_boost="$with_system_headers"])
2481 AC_ARG_WITH(system-dragonbox,
2482     AS_HELP_STRING([--with-system-dragonbox],
2483         [Use dragonbox already on system.]),,
2484     [with_system_dragonbox="$with_system_headers"])
2486 AC_ARG_WITH(system-frozen,
2487     AS_HELP_STRING([--with-system-frozen],
2488         [Use frozen already on system.]),,
2489     [with_system_frozen="$with_system_headers"])
2491 AC_ARG_WITH(system-libfixmath,
2492     AS_HELP_STRING([--with-system-libfixmath],
2493         [Use libfixmath already on system.]),,
2494     [with_system_libfixmath="$with_system_libs"])
2496 AC_ARG_WITH(system-glm,
2497     AS_HELP_STRING([--with-system-glm],
2498         [Use glm already on system.]),,
2499     [with_system_glm="$with_system_headers"])
2501 AC_ARG_WITH(system-hunspell,
2502     AS_HELP_STRING([--with-system-hunspell],
2503         [Use libhunspell already on system.]),,
2504     [with_system_hunspell="$with_system_libs"])
2506 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2507     AS_HELP_STRING([--enable-cairo-rgba],
2508         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2510 libo_FUZZ_ARG_ENABLE(zxing,
2511     AS_HELP_STRING([--disable-zxing],
2512        [Disable use of zxing external library.]))
2514 AC_ARG_WITH(system-zxing,
2515     AS_HELP_STRING([--with-system-zxing],
2516         [Use libzxing already on system.]),,
2517     [with_system_zxing="$with_system_libs"])
2519 AC_ARG_WITH(system-zxcvbn,
2520     AS_HELP_STRING([--with-system-zxcvbn],
2521         [Use libzxcvbn already on system.]),,
2522     [with_system_zxcvbn="$with_system_libs"])
2524 AC_ARG_WITH(system-box2d,
2525     AS_HELP_STRING([--with-system-box2d],
2526         [Use box2d already on system.]),,
2527     [with_system_box2d="$with_system_libs"])
2529 AC_ARG_WITH(system-mythes,
2530     AS_HELP_STRING([--with-system-mythes],
2531         [Use mythes already on system.]),,
2532     [with_system_mythes="$with_system_libs"])
2534 AC_ARG_WITH(system-altlinuxhyph,
2535     AS_HELP_STRING([--with-system-altlinuxhyph],
2536         [Use ALTLinuxhyph already on system.]),,
2537     [with_system_altlinuxhyph="$with_system_libs"])
2539 AC_ARG_WITH(system-lpsolve,
2540     AS_HELP_STRING([--with-system-lpsolve],
2541         [Use lpsolve already on system.]),,
2542     [with_system_lpsolve="$with_system_libs"])
2544 AC_ARG_WITH(system-coinmp,
2545     AS_HELP_STRING([--with-system-coinmp],
2546         [Use CoinMP already on system.]),,
2547     [with_system_coinmp="$with_system_libs"])
2549 AC_ARG_WITH(system-liblangtag,
2550     AS_HELP_STRING([--with-system-liblangtag],
2551         [Use liblangtag library already on system.]),,
2552     [with_system_liblangtag="$with_system_libs"])
2554 AC_ARG_WITH(system-lockfile,
2555     AS_HELP_STRING([--with-system-lockfile[=file]],
2556         [Detect a system lockfile program or use the \$file argument.]))
2558 AC_ARG_WITH(webdav,
2559     AS_HELP_STRING([--without-webdav],
2560         [Disable WebDAV support in the UCB.]))
2562 AC_ARG_WITH(linker-hash-style,
2563     AS_HELP_STRING([--with-linker-hash-style],
2564         [Use linker with --hash-style=<style> when linking shared objects.
2565          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2566          if supported on the build system, and "sysv" otherwise.]))
2568 AC_ARG_WITH(jdk-home,
2569     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2570         [If you have installed JDK 17 or later on your system please supply the
2571          path here. Note that this is not the location of the java command but the
2572          location of the entire distribution. In case of cross-compiling, this
2573          is the JDK of the host os. Use --with-build-platform-configure-options
2574          to point to a different build platform JDK.]),
2577 AC_ARG_WITH(help,
2578     AS_HELP_STRING([--with-help],
2579         [Enable the build of help. There is a special parameter "common" that
2580          can be used to bundle only the common part, .e.g help-specific icons.
2581          This is useful when you build the helpcontent separately.])
2582     [
2583                           Usage:     --with-help    build the old local help
2584                                  --without-help     no local help (default)
2585                                  --with-help=html   build the new HTML local help
2586                                  --with-help=online build the new HTML online help
2587     ],
2590 AC_ARG_WITH(omindex,
2591    AS_HELP_STRING([--with-omindex],
2592         [Enable the support of xapian-omega index for online help.])
2593    [
2594                          Usage: --with-omindex=server prepare the pages for omindex
2595                                 but let xapian-omega be built in server.
2596                                 --with-omindex=noxap do not prepare online pages
2597                                 for xapian-omega
2598   ],
2601 libo_FUZZ_ARG_WITH(java,
2602     AS_HELP_STRING([--with-java=<java command>],
2603         [Specify the name of the Java interpreter command. Typically "java"
2604          which is the default.
2606          To build without support for Java components, applets, accessibility
2607          or the XML filters written in Java, use --without-java or --with-java=no.]),
2608     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2609     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2612 AC_ARG_WITH(jvm-path,
2613     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2614         [Use a specific JVM search path at runtime.
2615          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2618 AC_ARG_WITH(ant-home,
2619     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2620         [If you have installed Apache Ant on your system, please supply the path here.
2621          Note that this is not the location of the Ant binary but the location
2622          of the entire distribution.]),
2625 AC_ARG_WITH(symbol-config,
2626     AS_HELP_STRING([--with-symbol-config],
2627         [Configuration for the crashreport symbol upload]),
2628         [],
2629         [with_symbol_config=no])
2631 AC_ARG_WITH(export-validation,
2632     AS_HELP_STRING([--without-export-validation],
2633         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2634 ,with_export_validation=auto)
2636 AC_ARG_WITH(bffvalidator,
2637     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2638         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2639          Requires installed Microsoft Office Binary File Format Validator.
2640          Note: export-validation (--with-export-validation) is required to be turned on.
2641          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2642 ,with_bffvalidator=no)
2644 libo_FUZZ_ARG_WITH(junit,
2645     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2646         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2647          --without-junit disables those tests. Not relevant in the --without-java case.]),
2648 ,with_junit=yes)
2650 AC_ARG_WITH(hamcrest,
2651     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2652         [Specifies the hamcrest jar file to use for JUnit-based tests.
2653          --without-junit disables those tests. Not relevant in the --without-java case.]),
2654 ,with_hamcrest=yes)
2656 AC_ARG_WITH(perl-home,
2657     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2658         [If you have installed Perl 5 Distribution, on your system, please
2659          supply the path here. Note that this is not the location of the Perl
2660          binary but the location of the entire distribution.]),
2663 libo_FUZZ_ARG_WITH(doxygen,
2664     AS_HELP_STRING(
2665         [--with-doxygen=<absolute path to doxygen executable>],
2666         [Specifies the doxygen executable to use when generating ODK C/C++
2667          documentation. --without-doxygen disables generation of ODK C/C++
2668          documentation. Not relevant in the --disable-odk case.]),
2669 ,with_doxygen=yes)
2671 AC_ARG_WITH(visual-studio,
2672     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2673         [Specify which Visual Studio version to use in case several are
2674          installed. Currently 2019 (default) and 2022 are supported.]),
2677 AC_ARG_WITH(windows-sdk,
2678     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2679         [Specify which Windows SDK, or "Windows Kit", version to use
2680          in case the one that came with the selected Visual Studio
2681          is not what you want for some reason. Note that not all compiler/SDK
2682          combinations are supported. The intent is that this option should not
2683          be needed.]),
2686 AC_ARG_WITH(lang,
2687     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2688         [Use this option to build LibreOffice with additional UI language support.
2689          English (US) is always included by default.
2690          Separate multiple languages with space.
2691          For all languages, use --with-lang=ALL.]),
2694 AC_ARG_WITH(locales,
2695     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2696         [Use this option to limit the locale information built in.
2697          Separate multiple locales with space.
2698          Very experimental and might well break stuff.
2699          Just a desperate measure to shrink code and data size.
2700          By default all the locales available is included.
2701          Just works with --disable-dynloading. Defaults to "ALL".
2702          This option is completely unrelated to --with-lang.])
2703     [
2704                           Affects also our character encoding conversion
2705                           tables for encodings mainly targeted for a
2706                           particular locale, like EUC-CN and EUC-TW for
2707                           zh, ISO-2022-JP for ja.
2709                           Affects also our add-on break iterator data for
2710                           some languages.
2712                           For the default, all locales, don't use this switch at all.
2713                           Specifying just the language part of a locale means all matching
2714                           locales will be included.
2715     ],
2718 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2719 libo_FUZZ_ARG_WITH(krb5,
2720     AS_HELP_STRING([--with-krb5],
2721         [Enable MIT Kerberos 5 support in modules that support it.
2722          By default automatically enabled on platforms
2723          where a good system Kerberos 5 is available.]),
2726 libo_FUZZ_ARG_WITH(gssapi,
2727     AS_HELP_STRING([--with-gssapi],
2728         [Enable GSSAPI support in modules that support it.
2729          By default automatically enabled on platforms
2730          where a good system GSSAPI is available.]),
2733 libo_FUZZ_ARG_WITH(lxml,
2734     AS_HELP_STRING([--without-lxml],
2735         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2736          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2737          report widget classes and ids.]),
2740 libo_FUZZ_ARG_WITH(latest-c++,
2741     AS_HELP_STRING([--with-latest-c++],
2742         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2743          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2744         [with_latest_c__=no])
2746 AC_ARG_WITH(gtk3-build,
2747     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2748         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2749          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2751 dnl ===================================================================
2752 dnl Branding
2753 dnl ===================================================================
2755 AC_ARG_WITH(branding,
2756     AS_HELP_STRING([--with-branding=/path/to/images],
2757         [Use given path to retrieve branding images set.])
2758     [
2759                           Search for intro.png about.svg and logo.svg.
2760                           If any is missing, default ones will be used instead.
2762                           Search also progress.conf for progress
2763                           settings on intro screen :
2765                           PROGRESSBARCOLOR="255,255,255" Set color of
2766                           progress bar. Comma separated RGB decimal values.
2767                           PROGRESSSIZE="407,6" Set size of progress bar.
2768                           Comma separated decimal values (width, height).
2769                           PROGRESSPOSITION="61,317" Set position of progress
2770                           bar from left,top. Comma separated decimal values.
2771                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2772                           bar frame. Comma separated RGB decimal values.
2773                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2774                           bar text. Comma separated RGB decimal values.
2775                           PROGRESSTEXTBASELINE="287" Set vertical position of
2776                           progress bar text from top. Decimal value.
2778                           Default values will be used if not found.
2779     ],
2783 AC_ARG_WITH(extra-buildid,
2784     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2785         [Show addition build identification in about dialog.]),
2789 AC_ARG_WITH(vendor,
2790     AS_HELP_STRING([--with-vendor="John the Builder"],
2791         [Set vendor of the build.]),
2794 AC_ARG_WITH(privacy-policy-url,
2795     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2796         [The URL to your privacy policy (needed when
2797          enabling online-update or crashreporting via breakpad)]),
2798         [if test "x$with_privacy_policy_url" = "xyes"; then
2799             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2800          elif test "x$with_privacy_policy_url" = "xno"; then
2801             with_privacy_policy_url="undefined"
2802          fi]
2803 ,[with_privacy_policy_url="undefined"])
2805 AC_ARG_WITH(android-package-name,
2806     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2807         [Set Android package name of the build.]),
2810 AC_ARG_WITH(compat-oowrappers,
2811     AS_HELP_STRING([--with-compat-oowrappers],
2812         [Install oo* wrappers in parallel with
2813          lo* ones to keep backward compatibility.
2814          Has effect only with make distro-pack-install]),
2817 AC_ARG_WITH(os-version,
2818     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2819         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2822 AC_ARG_WITH(parallelism,
2823     AS_HELP_STRING([--with-parallelism],
2824         [Number of jobs to run simultaneously during build. Parallel builds can
2825         save a lot of time on multi-cpu machines. Defaults to the number of
2826         CPUs on the machine, unless you configure --enable-icecream - then to
2827         40.]),
2830 AC_ARG_WITH(all-tarballs,
2831     AS_HELP_STRING([--with-all-tarballs],
2832         [Download all external tarballs unconditionally]))
2834 AC_ARG_WITH(gdrive-client-id,
2835     AS_HELP_STRING([--with-gdrive-client-id],
2836         [Provides the client id of the application for OAuth2 authentication
2837         on Google Drive. If either this or --with-gdrive-client-secret is
2838         empty, the feature will be disabled]),
2841 AC_ARG_WITH(gdrive-client-secret,
2842     AS_HELP_STRING([--with-gdrive-client-secret],
2843         [Provides the client secret of the application for OAuth2
2844         authentication on Google Drive. If either this or
2845         --with-gdrive-client-id is empty, the feature will be disabled]),
2848 AC_ARG_WITH(alfresco-cloud-client-id,
2849     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2850         [Provides the client id of the application for OAuth2 authentication
2851         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2852         empty, the feature will be disabled]),
2855 AC_ARG_WITH(alfresco-cloud-client-secret,
2856     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2857         [Provides the client secret of the application for OAuth2
2858         authentication on Alfresco Cloud. If either this or
2859         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2862 AC_ARG_WITH(onedrive-client-id,
2863     AS_HELP_STRING([--with-onedrive-client-id],
2864         [Provides the client id of the application for OAuth2 authentication
2865         on OneDrive. If either this or --with-onedrive-client-secret is
2866         empty, the feature will be disabled]),
2869 AC_ARG_WITH(onedrive-client-secret,
2870     AS_HELP_STRING([--with-onedrive-client-secret],
2871         [Provides the client secret of the application for OAuth2
2872         authentication on OneDrive. If either this or
2873         --with-onedrive-client-id is empty, the feature will be disabled]),
2876 dnl Check for coredumpctl support to present information about crashing test processes:
2877 AC_ARG_WITH(coredumpctl,
2878     AS_HELP_STRING([--with-coredumpctl],
2879         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2880         processes.]))
2882 AC_ARG_WITH(buildconfig-recorded,
2883     AS_HELP_STRING([--with-buildconfig-recorded],
2884         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2887 AC_MSG_CHECKING([whether to record build config])
2888 if test -z "$with_buildconfig_recorded"; then
2889     with_buildconfig_recorded=no
2891 if test "$with_buildconfig_recorded" = no; then
2892     AC_MSG_RESULT([no])
2893 else
2894     AC_MSG_RESULT([yes])
2895     # replace backslashes, to get a valid c++ string
2896     config_args=$(echo $ac_configure_args | tr '\\' '/')
2897     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2898     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2901 dnl ===================================================================
2902 dnl Do we want to use pre-build binary tarball for recompile
2903 dnl ===================================================================
2905 if test "$enable_library_bin_tar" = "yes" ; then
2906     USE_LIBRARY_BIN_TAR=TRUE
2907 else
2908     USE_LIBRARY_BIN_TAR=
2910 AC_SUBST(USE_LIBRARY_BIN_TAR)
2912 dnl ===================================================================
2913 dnl Test whether build target is Release Build
2914 dnl ===================================================================
2915 AC_MSG_CHECKING([whether build target is Release Build])
2916 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2917     AC_MSG_RESULT([no])
2918     ENABLE_RELEASE_BUILD=
2919     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2920     dnl the newlines and then complains about spaces.
2921     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/>'
2922 else
2923     AC_MSG_RESULT([yes])
2924     ENABLE_RELEASE_BUILD=TRUE
2925     GET_TASK_ALLOW_ENTITLEMENT=
2927 AC_SUBST(ENABLE_RELEASE_BUILD)
2928 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2930 AC_MSG_CHECKING([whether to build a Community flavor])
2931 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2932     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2933     AC_MSG_RESULT([yes])
2934 else
2935     AC_MSG_RESULT([no])
2938 dnl ===================================================================
2939 dnl Test whether to sign Windows Build
2940 dnl ===================================================================
2941 AC_MSG_CHECKING([whether to sign windows build])
2942 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2943     AC_MSG_RESULT([yes])
2944     WINDOWS_BUILD_SIGNING="TRUE"
2945 else
2946     AC_MSG_RESULT([no])
2947     WINDOWS_BUILD_SIGNING="FALSE"
2949 AC_SUBST(WINDOWS_BUILD_SIGNING)
2951 dnl ===================================================================
2952 dnl MacOSX build and runtime environment options
2953 dnl ===================================================================
2955 AC_ARG_WITH(macosx-version-min-required,
2956     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2957         [set the minimum OS version needed to run the built LibreOffice])
2958     [
2959                           e. g.: --with-macosx-version-min-required=10.15
2960     ],
2963 dnl ===================================================================
2964 dnl Check for incompatible options set by fuzzing, and reset those
2965 dnl automatically to working combinations
2966 dnl ===================================================================
2968 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2969         "$enable_dbus" != "$enable_avahi"; then
2970     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2971     enable_avahi=$enable_dbus
2974 add_lopath_after ()
2976     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2977         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2978     fi
2981 add_lopath_before ()
2983     local IFS=${P_SEP}
2984     local path_cleanup
2985     local dir
2986     for dir in $LO_PATH ; do
2987         if test "$dir" != "$1" ; then
2988             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2989         fi
2990     done
2991     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2994 dnl ===================================================================
2995 dnl check for required programs (grep, awk, sed, bash)
2996 dnl ===================================================================
2998 pathmunge ()
3000     local new_path
3001     if test -n "$1"; then
3002         if test "$build_os" = "cygwin"; then
3003             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3004                 PathFormat "$1"
3005                 new_path=`cygpath -sm "$formatted_path"`
3006             else
3007                 PathFormat "$1"
3008                 new_path=`cygpath -u "$formatted_path"`
3009             fi
3010         else
3011             new_path="$1"
3012         fi
3013         if test "$2" = "after"; then
3014             add_lopath_after "$new_path"
3015         else
3016             add_lopath_before "$new_path"
3017         fi
3018     fi
3021 AC_PROG_AWK
3022 AC_PATH_PROG( AWK, $AWK)
3023 if test -z "$AWK"; then
3024     AC_MSG_ERROR([install awk to run this script])
3027 AC_PATH_PROG(BASH, bash)
3028 if test -z "$BASH"; then
3029     AC_MSG_ERROR([bash not found in \$PATH])
3031 AC_SUBST(BASH)
3033 # prefer parallel compression tools, if available
3034 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3035 if test -z "$COMPRESSIONTOOL"; then
3036     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3037     if test -z "$COMPRESSIONTOOL"; then
3038         AC_MSG_ERROR([gzip not found in \$PATH])
3039     fi
3041 AC_SUBST(COMPRESSIONTOOL)
3043 AC_MSG_CHECKING([for GNU or BSD tar])
3044 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3045     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3046     if test $? -eq 0;  then
3047         GNUTAR=$a
3048         break
3049     fi
3050 done
3051 AC_MSG_RESULT($GNUTAR)
3052 if test -z "$GNUTAR"; then
3053     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3055 AC_SUBST(GNUTAR)
3057 AC_MSG_CHECKING([for tar's option to strip components])
3058 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3059 if test $? -eq 0; then
3060     STRIP_COMPONENTS="--strip-components"
3061 else
3062     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3063     if test $? -eq 0; then
3064         STRIP_COMPONENTS="--strip-path"
3065     else
3066         STRIP_COMPONENTS="unsupported"
3067     fi
3069 AC_MSG_RESULT($STRIP_COMPONENTS)
3070 if test x$STRIP_COMPONENTS = xunsupported; then
3071     AC_MSG_ERROR([you need a tar that is able to strip components.])
3073 AC_SUBST(STRIP_COMPONENTS)
3075 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3076 dnl desktop OSes from "mobile" ones.
3078 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3079 dnl In other words, that when building for an OS that is not a
3080 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3082 dnl Note the direction of the implication; there is no assumption that
3083 dnl cross-compiling would imply a non-desktop OS.
3085 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3086     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3087     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3088     if test "$_os" != Emscripten; then
3089         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3090     fi
3093 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3094 # also work with the default gtk3 plugin.
3095 if test "$enable_wasm_strip" = "yes"; then
3096     enable_avmedia=no
3097     enable_libcmis=no
3098     enable_coinmp=no
3099     enable_cups=no
3100     test "$_os" = Emscripten && enable_curl=no
3101     enable_database_connectivity=no
3102     enable_dbus=no
3103     enable_dconf=no
3104     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3105     enable_extension_integration=no
3106     enable_extensions=no
3107     enable_extension_update=no
3108     enable_gio=no
3109     enable_gpgmepp=no
3110     enable_ldap=no
3111     enable_lotuswordpro=no
3112     enable_lpsolve=no
3113     enable_nss=no
3114     enable_odk=no
3115     enable_online_update=no
3116     enable_opencl=no
3117     enable_pdfimport=no
3118     enable_randr=no
3119     enable_report_builder=no
3120     enable_scripting=no
3121     enable_sdremote_bluetooth=no
3122     enable_skia=no
3123     enable_xmlhelp=no
3124     enable_zxing=no
3125     test_libepubgen=no
3126     test_libcdr=no
3127     test_libcmis=no
3128     test_libetonyek=no
3129     test_libfreehand=no
3130     test_libmspub=no
3131     test_libpagemaker=no
3132     test_libqxp=no
3133     test_libvisio=no
3134     test_libzmf=no
3135     test_webdav=no
3136     with_galleries=no
3137     with_templates=no
3138     with_webdav=no
3139     with_x=no
3141     test "${with_fonts+set}" = set || with_fonts=yes
3142     test "${with_locales+set}" = set || with_locales=en
3144     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3145     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3146     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3147     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3148 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3149     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3150     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3151     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3152     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3153 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3154     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3155     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3156     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3157     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3158     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3159     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3160     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3161     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3164 EMSCRIPTEN_NEH_MAJOR=3
3165 EMSCRIPTEN_NEH_MINOR=1
3166 EMSCRIPTEN_NEH_TINY=3
3167 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3169 if test "$enable_wasm_exceptions" = yes; then
3170     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3171     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3172     if test $? -ne 0; then
3173         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3174     else
3175         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3176     fi
3177     ENABLE_WASM_EXCEPTIONS=TRUE
3179 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3181 # Whether to build "avmedia" functionality or not.
3183 if test "$enable_avmedia" = yes; then
3184     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3185     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3186 else
3187     test_gstreamer_1_0=no
3190 # Decide whether to build database connectivity stuff (including Base) or not.
3191 if test "$enable_database_connectivity" != no; then
3192     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3193     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3194 else
3195     if test "$_os" = iOS; then
3196         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3197     fi
3198     disable_database_connectivity_dependencies
3201 if test -z "$enable_extensions"; then
3202     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3203     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3204         enable_extensions=yes
3205     fi
3208 DISABLE_SCRIPTING=''
3209 if test "$enable_scripting" = yes; then
3210     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3211     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3212 else
3213     DISABLE_SCRIPTING='TRUE'
3214     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3217 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3218     # Disable dynamic_loading always for iOS and Android
3219     enable_dynamic_loading=no
3220 elif test -z "$enable_dynamic_loading"; then
3221     # Otherwise enable it unless specifically disabled
3222     enable_dynamic_loading=yes
3225 DISABLE_DYNLOADING=''
3226 if test "$enable_dynamic_loading" = yes; then
3227     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3228 else
3229     DISABLE_DYNLOADING='TRUE'
3230     if test $_os != iOS -a $_os != Android; then
3231         enable_database_connectivity=no
3232         enable_nss=no
3233         enable_odk=no
3234         enable_python=no
3235         enable_skia=no
3236         with_java=no
3237     fi
3239 AC_SUBST(DISABLE_DYNLOADING)
3241 ENABLE_CUSTOMTARGET_COMPONENTS=
3242 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3243     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3244     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3245         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3246     fi
3248 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3250 if test "$enable_extensions" = yes; then
3251     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3252     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3253 else
3254     enable_extension_integration=no
3255     enable_extension_update=no
3258 # remember SYSBASE value
3259 AC_SUBST(SYSBASE)
3261 dnl ===================================================================
3262 dnl  Sort out various gallery compilation options
3263 dnl ===================================================================
3264 WITH_GALLERY_BUILD=TRUE
3265 AC_MSG_CHECKING([how to build and package galleries])
3266 if test -n "${with_galleries}"; then
3267     if test "$with_galleries" = "build"; then
3268         if test "$enable_database_connectivity" = no; then
3269             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3270         fi
3271         AC_MSG_RESULT([build from source images internally])
3272     elif test "$with_galleries" = "no"; then
3273         WITH_GALLERY_BUILD=
3274         AC_MSG_RESULT([disable non-internal gallery build])
3275     else
3276         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3277     fi
3278 else
3279     if test $_os != iOS -a $_os != Android; then
3280         AC_MSG_RESULT([internal src images for desktop])
3281     else
3282         WITH_GALLERY_BUILD=
3283         AC_MSG_RESULT([disable src image build])
3284     fi
3286 AC_SUBST(WITH_GALLERY_BUILD)
3288 dnl ===================================================================
3289 dnl  Sort out various templates compilation options
3290 dnl ===================================================================
3291 WITH_TEMPLATES=TRUE
3292 AC_MSG_CHECKING([build with or without template files])
3293 if test -n "${with_templates}"; then
3294     if test "$with_templates" = "yes"; then
3295         AC_MSG_RESULT([enable all templates])
3296     elif test "$with_templates" = "no"; then
3297         WITH_TEMPLATES=
3298         AC_MSG_RESULT([disable non-internal templates])
3299     else
3300         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3301     fi
3302 else
3303     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3304         AC_MSG_RESULT([enable all templates])
3305     else
3306         WITH_TEMPLATES=
3307         AC_MSG_RESULT([disable non-internal templates])
3308     fi
3310 AC_SUBST(WITH_TEMPLATES)
3312 dnl ===================================================================
3313 dnl  Checks if ccache is available
3314 dnl ===================================================================
3315 CCACHE_DEPEND_MODE=
3316 if test "$enable_ccache" = "no"; then
3317     CCACHE=""
3318 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3319     case "%$CC%$CXX%" in
3320     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3321     # assume that's good then
3322     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3323         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3324         CCACHE_DEPEND_MODE=1
3325         ;;
3326     *)
3327         # try to use our own ccache if it is available and CCACHE was not already defined
3328         if test -z "$CCACHE"; then
3329             if test "$_os" = "WINNT"; then
3330                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3331             fi
3332             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3333                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3334             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3335                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3336             fi
3337         fi
3338         AC_PATH_PROG([CCACHE],[ccache],[not found])
3339         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3340             CCACHE=`win_short_path_for_make "$CCACHE"`
3341             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3342             rm -f conftest.txt
3343             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3344             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3345             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3346                 AC_MSG_RESULT(yes)
3347             else
3348                 AC_MSG_RESULT(no)
3349                 CCACHE="not found"
3350             fi
3351             rm -f conftest.txt
3352         fi
3353         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3354             # on windows/VC perhaps sccache is around?
3355             case "%$CC%$CXX%" in
3356             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3357             # assume that's good then
3358             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3359                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3360                 CCACHE_DEPEND_MODE=1
3361                 SCCACHE=1
3362                 ;;
3363             *)
3364                 # for sharing code below, reuse CCACHE env var
3365                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3366                 if test "$CCACHE" != "not found"; then
3367                     CCACHE=`win_short_path_for_make "$CCACHE"`
3368                     SCCACHE=1
3369                     CCACHE_DEPEND_MODE=1
3370                 fi
3371                 ;;
3372             esac
3373         fi
3374         if test "$CCACHE" = "not found"; then
3375             CCACHE=""
3376         fi
3377         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3378             CCACHE_DEPEND_MODE=1
3379             # Need to check for ccache version: otherwise prevents
3380             # caching of the results (like "-x objective-c++" for Mac)
3381             if test $_os = Darwin -o $_os = iOS; then
3382                 # Check ccache version
3383                 AC_MSG_CHECKING([whether version of ccache is suitable])
3384                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3385                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3386                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3387                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3388                 else
3389                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3390                     CCACHE=""
3391                     CCACHE_DEPEND_MODE=
3392                 fi
3393             fi
3394         fi
3395         if test "$enable_ccache" = yes && test -z "$CCACHE"; then
3396             AC_MSG_ERROR([No suitable ccache found])
3397         fi
3398         ;;
3399     esac
3400 else
3401     CCACHE=""
3403 if test "$enable_ccache" = "nodepend"; then
3404     CCACHE_DEPEND_MODE=""
3406 AC_SUBST(CCACHE_DEPEND_MODE)
3408 # sccache defaults are good enough
3409 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3410     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3411     # or (...) max_size = 20.0 G
3412     # -p works with both 4.2 and 4.4
3413     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3414     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3415     if test "$ccache_size" = ""; then
3416         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3417         if test "$ccache_size" = ""; then
3418             ccache_size=0
3419         fi
3420         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3421         if test $ccache_size -lt 1024; then
3422             CCACHE=""
3423             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3424             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3425         else
3426             # warn that ccache may be too small for debug build
3427             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3428             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3429         fi
3430     else
3431         if test $ccache_size -lt 5; then
3432             #warn that ccache may be too small for debug build
3433             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3434             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3435         fi
3436     fi
3439 ENABLE_Z7_DEBUG=
3440 if test "$enable_z7_debug" != no; then
3441     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3442         ENABLE_Z7_DEBUG=TRUE
3443     fi
3444 else
3445     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3446     add_warning "ccache will not work with --disable-z7-debug"
3448 AC_SUBST(ENABLE_Z7_DEBUG)
3450 dnl ===================================================================
3451 dnl  Checks for C compiler,
3452 dnl  The check for the C++ compiler is later on.
3453 dnl ===================================================================
3454 if test "$_os" != "WINNT"; then
3455     GCC_HOME_SET="true"
3456     AC_MSG_CHECKING([gcc home])
3457     if test -z "$with_gcc_home"; then
3458         if test "$enable_icecream" = "yes"; then
3459             if test -d "/usr/lib/icecc/bin"; then
3460                 GCC_HOME="/usr/lib/icecc/"
3461             elif test -d "/usr/libexec/icecc/bin"; then
3462                 GCC_HOME="/usr/libexec/icecc/"
3463             elif test -d "/opt/icecream/bin"; then
3464                 GCC_HOME="/opt/icecream/"
3465             else
3466                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3468             fi
3469         else
3470             GCC_HOME=`command -v gcc | $SED -e s,/bin/gcc,,`
3471             GCC_HOME_SET="false"
3472         fi
3473     else
3474         GCC_HOME="$with_gcc_home"
3475     fi
3476     AC_MSG_RESULT($GCC_HOME)
3477     AC_SUBST(GCC_HOME)
3479     if test "$GCC_HOME_SET" = "true"; then
3480         if test -z "$CC"; then
3481             CC="$GCC_HOME/bin/gcc"
3482             CC_BASE="gcc"
3483         fi
3484         if test -z "$CXX"; then
3485             CXX="$GCC_HOME/bin/g++"
3486             CXX_BASE="g++"
3487         fi
3488     fi
3491 COMPATH=`dirname "$CC"`
3492 if test "$COMPATH" = "."; then
3493     AC_PATH_PROGS(COMPATH, $CC)
3494     dnl double square bracket to get single because of M4 quote...
3495     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3497 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3499 dnl ===================================================================
3500 dnl Java support
3501 dnl ===================================================================
3502 AC_MSG_CHECKING([whether to build with Java support])
3503 if test "$with_java" != "no"; then
3504     if test "$DISABLE_SCRIPTING" = TRUE; then
3505         AC_MSG_RESULT([no, overridden by --disable-scripting])
3506         ENABLE_JAVA=""
3507         with_java=no
3508     else
3509         AC_MSG_RESULT([yes])
3510         ENABLE_JAVA="TRUE"
3511         AC_DEFINE(HAVE_FEATURE_JAVA)
3512     fi
3513 else
3514     AC_MSG_RESULT([no])
3515     ENABLE_JAVA=""
3518 AC_SUBST(ENABLE_JAVA)
3520 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3522 dnl ENABLE_JAVA="" indicate no Java support at all
3524 dnl ===================================================================
3525 dnl Check macOS SDK and compiler
3526 dnl ===================================================================
3528 if test $_os = Darwin; then
3530     # The SDK in the currently selected Xcode should be found.
3532     AC_MSG_CHECKING([what macOS SDK to use])
3533     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3534     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3535     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3536     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3537     # problems that existed in the PPC days with target versions not being respected or random
3538     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3539     # SDK version is enough, no need to do both...
3540     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3541     if test ! -d "$MACOSX_SDK_PATH"; then
3542         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3543     fi
3544     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3545     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3546     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3547     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3548     # 10.10.2 is 101002
3549     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3550     # correct version in case such an old SDK is specified, it will be rejected later anyway
3551     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3552     if test $MACOSX_SDK_VERSION -lt 101500; then
3553         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3554     fi
3555     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3556         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3557     fi
3558     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3560     AC_MSG_CHECKING([what minimum version of macOS to require])
3561     if test "$with_macosx_version_min_required" = "" ; then
3562         if test "$host_cpu" = x86_64; then
3563             with_macosx_version_min_required="10.15";
3564         else
3565             with_macosx_version_min_required="11.0";
3566         fi
3567     fi
3568     # see same notes about MACOSX_SDK_VERSION above
3569     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3570     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3571         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3572     fi
3573     AC_MSG_RESULT([$with_macosx_version_min_required])
3575     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3576     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3577         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3578     else
3579         AC_MSG_RESULT([yes])
3580     fi
3582     # export this so that "xcrun" invocations later return matching values
3583     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3584     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3585     export DEVELOPER_DIR
3586     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3587     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3589     AC_MSG_CHECKING([whether Xcode is new enough])
3590     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3591     my_xcode_ver2=${my_xcode_ver1#Xcode }
3592     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3593     if test "$my_xcode_ver3" -ge 1205; then
3594         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3595         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3596             if test "$my_xcode_ver3" -ge 1600; then
3597                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3598                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3599                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3600             fi
3601             if test "$my_xcode_ver3" -ge 1500; then
3602                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3603                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3604                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3605                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3606                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3607                 x_LDFLAGS=
3608             fi
3609         fi
3610     else
3611         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3612     fi
3614     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3615     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3617     LIBTOOL=/usr/bin/libtool
3618     INSTALL_NAME_TOOL=install_name_tool
3619     if test -z "$save_CC"; then
3620         stdlib=-stdlib=libc++
3622         AC_MSG_CHECKING([what C compiler to use])
3623         CC="`xcrun -find clang`"
3624         CC_BASE=`first_arg_basename "$CC"`
3625         if test "$host_cpu" = x86_64; then
3626             CC+=" -target x86_64-apple-macos"
3627         else
3628             CC+=" -target arm64-apple-macos"
3629         fi
3630         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3631         AC_MSG_RESULT([$CC])
3633         AC_MSG_CHECKING([what C++ compiler to use])
3634         CXX="`xcrun -find clang++`"
3635         CXX_BASE=`first_arg_basename "$CXX"`
3636         if test "$host_cpu" = x86_64; then
3637             CXX+=" -target x86_64-apple-macos"
3638         else
3639             CXX+=" -target arm64-apple-macos"
3640         fi
3641         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3642         AC_MSG_RESULT([$CXX])
3644         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3645         AR=`xcrun -find ar`
3646         NM=`xcrun -find nm`
3647         STRIP=`xcrun -find strip`
3648         LIBTOOL=`xcrun -find libtool`
3649         RANLIB=`xcrun -find ranlib`
3650     fi
3652     AC_MSG_CHECKING([whether to do code signing])
3654     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3655         AC_MSG_RESULT([no])
3656     else
3657         if test "$enable_macosx_code_signing" = yes; then
3658             # By default use the first suitable certificate (?).
3660             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3661             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3662             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3663             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3664             # "Developer ID Application" one.
3665             identity="Developer ID Application:"
3666         else
3667             identity=$enable_macosx_code_signing
3668         fi
3669         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3670         if test -n "$identity"; then
3671             MACOSX_CODESIGNING_IDENTITY=$identity
3672             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3673             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3674         else
3675             AC_MSG_ERROR([cannot determine identity to use])
3676         fi
3677     fi
3679     AC_MSG_CHECKING([whether to create a Mac App Store package])
3681     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3682         AC_MSG_RESULT([no])
3683     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3684         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3685     else
3686         if test "$enable_macosx_package_signing" = yes; then
3687             # By default use the first suitable certificate.
3688             # It should be a "3rd Party Mac Developer Installer" one
3689             identity="3rd Party Mac Developer Installer:"
3690         else
3691             identity=$enable_macosx_package_signing
3692         fi
3693         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3694         if test -n "$identity"; then
3695             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3696             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3697             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3698         else
3699             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3700         fi
3701     fi
3703     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3704         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3705     fi
3707     AC_MSG_CHECKING([whether to sandbox the application])
3709     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3710         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3711     elif test "$enable_macosx_sandbox" = yes; then
3712         ENABLE_MACOSX_SANDBOX=TRUE
3713         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3714         AC_MSG_RESULT([yes])
3715     else
3716         AC_MSG_RESULT([no])
3717     fi
3719     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3720     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3721     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3723     if test -n "$with_macosx_provisioning_profile" ; then
3724         if test ! -f "$with_macosx_provisioning_profile"; then
3725             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3726         else
3727             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3728             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3729                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3730                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3731                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3732         fi
3733     fi
3735 AC_SUBST(MACOSX_SDK_PATH)
3736 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3737 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3738 AC_SUBST(INSTALL_NAME_TOOL)
3739 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3740 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3741 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3742 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3743 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3744 AC_SUBST(MACOSX_PROVISIONING_INFO)
3745 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3746 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3747 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3749 dnl ===================================================================
3750 dnl Check iOS SDK and compiler
3751 dnl ===================================================================
3753 if test $_os = iOS; then
3754     AC_MSG_CHECKING([what iOS SDK to use])
3756     if test "$enable_ios_simulator" = "yes"; then
3757         platformlc=iphonesimulator
3758         versionmin=-mios-simulator-version-min=14.5
3759     else
3760         platformlc=iphoneos
3761         versionmin=-miphoneos-version-min=14.5
3762     fi
3764     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3766     if ! test -d "$sysroot"; then
3767         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3768     fi
3770     AC_MSG_RESULT($sysroot)
3772     stdlib="-stdlib=libc++"
3774     AC_MSG_CHECKING([what C compiler to use])
3775     CC="`xcrun -find clang`"
3776     CC_BASE=`first_arg_basename "$CC"`
3777     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3778     AC_MSG_RESULT([$CC])
3780     AC_MSG_CHECKING([what C++ compiler to use])
3781     CXX="`xcrun -find clang++`"
3782     CXX_BASE=`first_arg_basename "$CXX"`
3783     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3784     AC_MSG_RESULT([$CXX])
3786     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3787     AR=`xcrun -find ar`
3788     NM=`xcrun -find nm`
3789     STRIP=`xcrun -find strip`
3790     LIBTOOL=`xcrun -find libtool`
3791     RANLIB=`xcrun -find ranlib`
3794 AC_MSG_CHECKING([whether to treat the installation as read-only])
3796 if test $_os = Darwin; then
3797     enable_readonly_installset=yes
3798 elif test "$enable_extensions" != yes; then
3799     enable_readonly_installset=yes
3801 if test "$enable_readonly_installset" = yes; then
3802     AC_MSG_RESULT([yes])
3803     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3804 else
3805     AC_MSG_RESULT([no])
3808 dnl ===================================================================
3809 dnl Structure of install set
3810 dnl ===================================================================
3812 if test $_os = Darwin; then
3813     LIBO_BIN_FOLDER=MacOS
3814     LIBO_ETC_FOLDER=Resources
3815     LIBO_LIBEXEC_FOLDER=MacOS
3816     LIBO_LIB_FOLDER=Frameworks
3817     LIBO_LIB_PYUNO_FOLDER=Resources
3818     LIBO_SHARE_FOLDER=Resources
3819     LIBO_SHARE_HELP_FOLDER=Resources/help
3820     LIBO_SHARE_JAVA_FOLDER=Resources/java
3821     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3822     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3823     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3824     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3825     LIBO_URE_BIN_FOLDER=MacOS
3826     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3827     LIBO_URE_LIB_FOLDER=Frameworks
3828     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3829     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3830 elif test $_os = WINNT; then
3831     LIBO_BIN_FOLDER=program
3832     LIBO_ETC_FOLDER=program
3833     LIBO_LIBEXEC_FOLDER=program
3834     LIBO_LIB_FOLDER=program
3835     LIBO_LIB_PYUNO_FOLDER=program
3836     LIBO_SHARE_FOLDER=share
3837     LIBO_SHARE_HELP_FOLDER=help
3838     LIBO_SHARE_JAVA_FOLDER=program/classes
3839     LIBO_SHARE_PRESETS_FOLDER=presets
3840     LIBO_SHARE_READMES_FOLDER=readmes
3841     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3842     LIBO_SHARE_SHELL_FOLDER=program/shell
3843     LIBO_URE_BIN_FOLDER=program
3844     LIBO_URE_ETC_FOLDER=program
3845     LIBO_URE_LIB_FOLDER=program
3846     LIBO_URE_MISC_FOLDER=program
3847     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3848 else
3849     LIBO_BIN_FOLDER=program
3850     LIBO_ETC_FOLDER=program
3851     LIBO_LIBEXEC_FOLDER=program
3852     LIBO_LIB_FOLDER=program
3853     LIBO_LIB_PYUNO_FOLDER=program
3854     LIBO_SHARE_FOLDER=share
3855     LIBO_SHARE_HELP_FOLDER=help
3856     LIBO_SHARE_JAVA_FOLDER=program/classes
3857     LIBO_SHARE_PRESETS_FOLDER=presets
3858     LIBO_SHARE_READMES_FOLDER=readmes
3859     if test "$enable_fuzzers" != yes; then
3860         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3861     else
3862         LIBO_SHARE_RESOURCE_FOLDER=resource
3863     fi
3864     LIBO_SHARE_SHELL_FOLDER=program/shell
3865     LIBO_URE_BIN_FOLDER=program
3866     LIBO_URE_ETC_FOLDER=program
3867     LIBO_URE_LIB_FOLDER=program
3868     LIBO_URE_MISC_FOLDER=program
3869     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3871 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3872 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3873 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3874 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3875 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3876 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3877 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3878 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3879 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3880 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3885 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3886 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3888 # Not all of them needed in config_host.mk, add more if need arises
3889 AC_SUBST(LIBO_BIN_FOLDER)
3890 AC_SUBST(LIBO_ETC_FOLDER)
3891 AC_SUBST(LIBO_LIB_FOLDER)
3892 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3893 AC_SUBST(LIBO_SHARE_FOLDER)
3894 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3895 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3896 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3897 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3898 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3899 AC_SUBST(LIBO_URE_BIN_FOLDER)
3900 AC_SUBST(LIBO_URE_ETC_FOLDER)
3901 AC_SUBST(LIBO_URE_LIB_FOLDER)
3902 AC_SUBST(LIBO_URE_MISC_FOLDER)
3903 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3905 dnl ===================================================================
3906 dnl Windows specific tests and stuff
3907 dnl ===================================================================
3909 reg_get_value()
3911     # Return value: $regvalue
3912     unset regvalue
3914     if test "$build_os" = "wsl"; then
3915         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3916         return
3917     fi
3919     local _regentry="/proc/registry${1}/${2}"
3920     if test -f "$_regentry"; then
3921         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3922         # Registry keys read via /proc/registry* are always \0 terminated!
3923         local _regvalue=$(tr -d '\0' < "$_regentry")
3924         if test $? -eq 0; then
3925             regvalue=$_regvalue
3926         fi
3927     fi
3930 # Get a value from the 32-bit side of the Registry
3931 reg_get_value_32()
3933     reg_get_value "32" "$1"
3936 # Get a value from the 64-bit side of the Registry
3937 reg_get_value_64()
3939     reg_get_value "64" "$1"
3942 reg_list_values()
3944     # Return value: $reglist
3945     unset reglist
3947     if test "$build_os" = "wsl"; then
3948         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3949         return
3950     fi
3952     reglist=$(ls "/proc/registry${1}/${2}")
3955 # List values from the 32-bit side of the Registry
3956 reg_list_values_32()
3958     reg_list_values "32" "$1"
3961 # List values from the 64-bit side of the Registry
3962 reg_list_values_64()
3964     reg_list_values "64" "$1"
3967 case "$host_os" in
3968 cygwin*|wsl*)
3969     COM=MSC
3970     OS=WNT
3971     RTL_OS=Windows
3972     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3973         P_SEP=";"
3974     else
3975         P_SEP=:
3976     fi
3977     case "$host_cpu" in
3978     x86_64)
3979         CPUNAME=X86_64
3980         RTL_ARCH=X86_64
3981         PLATFORMID=windows_x86_64
3982         WINDOWS_X64=1
3983         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3984         WIN_HOST_ARCH="x64"
3985         WIN_MULTI_ARCH="x86"
3986         WIN_HOST_BITS=64
3987         ;;
3988     i*86)
3989         CPUNAME=INTEL
3990         RTL_ARCH=x86
3991         PLATFORMID=windows_x86
3992         WIN_HOST_ARCH="x86"
3993         WIN_HOST_BITS=32
3994         WIN_OTHER_ARCH="x64"
3995         ;;
3996     aarch64)
3997         CPUNAME=AARCH64
3998         RTL_ARCH=AARCH64
3999         PLATFORMID=windows_aarch64
4000         WINDOWS_X64=1
4001         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4002         WIN_HOST_ARCH="arm64"
4003         WIN_HOST_BITS=64
4004         with_ucrt_dir=no
4005         ;;
4006     *)
4007         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4008         ;;
4009     esac
4011     case "$build_cpu" in
4012     x86_64) WIN_BUILD_ARCH="x64" ;;
4013     i*86) WIN_BUILD_ARCH="x86" ;;
4014     aarch64) WIN_BUILD_ARCH="arm64" ;;
4015     *)
4016         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4017         ;;
4018     esac
4020     SCPDEFS="$SCPDEFS -D_MSC_VER"
4021     ;;
4022 esac
4024 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4025 # other-arch won't, but wouldn't break the build (x64 on x86).
4026 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4027     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4031 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4032     # To allow building Windows multi-arch releases without cross-tooling
4033     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4034         cross_compiling="yes"
4035     fi
4038 if test "$cross_compiling" = "yes"; then
4039     export CROSS_COMPILING=TRUE
4040     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4041         ENABLE_WASM_STRIP=TRUE
4042     fi
4043     if test "$_os" = "Emscripten"; then
4044         if test "$with_main_module" = "calc"; then
4045             ENABLE_WASM_STRIP_WRITER=TRUE
4046         elif test "$with_main_module" = "writer"; then
4047             ENABLE_WASM_STRIP_CALC=TRUE
4048         fi
4049     fi
4050 else
4051     CROSS_COMPILING=
4052     BUILD_TYPE="$BUILD_TYPE NATIVE"
4054 AC_SUBST(CROSS_COMPILING)
4055 AC_SUBST(ENABLE_WASM_STRIP)
4056 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4057 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4059 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4060 # NOTE: must _not_ be used for bundled external libraries!
4061 ISYSTEM=
4062 if test "$GCC" = "yes"; then
4063     AC_MSG_CHECKING( for -isystem )
4064     save_CFLAGS=$CFLAGS
4065     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4066     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4067     CFLAGS=$save_CFLAGS
4068     if test -n "$ISYSTEM"; then
4069         AC_MSG_RESULT(yes)
4070     else
4071         AC_MSG_RESULT(no)
4072     fi
4074 if test -z "$ISYSTEM"; then
4075     # fall back to using -I
4076     ISYSTEM=-I
4078 AC_SUBST(ISYSTEM)
4080 dnl ===================================================================
4081 dnl  Check which Visual Studio compiler is used
4082 dnl ===================================================================
4084 map_vs_year_to_version()
4086     # Return value: $vsversion
4088     unset vsversion
4090     case $1 in
4091     2019)
4092         vsversion=16;;
4093     2022)
4094         vsversion=17;;
4095     2022preview)
4096         vsversion=17.9;;
4097     *)
4098         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4099     esac
4102 vs_versions_to_check()
4104     # Args: $1 (optional) : versions to check, in the order of preference
4105     # Return value: $vsversions
4107     unset vsversions
4109     if test -n "$1"; then
4110         map_vs_year_to_version "$1"
4111         vsversions=$vsversion
4112     else
4113         # Default version is 2019
4114         vsversions="16"
4115     fi
4118 win_get_env_from_vsdevcmdbat()
4120     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4121     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4122     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4123     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4124     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4125     local result
4126     if test "$build_os" = "wsl"; then
4127         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4128     else
4129         chmod +x $WRAPPERBATCHFILEPATH
4130         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4131     fi
4132     rm -f $WRAPPERBATCHFILEPATH
4133     printf '%s' "$result"
4136 find_ucrt()
4138     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4139     if test -n "$regvalue"; then
4140         PathFormat "$regvalue"
4141         UCRTSDKDIR=$formatted_path_unix
4142         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4143         UCRTVERSION=$regvalue
4144         # Rest if not exist
4145         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4146           UCRTSDKDIR=
4147         fi
4148     fi
4149     if test -z "$UCRTSDKDIR"; then
4150         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4151         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4152         if test -f "$ide_env_file"; then
4153             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4154             UCRTSDKDIR=$formatted_path
4155             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4156             dnl Hack needed at least by tml:
4157             if test "$UCRTVERSION" = 10.0.15063.0 \
4158                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4159                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4160             then
4161                 UCRTVERSION=10.0.14393.0
4162             fi
4163         else
4164           AC_MSG_ERROR([No UCRT found])
4165         fi
4166     fi
4169 find_msvc()
4171     # Find Visual C++
4172     # Args: $1 (optional) : The VS version year
4173     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4175     unset vctest vctoolset vcnumwithdot vcbuildnumber
4177     vs_versions_to_check "$1"
4178     if test "$build_os" = wsl; then
4179         vswhere="$PROGRAMFILESX86"
4180         if test -z "$vswhere"; then
4181             vswhere="c:\\Program Files (x86)"
4182         fi
4183     else
4184         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4185     fi
4186     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4187     PathFormat "$vswhere"
4188     vswhere=$formatted_path_unix
4189     for ver in $vsversions; do
4190         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4191         if test -z "$vswhereoutput"; then
4192             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4193         fi
4194         # Fall back to all MS products (this includes VC++ Build Tools)
4195         if ! test -n "$vswhereoutput"; then
4196             AC_MSG_CHECKING([VC++ Build Tools and similar])
4197             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4198         fi
4199         if test -n "$vswhereoutput"; then
4200             PathFormat "$vswhereoutput"
4201             vctest=$formatted_path_unix
4202             break
4203         fi
4204     done
4206     if test -n "$vctest"; then
4207         vcnumwithdot="$ver"
4208         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4209             vcnumwithdot=$vcnumwithdot.0
4210         fi
4211         case "$vcnumwithdot" in
4212         16.0)
4213             vcyear=2019
4214             vctoolset=v142
4215             ;;
4216         17.0 | 17.9)
4217             vcyear=2022
4218             vctoolset=v143
4219             ;;
4220         esac
4221         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4223     fi
4226 test_cl_exe()
4228     AC_MSG_CHECKING([$1 compiler])
4230     CL_EXE_PATH="$2/cl.exe"
4232     if test ! -f "$CL_EXE_PATH"; then
4233         if test "$1" = "multi-arch"; then
4234             AC_MSG_WARN([no compiler (cl.exe) in $2])
4235             return 1
4236         else
4237             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4238         fi
4239     fi
4241     dnl ===========================================================
4242     dnl  Check for the corresponding mspdb*.dll
4243     dnl ===========================================================
4245     # MSVC 15.0 has libraries from 14.0?
4246     mspdbnum="140"
4248     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4249         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4250     fi
4252     # The compiles has to find its shared libraries
4253     OLD_PATH="$PATH"
4254     TEMP_PATH=`cygpath -d "$2"`
4255     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4257     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4258         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4259     fi
4261     PATH="$OLD_PATH"
4263     AC_MSG_RESULT([$CL_EXE_PATH])
4266 SOLARINC=
4267 MSBUILD_PATH=
4268 DEVENV=
4269 if test "$_os" = "WINNT"; then
4270     AC_MSG_CHECKING([Visual C++])
4271     find_msvc "$with_visual_studio"
4272     if test -z "$vctest"; then
4273         if test -n "$with_visual_studio"; then
4274             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4275         else
4276             AC_MSG_ERROR([no Visual Studio installation found])
4277         fi
4278     fi
4279     AC_MSG_RESULT([])
4281     VC_PRODUCT_DIR="$vctest/VC"
4282     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4284     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4285     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4286         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4287         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4288         if test $? -ne 0; then
4289             WIN_MULTI_ARCH=""
4290             WIN_OTHER_ARCH=""
4291         fi
4292     fi
4294     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4295         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4296         test_cl_exe "build" "$MSVC_BUILD_PATH"
4297     fi
4299     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4300         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4301         test_cl_exe "host" "$MSVC_HOST_PATH"
4302     else
4303         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4304     fi
4306     AC_MSG_CHECKING([for short pathname of VC product directory])
4307     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4308     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4310     UCRTSDKDIR=
4311     UCRTVERSION=
4313     AC_MSG_CHECKING([for UCRT location])
4314     find_ucrt
4315     # find_ucrt errors out if it doesn't find it
4316     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4317     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4318     ucrtincpath_formatted=$formatted_path
4319     # SOLARINC is used for external modules and must be set too.
4320     # And no, it's not sufficient to set SOLARINC only, as configure
4321     # itself doesn't honour it.
4322     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4323     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4324     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4325     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4327     AC_SUBST(UCRTSDKDIR)
4328     AC_SUBST(UCRTVERSION)
4330     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4331     # Find the proper version of MSBuild.exe to use based on the VS version
4332     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4333     if test -z "$regvalue" ; then
4334         if test "$WIN_BUILD_ARCH" != "x64"; then
4335             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4336         else
4337             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4338         fi
4339     fi
4340     if test -d "$regvalue" ; then
4341         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4342         AC_MSG_RESULT([$regvalue])
4343     else
4344         AC_MSG_ERROR([MSBuild.exe location not found])
4345     fi
4347     # Find the version of devenv.exe
4348     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4349     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4350     DEVENV_unix=$(cygpath -u "$DEVENV")
4351     if test ! -e "$DEVENV_unix"; then
4352         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4353     fi
4355     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4356     dnl needed when building CLR code:
4357     if test -z "$MSVC_CXX"; then
4358         # This gives us a posix path with 8.3 filename restrictions
4359         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4360     fi
4362     if test -z "$CC"; then
4363         CC=$MSVC_CXX
4364         CC_BASE=`first_arg_basename "$CC"`
4365     fi
4366     if test -z "$CXX"; then
4367         CXX=$MSVC_CXX
4368         CXX_BASE=`first_arg_basename "$CXX"`
4369     fi
4371     if test -n "$CC"; then
4372         # Remove /cl.exe from CC case insensitive
4373         AC_MSG_NOTICE([found Visual C++ $vcyear])
4375         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4376         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4378         PathFormat "$COMPATH"
4379         COMPATH=`win_short_path_for_make "$formatted_path"`
4381         VCVER=$vcnumwithdot
4382         VCTOOLSET=$vctoolset
4384         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4385         # are always "better", we list them in reverse chronological order.
4387         case "$vcnumwithdot" in
4388         16.0 | 17.0 | 17.9)
4389             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4390             ;;
4391         esac
4393         # The expectation is that --with-windows-sdk should not need to be used
4394         if test -n "$with_windows_sdk"; then
4395             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4396             *" "$with_windows_sdk" "*)
4397                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4398                 ;;
4399             *)
4400                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4401                 ;;
4402             esac
4403         fi
4405         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4406         ac_objext=obj
4407         ac_exeext=exe
4409     else
4410         AC_MSG_ERROR([Visual C++ not found after all, huh])
4411     fi
4413     # ERROR if VS version < 16.5
4414     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4415     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4416         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4417         // between Visual Studio versions and _MSC_VER:
4418         #if _MSC_VER < 1925
4419         #error
4420         #endif
4421     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4423     # WARN if VS version < 16.10
4424     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4425     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4426         #if _MSC_VER < 1929
4427         #error
4428         #endif
4429     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4431     if test $vs2019_recommended_version = yes; then
4432         AC_MSG_RESULT([yes])
4433     else
4434         AC_MSG_WARN([no])
4435         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."
4436     fi
4438     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4439     # version of the Explorer extension (and maybe other small
4440     # bits, too) needed when installing a 32-bit LibreOffice on a
4441     # 64-bit OS. The 64-bit Explorer extension is a feature that
4442     # has been present since long in OOo. Don't confuse it with
4443     # building LibreOffice itself as 64-bit code.
4445     BUILD_X64=
4446     CXX_X64_BINARY=
4448     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4449         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4450         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4451              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4452         then
4453             BUILD_X64=TRUE
4454             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4455             AC_MSG_RESULT([found])
4456         else
4457             AC_MSG_RESULT([not found])
4458             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4459         fi
4460     elif test "$WIN_HOST_ARCH" = "x64"; then
4461         CXX_X64_BINARY=$CXX
4462     fi
4463     AC_SUBST(BUILD_X64)
4465     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4466     AC_SUBST(CXX_X64_BINARY)
4468     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4469     # needed to support TWAIN scan on both 32- and 64-bit systems
4471     case "$WIN_HOST_ARCH" in
4472     x64)
4473         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4474         if test -n "$CXX_X86_BINARY"; then
4475             BUILD_X86=TRUE
4476             AC_MSG_RESULT([preset])
4477         elif test -n "$WIN_MULTI_ARCH"; then
4478             BUILD_X86=TRUE
4479             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4480             AC_MSG_RESULT([found])
4481         else
4482             AC_MSG_RESULT([not found])
4483             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4484         fi
4485         ;;
4486     x86)
4487         BUILD_X86=TRUE
4488         CXX_X86_BINARY=$MSVC_CXX
4489         ;;
4490     esac
4491     AC_SUBST(BUILD_X86)
4492     AC_SUBST(CXX_X86_BINARY)
4494 AC_SUBST(VCVER)
4495 AC_SUBST(VCTOOLSET)
4496 AC_SUBST(DEVENV)
4497 AC_SUBST(MSVC_CXX)
4499 COM_IS_CLANG=
4500 AC_MSG_CHECKING([whether the compiler is actually Clang])
4501 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4502     #ifndef __clang__
4503     you lose
4504     #endif
4505     int foo=42;
4506     ]])],
4507     [AC_MSG_RESULT([yes])
4508      COM_IS_CLANG=TRUE],
4509     [AC_MSG_RESULT([no])])
4510 AC_SUBST(COM_IS_CLANG)
4512 CLANGVER=
4513 if test "$COM_IS_CLANG" = TRUE; then
4514     AC_MSG_CHECKING([whether Clang is new enough])
4515     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4516         #if !defined __apple_build_version__
4517         #error
4518         #endif
4519         ]])],
4520         [my_apple_clang=yes],[my_apple_clang=])
4521     if test "$my_apple_clang" = yes; then
4522         AC_MSG_RESULT([assumed yes (Apple Clang)])
4523     elif test "$_os" = Emscripten; then
4524         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4525     else
4526         if test "$_os" = WINNT; then
4527             dnl In which case, assume clang-cl:
4528             my_args="/EP /TC"
4529         else
4530             my_args="-E -P"
4531         fi
4532         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4533         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4534         CLANGVER=`echo $clang_version \
4535             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4536         if test "$CLANGVER" -ge 120000; then
4537             AC_MSG_RESULT([yes ($clang_version)])
4538         else
4539             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4540         fi
4541         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4542         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4543     fi
4546 SHOWINCLUDES_PREFIX=
4547 if test "$_os" = WINNT; then
4548     dnl We need to guess the prefix of the -showIncludes output, it can be
4549     dnl localized
4550     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4551     echo "#include <stdlib.h>" > conftest.c
4552     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4553         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4554     rm -f conftest.c conftest.obj
4555     if test -z "$SHOWINCLUDES_PREFIX"; then
4556         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4557     else
4558         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4559     fi
4561 AC_SUBST(SHOWINCLUDES_PREFIX)
4564 # prefix C with ccache if needed
4566 if test "$CCACHE" != ""; then
4567     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4569     AC_LANG_PUSH([C])
4570     save_CFLAGS=$CFLAGS
4571     CFLAGS="$CFLAGS --ccache-skip -O2"
4572     # msvc does not fail on unknown options, check stdout
4573     if test "$COM" = MSC; then
4574         CFLAGS="$CFLAGS -nologo"
4575     fi
4576     save_ac_c_werror_flag=$ac_c_werror_flag
4577     ac_c_werror_flag=yes
4578     dnl an empty program will do, we're checking the compiler flags
4579     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4580                       [use_ccache=yes], [use_ccache=no])
4581     CFLAGS=$save_CFLAGS
4582     ac_c_werror_flag=$save_ac_c_werror_flag
4583     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4584         AC_MSG_RESULT([yes])
4585     else
4586         CC="$CCACHE $CC"
4587         CC_BASE="ccache $CC_BASE"
4588         AC_MSG_RESULT([no])
4589     fi
4590     AC_LANG_POP([C])
4593 # ===================================================================
4594 # check various GCC options that Clang does not support now but maybe
4595 # will somewhen in the future, check them even for GCC, so that the
4596 # flags are set
4597 # ===================================================================
4599 HAVE_GCC_GGDB2=
4600 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4601     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4602     save_CFLAGS=$CFLAGS
4603     CFLAGS="$CFLAGS -Werror -ggdb2"
4604     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4605     CFLAGS=$save_CFLAGS
4606     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4607         AC_MSG_RESULT([yes])
4608     else
4609         AC_MSG_RESULT([no])
4610     fi
4612     if test "$host_cpu" = "m68k"; then
4613         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4614         save_CFLAGS=$CFLAGS
4615         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4616         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4617         CFLAGS=$save_CFLAGS
4618         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4619             AC_MSG_RESULT([yes])
4620         else
4621             AC_MSG_ERROR([no])
4622         fi
4623     fi
4625 AC_SUBST(HAVE_GCC_GGDB2)
4627 dnl ===================================================================
4628 dnl  Test the gcc version
4629 dnl ===================================================================
4630 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4631     AC_MSG_CHECKING([the GCC version])
4632     _gcc_version=`$CC -dumpfullversion`
4633     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4634         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4635     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4637     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4639     if test "$gcc_full_version" -lt 120000; then
4640         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4641     fi
4642 else
4643     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4644     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4645     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4646     # (which reports itself as GCC 4.2.1).
4647     GCC_VERSION=
4649 AC_SUBST(GCC_VERSION)
4651 dnl Set the ENABLE_DBGUTIL variable
4652 dnl ===================================================================
4653 AC_MSG_CHECKING([whether to build with additional debug utilities])
4654 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4655     ENABLE_DBGUTIL="TRUE"
4656     # this is an extra var so it can have different default on different MSVC
4657     # versions (in case there are version specific problems with it)
4658     MSVC_USE_DEBUG_RUNTIME="TRUE"
4660     AC_MSG_RESULT([yes])
4661     # cppunit and graphite expose STL in public headers
4662     if test "$with_system_cppunit" = "yes"; then
4663         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4664     else
4665         with_system_cppunit=no
4666     fi
4667     if test "$with_system_graphite" = "yes"; then
4668         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4669     else
4670         with_system_graphite=no
4671     fi
4672     if test "$with_system_orcus" = "yes"; then
4673         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4674     else
4675         with_system_orcus=no
4676     fi
4677     if test "$with_system_libcmis" = "yes"; then
4678         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4679     else
4680         with_system_libcmis=no
4681     fi
4682     if test "$with_system_hunspell" = "yes"; then
4683         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4684     else
4685         with_system_hunspell=no
4686     fi
4687     if test "$with_system_gpgmepp" = "yes"; then
4688         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4689     else
4690         with_system_gpgmepp=no
4691     fi
4692     if test "$with_system_zxing" = "yes"; then
4693         AC_MSG_ERROR([--with-system-zxing conflicts with --enable-dbgutil])
4694     else
4695         with_system_zxing=no
4696     fi
4697     if test "$with_system_poppler" = "yes"; then
4698         AC_MSG_ERROR([--with-system-poppler conflicts with --enable-dbgutil])
4699     else
4700         with_system_poppler=no
4701     fi
4702     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4703     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4704     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4705     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4706     # of those two is using the system variant:
4707     if test "$with_system_libnumbertext" = "yes"; then
4708         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4709     else
4710         with_system_libnumbertext=no
4711     fi
4712     if test "$with_system_libwps" = "yes"; then
4713         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4714     else
4715         with_system_libwps=no
4716     fi
4717 else
4718     ENABLE_DBGUTIL=""
4719     MSVC_USE_DEBUG_RUNTIME=""
4720     AC_MSG_RESULT([no])
4722 AC_SUBST(ENABLE_DBGUTIL)
4723 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4725 dnl Set the ENABLE_DEBUG variable.
4726 dnl ===================================================================
4727 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4728     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4730 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4731     if test -z "$libo_fuzzed_enable_debug"; then
4732         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4733     else
4734         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4735         enable_debug=yes
4736     fi
4739 AC_MSG_CHECKING([whether to do a debug build])
4740 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4741     ENABLE_DEBUG="TRUE"
4742     if test -n "$ENABLE_DBGUTIL" ; then
4743         AC_MSG_RESULT([yes (dbgutil)])
4744     else
4745         AC_MSG_RESULT([yes])
4746     fi
4747 else
4748     ENABLE_DEBUG=""
4749     AC_MSG_RESULT([no])
4751 AC_SUBST(ENABLE_DEBUG)
4753 dnl ===================================================================
4754 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4755 dnl This is done only after compiler checks (need to know if Clang is
4756 dnl used, for different defaults) and after checking if a debug build
4757 dnl is wanted (non-debug builds get the default linker if not explicitly
4758 dnl specified otherwise).
4759 dnl All checks for linker features/options should come after this.
4760 dnl ===================================================================
4761 check_use_ld()
4763     use_ld=-fuse-ld=${1%%:*}
4764     use_ld_path=${1#*:}
4765     if test "$use_ld_path" != "$1"; then
4766         if test "$COM_IS_CLANG" = TRUE; then
4767             if test "$CLANGVER" -ge 120000; then
4768                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4769             else
4770                 use_ld="-fuse-ld=${use_ld_path}"
4771             fi
4772         else
4773             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4774             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4775             # pickup the alternative linker, when called by libtool for linking.
4776             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4777             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4778         fi
4779     fi
4780     use_ld_fail_if_error=$2
4781     use_ld_ok=
4782     AC_MSG_CHECKING([for $use_ld linker support])
4783     use_ld_ldflags_save="$LDFLAGS"
4784     LDFLAGS="$LDFLAGS $use_ld"
4785     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4786 #include <stdio.h>
4787         ],[
4788 printf ("hello world\n");
4789         ])], USE_LD=$use_ld, [])
4790     if test -n "$USE_LD"; then
4791         AC_MSG_RESULT( yes )
4792         use_ld_ok=yes
4793     else
4794         if test -n "$use_ld_fail_if_error"; then
4795             AC_MSG_ERROR( no )
4796         else
4797             AC_MSG_RESULT( no )
4798         fi
4799     fi
4800     if test -n "$use_ld_ok"; then
4801         dnl keep the value of LDFLAGS
4802         return 0
4803     fi
4804     LDFLAGS="$use_ld_ldflags_save"
4805     return 1
4807 USE_LD=
4808 if test "$enable_ld" != "no"; then
4809     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4810         if test -n "$enable_ld"; then
4811             check_use_ld "$enable_ld" fail_if_error
4812         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4813             dnl non-debug builds default to the default linker
4814             true
4815         elif test -n "$COM_IS_CLANG"; then
4816             check_use_ld lld
4817             if test $? -ne 0; then
4818                 check_use_ld gold
4819                 if test $? -ne 0; then
4820                     check_use_ld mold
4821                 fi
4822             fi
4823         else
4824             # For gcc first try gold, new versions also support lld/mold.
4825             check_use_ld gold
4826             if test $? -ne 0; then
4827                 check_use_ld lld
4828                 if test $? -ne 0; then
4829                     check_use_ld mold
4830                 fi
4831             fi
4832         fi
4833         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4834         rm conftest.out
4835         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4836         if test -z "$ld_used"; then
4837             ld_used="unknown"
4838         fi
4839         AC_MSG_CHECKING([for linker that is used])
4840         AC_MSG_RESULT([$ld_used])
4841         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4842             if echo "$ld_used" | grep -q "^GNU ld"; then
4843                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4844                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4845             fi
4846         fi
4847     else
4848         if test "$enable_ld" = "yes"; then
4849             AC_MSG_ERROR([--enable-ld not supported])
4850         fi
4851     fi
4853 AC_SUBST(USE_LD)
4854 AC_SUBST(LD)
4856 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4857 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4858     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4859     bsymbolic_functions_ldflags_save=$LDFLAGS
4860     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4861     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4862 #include <stdio.h>
4863         ],[
4864 printf ("hello world\n");
4865         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4866     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4867         AC_MSG_RESULT( found )
4868     else
4869         AC_MSG_RESULT( not found )
4870     fi
4871     LDFLAGS=$bsymbolic_functions_ldflags_save
4873 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4875 LD_GC_SECTIONS=
4876 if test "$GCC" = "yes"; then
4877     for flag in "--gc-sections" "-dead_strip"; do
4878         AC_MSG_CHECKING([for $flag linker support])
4879         ldflags_save=$LDFLAGS
4880         LDFLAGS="$LDFLAGS -Wl,$flag"
4881         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4882 #include <stdio.h>
4883             ],[
4884 printf ("hello world\n");
4885             ])],[
4886             LD_GC_SECTIONS="-Wl,$flag"
4887             AC_MSG_RESULT( found )
4888             ], [
4889             AC_MSG_RESULT( not found )
4890             ])
4891         LDFLAGS=$ldflags_save
4892         if test -n "$LD_GC_SECTIONS"; then
4893             break
4894         fi
4895     done
4897 AC_SUBST(LD_GC_SECTIONS)
4899 HAVE_EXTERNAL_DWARF=
4900 if test "$enable_split_debug" != no; then
4901     use_split_debug=
4902     if test -n "$ENABLE_LTO"; then
4903         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4904     elif test "$enable_split_debug" = yes; then
4905         use_split_debug=1
4906     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4907     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4908         use_split_debug=1
4909     fi
4910     if test -n "$use_split_debug"; then
4911         if test "$_os" = "Emscripten"; then
4912             TEST_CC_FLAG=-gseparate-dwarf
4913         else
4914             TEST_CC_FLAG=-gsplit-dwarf
4915         fi
4916         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4917         save_CFLAGS=$CFLAGS
4918         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4919         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4920         CFLAGS=$save_CFLAGS
4921         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4922             AC_MSG_RESULT([yes])
4923         else
4924             if test "$enable_split_debug" = yes; then
4925                 AC_MSG_ERROR([no])
4926             else
4927                 AC_MSG_RESULT([no])
4928             fi
4929         fi
4930     fi
4931     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4932         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4933         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4934     fi
4936 AC_SUBST(HAVE_EXTERNAL_DWARF)
4938 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4939 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4940 save_CFLAGS=$CFLAGS
4941 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4942 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4943 CFLAGS=$save_CFLAGS
4944 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4945     AC_MSG_RESULT([yes])
4946 else
4947     AC_MSG_RESULT([no])
4949 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4951 ENABLE_GDB_INDEX=
4952 if test "$enable_gdb_index" != "no"; then
4953     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4954     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4955         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4956         save_CFLAGS=$CFLAGS
4957         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4958         have_ggnu_pubnames=
4959         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4960         if test "$have_ggnu_pubnames" != "TRUE"; then
4961             if test "$enable_gdb_index" = "yes"; then
4962                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4963             else
4964                 AC_MSG_RESULT( no )
4965             fi
4966         else
4967             AC_MSG_RESULT( yes )
4968             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4969             ldflags_save=$LDFLAGS
4970             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4971             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4972 #include <stdio.h>
4973                 ],[
4974 printf ("hello world\n");
4975                 ])], ENABLE_GDB_INDEX=TRUE, [])
4976             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4977                 AC_MSG_RESULT( yes )
4978             else
4979                 if test "$enable_gdb_index" = "yes"; then
4980                     AC_MSG_ERROR( no )
4981                 else
4982                     AC_MSG_RESULT( no )
4983                 fi
4984             fi
4985             LDFLAGS=$ldflags_save
4986         fi
4987         CFLAGS=$save_CFLAGS
4988         fi
4989     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4990         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4991         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4992     fi
4994 AC_SUBST(ENABLE_GDB_INDEX)
4996 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4997     enable_sal_log=yes
4999 if test "$enable_sal_log" = yes; then
5000     ENABLE_SAL_LOG=TRUE
5002 AC_SUBST(ENABLE_SAL_LOG)
5004 dnl Check for enable symbols option
5005 dnl ===================================================================
5006 AC_MSG_CHECKING([whether to generate debug information])
5007 if test -z "$enable_symbols"; then
5008     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5009         enable_symbols=yes
5010     else
5011         enable_symbols=no
5012     fi
5014 if test "$enable_symbols" = yes; then
5015     ENABLE_SYMBOLS_FOR=all
5016     AC_MSG_RESULT([yes])
5017 elif test "$enable_symbols" = no; then
5018     ENABLE_SYMBOLS_FOR=
5019     AC_MSG_RESULT([no])
5020 else
5021     # Selective debuginfo.
5022     ENABLE_SYMBOLS_FOR="$enable_symbols"
5023     AC_MSG_RESULT([for "$enable_symbols"])
5025 AC_SUBST(ENABLE_SYMBOLS_FOR)
5027 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5028     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5029     AC_MSG_CHECKING([whether enough memory is available for linking])
5030     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5031     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5032     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5033         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5034     else
5035         AC_MSG_RESULT([yes])
5036     fi
5039 ENABLE_OPTIMIZED=
5040 ENABLE_OPTIMIZED_DEBUG=
5041 AC_MSG_CHECKING([whether to compile with optimization flags])
5042 if test -z "$enable_optimized"; then
5043     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5044         enable_optimized=no
5045     else
5046         enable_optimized=yes
5047     fi
5049 if test "$enable_optimized" = yes; then
5050     ENABLE_OPTIMIZED=TRUE
5051     AC_MSG_RESULT([yes])
5052 elif test "$enable_optimized" = debug; then
5053     ENABLE_OPTIMIZED_DEBUG=TRUE
5054     AC_MSG_RESULT([yes (debug)])
5055     HAVE_GCC_OG=
5056     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5057         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5058         save_CFLAGS=$CFLAGS
5059         CFLAGS="$CFLAGS -Werror -Og"
5060         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5061         CFLAGS=$save_CFLAGS
5062         if test "$HAVE_GCC_OG" = "TRUE"; then
5063             AC_MSG_RESULT([yes])
5064         else
5065             AC_MSG_RESULT([no])
5066         fi
5067     fi
5068     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5069         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5070     fi
5071 else
5072     AC_MSG_RESULT([no])
5074 AC_SUBST(ENABLE_OPTIMIZED)
5075 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5078 # determine CPUNAME, OS, ...
5080 case "$host_os" in
5082 cygwin*|wsl*)
5083     # Already handled
5084     ;;
5086 darwin*)
5087     COM=GCC
5088     OS=MACOSX
5089     RTL_OS=MacOSX
5090     P_SEP=:
5092     case "$host_cpu" in
5093     aarch64|arm64)
5094         if test "$enable_ios_simulator" = "yes"; then
5095             OS=iOS
5096         else
5097             CPUNAME=AARCH64
5098             RTL_ARCH=AARCH64
5099             PLATFORMID=macosx_aarch64
5100         fi
5101         ;;
5102     x86_64)
5103         if test "$enable_ios_simulator" = "yes"; then
5104             OS=iOS
5105         fi
5106         CPUNAME=X86_64
5107         RTL_ARCH=X86_64
5108         PLATFORMID=macosx_x86_64
5109         ;;
5110     *)
5111         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5112         ;;
5113     esac
5114     ;;
5116 ios*)
5117     COM=GCC
5118     OS=iOS
5119     RTL_OS=iOS
5120     P_SEP=:
5122     case "$host_cpu" in
5123     aarch64|arm64)
5124         if test "$enable_ios_simulator" = "yes"; then
5125             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5126         fi
5127         ;;
5128     *)
5129         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5130         ;;
5131     esac
5132     CPUNAME=AARCH64
5133     RTL_ARCH=AARCH64
5134     PLATFORMID=ios_arm64
5135     ;;
5137 dragonfly*)
5138     COM=GCC
5139     OS=DRAGONFLY
5140     RTL_OS=DragonFly
5141     P_SEP=:
5143     case "$host_cpu" in
5144     i*86)
5145         CPUNAME=INTEL
5146         RTL_ARCH=x86
5147         PLATFORMID=dragonfly_x86
5148         ;;
5149     x86_64)
5150         CPUNAME=X86_64
5151         RTL_ARCH=X86_64
5152         PLATFORMID=dragonfly_x86_64
5153         ;;
5154     *)
5155         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5156         ;;
5157     esac
5158     ;;
5160 freebsd*)
5161     COM=GCC
5162     RTL_OS=FreeBSD
5163     OS=FREEBSD
5164     P_SEP=:
5166     case "$host_cpu" in
5167     aarch64)
5168         CPUNAME=AARCH64
5169         PLATFORMID=freebsd_aarch64
5170         RTL_ARCH=AARCH64
5171         ;;
5172     i*86)
5173         CPUNAME=INTEL
5174         RTL_ARCH=x86
5175         PLATFORMID=freebsd_x86
5176         ;;
5177     x86_64|amd64)
5178         CPUNAME=X86_64
5179         RTL_ARCH=X86_64
5180         PLATFORMID=freebsd_x86_64
5181         ;;
5182     powerpc64)
5183         CPUNAME=POWERPC64
5184         RTL_ARCH=PowerPC_64
5185         PLATFORMID=freebsd_powerpc64
5186         ;;
5187     powerpc|powerpcspe)
5188         CPUNAME=POWERPC
5189         RTL_ARCH=PowerPC
5190         PLATFORMID=freebsd_powerpc
5191         ;;
5192     *)
5193         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5194         ;;
5195     esac
5196     ;;
5198 haiku*)
5199     COM=GCC
5200     GUIBASE=haiku
5201     RTL_OS=Haiku
5202     OS=HAIKU
5203     P_SEP=:
5205     case "$host_cpu" in
5206     i*86)
5207         CPUNAME=INTEL
5208         RTL_ARCH=x86
5209         PLATFORMID=haiku_x86
5210         ;;
5211     x86_64|amd64)
5212         CPUNAME=X86_64
5213         RTL_ARCH=X86_64
5214         PLATFORMID=haiku_x86_64
5215         ;;
5216     *)
5217         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5218         ;;
5219     esac
5220     ;;
5222 kfreebsd*)
5223     COM=GCC
5224     OS=LINUX
5225     RTL_OS=kFreeBSD
5226     P_SEP=:
5228     case "$host_cpu" in
5230     i*86)
5231         CPUNAME=INTEL
5232         RTL_ARCH=x86
5233         PLATFORMID=kfreebsd_x86
5234         ;;
5235     x86_64)
5236         CPUNAME=X86_64
5237         RTL_ARCH=X86_64
5238         PLATFORMID=kfreebsd_x86_64
5239         ;;
5240     *)
5241         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5242         ;;
5243     esac
5244     ;;
5246 linux-gnu*|linux-musl*)
5247     COM=GCC
5248     OS=LINUX
5249     RTL_OS=Linux
5250     P_SEP=:
5252     case "$host_cpu" in
5254     aarch64)
5255         CPUNAME=AARCH64
5256         PLATFORMID=linux_aarch64
5257         RTL_ARCH=AARCH64
5258         EPM_FLAGS="-a arm64"
5259         ;;
5260     alpha)
5261         CPUNAME=AXP
5262         RTL_ARCH=ALPHA
5263         PLATFORMID=linux_alpha
5264         ;;
5265     arm*)
5266         CPUNAME=ARM
5267         EPM_FLAGS="-a arm"
5268         RTL_ARCH=ARM_EABI
5269         PLATFORMID=linux_arm_eabi
5270         case "$host_cpu" in
5271         arm*-linux)
5272             RTL_ARCH=ARM_OABI
5273             PLATFORMID=linux_arm_oabi
5274             ;;
5275         esac
5276         ;;
5277     hppa)
5278         CPUNAME=HPPA
5279         RTL_ARCH=HPPA
5280         EPM_FLAGS="-a hppa"
5281         PLATFORMID=linux_hppa
5282         ;;
5283     i*86)
5284         CPUNAME=INTEL
5285         RTL_ARCH=x86
5286         PLATFORMID=linux_x86
5287         ;;
5288     ia64)
5289         CPUNAME=IA64
5290         RTL_ARCH=IA64
5291         PLATFORMID=linux_ia64
5292         ;;
5293     mips)
5294         CPUNAME=MIPS
5295         RTL_ARCH=MIPS_EB
5296         EPM_FLAGS="-a mips"
5297         PLATFORMID=linux_mips_eb
5298         ;;
5299     mips64)
5300         CPUNAME=MIPS64
5301         RTL_ARCH=MIPS64_EB
5302         EPM_FLAGS="-a mips64"
5303         PLATFORMID=linux_mips64_eb
5304         ;;
5305     mips64el)
5306         CPUNAME=MIPS64
5307         RTL_ARCH=MIPS64_EL
5308         EPM_FLAGS="-a mips64el"
5309         PLATFORMID=linux_mips64_el
5310         ;;
5311     mipsel)
5312         CPUNAME=MIPS
5313         RTL_ARCH=MIPS_EL
5314         EPM_FLAGS="-a mipsel"
5315         PLATFORMID=linux_mips_el
5316         ;;
5317     riscv64)
5318         CPUNAME=RISCV64
5319         RTL_ARCH=RISCV64
5320         EPM_FLAGS="-a riscv64"
5321         PLATFORMID=linux_riscv64
5322         ;;
5323     m68k)
5324         CPUNAME=M68K
5325         RTL_ARCH=M68K
5326         PLATFORMID=linux_m68k
5327         ;;
5328     powerpc)
5329         CPUNAME=POWERPC
5330         RTL_ARCH=PowerPC
5331         PLATFORMID=linux_powerpc
5332         ;;
5333     powerpc64)
5334         CPUNAME=POWERPC64
5335         RTL_ARCH=PowerPC_64
5336         PLATFORMID=linux_powerpc64
5337         ;;
5338     powerpc64le)
5339         CPUNAME=POWERPC64
5340         RTL_ARCH=PowerPC_64_LE
5341         PLATFORMID=linux_powerpc64_le
5342         ;;
5343     sparc)
5344         CPUNAME=SPARC
5345         RTL_ARCH=SPARC
5346         PLATFORMID=linux_sparc
5347         ;;
5348     sparc64)
5349         CPUNAME=SPARC64
5350         RTL_ARCH=SPARC64
5351         PLATFORMID=linux_sparc64
5352         ;;
5353     s390x)
5354         CPUNAME=S390X
5355         RTL_ARCH=S390x
5356         PLATFORMID=linux_s390x
5357         ;;
5358     x86_64)
5359         CPUNAME=X86_64
5360         RTL_ARCH=X86_64
5361         PLATFORMID=linux_x86_64
5362         ;;
5363     loongarch64)
5364         CPUNAME=LOONGARCH64
5365         RTL_ARCH=LOONGARCH64
5366         PLATFORMID=linux_loongarch64
5367         ;;
5368     *)
5369         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5370         ;;
5371     esac
5372     ;;
5374 linux-android*)
5375     COM=GCC
5376     OS=ANDROID
5377     RTL_OS=Android
5378     P_SEP=:
5380     case "$host_cpu" in
5382     arm|armel)
5383         CPUNAME=ARM
5384         RTL_ARCH=ARM_EABI
5385         PLATFORMID=android_arm_eabi
5386         ;;
5387     aarch64)
5388         CPUNAME=AARCH64
5389         RTL_ARCH=AARCH64
5390         PLATFORMID=android_aarch64
5391         ;;
5392     i*86)
5393         CPUNAME=INTEL
5394         RTL_ARCH=x86
5395         PLATFORMID=android_x86
5396         ;;
5397     x86_64)
5398         CPUNAME=X86_64
5399         RTL_ARCH=X86_64
5400         PLATFORMID=android_x86_64
5401         ;;
5402     *)
5403         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5404         ;;
5405     esac
5406     ;;
5408 *netbsd*)
5409     COM=GCC
5410     OS=NETBSD
5411     RTL_OS=NetBSD
5412     P_SEP=:
5414     case "$host_cpu" in
5415     i*86)
5416         CPUNAME=INTEL
5417         RTL_ARCH=x86
5418         PLATFORMID=netbsd_x86
5419         ;;
5420     powerpc)
5421         CPUNAME=POWERPC
5422         RTL_ARCH=PowerPC
5423         PLATFORMID=netbsd_powerpc
5424         ;;
5425     sparc)
5426         CPUNAME=SPARC
5427         RTL_ARCH=SPARC
5428         PLATFORMID=netbsd_sparc
5429         ;;
5430     x86_64)
5431         CPUNAME=X86_64
5432         RTL_ARCH=X86_64
5433         PLATFORMID=netbsd_x86_64
5434         ;;
5435     *)
5436         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5437         ;;
5438     esac
5439     ;;
5441 openbsd*)
5442     COM=GCC
5443     OS=OPENBSD
5444     RTL_OS=OpenBSD
5445     P_SEP=:
5447     case "$host_cpu" in
5448     i*86)
5449         CPUNAME=INTEL
5450         RTL_ARCH=x86
5451         PLATFORMID=openbsd_x86
5452         ;;
5453     x86_64)
5454         CPUNAME=X86_64
5455         RTL_ARCH=X86_64
5456         PLATFORMID=openbsd_x86_64
5457         ;;
5458     *)
5459         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5460         ;;
5461     esac
5462     SOLARINC="$SOLARINC -I/usr/local/include"
5463     ;;
5465 solaris*)
5466     COM=GCC
5467     OS=SOLARIS
5468     RTL_OS=Solaris
5469     P_SEP=:
5471     case "$host_cpu" in
5472     i*86)
5473         CPUNAME=INTEL
5474         RTL_ARCH=x86
5475         PLATFORMID=solaris_x86
5476         ;;
5477     sparc)
5478         CPUNAME=SPARC
5479         RTL_ARCH=SPARC
5480         PLATFORMID=solaris_sparc
5481         ;;
5482     sparc64)
5483         CPUNAME=SPARC64
5484         RTL_ARCH=SPARC64
5485         PLATFORMID=solaris_sparc64
5486         ;;
5487     *)
5488         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5489         ;;
5490     esac
5491     SOLARINC="$SOLARINC -I/usr/local/include"
5492     ;;
5494 emscripten*)
5495     COM=GCC
5496     OS=EMSCRIPTEN
5497     RTL_OS=Emscripten
5498     P_SEP=:
5500     case "$host_cpu" in
5501     wasm32|wasm64)
5502         ;;
5503     *)
5504         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5505         ;;
5506     esac
5507     CPUNAME=INTEL
5508     RTL_ARCH=x86
5509     PLATFORMID=linux_x86
5510     ;;
5513     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5514     ;;
5515 esac
5517 DISABLE_GUI=""
5518 if test "$enable_gui" = "no"; then
5519     if test "$using_x11" != yes; then
5520         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5521     fi
5522     USING_X11=
5523     DISABLE_GUI=TRUE
5524     test_epoxy=no
5525 else
5526     AC_DEFINE(HAVE_FEATURE_UI)
5528 AC_SUBST(DISABLE_GUI)
5530 if test "$with_x" = "no"; then
5531     USING_X11=
5534 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5535     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5538 if test "$using_x11" = yes; then
5539     if test "$USING_X11" = TRUE; then
5540         AC_DEFINE(USING_X11)
5541     else
5542         disable_x11_tests
5543         if test "$DISABLE_DYNLOADING" = TRUE; then
5544             test_qt5=yes
5545             test_qt6=yes
5546         fi
5547     fi
5548 else
5549     if test "$USING_X11" = TRUE; then
5550         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5551     fi
5554 WORKDIR="${BUILDDIR}/workdir"
5555 INSTDIR="${BUILDDIR}/instdir"
5556 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5557 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5558 AC_SUBST(COM)
5559 AC_SUBST(CPUNAME)
5560 AC_SUBST(RTL_OS)
5561 AC_SUBST(RTL_ARCH)
5562 AC_SUBST(EPM_FLAGS)
5563 AC_SUBST(USING_X11)
5564 AC_SUBST([INSTDIR])
5565 AC_SUBST([INSTROOT])
5566 AC_SUBST([INSTROOTBASE])
5567 AC_SUBST(OS)
5568 AC_SUBST(P_SEP)
5569 AC_SUBST(WORKDIR)
5570 AC_SUBST(PLATFORMID)
5571 AC_SUBST(WINDOWS_X64)
5572 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5573 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5575 if test "$OS" = WNT -a "$COM" = MSC; then
5576     case "$CPUNAME" in
5577     INTEL) CPPU_ENV=msci ;;
5578     X86_64) CPPU_ENV=mscx ;;
5579     AARCH64) CPPU_ENV=msca ;;
5580     *)
5581         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5582         ;;
5583     esac
5584 else
5585     CPPU_ENV=gcc3
5587 AC_SUBST(CPPU_ENV)
5589 dnl ===================================================================
5590 dnl Test which package format to use
5591 dnl ===================================================================
5592 AC_MSG_CHECKING([which package format to use])
5593 if test -n "$with_package_format" -a "$with_package_format" != no; then
5594     for i in $with_package_format; do
5595         case "$i" in
5596         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5597             ;;
5598         *)
5599             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5600 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5601 deb - Debian software distribution
5602 pkg - Solaris software distribution
5603 rpm - RedHat software distribution
5605 LibreOffice additionally supports:
5606 archive - .tar.gz or .zip
5607 dmg - macOS .dmg
5608 installed - installation tree
5609 msi - Windows .msi
5610         ])
5611             ;;
5612         esac
5613     done
5614     # fakeroot is needed to ensure correct file ownerships/permissions
5615     # inside deb packages and tar archives created on Linux and Solaris.
5616     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5617         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5618         if test "$FAKEROOT" = "no"; then
5619             AC_MSG_ERROR(
5620                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5621         fi
5622     fi
5623     PKGFORMAT="$with_package_format"
5624     AC_MSG_RESULT([$PKGFORMAT])
5625 else
5626     PKGFORMAT=
5627     AC_MSG_RESULT([none])
5629 AC_SUBST(PKGFORMAT)
5631 dnl ===================================================================
5632 dnl handle help related options
5634 dnl If you change help related options, please update README.help
5635 dnl ===================================================================
5637 ENABLE_HTMLHELP=
5638 HELP_OMINDEX_PAGE=
5639 HELP_ONLINE=
5640 WITH_HELPPACKS=
5642 AC_MSG_CHECKING([which help to build])
5643 if test -n "$with_help" -a "$with_help" != "no"; then
5644     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5645     BUILD_TYPE="$BUILD_TYPE HELP"
5646     case "$with_help" in
5647     "html")
5648         ENABLE_HTMLHELP=TRUE
5649         WITH_HELPPACKS=TRUE
5650         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5651         AC_MSG_RESULT([HTML (local)])
5652         ;;
5653     "online")
5654         ENABLE_HTMLHELP=TRUE
5655         HELP_ONLINE=TRUE
5656         AC_MSG_RESULT([HTML (online)])
5657         ;;
5658     yes)
5659         WITH_HELPPACKS=TRUE
5660         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5661         AC_MSG_RESULT([XML (local)])
5662         ;;
5663     *)
5664         AC_MSG_ERROR([Unknown --with-help=$with_help])
5665         ;;
5666     esac
5667 else
5668     AC_MSG_RESULT([no])
5671 AC_MSG_CHECKING([if we need to build the help index tooling])
5672 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5673     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5674     test_clucene=yes
5675     AC_MSG_RESULT([yes])
5676 else
5677     AC_MSG_RESULT([no])
5680 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5681 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5682     if test "$HELP_ONLINE" != TRUE; then
5683         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5684     fi
5685     case "$with_omindex" in
5686     "server")
5687         HELP_OMINDEX_PAGE=TRUE
5688         AC_MSG_RESULT([SERVER])
5689         ;;
5690     "noxap")
5691         AC_MSG_RESULT([NOXAP])
5692         ;;
5693     *)
5694         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5695         ;;
5696     esac
5697 else
5698     AC_MSG_RESULT([no])
5701 AC_MSG_CHECKING([whether to include the XML-help support])
5702 if test "$enable_xmlhelp" = yes; then
5703     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5704     test_clucene=yes
5705     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5706     AC_MSG_RESULT([yes])
5707 else
5708     if test "$with_help" = yes; then
5709         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5710     fi
5711     AC_MSG_RESULT([no])
5714 dnl Test whether to integrate helppacks into the product's installer
5715 AC_MSG_CHECKING([for helppack integration])
5716 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5717     AC_MSG_RESULT([no integration])
5718 else
5719     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5720     AC_MSG_RESULT([integration])
5723 AC_SUBST([ENABLE_HTMLHELP])
5724 AC_SUBST([HELP_OMINDEX_PAGE])
5725 AC_SUBST([HELP_ONLINE])
5726 # WITH_HELPPACKS is used only in configure
5728 dnl ===================================================================
5729 dnl Set up a different compiler to produce tools to run on the build
5730 dnl machine when doing cross-compilation
5731 dnl ===================================================================
5733 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5734 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5735 if test "$cross_compiling" = "yes"; then
5736     AC_MSG_CHECKING([for BUILD platform configuration])
5737     echo
5738     rm -rf CONF-FOR-BUILD config_build.mk
5739     mkdir CONF-FOR-BUILD
5740     # Here must be listed all files needed when running the configure script. In particular, also
5741     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5742     # keep them in the same order as there.
5743     (cd $SRC_ROOT && tar cf - \
5744         config.guess \
5745         bin/get_config_variables \
5746         solenv/bin/getcompver.awk \
5747         solenv/inc/langlist.mk \
5748         download.lst \
5749         config_host.mk.in \
5750         config_host_lang.mk.in \
5751         Makefile.in \
5752         bin/bffvalidator.sh.in \
5753         bin/odfvalidator.sh.in \
5754         bin/officeotron.sh.in \
5755         instsetoo_native/util/openoffice.lst.in \
5756         config_host/*.in \
5757         sysui/desktop/macosx/Info.plist.in \
5758         sysui/desktop/macosx/hardened_runtime.xcent.in \
5759         sysui/desktop/macosx/lo.xcent.in \
5760         .vscode/vs-code-template.code-workspace.in \
5761         solenv/lockfile/autoconf.h.in \
5762         ) \
5763     | (cd CONF-FOR-BUILD && tar xf -)
5764     cp configure CONF-FOR-BUILD
5765     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5766     (
5767     unset COM USING_X11 OS CPUNAME
5768     unset CC CXX SYSBASE CFLAGS
5769     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5770     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5771     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5772     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5773     if test -n "$CC_FOR_BUILD"; then
5774         export CC="$CC_FOR_BUILD"
5775         CC_BASE=`first_arg_basename "$CC"`
5776     fi
5777     if test -n "$CXX_FOR_BUILD"; then
5778         export CXX="$CXX_FOR_BUILD"
5779         CXX_BASE=`first_arg_basename "$CXX"`
5780     fi
5781     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5782     cd CONF-FOR-BUILD
5784     # Handle host configuration, which affects the cross-toolset too
5785     sub_conf_opts=""
5786     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5787     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5788     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5789     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5790     if test -n "$ENABLE_JAVA"; then
5791         case "$_os" in
5792         Android)
5793             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5794             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5795             ;;
5796         *)
5797             if test -z "$with_jdk_home"; then
5798                 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.])
5799             fi
5800             ;;
5801         esac
5802     else
5803         sub_conf_opts="$sub_conf_opts --without-java"
5804     fi
5805     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5806     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5807     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5808     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5809     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5810     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5811     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5812     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5813     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5814     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5815     if test "$_os" = "Emscripten"; then
5816         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5817         if test "${with_main_module+set}" = set; then
5818             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5819         else
5820             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5821         fi
5822     fi
5823     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5824     # when cross-compiling for aarch64, overriding the defaults below
5825     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5827     # Don't bother having configure look for stuff not needed for the build platform anyway
5828     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5829     sub_conf_defaults=" \
5830         --build="$build_alias" \
5831         --disable-cairo-canvas \
5832         --disable-cups \
5833         --disable-customtarget-components \
5834         --disable-firebird-sdbc \
5835         --disable-gpgmepp \
5836         --disable-gstreamer-1-0 \
5837         --disable-gtk3 \
5838         --disable-gtk4 \
5839         --disable-libcmis \
5840         --disable-mariadb-sdbc \
5841         --disable-nss \
5842         --disable-online-update \
5843         --disable-opencl \
5844         --disable-openssl \
5845         --disable-pdfimport \
5846         --disable-postgresql-sdbc \
5847         --disable-skia \
5848         --disable-xmlhelp \
5849         --enable-dynamic-loading \
5850         --enable-icecream="$enable_icecream" \
5851         --without-doxygen \
5852         --without-tls \
5853         --without-webdav \
5854         --without-x \
5856     # single quotes added for better readability in case of spaces
5857     echo "    Running CONF-FOR-BUILD/configure" \
5858         $sub_conf_defaults \
5859         --with-parallelism="'$with_parallelism'" \
5860         --with-theme="'$with_theme'" \
5861         --with-vendor="'$with_vendor'" \
5862         $sub_conf_opts \
5863         $with_build_platform_configure_options \
5864         --srcdir=$srcdir
5866     ./configure \
5867         $sub_conf_defaults \
5868         --with-parallelism="$with_parallelism" \
5869         --with-theme="$with_theme" \
5870         "--with-vendor=$with_vendor" \
5871         $sub_conf_opts \
5872         $with_build_platform_configure_options \
5873         --srcdir=$srcdir \
5874         2>&1 | sed -e 's/^/    /'
5875     if test [${PIPESTATUS[0]}] -ne 0; then
5876         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5877     fi
5879     # filter permitted build targets
5880     PERMITTED_BUILD_TARGETS="
5881         ARGON2
5882         AVMEDIA
5883         BOOST
5884         BZIP2
5885         CAIRO
5886         CLUCENE
5887         CURL
5888         DBCONNECTIVITY
5889         DESKTOP
5890         DRAGONBOX
5891         DYNLOADING
5892         EPOXY
5893         EXPAT
5894         FROZEN
5895         GLM
5896         GRAPHITE
5897         HARFBUZZ
5898         HELPTOOLS
5899         ICU
5900         LCMS2
5901         LIBJPEG_TURBO
5902         LIBLANGTAG
5903         LibO
5904         LIBFFI
5905         LIBPN
5906         LIBTIFF
5907         LIBWEBP
5908         LIBXML2
5909         LIBXSLT
5910         MDDS
5911         NATIVE
5912         OPENSSL
5913         ORCUS
5914         PYTHON
5915         REPORTBUILDER
5916         SCRIPTING
5917         ZLIB
5918         ZXCVBN
5920     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5921     # newlined lists, to use grep as a filter
5922     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5923     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5924     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5925     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5927     cp config_host.mk ../config_build.mk
5928     cp config_host_lang.mk ../config_build_lang.mk
5929     mv config.log ../config.Build.log
5930     mkdir -p ../config_build
5931     mv config_host/*.h ../config_build
5932     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5934     # all these will get a _FOR_BUILD postfix
5935     DIRECT_FOR_BUILD_SETTINGS="
5936         CC
5937         CPPU_ENV
5938         CXX
5939         ILIB
5940         JAVA_HOME
5941         JAVAIFLAGS
5942         JDK
5943         JDK_SECURITYMANAGER_DISALLOWED
5944         LIBO_BIN_FOLDER
5945         LIBO_LIB_FOLDER
5946         LIBO_URE_LIB_FOLDER
5947         LIBO_URE_MISC_FOLDER
5948         OS
5949         SDKDIRNAME
5950         SYSTEM_LIBXML
5951         SYSTEM_LIBXSLT
5953     # these overwrite host config with build config
5954     OVERWRITING_SETTINGS="
5955         ANT
5956         ANT_HOME
5957         ANT_LIB
5958         JAVA_SOURCE_VER
5959         JAVA_TARGET_VER
5960         JAVACFLAGS
5961         JAVACOMPILER
5962         JAVADOC
5963         JAVADOCISGJDOC
5964         LOCKFILE
5965         SYSTEM_GENBRK
5966         SYSTEM_GENCCODE
5967         SYSTEM_GENCMN
5969     # these need some special handling
5970     EXTRA_HANDLED_SETTINGS="
5971         INSTDIR
5972         INSTROOT
5973         PATH
5974         WORKDIR
5976     OLD_PATH=$PATH
5977     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5978     BUILD_PATH=$PATH
5979     PATH=$OLD_PATH
5981     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5982     echo "$line" >>build-config
5984     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5985         VV='$'$V
5986         VV=`eval "echo $VV"`
5987         if test -n "$VV"; then
5988             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5989             echo "$line" >>build-config
5990         fi
5991     done
5993     for V in $OVERWRITING_SETTINGS; do
5994         VV='$'$V
5995         VV=`eval "echo $VV"`
5996         if test -n "$VV"; then
5997             line=${V}='${'${V}:-$VV'}'
5998             echo "$line" >>build-config
5999         fi
6000     done
6002     for V in INSTDIR INSTROOT WORKDIR; do
6003         VV='$'$V
6004         VV=`eval "echo $VV"`
6005         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6006         if test -n "$VV"; then
6007             line="${V}_FOR_BUILD='$VV'"
6008             echo "$line" >>build-config
6009         fi
6010     done
6012     )
6013     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6014     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])
6015     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6016              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6018     eval `cat CONF-FOR-BUILD/build-config`
6020     AC_MSG_RESULT([checking for BUILD platform configuration... done])
6022     rm -rf CONF-FOR-BUILD
6023 else
6024     OS_FOR_BUILD="$OS"
6025     CC_FOR_BUILD="$CC"
6026     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6027     CXX_FOR_BUILD="$CXX"
6028     INSTDIR_FOR_BUILD="$INSTDIR"
6029     INSTROOT_FOR_BUILD="$INSTROOT"
6030     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6031     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6032     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6033     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6034     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6035     WORKDIR_FOR_BUILD="$WORKDIR"
6037 AC_SUBST(OS_FOR_BUILD)
6038 AC_SUBST(INSTDIR_FOR_BUILD)
6039 AC_SUBST(INSTROOT_FOR_BUILD)
6040 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6041 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6042 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6043 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6044 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6045 AC_SUBST(WORKDIR_FOR_BUILD)
6046 AC_SUBST(CC_FOR_BUILD)
6047 AC_SUBST(CXX_FOR_BUILD)
6048 AC_SUBST(CPPU_ENV_FOR_BUILD)
6050 dnl ===================================================================
6051 dnl Check for lockfile deps
6052 dnl ===================================================================
6053 if test -z "$CROSS_COMPILING"; then
6054     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6055     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6056     AC_MSG_CHECKING([which lockfile binary to use])
6057     case "$with_system_lockfile" in
6058     yes)
6059         AC_MSG_RESULT([external])
6060         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6061         ;;
6062     no)
6063         AC_MSG_RESULT([internal])
6064         ;;
6065     *)
6066         if test -x "$with_system_lockfile"; then
6067             LOCKFILE="$with_system_lockfile"
6068         else
6069             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6070         fi
6071         AC_MSG_RESULT([$with_system_lockfile])
6072         ;;
6073     esac
6076 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6077     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6080 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6081 AC_CHECK_FUNCS([utime utimes])
6082 AC_SUBST(LOCKFILE)
6084 dnl ===================================================================
6085 dnl Check for syslog header
6086 dnl ===================================================================
6087 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6089 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6090 dnl ===================================================================
6091 AC_MSG_CHECKING([whether to turn warnings to errors])
6092 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6093     ENABLE_WERROR="TRUE"
6094     PYTHONWARNINGS="error"
6095     AC_MSG_RESULT([yes])
6096 else
6097     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6098         ENABLE_WERROR="TRUE"
6099         PYTHONWARNINGS="error"
6100         AC_MSG_RESULT([yes])
6101     else
6102         AC_MSG_RESULT([no])
6103     fi
6105 AC_SUBST(ENABLE_WERROR)
6106 AC_SUBST(PYTHONWARNINGS)
6108 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6109 dnl ===================================================================
6110 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6111 if test -z "$enable_assert_always_abort"; then
6112    if test "$ENABLE_DEBUG" = TRUE; then
6113        enable_assert_always_abort=yes
6114    else
6115        enable_assert_always_abort=no
6116    fi
6118 if test "$enable_assert_always_abort" = "yes"; then
6119     ASSERT_ALWAYS_ABORT="TRUE"
6120     AC_MSG_RESULT([yes])
6121 else
6122     ASSERT_ALWAYS_ABORT="FALSE"
6123     AC_MSG_RESULT([no])
6125 AC_SUBST(ASSERT_ALWAYS_ABORT)
6127 # Determine whether to use ooenv for the instdir installation
6128 # ===================================================================
6129 if test $_os != "WINNT" -a $_os != "Darwin"; then
6130     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6131     if test -z "$enable_ooenv"; then
6132         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6133             enable_ooenv=yes
6134         else
6135             enable_ooenv=no
6136         fi
6137     fi
6138     if test "$enable_ooenv" = "no"; then
6139         AC_MSG_RESULT([no])
6140     else
6141         ENABLE_OOENV="TRUE"
6142         AC_MSG_RESULT([yes])
6143     fi
6145 AC_SUBST(ENABLE_OOENV)
6147 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6148     if test "$enable_qt5" = "no"; then
6149         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6150     else
6151         enable_qt5=yes
6152     fi
6155 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6156     if test "$enable_qt6" = "no"; then
6157         AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6158     else
6159         enable_qt6=yes
6160     fi
6164 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6165 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6166     AC_MSG_RESULT([yes])
6167     ENABLE_PAGEIN=TRUE
6168     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6169 else
6170     AC_MSG_RESULT([no])
6172 AC_SUBST(ENABLE_PAGEIN)
6174 dnl ===================================================================
6175 dnl check for cups support
6176 dnl ===================================================================
6178 AC_MSG_CHECKING([whether to enable CUPS support])
6179 if test "$test_cups" = yes -a "$enable_cups" != no; then
6180     ENABLE_CUPS=TRUE
6181     AC_MSG_RESULT([yes])
6183     AC_MSG_CHECKING([whether cups support is present])
6184     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6185     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6186     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6187         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6188     fi
6189 else
6190     AC_MSG_RESULT([no])
6193 AC_SUBST(ENABLE_CUPS)
6195 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6197 dnl whether to find & fetch external tarballs?
6198 dnl ===================================================================
6199 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6200    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6201        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6202    else
6203        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6204    fi
6206 if test -z "$TARFILE_LOCATION"; then
6207     if test -d "$SRC_ROOT/src" ; then
6208         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6209         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6210     fi
6211     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6212 else
6213     AbsolutePath "$TARFILE_LOCATION"
6214     PathFormat "${absolute_path}"
6215     TARFILE_LOCATION="${formatted_path_unix}"
6217 AC_SUBST(TARFILE_LOCATION)
6219 AC_MSG_CHECKING([whether we want to fetch tarballs])
6220 if test "$enable_fetch_external" != "no"; then
6221     if test "$with_all_tarballs" = "yes"; then
6222         AC_MSG_RESULT([yes, all of them])
6223         DO_FETCH_TARBALLS="ALL"
6224     else
6225         AC_MSG_RESULT([yes, if we use them])
6226         DO_FETCH_TARBALLS="TRUE"
6227     fi
6228 else
6229     AC_MSG_RESULT([no])
6230     DO_FETCH_TARBALLS=
6232 AC_SUBST(DO_FETCH_TARBALLS)
6234 dnl Test whether to include MySpell dictionaries
6235 dnl ===================================================================
6236 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6237 if test "$with_myspell_dicts" = "yes"; then
6238     AC_MSG_RESULT([yes])
6239     WITH_MYSPELL_DICTS=TRUE
6240     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6241     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6242 else
6243     AC_MSG_RESULT([no])
6244     WITH_MYSPELL_DICTS=
6246 AC_SUBST(WITH_MYSPELL_DICTS)
6248 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6249 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6250     if test "$with_system_dicts" = yes; then
6251         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6252     fi
6253     with_system_dicts=no
6256 AC_MSG_CHECKING([whether to use dicts from external paths])
6257 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6258     AC_MSG_RESULT([yes])
6259     SYSTEM_DICTS=TRUE
6260     AC_MSG_CHECKING([for spelling dictionary directory])
6261     if test -n "$with_external_dict_dir"; then
6262         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6263     else
6264         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6265         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6266             DICT_SYSTEM_DIR=file:///usr/share/myspell
6267         fi
6268     fi
6269     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6270     AC_MSG_CHECKING([for hyphenation patterns directory])
6271     if test -n "$with_external_hyph_dir"; then
6272         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6273     else
6274         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6275     fi
6276     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6277     AC_MSG_CHECKING([for thesaurus directory])
6278     if test -n "$with_external_thes_dir"; then
6279         THES_SYSTEM_DIR=file://$with_external_thes_dir
6280     else
6281         THES_SYSTEM_DIR=file:///usr/share/mythes
6282     fi
6283     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6284 else
6285     AC_MSG_RESULT([no])
6286     SYSTEM_DICTS=
6288 AC_SUBST(SYSTEM_DICTS)
6289 AC_SUBST(DICT_SYSTEM_DIR)
6290 AC_SUBST(HYPH_SYSTEM_DIR)
6291 AC_SUBST(THES_SYSTEM_DIR)
6293 dnl ===================================================================
6294 dnl Precompiled headers.
6295 ENABLE_PCH=""
6296 AC_MSG_CHECKING([whether to enable pch feature])
6297 if test -z "$enable_pch"; then
6298     if test "$_os" = "WINNT"; then
6299         # Enabled by default on Windows.
6300         enable_pch=yes
6301         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6302         if test -z "$enable_ccache" -a "$SCCACHE"; then
6303             CCACHE=""
6304         fi
6305     else
6306         enable_pch=no
6307     fi
6309 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6310     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6312 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6313     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6315 if test "$enable_pch" = "system"; then
6316     ENABLE_PCH="1"
6317     AC_MSG_RESULT([yes (system headers)])
6318 elif test "$enable_pch" = "base"; then
6319     ENABLE_PCH="2"
6320     AC_MSG_RESULT([yes (system and base headers)])
6321 elif test "$enable_pch" = "normal"; then
6322     ENABLE_PCH="3"
6323     AC_MSG_RESULT([yes (normal)])
6324 elif test "$enable_pch" = "full"; then
6325     ENABLE_PCH="4"
6326     AC_MSG_RESULT([yes (full)])
6327 elif test "$enable_pch" = "yes"; then
6328     # Pick a suitable default.
6329     if test "$GCC" = "yes"; then
6330         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6331         # while making the PCHs larger and rebuilds more likely.
6332         ENABLE_PCH="2"
6333         AC_MSG_RESULT([yes (system and base headers)])
6334     else
6335         # With MSVC the highest level makes a significant difference,
6336         # and it was the default when there used to be no PCH levels.
6337         ENABLE_PCH="4"
6338         AC_MSG_RESULT([yes (full)])
6339     fi
6340 elif test "$enable_pch" = "no"; then
6341     AC_MSG_RESULT([no])
6342 else
6343     AC_MSG_ERROR([Unknown value for --enable-pch])
6345 AC_SUBST(ENABLE_PCH)
6346 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6347 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6348     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6349     if test "$CCACHE_BIN" != "not found"; then
6350         AC_MSG_CHECKING([ccache version])
6351         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6352         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6353         AC_MSG_RESULT([$CCACHE_VERSION])
6354         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6355         if test "$CCACHE_NUMVER" -gt "030701"; then
6356             AC_MSG_RESULT([yes])
6357         else
6358             AC_MSG_RESULT([no (not newer than 3.7.1)])
6359             CCACHE_DEPEND_MODE=
6360         fi
6361     fi
6364 PCH_INSTANTIATE_TEMPLATES=
6365 if test -n "$ENABLE_PCH"; then
6366     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6367     save_CFLAGS=$CFLAGS
6368     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6369     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6370     CFLAGS=$save_CFLAGS
6371     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6372         AC_MSG_RESULT(yes)
6373     else
6374         AC_MSG_RESULT(no)
6375     fi
6377 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6379 BUILDING_PCH_WITH_OBJ=
6380 if test -n "$ENABLE_PCH"; then
6381     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6382     save_CFLAGS=$CFLAGS
6383     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6384     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6385     CFLAGS=$save_CFLAGS
6386     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6387         AC_MSG_RESULT(yes)
6388     else
6389         AC_MSG_RESULT(no)
6390     fi
6392 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6394 PCH_CODEGEN=
6395 PCH_NO_CODEGEN=
6396 fpch_prefix=
6397 if test "$COM" = MSC; then
6398     fpch_prefix="-Xclang "
6400 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6401     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6402     save_CFLAGS=$CFLAGS
6403     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6404     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6405         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6406     CFLAGS=$save_CFLAGS
6407     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6408     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6409         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6410     CFLAGS=$save_CFLAGS
6411     if test -n "$PCH_CODEGEN"; then
6412         AC_MSG_RESULT(yes)
6413     else
6414         AC_MSG_RESULT(no)
6415     fi
6417 AC_SUBST(PCH_CODEGEN)
6418 AC_SUBST(PCH_NO_CODEGEN)
6419 PCH_DEBUGINFO=
6420 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6421     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6422     save_CFLAGS=$CFLAGS
6423     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6424     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6425     CFLAGS=$save_CFLAGS
6426     if test -n "$PCH_DEBUGINFO"; then
6427         AC_MSG_RESULT(yes)
6428     else
6429         AC_MSG_RESULT(no)
6430     fi
6432 AC_SUBST(PCH_DEBUGINFO)
6434 TAB=`printf '\t'`
6436 AC_MSG_CHECKING([the GNU Make version])
6437 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6438 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6439 if test "$_make_longver" -ge "040000"; then
6440     AC_MSG_RESULT([$GNUMAKE $_make_version])
6441 else
6442     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6445 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6446 STALE_MAKE=
6447 if test "$_make_ver_check" = ""; then
6448    STALE_MAKE=TRUE
6451 HAVE_LD_HASH_STYLE=FALSE
6452 WITH_LINKER_HASH_STYLE=
6453 AC_MSG_CHECKING([for --hash-style gcc linker support])
6454 if test "$GCC" = "yes"; then
6455     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6456         hash_styles="gnu sysv"
6457     elif test "$with_linker_hash_style" = "no"; then
6458         hash_styles=
6459     else
6460         hash_styles="$with_linker_hash_style"
6461     fi
6463     for hash_style in $hash_styles; do
6464         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6465         hash_style_ldflags_save=$LDFLAGS
6466         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6468         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6469             [
6470 #include <stdio.h>
6471             ],[
6472 printf ("");
6473             ])],
6474             [
6475                   HAVE_LD_HASH_STYLE=TRUE
6476                   WITH_LINKER_HASH_STYLE=$hash_style
6477             ],
6478             [HAVE_LD_HASH_STYLE=FALSE],
6479             [HAVE_LD_HASH_STYLE=FALSE])
6480         LDFLAGS=$hash_style_ldflags_save
6481     done
6483     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6484         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6485     else
6486         AC_MSG_RESULT( no )
6487     fi
6488     LDFLAGS=$hash_style_ldflags_save
6489 else
6490     AC_MSG_RESULT( no )
6492 AC_SUBST(HAVE_LD_HASH_STYLE)
6493 AC_SUBST(WITH_LINKER_HASH_STYLE)
6495 dnl ===================================================================
6496 dnl Check whether there's a Perl version available.
6497 dnl ===================================================================
6498 if test -z "$with_perl_home"; then
6499     AC_PATH_PROG(PERL, perl)
6500 else
6501     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6502     _perl_path="$with_perl_home/bin/perl"
6503     if test -x "$_perl_path"; then
6504         PERL=$_perl_path
6505     else
6506         AC_MSG_ERROR([$_perl_path not found])
6507     fi
6510 dnl ===================================================================
6511 dnl Testing for Perl version 5 or greater.
6512 dnl $] is the Perl version variable, it is returned as an integer
6513 dnl ===================================================================
6514 if test "$PERL"; then
6515     AC_MSG_CHECKING([the Perl version])
6516     ${PERL} -e "exit($]);"
6517     _perl_version=$?
6518     if test "$_perl_version" -lt 5; then
6519         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6520     fi
6521     AC_MSG_RESULT([Perl $_perl_version])
6522 else
6523     AC_MSG_ERROR([Perl not found, install Perl 5])
6526 dnl ===================================================================
6527 dnl Testing for required Perl modules
6528 dnl ===================================================================
6530 AC_MSG_CHECKING([for required Perl modules])
6531 perl_use_string="use Cwd ; use Digest::MD5"
6532 if test "$_os" = "WINNT"; then
6533     if test -n "$PKGFORMAT"; then
6534         for i in $PKGFORMAT; do
6535             case "$i" in
6536             msi)
6537                 # for getting fonts versions to use in MSI
6538                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6539                 ;;
6540             esac
6541         done
6542     fi
6544 if test "$with_system_hsqldb" = "yes"; then
6545     perl_use_string="$perl_use_string ; use Archive::Zip"
6547 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6548     # OpenSSL needs that to build
6549     perl_use_string="$perl_use_string ; use FindBin"
6551 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6552     AC_MSG_RESULT([all modules found])
6553 else
6554     AC_MSG_RESULT([failed to find some modules])
6555     # Find out which modules are missing.
6556     for i in $perl_use_string; do
6557         if test "$i" != "use" -a "$i" != ";"; then
6558             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6559                 missing_perl_modules="$missing_perl_modules $i"
6560             fi
6561         fi
6562     done
6563     AC_MSG_ERROR([
6564     The missing Perl modules are: $missing_perl_modules
6565     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6568 dnl ===================================================================
6569 dnl Check for pkg-config
6570 dnl ===================================================================
6571 if test "$_os" != "WINNT"; then
6572     PKG_PROG_PKG_CONFIG
6574 AC_SUBST(PKG_CONFIG)
6575 AC_SUBST(PKG_CONFIG_PATH)
6576 AC_SUBST(PKG_CONFIG_LIBDIR)
6578 if test "$_os" != "WINNT"; then
6580     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6581     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6582     # explicitly. Or put /path/to/compiler in PATH yourself.
6584     toolprefix=gcc
6585     if test "$COM_IS_CLANG" = "TRUE"; then
6586         toolprefix=llvm
6587     fi
6588     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6589     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6590     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6591     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6592     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6593     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6595 AC_SUBST(AR)
6596 AC_SUBST(NM)
6597 AC_SUBST(OBJDUMP)
6598 AC_SUBST(RANLIB)
6599 AC_SUBST(READELF)
6600 AC_SUBST(STRIP)
6602 dnl ===================================================================
6603 dnl pkg-config checks on macOS
6604 dnl ===================================================================
6606 if test $_os = Darwin; then
6607     AC_MSG_CHECKING([for bogus pkg-config])
6608     if test -n "$PKG_CONFIG"; then
6609         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6610             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6611         else
6612             if test "$enable_bogus_pkg_config" = "yes"; then
6613                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6614             else
6615                 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.])
6616             fi
6617         fi
6618     else
6619         AC_MSG_RESULT([no, good])
6620     fi
6623 find_csc()
6625     # Return value: $csctest
6627     unset csctest
6629     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6630     if test -n "$regvalue"; then
6631         csctest=$regvalue
6632         return
6633     fi
6636 find_al()
6638     # Return value: $altest
6640     unset altest
6642     # We need this check to detect 4.6.1 or above.
6643     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6644         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6645         PathFormat "$regvalue"
6646         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6647             altest=$regvalue
6648             return
6649         fi
6650     done
6652     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6653     for x in $reglist; do
6654         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6655         PathFormat "$regvalue"
6656         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6657             altest=$regvalue
6658             return
6659         fi
6660     done
6663 find_dotnetsdk()
6665     unset frametest
6667     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
6668         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6669         if test -n "$regvalue"; then
6670             frametest=$regvalue
6671             return
6672         fi
6673     done
6674     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6677 find_winsdk_version()
6679     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6680     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6682     unset winsdktest winsdkbinsubdir winsdklibsubdir
6684     case "$1" in
6685     8.0|8.0A)
6686         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6687         if test -n "$regvalue"; then
6688             winsdktest=$regvalue
6689             winsdklibsubdir=win8
6690             return
6691         fi
6692         ;;
6693     8.1|8.1A)
6694         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6695         if test -n "$regvalue"; then
6696             winsdktest=$regvalue
6697             winsdklibsubdir=winv6.3
6698             return
6699         fi
6700         ;;
6701     10.0)
6702         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6703         if test -n "$regvalue"; then
6704             winsdktest=$regvalue
6705             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6706             if test -n "$regvalue"; then
6707                 winsdkbinsubdir="$regvalue".0
6708                 winsdklibsubdir=$winsdkbinsubdir
6709                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6710                 local tmppath_unix=$(cygpath -u "$tmppath")
6711                 # test exist the SDK path
6712                 if test -d "$tmppath_unix"; then
6713                    # when path is convertible to a short path then path is okay
6714                    cygpath -d "$tmppath" >/dev/null 2>&1
6715                    if test $? -ne 0; then
6716                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6717                    fi
6718                 else
6719                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6720                 fi
6721             fi
6722             return
6723         fi
6724         ;;
6725     esac
6728 find_winsdk()
6730     # Return value: From find_winsdk_version
6732     unset winsdktest
6734     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6735         find_winsdk_version $ver
6736         if test -n "$winsdktest"; then
6737             return
6738         fi
6739     done
6742 find_msms()
6744     # Return value: $msmdir
6745     local version="$1"
6747     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6748     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6749     local my_msm_dir
6751     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6753     msmdir=
6754     case "$VCVER" in
6755     16.0 | 17.0 | 17.9)
6756         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6757             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6758             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6759             if test -e "$my_msm_dir${my_msm_file}"; then
6760                 msmdir=$my_msm_dir
6761             fi
6762         done
6763         ;;
6764     esac
6766     if test -n "$msmdir"; then
6767         msmdir=`cygpath -m "$msmdir"`
6768         AC_MSG_RESULT([$msmdir])
6769     else
6770         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6771             AC_MSG_FAILURE([not found])
6772         else
6773             AC_MSG_WARN([not found (check config.log)])
6774             add_warning "MSM ${my_msm_file} not found"
6775         fi
6776     fi
6779 find_msvc_x64_dlls()
6781     # Return value: $msvcdllpath, $msvcdlls
6783     AC_MSG_CHECKING([for MSVC x64 DLL path])
6785     dnl Order crtver in increasing order. Then check the directories returned by
6786     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6787     dnl the result will be the highest CRT version found in the highest directory.
6789     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6790     case "$VCVER" in
6791     16.0 | 17.0 | 17.9)
6792         for crtver in 141 142 143; do
6793             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6794                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6795                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6796                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6797                 fi
6798             done
6799         done
6800         ;;
6801     esac
6802     AC_MSG_RESULT([$msvcdllpath])
6803     AC_MSG_CHECKING([for MSVC x64 DLLs])
6804     msvcdlls="msvcp140.dll vcruntime140.dll"
6805     for dll in $msvcdlls; do
6806         if ! test -f "$msvcdllpath/$dll"; then
6807             AC_MSG_FAILURE([missing $dll])
6808         fi
6809     done
6810     AC_MSG_RESULT([found all ($msvcdlls)])
6813 dnl =========================================
6814 dnl Check for the Windows  SDK.
6815 dnl =========================================
6816 if test "$_os" = "WINNT"; then
6817     AC_MSG_CHECKING([for Windows SDK])
6818     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6819         find_winsdk
6820         WINDOWS_SDK_HOME=$winsdktest
6822         # normalize if found
6823         if test -n "$WINDOWS_SDK_HOME"; then
6824             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6825             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6826         fi
6828         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6829     fi
6831     if test -n "$WINDOWS_SDK_HOME"; then
6832         # Remove a possible trailing backslash
6833         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6835         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6836              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6837              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6838             have_windows_sdk_headers=yes
6839         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6840              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6841              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6842             have_windows_sdk_headers=yes
6843         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6844              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6845              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6846             have_windows_sdk_headers=yes
6847         else
6848             have_windows_sdk_headers=no
6849         fi
6851         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6852             have_windows_sdk_libs=yes
6853         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6854             have_windows_sdk_libs=yes
6855         else
6856             have_windows_sdk_libs=no
6857         fi
6859         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6860             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6861 the  Windows SDK are installed.])
6862         fi
6863     fi
6865     if test -z "$WINDOWS_SDK_HOME"; then
6866         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6867     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6868         WINDOWS_SDK_VERSION=80
6869         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6870     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6871         WINDOWS_SDK_VERSION=81
6872         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6873     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6874         WINDOWS_SDK_VERSION=10
6875         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6876     else
6877         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6878     fi
6879     PathFormat "$WINDOWS_SDK_HOME"
6880     WINDOWS_SDK_HOME="$formatted_path"
6881     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6882     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6883         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6884         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6885             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6886         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6887             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6888         fi
6889     fi
6891     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6892     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6893     dnl but not in v8.0), so allow this to be overridden with a
6894     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6895     dnl and configuration error if no WiLangId.vbs is found would arguably be
6896     dnl better, but I do not know under which conditions exactly it is needed by
6897     dnl msiglobal.pm:
6898     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6899         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6900         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6901         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6902             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6903             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6904         fi
6905         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6906             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6907             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6908         fi
6909         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6910             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6911             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6912         fi
6913     fi
6914     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6915         if test -n "$with_package_format" -a "$with_package_format" != no; then
6916             for i in "$with_package_format"; do
6917                 if test "$i" = "msi"; then
6918                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6919                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6920                     fi
6921                 fi
6922             done
6923         fi
6924     fi
6926 AC_SUBST(WINDOWS_SDK_HOME)
6927 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6928 AC_SUBST(WINDOWS_SDK_VERSION)
6929 AC_SUBST(WINDOWS_SDK_WILANGID)
6931 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6932     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6933     dnl dir, it also determines that dir's path w/o an arch segment if any,
6934     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6935     AC_MSG_CHECKING([for midl.exe])
6937     find_winsdk
6938     PathFormat "$winsdktest"
6939     winsdktest_unix="$formatted_path_unix"
6941     if test -n "$winsdkbinsubdir" \
6942         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6943     then
6944         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6945         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6946     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6947         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6948         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6949     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6950         MIDL_PATH=$winsdktest/Bin
6951         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6952     fi
6953     PathFormat "$MIDL_PATH"
6954     if test ! -f "$formatted_path_unix/midl.exe"; then
6955         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6956     else
6957         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6958     fi
6960     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6961     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6963     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6964          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6965          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6966          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6967     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6968          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6969          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6970          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6971     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6972          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6973          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6974          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6975     else
6976         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6977     fi
6979     dnl Check csc.exe
6980     AC_MSG_CHECKING([for csc.exe])
6981     find_csc
6982     PathFormat "$csctest"
6983     csctest_unix="$formatted_path_unix"
6984     if test -f "$csctest_unix/csc.exe"; then
6985         CSC_PATH="$csctest"
6986     fi
6987     if test ! -f "$csctest_unix/csc.exe"; then
6988         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6989     else
6990         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6991     fi
6993     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6995     dnl Check al.exe
6996     AC_MSG_CHECKING([for al.exe])
6997     if test -n "$winsdkbinsubdir" \
6998         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6999     then
7000         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
7001     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
7002         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7003     elif test -f "$winsdktest_unix/Bin/al.exe"; then
7004         AL_PATH="$winsdktest/Bin"
7005     fi
7007     if test -z "$AL_PATH"; then
7008         find_al
7009         PathFormat "$altest"
7010         altest_unix="$formatted_path_unix"
7011         if test -f "$altest_unix/bin/al.exe"; then
7012             AL_PATH="$altest/bin"
7013         elif test -f "$altest_unix/al.exe"; then
7014             AL_PATH="$altest"
7015         fi
7016     fi
7017     PathFormat "$AL_PATH"
7018     if test ! -f "$formatted_path_unix/al.exe"; then
7019         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7020     else
7021         AC_MSG_RESULT([$AL_PATH/al.exe])
7022     fi
7024     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7026     dnl Check mscoree.lib / .NET Framework dir
7027     AC_MSG_CHECKING(.NET Framework)
7028     find_dotnetsdk
7029     PathFormat "$frametest"
7030     frametest="$formatted_path_unix"
7031     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7032         DOTNET_FRAMEWORK_HOME="$frametest"
7033     else
7034         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7035             DOTNET_FRAMEWORK_HOME="$winsdktest"
7036         fi
7037     fi
7038     PathFormat "$DOTNET_FRAMEWORK_HOME"
7039     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
7040         AC_MSG_ERROR([mscoree.lib not found])
7041     fi
7042     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7044     PathFormat "$MIDL_PATH"
7045     MIDL_PATH="$formatted_path"
7047     PathFormat "$AL_PATH"
7048     AL_PATH="$formatted_path"
7050     PathFormat "$DOTNET_FRAMEWORK_HOME"
7051     DOTNET_FRAMEWORK_HOME="$formatted_path"
7053     PathFormat "$CSC_PATH"
7054     CSC_PATH="$formatted_path"
7057 dnl ===================================================================
7058 dnl Testing for C++ compiler and version...
7059 dnl ===================================================================
7061 if test "$_os" != "WINNT"; then
7062     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7063     save_CXXFLAGS=$CXXFLAGS
7064     AC_PROG_CXX
7065     CXXFLAGS=$save_CXXFLAGS
7066     if test -z "$CXX_BASE"; then
7067         CXX_BASE=`first_arg_basename "$CXX"`
7068     fi
7071 dnl check for GNU C++ compiler version
7072 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7073     AC_MSG_CHECKING([the GNU C++ compiler version])
7075     _gpp_version=`$CXX -dumpversion`
7076     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7078     if test "$_gpp_majmin" -lt "700"; then
7079         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7080     else
7081         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7082     fi
7084     dnl see https://issuetracker.google.com/issues/36962819
7085         glibcxx_threads=no
7086         AC_LANG_PUSH([C++])
7087         AC_REQUIRE_CPP
7088         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7089         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7090             #include <bits/c++config.h>]],[[
7091             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7092             && !defined(_GLIBCXX__PTHREADS) \
7093             && !defined(_GLIBCXX_HAS_GTHREADS)
7094             choke me
7095             #endif
7096         ]])],[AC_MSG_RESULT([yes])
7097         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7098         AC_LANG_POP([C++])
7099         if test $glibcxx_threads = yes; then
7100             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7101         fi
7103 AC_SUBST(BOOST_CXXFLAGS)
7106 # prefx CXX with ccache if needed
7108 if test "$CCACHE" != ""; then
7109     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7110     AC_LANG_PUSH([C++])
7111     save_CXXFLAGS=$CXXFLAGS
7112     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7113     # msvc does not fail on unknown options, check stdout
7114     if test "$COM" = MSC; then
7115         CXXFLAGS="$CXXFLAGS -nologo"
7116     fi
7117     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7118     ac_cxx_werror_flag=yes
7119     dnl an empty program will do, we're checking the compiler flags
7120     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7121                       [use_ccache=yes], [use_ccache=no])
7122     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7123         AC_MSG_RESULT([yes])
7124     else
7125         CXX="$CCACHE $CXX"
7126         CXX_BASE="ccache $CXX_BASE"
7127         AC_MSG_RESULT([no])
7128     fi
7129     CXXFLAGS=$save_CXXFLAGS
7130     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7131     AC_LANG_POP([C++])
7134 dnl ===================================================================
7135 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7136 dnl ===================================================================
7138 if test "$_os" != "WINNT"; then
7139     AC_PROG_CXXCPP
7141     dnl Check whether there's a C pre-processor.
7142     AC_PROG_CPP
7146 dnl ===================================================================
7147 dnl Find integral type sizes and alignments
7148 dnl ===================================================================
7150 if test "$_os" != "WINNT"; then
7152     AC_CHECK_SIZEOF(long)
7153     AC_CHECK_SIZEOF(short)
7154     AC_CHECK_SIZEOF(int)
7155     AC_CHECK_SIZEOF(long long)
7156     AC_CHECK_SIZEOF(double)
7157     AC_CHECK_SIZEOF(void*)
7158     AC_CHECK_SIZEOF(size_t)
7160     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7161     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7162     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7163     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7164     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7165     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7167     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7168     m4_pattern_allow([AC_CHECK_ALIGNOF])
7169     m4_ifdef([AC_CHECK_ALIGNOF],
7170         [
7171             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7172             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7173             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7174             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7175         ],
7176         [
7177             case "$_os-$host_cpu" in
7178             Linux-i686)
7179                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7180                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7181                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7182                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7183                 ;;
7184             Linux-x86_64)
7185                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7186                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7187                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7188                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7189                 ;;
7190             *)
7191                 if test -z "$ac_cv_alignof_short" -o \
7192                         -z "$ac_cv_alignof_int" -o \
7193                         -z "$ac_cv_alignof_long" -o \
7194                         -z "$ac_cv_alignof_double"; then
7195                    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.])
7196                 fi
7197                 ;;
7198             esac
7199         ])
7201     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7202     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7203     if test $ac_cv_sizeof_long -eq 8; then
7204         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7205     elif test $ac_cv_sizeof_double -eq 8; then
7206         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7207     else
7208         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7209     fi
7211     dnl Check for large file support
7212     AC_SYS_LARGEFILE
7213     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7214         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7215     fi
7216     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7217         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7218     fi
7219 else
7220     # Hardcode for MSVC
7221     SAL_TYPES_SIZEOFSHORT=2
7222     SAL_TYPES_SIZEOFINT=4
7223     SAL_TYPES_SIZEOFLONG=4
7224     SAL_TYPES_SIZEOFLONGLONG=8
7225     if test $WIN_HOST_BITS -eq 32; then
7226         SAL_TYPES_SIZEOFPOINTER=4
7227         SIZEOF_SIZE_T=4
7228     else
7229         SAL_TYPES_SIZEOFPOINTER=8
7230         SIZEOF_SIZE_T=8
7231     fi
7232     SAL_TYPES_ALIGNMENT2=2
7233     SAL_TYPES_ALIGNMENT4=4
7234     SAL_TYPES_ALIGNMENT8=8
7235     LFS_CFLAGS=''
7237 AC_SUBST(LFS_CFLAGS)
7238 AC_SUBST(SIZEOF_SIZE_T)
7240 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7241 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7242 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7243 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7244 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7245 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7246 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7247 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7249 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7250 AC_MSG_CHECKING([whether jumbo sheets are supported])
7251 if test "$_os" != "WINNT"; then
7252     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7253         AC_MSG_RESULT([yes])
7254         ENABLE_JUMBO_SHEETS=TRUE
7255         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7256     else
7257         AC_MSG_RESULT([no])
7258     fi
7259 else
7260     if test $WIN_HOST_BITS -gt 32; then
7261         # 64bit windows is special-cased for tools::Long because long is 32bit
7262         AC_MSG_RESULT([yes])
7263         ENABLE_JUMBO_SHEETS=TRUE
7264         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7265     else
7266         AC_MSG_RESULT([no])
7267     fi
7269 AC_SUBST(ENABLE_JUMBO_SHEETS)
7271 dnl ===================================================================
7272 dnl Check whether to enable runtime optimizations
7273 dnl ===================================================================
7274 ENABLE_RUNTIME_OPTIMIZATIONS=
7275 AC_MSG_CHECKING([whether to enable runtime optimizations])
7276 if test -z "$enable_runtime_optimizations"; then
7277     for i in $CC; do
7278         case $i in
7279         -fsanitize=*)
7280             enable_runtime_optimizations=no
7281             break
7282             ;;
7283         esac
7284     done
7286 if test "$enable_runtime_optimizations" != no; then
7287     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7288     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7289     AC_MSG_RESULT([yes])
7290 else
7291     AC_MSG_RESULT([no])
7293 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7295 dnl ===================================================================
7296 dnl Check if valgrind headers are available
7297 dnl ===================================================================
7298 ENABLE_VALGRIND=
7299 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7300     prev_cppflags=$CPPFLAGS
7301     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7302     # or where does it come from?
7303     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7304     AC_CHECK_HEADER([valgrind/valgrind.h],
7305         [ENABLE_VALGRIND=TRUE])
7306     CPPFLAGS=$prev_cppflags
7308 AC_SUBST([ENABLE_VALGRIND])
7309 if test -z "$ENABLE_VALGRIND"; then
7310     if test "$with_valgrind" = yes; then
7311         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7312     fi
7313     VALGRIND_CFLAGS=
7315 AC_SUBST([VALGRIND_CFLAGS])
7318 dnl ===================================================================
7319 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7320 dnl ===================================================================
7322 # We need at least the sys/sdt.h include header.
7323 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7324 if test "$SDT_H_FOUND" = "TRUE"; then
7325     # Found sys/sdt.h header, now make sure the c++ compiler works.
7326     # Old g++ versions had problems with probes in constructors/destructors.
7327     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7328     AC_LANG_PUSH([C++])
7329     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7330     #include <sys/sdt.h>
7331     class ProbeClass
7332     {
7333     private:
7334       int& ref;
7335       const char *name;
7337     public:
7338       ProbeClass(int& v, const char *n) : ref(v), name(n)
7339       {
7340         DTRACE_PROBE2(_test_, cons, name, ref);
7341       }
7343       void method(int min)
7344       {
7345         DTRACE_PROBE3(_test_, meth, name, ref, min);
7346         ref -= min;
7347       }
7349       ~ProbeClass()
7350       {
7351         DTRACE_PROBE2(_test_, dest, name, ref);
7352       }
7353     };
7354     ]],[[
7355     int i = 64;
7356     DTRACE_PROBE1(_test_, call, i);
7357     ProbeClass inst = ProbeClass(i, "call");
7358     inst.method(24);
7359     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7360           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7361     AC_LANG_POP([C++])
7363 AC_CONFIG_HEADERS([config_host/config_probes.h])
7365 dnl ===================================================================
7366 dnl GCC features
7367 dnl ===================================================================
7368 HAVE_GCC_STACK_CLASH_PROTECTION=
7369 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7370     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7371     save_CFLAGS=$CFLAGS
7372     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7373     AC_LINK_IFELSE(
7374         [AC_LANG_PROGRAM(, [[return 0;]])],
7375         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7376         [AC_MSG_RESULT([no])])
7377     CFLAGS=$save_CFLAGS
7379     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7380     save_CFLAGS=$CFLAGS
7381     CFLAGS="$CFLAGS -Werror -mno-avx"
7382     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7383     CFLAGS=$save_CFLAGS
7384     if test "$HAVE_GCC_AVX" = "TRUE"; then
7385         AC_MSG_RESULT([yes])
7386     else
7387         AC_MSG_RESULT([no])
7388     fi
7390     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7391     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7392     int v = 0;
7393     if (__sync_add_and_fetch(&v, 1) != 1 ||
7394         __sync_sub_and_fetch(&v, 1) != 0)
7395         return 1;
7396     __sync_synchronize();
7397     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7398         v != 1)
7399         return 1;
7400     return 0;
7401 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7402     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7403         AC_MSG_RESULT([yes])
7404         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7405     else
7406         AC_MSG_RESULT([no])
7407     fi
7409     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7410     AC_LANG_PUSH([C++])
7411     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7412             #include <cstddef>
7413             #include <cxxabi.h>
7414             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7415         ])], [
7416             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7417             AC_MSG_RESULT([yes])
7418         ], [AC_MSG_RESULT([no])])
7419     AC_LANG_POP([C++])
7421     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7422     AC_LANG_PUSH([C++])
7423     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7424             #include <cstddef>
7425             #include <cxxabi.h>
7426             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7427         ])], [
7428             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7429             AC_MSG_RESULT([yes])
7430         ], [AC_MSG_RESULT([no])])
7431     AC_LANG_POP([C++])
7433     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7434     AC_LANG_PUSH([C++])
7435     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7436             #include <cxxabi.h>
7437             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7438         ])], [
7439             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7440             AC_MSG_RESULT([yes])
7441         ], [AC_MSG_RESULT([no])])
7442     AC_LANG_POP([C++])
7444     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7445     AC_LANG_PUSH([C++])
7446     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7447             #include <cstddef>
7448             #include <cxxabi.h>
7449             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7450         ])], [
7451             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7452             AC_MSG_RESULT([yes])
7453         ], [AC_MSG_RESULT([no])])
7454     AC_LANG_POP([C++])
7456     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7457     AC_LANG_PUSH([C++])
7458     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7459             #include <cstddef>
7460             #include <cxxabi.h>
7461             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7462         ])], [
7463             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7464             AC_MSG_RESULT([yes])
7465         ], [AC_MSG_RESULT([no])])
7466     AC_LANG_POP([C++])
7468     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7469     AC_LANG_PUSH([C++])
7470     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7471             #include <cxxabi.h>
7472             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7473         ])], [
7474             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7475             AC_MSG_RESULT([yes])
7476         ], [AC_MSG_RESULT([no])])
7477     AC_LANG_POP([C++])
7479     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7480     AC_LANG_PUSH([C++])
7481     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7482             #include <cxxabi.h>
7483             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7484         ])], [
7485             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7486             AC_MSG_RESULT([yes])
7487         ], [AC_MSG_RESULT([no])])
7488     AC_LANG_POP([C++])
7490     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7491     AC_LANG_PUSH([C++])
7492     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7493             #include <cxxabi.h>
7494             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7495         ])], [
7496             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7497             AC_MSG_RESULT([yes])
7498         ], [AC_MSG_RESULT([no])])
7499     AC_LANG_POP([C++])
7501     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7502     AC_LANG_PUSH([C++])
7503     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7504             #include <cstddef>
7505             #include <cxxabi.h>
7506             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7507         ])], [
7508             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7509             AC_MSG_RESULT([yes])
7510         ], [AC_MSG_RESULT([no])])
7511     AC_LANG_POP([C++])
7513     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7514     AC_LANG_PUSH([C++])
7515     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7516             #include <cstddef>
7517             #include <cxxabi.h>
7518             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7519         ])], [
7520             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7521             AC_MSG_RESULT([yes])
7522         ], [AC_MSG_RESULT([no])])
7523     AC_LANG_POP([C++])
7526 AC_SUBST(HAVE_GCC_AVX)
7527 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7528 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7530 dnl ===================================================================
7531 dnl Identify the C++ library
7532 dnl ===================================================================
7534 AC_MSG_CHECKING([what the C++ library is])
7535 HAVE_LIBSTDCPP=
7536 HAVE_LIBCPP=
7537 AC_LANG_PUSH([C++])
7538 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7539 #include <utility>
7540 #ifndef __GLIBCXX__
7541 foo bar
7542 #endif
7543 ]])],
7544     [CPP_LIBRARY=GLIBCXX
7545      cpp_library_name="GNU libstdc++"
7546      HAVE_LIBSTDCPP=TRUE
7547     ],
7548     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7549 #include <utility>
7550 #ifndef _LIBCPP_VERSION
7551 foo bar
7552 #endif
7553 ]])],
7554     [CPP_LIBRARY=LIBCPP
7555      cpp_library_name="LLVM libc++"
7556      AC_DEFINE([HAVE_LIBCPP])
7557      HAVE_LIBCPP=TRUE
7558     ],
7559     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7560 #include <utility>
7561 #ifndef _MSC_VER
7562 foo bar
7563 #endif
7564 ]])],
7565     [CPP_LIBRARY=MSVCRT
7566      cpp_library_name="Microsoft"
7567     ],
7568     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7569 AC_MSG_RESULT([$cpp_library_name])
7570 AC_LANG_POP([C++])
7571 AC_SUBST([HAVE_LIBSTDCPP])
7572 AC_SUBST([HAVE_LIBCPP])
7574 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7575 then
7576     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7577     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7578     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7579     # although there will be backwards compatibility).
7580     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7581     # and there would be undefined references to debug functions.
7582     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7583     # So check if debug mode can be used and disable or downgrade it to assertions
7584     # if needed.
7585     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7586     AC_LANG_PUSH([C++])
7587     libcpp_debug_links=
7588     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7589 #define _LIBCPP_DEBUG 0 // only assertions
7590 #include <vector>
7591 int main()
7593     std::vector<int> v;
7594     v.push_back( 1 );
7595     return v[ 3 ];
7597 ]])], [libcpp_debug_links=1])
7598     if test -n "$libcpp_debug_links"; then
7599         # we can use at least assertions, check if debug mode works
7600         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7601 #define _LIBCPP_DEBUG 1 // debug mode
7602 #include <string>
7603 #include <vector>
7604 int foo(const std::vector<int>& v) { return *v.begin(); }
7605 int main()
7607     std::vector<int> v;
7608     v.push_back( 1 );
7609     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7610     return (foo(v) + s.size()) != 0 ? 0 : 1;
7612 ]])],
7613         [AC_MSG_RESULT(yes)
7614          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7615         ],
7616         [AC_MSG_RESULT(no, using only assertions)
7617          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7618         ]
7619         )
7620     else
7621         AC_MSG_RESULT(no)
7622     fi
7623     AC_LANG_POP([C++])
7625 AC_SUBST([LIBCPP_DEBUG])
7627 dnl ===================================================================
7628 dnl Check for gperf
7629 dnl ===================================================================
7630 AC_PATH_PROG(GPERF, gperf)
7631 if test -z "$GPERF"; then
7632     AC_MSG_ERROR([gperf not found but needed. Install it.])
7634 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7635     GPERF=`cygpath -m $GPERF`
7637 AC_MSG_CHECKING([whether gperf is new enough])
7638 my_gperf_ver1=$($GPERF --version | head -n 1)
7639 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7640 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7641 if test "$my_gperf_ver3" -ge 301; then
7642     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7643 else
7644     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7646 AC_SUBST(GPERF)
7648 dnl ===================================================================
7649 dnl Check for system libcmis
7650 dnl ===================================================================
7651 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7653 dnl ===================================================================
7654 dnl C++11
7655 dnl ===================================================================
7657 if test -z "${CXXFLAGS_CXX11+x}"; then
7658     AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7659     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7660         if test "$with_latest_c__" = yes; then
7661             CXXFLAGS_CXX11=-std:c++latest
7662         else
7663             CXXFLAGS_CXX11=-std:c++20
7664         fi
7665         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7666     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7667         my_flags='-std=c++20 -std=c++2a'
7668         if test "$with_latest_c__" = yes; then
7669             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7670         fi
7671         for flag in $my_flags; do
7672             if test "$COM" = MSC; then
7673                 flag="-Xclang $flag"
7674             fi
7675             save_CXXFLAGS=$CXXFLAGS
7676             CXXFLAGS="$CXXFLAGS $flag -Werror"
7677             AC_LANG_PUSH([C++])
7678             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7679                 #include <algorithm>
7680                 #include <functional>
7681                 #include <vector>
7683                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7684                     std::sort(v.begin(), v.end(), fn);
7685                 }
7686                 ]])],[CXXFLAGS_CXX11=$flag])
7687             AC_LANG_POP([C++])
7688             CXXFLAGS=$save_CXXFLAGS
7689             if test -n "$CXXFLAGS_CXX11"; then
7690                 break
7691             fi
7692         done
7693     fi
7694     if test -n "$CXXFLAGS_CXX11"; then
7695         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7696     else
7697         AC_MSG_ERROR(no)
7698     fi
7700 AC_SUBST(CXXFLAGS_CXX11)
7702 if test "$GCC" = "yes"; then
7703     save_CXXFLAGS=$CXXFLAGS
7704     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7705     CHECK_L_ATOMIC
7706     CXXFLAGS=$save_CXXFLAGS
7707     AC_SUBST(ATOMIC_LIB)
7710 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7711 save_CXXFLAGS=$CXXFLAGS
7712 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7713 AC_LANG_PUSH([C++])
7715 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7716 #include <stddef.h>
7718 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7720 namespace
7722         struct b
7723         {
7724                 int i;
7725                 int j;
7726         };
7728 ]], [[
7729 struct a
7731         int i;
7732         int j;
7734 a thinga[]={{0,0}, {1,1}};
7735 b thingb[]={{0,0}, {1,1}};
7736 size_t i = sizeof(sal_n_array_size(thinga));
7737 size_t j = sizeof(sal_n_array_size(thingb));
7738 return !(i != 0 && j != 0);
7740     ], [ AC_MSG_RESULT(yes) ],
7741     [ AC_MSG_ERROR(no)])
7742 AC_LANG_POP([C++])
7743 CXXFLAGS=$save_CXXFLAGS
7745 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7746 if test "$GCC" = yes; then
7747     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7748     AC_LANG_PUSH([C++])
7749     save_CXXFLAGS=$CXXFLAGS
7750     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7751     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7752     CXXFLAGS=$save_CXXFLAGS
7753     AC_LANG_POP([C++])
7754     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7755         AC_MSG_RESULT([yes])
7756     else
7757         AC_MSG_RESULT([no])
7758     fi
7760 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7762 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7763 AC_LANG_PUSH([C++])
7764 save_CXXFLAGS=$CXXFLAGS
7765 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7766 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7767         #include <algorithm>
7768         #include <initializer_list>
7769         #include <vector>
7770         template<typename T> class S {
7771         private:
7772             std::vector<T> v_;
7773         public:
7774             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7775         };
7776         constinit S<int> s{3, 2, 1};
7777     ])], [
7778         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7779         AC_MSG_RESULT([yes])
7780     ], [AC_MSG_RESULT([no])])
7781 CXXFLAGS=$save_CXXFLAGS
7782 AC_LANG_POP([C++])
7784 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7785 AC_LANG_PUSH([C++])
7786 save_CXXFLAGS=$CXXFLAGS
7787 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7788 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7789         struct S1 { S1(S1 &&); };
7790         struct S2: S1 {};
7791         S1 f(S2 s) { return s; }
7792     ])], [
7793         AC_DEFINE([HAVE_P1155R3],[1])
7794         AC_MSG_RESULT([yes])
7795     ], [AC_MSG_RESULT([no])])
7796 CXXFLAGS=$save_CXXFLAGS
7797 AC_LANG_POP([C++])
7799 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7800 HAVE_CXX20_ATOMIC_REF=
7801 AC_LANG_PUSH([C++])
7802 save_CXXFLAGS=$CXXFLAGS
7803 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7804 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7805         #include <atomic>
7806         int x;
7807         std::atomic_ref<int> y(x);
7808     ])], [
7809         HAVE_CXX20_ATOMIC_REF=TRUE
7810         AC_MSG_RESULT([yes])
7811     ], [AC_MSG_RESULT([no])])
7812 CXXFLAGS=$save_CXXFLAGS
7813 AC_LANG_POP([C++])
7814 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7816 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7817 dnl which is included in -Wextra anyway):
7818 HAVE_WDEPRECATED_COPY_DTOR=
7819 if test "$GCC" = yes; then
7820     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7821     AC_LANG_PUSH([C++])
7822     save_CXXFLAGS=$CXXFLAGS
7823     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7824     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7825             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7826             AC_MSG_RESULT([yes])
7827         ], [AC_MSG_RESULT([no])])
7828     CXXFLAGS=$save_CXXFLAGS
7829     AC_LANG_POP([C++])
7831 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7833 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7834 dnl uninitialized warning for code like
7836 dnl   OString f();
7837 dnl   boost::optional<OString> * g(bool b) {
7838 dnl       boost::optional<OString> o;
7839 dnl       if (b) o = f();
7840 dnl       return new boost::optional<OString>(o);
7841 dnl   }
7843 dnl (as is e.g. present, in a slightly more elaborate form, in
7844 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7845 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7846 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7847 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7848     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7849     AC_LANG_PUSH([C++])
7850     save_CXXFLAGS=$CXXFLAGS
7851     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7852     if test "$ENABLE_OPTIMIZED" = TRUE; then
7853         CXXFLAGS="$CXXFLAGS -O2"
7854     else
7855         CXXFLAGS="$CXXFLAGS -O0"
7856     fi
7857     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7858             #include <new>
7859             void f1(int);
7860             struct S1 {
7861                 ~S1() { f1(n); }
7862                 int n = 0;
7863             };
7864             struct S2 {
7865                 S2() {}
7866                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7867                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7868                 void set(S1 s) {
7869                     new (stg) S1(s);
7870                     init = true;
7871                 }
7872                 bool init = false;
7873                 char stg[sizeof (S1)];
7874             } ;
7875             S1 f2();
7876             S2 * f3(bool b) {
7877                 S2 o;
7878                 if (b) o.set(f2());
7879                 return new S2(o);
7880             }
7881         ]])], [AC_MSG_RESULT([no])], [
7882             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7883             AC_MSG_RESULT([yes])
7884         ])
7885     CXXFLAGS=$save_CXXFLAGS
7886     AC_LANG_POP([C++])
7888 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7890 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7891 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7892 dnl hits us e.g. with GCC 10 and --enable-optimized at
7894 dnl   In file included from include/rtl/string.hxx:49,
7895 dnl                    from include/rtl/ustring.hxx:43,
7896 dnl                    from include/osl/file.hxx:35,
7897 dnl                    from include/codemaker/global.hxx:28,
7898 dnl                    from include/codemaker/options.hxx:23,
7899 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7900 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7901 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,
7902 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,
7903 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,
7904 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7905 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7906 dnl      78 |         memcpy( buffer, data, length );
7907 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7908 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7909 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7910     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7911     AC_LANG_PUSH([C++])
7912     save_CXXFLAGS=$CXXFLAGS
7913     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7914     if test "$ENABLE_OPTIMIZED" = TRUE; then
7915         CXXFLAGS="$CXXFLAGS -O2"
7916     else
7917         CXXFLAGS="$CXXFLAGS -O0"
7918     fi
7919     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7920     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7921             void fill(char const * begin, char const * end, char c);
7922             struct q {
7923                 char ids[4];
7924                 char username[6];
7925             };
7926             void test(q & c) {
7927                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7928                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7929             }
7930         ]])], [AC_MSG_RESULT([no])], [
7931             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7932             AC_MSG_RESULT([yes])
7933         ])
7934     CXXFLAGS=$save_CXXFLAGS
7935     AC_LANG_POP([C++])
7937 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7939 HAVE_DLLEXPORTINLINES=
7940 if test "$_os" = "WINNT"; then
7941     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7942     AC_LANG_PUSH([C++])
7943     save_CXXFLAGS=$CXXFLAGS
7944     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7945     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7946             HAVE_DLLEXPORTINLINES=TRUE
7947             AC_MSG_RESULT([yes])
7948         ], [AC_MSG_RESULT([no])])
7949     CXXFLAGS=$save_CXXFLAGS
7950     AC_LANG_POP([C++])
7952 AC_SUBST([HAVE_DLLEXPORTINLINES])
7954 dnl ===================================================================
7955 dnl CPU Intrinsics support - SSE, AVX
7956 dnl ===================================================================
7958 CXXFLAGS_INTRINSICS_SSE2=
7959 CXXFLAGS_INTRINSICS_SSSE3=
7960 CXXFLAGS_INTRINSICS_SSE41=
7961 CXXFLAGS_INTRINSICS_SSE42=
7962 CXXFLAGS_INTRINSICS_AVX=
7963 CXXFLAGS_INTRINSICS_AVX2=
7964 CXXFLAGS_INTRINSICS_AVX512=
7965 CXXFLAGS_INTRINSICS_AVX512F=
7966 CXXFLAGS_INTRINSICS_F16C=
7967 CXXFLAGS_INTRINSICS_FMA=
7969 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7970     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7971     flag_sse2=-msse2
7972     flag_ssse3=-mssse3
7973     flag_sse41=-msse4.1
7974     flag_sse42=-msse4.2
7975     flag_avx=-mavx
7976     flag_avx2=-mavx2
7977     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7978     flag_avx512f=-mavx512f
7979     flag_f16c=-mf16c
7980     flag_fma=-mfma
7981 else
7982     # With MSVC using -arch is in fact not necessary for being able
7983     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7984     # even if compiled with -arch:AVX, the -arch option really only affects
7985     # instructions generated for C/C++ code.
7986     # So use the matching same (or lower) -arch options, but only in order
7987     # to generate the best matching instructions for the C++ code surrounding
7988     # the intrinsics.
7989     # SSE2 is the default for x86/x64, so no need to specify the option.
7990     flag_sse2=
7991     # No specific options for these, use the next lower.
7992     flag_ssse3="$flag_sse2"
7993     flag_sse41="$flag_sse2"
7994     flag_sse42="$flag_sse2"
7995     flag_avx=-arch:AVX
7996     flag_avx2=-arch:AVX2
7997     flag_avx512=-arch:AVX512
7998     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7999     flag_avx512f=-arch:AVX2
8000     # No MSVC options for these.
8001     flag_f16c="$flag_sse2"
8002     flag_fma="$flag_sse2"
8005 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8006 AC_LANG_PUSH([C++])
8007 save_CXXFLAGS=$CXXFLAGS
8008 CXXFLAGS="$CXXFLAGS $flag_sse2"
8009 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8010     #include <emmintrin.h>
8011     int main () {
8012         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8013         c = _mm_xor_si128 (a, b);
8014         return 0;
8015     }
8016     ])],
8017     [can_compile_sse2=yes],
8018     [can_compile_sse2=no])
8019 AC_LANG_POP([C++])
8020 CXXFLAGS=$save_CXXFLAGS
8021 AC_MSG_RESULT([${can_compile_sse2}])
8022 if test "${can_compile_sse2}" = "yes" ; then
8023     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8026 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8027 AC_LANG_PUSH([C++])
8028 save_CXXFLAGS=$CXXFLAGS
8029 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8030 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8031     #include <tmmintrin.h>
8032     int main () {
8033         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8034         c = _mm_maddubs_epi16 (a, b);
8035         return 0;
8036     }
8037     ])],
8038     [can_compile_ssse3=yes],
8039     [can_compile_ssse3=no])
8040 AC_LANG_POP([C++])
8041 CXXFLAGS=$save_CXXFLAGS
8042 AC_MSG_RESULT([${can_compile_ssse3}])
8043 if test "${can_compile_ssse3}" = "yes" ; then
8044     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8047 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8048 AC_LANG_PUSH([C++])
8049 save_CXXFLAGS=$CXXFLAGS
8050 CXXFLAGS="$CXXFLAGS $flag_sse41"
8051 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8052     #include <smmintrin.h>
8053     int main () {
8054         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8055         c = _mm_cmpeq_epi64 (a, b);
8056         return 0;
8057     }
8058     ])],
8059     [can_compile_sse41=yes],
8060     [can_compile_sse41=no])
8061 AC_LANG_POP([C++])
8062 CXXFLAGS=$save_CXXFLAGS
8063 AC_MSG_RESULT([${can_compile_sse41}])
8064 if test "${can_compile_sse41}" = "yes" ; then
8065     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8068 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8069 AC_LANG_PUSH([C++])
8070 save_CXXFLAGS=$CXXFLAGS
8071 CXXFLAGS="$CXXFLAGS $flag_sse42"
8072 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8073     #include <nmmintrin.h>
8074     int main () {
8075         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8076         c = _mm_cmpgt_epi64 (a, b);
8077         return 0;
8078     }
8079     ])],
8080     [can_compile_sse42=yes],
8081     [can_compile_sse42=no])
8082 AC_LANG_POP([C++])
8083 CXXFLAGS=$save_CXXFLAGS
8084 AC_MSG_RESULT([${can_compile_sse42}])
8085 if test "${can_compile_sse42}" = "yes" ; then
8086     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8089 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8090 AC_LANG_PUSH([C++])
8091 save_CXXFLAGS=$CXXFLAGS
8092 CXXFLAGS="$CXXFLAGS $flag_avx"
8093 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8094     #include <immintrin.h>
8095     int main () {
8096         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8097         c = _mm256_xor_ps(a, b);
8098         return 0;
8099     }
8100     ])],
8101     [can_compile_avx=yes],
8102     [can_compile_avx=no])
8103 AC_LANG_POP([C++])
8104 CXXFLAGS=$save_CXXFLAGS
8105 AC_MSG_RESULT([${can_compile_avx}])
8106 if test "${can_compile_avx}" = "yes" ; then
8107     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8110 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8111 AC_LANG_PUSH([C++])
8112 save_CXXFLAGS=$CXXFLAGS
8113 CXXFLAGS="$CXXFLAGS $flag_avx2"
8114 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8115     #include <immintrin.h>
8116     int main () {
8117         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8118         c = _mm256_maddubs_epi16(a, b);
8119         return 0;
8120     }
8121     ])],
8122     [can_compile_avx2=yes],
8123     [can_compile_avx2=no])
8124 AC_LANG_POP([C++])
8125 CXXFLAGS=$save_CXXFLAGS
8126 AC_MSG_RESULT([${can_compile_avx2}])
8127 if test "${can_compile_avx2}" = "yes" ; then
8128     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8131 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8132 AC_LANG_PUSH([C++])
8133 save_CXXFLAGS=$CXXFLAGS
8134 CXXFLAGS="$CXXFLAGS $flag_avx512"
8135 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8136     #include <immintrin.h>
8137     int main () {
8138         __m512i a = _mm512_loadu_si512(0);
8139         __m512d v1 = _mm512_load_pd(0);
8140         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8141         __m512d v2 = _mm512_abs_pd(v1);
8142         return 0;
8143     }
8144     ])],
8145     [can_compile_avx512=yes],
8146     [can_compile_avx512=no])
8147 AC_LANG_POP([C++])
8148 CXXFLAGS=$save_CXXFLAGS
8149 AC_MSG_RESULT([${can_compile_avx512}])
8150 if test "${can_compile_avx512}" = "yes" ; then
8151     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8152     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8155 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8156 AC_LANG_PUSH([C++])
8157 save_CXXFLAGS=$CXXFLAGS
8158 CXXFLAGS="$CXXFLAGS $flag_f16c"
8159 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8160     #include <immintrin.h>
8161     int main () {
8162         __m128i a = _mm_set1_epi32 (0);
8163         __m128 c;
8164         c = _mm_cvtph_ps(a);
8165         return 0;
8166     }
8167     ])],
8168     [can_compile_f16c=yes],
8169     [can_compile_f16c=no])
8170 AC_LANG_POP([C++])
8171 CXXFLAGS=$save_CXXFLAGS
8172 AC_MSG_RESULT([${can_compile_f16c}])
8173 if test "${can_compile_f16c}" = "yes" ; then
8174     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8177 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8178 AC_LANG_PUSH([C++])
8179 save_CXXFLAGS=$CXXFLAGS
8180 CXXFLAGS="$CXXFLAGS $flag_fma"
8181 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8182     #include <immintrin.h>
8183     int main () {
8184         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8185         d = _mm256_fmadd_ps(a, b, c);
8186         return 0;
8187     }
8188     ])],
8189     [can_compile_fma=yes],
8190     [can_compile_fma=no])
8191 AC_LANG_POP([C++])
8192 CXXFLAGS=$save_CXXFLAGS
8193 AC_MSG_RESULT([${can_compile_fma}])
8194 if test "${can_compile_fma}" = "yes" ; then
8195     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8198 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8199 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8200 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8201 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8202 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8203 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8204 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8205 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8206 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8207 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8209 dnl ===================================================================
8210 dnl system stl sanity tests
8211 dnl ===================================================================
8212 if test "$_os" != "WINNT"; then
8214     AC_LANG_PUSH([C++])
8216     save_CPPFLAGS="$CPPFLAGS"
8217     if test -n "$MACOSX_SDK_PATH"; then
8218         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8219     fi
8221     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8222     # only.
8223     if test "$CPP_LIBRARY" = GLIBCXX; then
8224         dnl gcc#19664, gcc#22482, rhbz#162935
8225         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8226         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8227         AC_MSG_RESULT([$stlvisok])
8228         if test "$stlvisok" = "no"; then
8229             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8230         fi
8231     fi
8233     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8234     # when we don't make any dynamic libraries?
8235     if test "$DISABLE_DYNLOADING" = ""; then
8236         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8237         cat > conftestlib1.cc <<_ACEOF
8238 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8239 struct S2: S1<int> { virtual ~S2(); };
8240 S2::~S2() {}
8241 _ACEOF
8242         cat > conftestlib2.cc <<_ACEOF
8243 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8244 struct S2: S1<int> { virtual ~S2(); };
8245 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8246 _ACEOF
8247         gccvisinlineshiddenok=yes
8248         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8249             gccvisinlineshiddenok=no
8250         else
8251             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8252             dnl known to not work with -z defs (unsetting which makes the test
8253             dnl moot, though):
8254             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8255             if test "$COM_IS_CLANG" = TRUE; then
8256                 for i in $CXX $CXXFLAGS; do
8257                     case $i in
8258                     -fsanitize=*)
8259                         my_linkflagsnoundefs=
8260                         break
8261                         ;;
8262                     esac
8263                 done
8264             fi
8265             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8266                 gccvisinlineshiddenok=no
8267             fi
8268         fi
8270         rm -fr libconftest*
8271         AC_MSG_RESULT([$gccvisinlineshiddenok])
8272         if test "$gccvisinlineshiddenok" = "no"; then
8273             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8274         fi
8275     fi
8277    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8278     cat >visibility.cxx <<_ACEOF
8279 #pragma GCC visibility push(hidden)
8280 struct __attribute__ ((visibility ("default"))) TestStruct {
8281   static void Init();
8283 __attribute__ ((visibility ("default"))) void TestFunc() {
8284   TestStruct::Init();
8286 _ACEOF
8287     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8288         gccvisbroken=yes
8289     else
8290         case "$host_cpu" in
8291         i?86|x86_64)
8292             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8293                 gccvisbroken=no
8294             else
8295                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8296                     gccvisbroken=no
8297                 else
8298                     gccvisbroken=yes
8299                 fi
8300             fi
8301             ;;
8302         *)
8303             gccvisbroken=no
8304             ;;
8305         esac
8306     fi
8307     rm -f visibility.s visibility.cxx
8309     AC_MSG_RESULT([$gccvisbroken])
8310     if test "$gccvisbroken" = "yes"; then
8311         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8312     fi
8314     CPPFLAGS="$save_CPPFLAGS"
8316     AC_MSG_CHECKING([if CET endbranch is recognized])
8317 cat > endbr.s <<_ACEOF
8318 endbr32
8319 _ACEOF
8320     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8321     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8322         AC_MSG_RESULT([yes])
8323         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8324     else
8325         AC_MSG_RESULT([no])
8326     fi
8327     rm -f endbr.s endbr.o
8328     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8330     AC_LANG_POP([C++])
8333 dnl ===================================================================
8334 dnl  Clang++ tests
8335 dnl ===================================================================
8337 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8338 if test "$GCC" = "yes"; then
8339     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8340     AC_LANG_PUSH([C++])
8341     save_CXXFLAGS=$CXXFLAGS
8342     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8343     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8344     CXXFLAGS=$save_CXXFLAGS
8345     AC_LANG_POP([C++])
8346     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8347         AC_MSG_RESULT([yes])
8348     else
8349         AC_MSG_RESULT([no])
8350     fi
8352 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8354 dnl ===================================================================
8355 dnl Compiler plugins
8356 dnl ===================================================================
8358 COMPILER_PLUGINS=
8359 # currently only Clang
8361 if test "$COM_IS_CLANG" != "TRUE"; then
8362     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8363         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8364         enable_compiler_plugins=no
8365     fi
8368 COMPILER_PLUGINS_COM_IS_CLANG=
8369 if test "$COM_IS_CLANG" = "TRUE"; then
8370     if test -n "$enable_compiler_plugins"; then
8371         compiler_plugins="$enable_compiler_plugins"
8372     elif test -n "$ENABLE_DBGUTIL"; then
8373         compiler_plugins=test
8374     else
8375         compiler_plugins=no
8376     fi
8377     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8378         if test "$CLANGVER" -lt 120001; then
8379             if test "$compiler_plugins" = yes; then
8380                 AC_MSG_ERROR(
8381                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8382             else
8383                 compiler_plugins=no
8384             fi
8385         fi
8386     fi
8387     if test "$compiler_plugins" != "no"; then
8388         dnl The prefix where Clang resides, override to where Clang resides if
8389         dnl using a source build:
8390         if test -z "$CLANGDIR"; then
8391             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8392         fi
8393         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8394         if test -z "$COMPILER_PLUGINS_CXX"; then
8395             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8396         fi
8397         clangbindir=$CLANGDIR/bin
8398         if test "$build_os" = "cygwin"; then
8399             clangbindir=$(cygpath -u "$clangbindir")
8400         fi
8401         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8402         if test -n "$LLVM_CONFIG"; then
8403             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8404             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8405             if test -z "$CLANGLIBDIR"; then
8406                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8407             fi
8408             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8409             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8410             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8411                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8412                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8413                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8414                 fi
8415             fi
8416             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8417             clangobjdir=$($LLVM_CONFIG --obj-root)
8418             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8419                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8420             fi
8421         fi
8422         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8423         AC_LANG_PUSH([C++])
8424         save_CXX=$CXX
8425         save_CXXCPP=$CXXCPP
8426         save_CPPFLAGS=$CPPFLAGS
8427         save_CXXFLAGS=$CXXFLAGS
8428         save_LDFLAGS=$LDFLAGS
8429         save_LIBS=$LIBS
8430         CXX=$COMPILER_PLUGINS_CXX
8431         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8432         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8433         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8434         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8435             [COMPILER_PLUGINS=TRUE],
8436             [
8437             if test "$compiler_plugins" = "yes"; then
8438                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8439             else
8440                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8441                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8442             fi
8443             ])
8444         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8445         dnl comment in compilerplugins/Makefile-clang.mk:
8446         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8447             LDFLAGS=""
8448             AC_MSG_CHECKING([for clang libraries to use])
8449             if test -z "$CLANGTOOLLIBS"; then
8450                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8451                 AC_LINK_IFELSE([
8452                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8453                         [[ clang::FullSourceLoc().dump(); ]])
8454                 ],[CLANGTOOLLIBS="$LIBS"],[])
8455             fi
8456             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8457             dnl list of individual -lclang* (but note that that list can become outdated over time,
8458             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8459             dnl needs to include -lclangSupport now"):
8460             if test -z "$CLANGTOOLLIBS"; then
8461                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8462  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8463                 AC_LINK_IFELSE([
8464                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8465                         [[ clang::FullSourceLoc().dump(); ]])
8466                 ],[CLANGTOOLLIBS="$LIBS"],[])
8467             fi
8468             AC_MSG_RESULT([$CLANGTOOLLIBS])
8469             if test -z "$CLANGTOOLLIBS"; then
8470                 if test "$compiler_plugins" = "yes"; then
8471                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8472                 else
8473                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8474                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8475                 fi
8476                 COMPILER_PLUGINS=
8477             fi
8478             if test -n "$COMPILER_PLUGINS"; then
8479                 if test -z "$CLANGSYSINCLUDE"; then
8480                     if test -n "$LLVM_CONFIG"; then
8481                         # Path to the clang system headers (no idea if there's a better way to get it).
8482                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8483                     fi
8484                 fi
8485             fi
8486         fi
8487         CXX=$save_CXX
8488         CXXCPP=$save_CXXCPP
8489         CPPFLAGS=$save_CPPFLAGS
8490         CXXFLAGS=$save_CXXFLAGS
8491         LDFLAGS=$save_LDFLAGS
8492         LIBS="$save_LIBS"
8493         AC_LANG_POP([C++])
8495         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8496         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8497             #ifndef __clang__
8498             you lose
8499             #endif
8500             int foo=42;
8501             ]])],
8502             [AC_MSG_RESULT([yes])
8503              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8504             [AC_MSG_RESULT([no])])
8505         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8506     fi
8507 else
8508     if test "$enable_compiler_plugins" = "yes"; then
8509         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8510     fi
8512 COMPILER_PLUGINS_ANALYZER_PCH=
8513 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8514     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8516 AC_SUBST(COMPILER_PLUGINS)
8517 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8518 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8519 AC_SUBST(COMPILER_PLUGINS_CXX)
8520 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8521 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8522 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8523 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8524 AC_SUBST(CLANGDIR)
8525 AC_SUBST(CLANGLIBDIR)
8526 AC_SUBST(CLANGTOOLLIBS)
8527 AC_SUBST(CLANGSYSINCLUDE)
8529 # Plugin to help linker.
8530 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8531 # This makes --enable-lto build with clang work.
8532 AC_SUBST(LD_PLUGIN)
8534 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8535 AC_SUBST(HAVE_POSIX_FALLOCATE)
8537 JITC_PROCESSOR_TYPE=""
8538 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8539     # IBMs JDK needs this...
8540     JITC_PROCESSOR_TYPE=6
8541     export JITC_PROCESSOR_TYPE
8543 AC_SUBST([JITC_PROCESSOR_TYPE])
8545 # Misc Windows Stuff
8546 AC_ARG_WITH(ucrt-dir,
8547     AS_HELP_STRING([--with-ucrt-dir],
8548         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8549         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8550         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8551             Windows6.1-KB2999226-x64.msu
8552             Windows6.1-KB2999226-x86.msu
8553             Windows8.1-KB2999226-x64.msu
8554             Windows8.1-KB2999226-x86.msu
8555             Windows8-RT-KB2999226-x64.msu
8556             Windows8-RT-KB2999226-x86.msu
8557         A zip archive including those files is available from Microsoft site:
8558         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8561 UCRT_REDISTDIR="$with_ucrt_dir"
8562 if test $_os = "WINNT"; then
8563     find_msvc_x64_dlls
8564     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8565     MSVC_DLLS="$msvcdlls"
8566     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8567         with_redist=143
8568     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8569         with_redist=142
8570     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8571         with_redist=141
8572     fi
8573     for i in $PKGFORMAT; do
8574         if test "$i" = msi; then
8575             find_msms "$with_redist"
8576             if test -n "$msmdir"; then
8577                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8578                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8579             fi
8580             break
8581         fi
8582     done
8584     if test "$UCRT_REDISTDIR" = "no"; then
8585         dnl explicitly disabled
8586         UCRT_REDISTDIR=""
8587     else
8588         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8589                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8590                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8591                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8592                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8593                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8594             UCRT_REDISTDIR=""
8595             if test -n "$PKGFORMAT"; then
8596                for i in $PKGFORMAT; do
8597                    case "$i" in
8598                    msi)
8599                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8600                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8601                        ;;
8602                    esac
8603                done
8604             fi
8605         fi
8606     fi
8609 AC_SUBST(UCRT_REDISTDIR)
8610 AC_SUBST(MSVC_DLL_PATH)
8611 AC_SUBST(MSVC_DLLS)
8612 AC_SUBST(MSM_PATH)
8615 dnl ===================================================================
8616 dnl Checks for Java
8617 dnl ===================================================================
8618 if test "$ENABLE_JAVA" != ""; then
8620     # Windows-specific tests
8621     if test "$build_os" = "cygwin"; then
8622         if test -z "$with_jdk_home"; then
8623             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8624             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8625             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8626             if test -n "$regvalue"; then
8627                 ver=$regvalue
8628                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8629                 with_jdk_home=$regvalue
8630             fi
8631             howfound="found automatically"
8632         else
8633             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8634             howfound="you passed"
8635         fi
8637         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8638             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])
8639         fi
8640     fi
8642     # 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.
8643     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8644     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8645         with_jdk_home=`/usr/libexec/java_home`
8646     fi
8648     JAVA_HOME=; export JAVA_HOME
8649     if test -z "$with_jdk_home"; then
8650         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8651     else
8652         _java_path="$with_jdk_home/bin/$with_java"
8653         dnl Check if there is a Java interpreter at all.
8654         if test -x "$_java_path"; then
8655             JAVAINTERPRETER=$_java_path
8656         else
8657             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8658         fi
8659     fi
8661     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8662     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8663     dnl loaded by java to run JunitTests:
8664     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8665         shortjdkhome=`cygpath -d "$with_jdk_home"`
8666         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
8667             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8668             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8669         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
8670             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8671             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8672         fi
8674         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8675             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8676         fi
8677         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8678     elif test "$cross_compiling" != "yes"; then
8679         case $CPUNAME in
8680             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8681                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8682                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8683                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8684                 fi
8685                 ;;
8686             *) # assumption: everything else 32-bit
8687                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8688                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8689                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8690                 fi
8691                 ;;
8692         esac
8693     fi
8696 dnl ===================================================================
8697 dnl Checks for JDK.
8698 dnl ===================================================================
8700 # Whether all the complexity here actually is needed any more or not, no idea.
8702 JDK_SECURITYMANAGER_DISALLOWED=
8703 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8704     _gij_longver=0
8705     AC_MSG_CHECKING([the installed JDK])
8706     if test -n "$JAVAINTERPRETER"; then
8707         dnl java -version sends output to stderr!
8708         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8709             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8710         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8711             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8712         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8713             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8714         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8715             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8716         else
8717             JDK=sun
8719             dnl Sun JDK specific tests
8720             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8721             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8723             if test "$_jdk_ver" -lt 170000; then
8724                 AC_MSG_ERROR([JDK is too old, you need at least 17 ($_jdk_ver < 170000)])
8725             fi
8726             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8727             dnl completely removed in some Java version > 18 (see
8728             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8729             if test "$_jdk_ver" -ge 180000; then
8730                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8731             fi
8733             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8734             if test "$_os" = "WINNT"; then
8735                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8736             fi
8737             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8739             # set to limit VM usage for JunitTests
8740             JAVAIFLAGS=-Xmx64M
8741             # set to limit VM usage for javac
8742             JAVACFLAGS=-J-Xmx128M
8743         fi
8744     else
8745         AC_MSG_ERROR([Java not found. You need at least JDK 17])
8746     fi
8747 else
8748     if test -z "$ENABLE_JAVA"; then
8749         dnl Java disabled
8750         JAVA_HOME=
8751         export JAVA_HOME
8752     elif test "$cross_compiling" = "yes"; then
8753         # Just assume compatibility of build and host JDK
8754         JDK=$JDK_FOR_BUILD
8755         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8756     fi
8759 dnl ===================================================================
8760 dnl Checks for javac
8761 dnl ===================================================================
8762 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8763     javacompiler="javac"
8764     : ${JAVA_SOURCE_VER=8}
8765     : ${JAVA_TARGET_VER=8}
8766     if test -z "$with_jdk_home"; then
8767         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8768     else
8769         _javac_path="$with_jdk_home/bin/$javacompiler"
8770         dnl Check if there is a Java compiler at all.
8771         if test -x "$_javac_path"; then
8772             JAVACOMPILER=$_javac_path
8773         fi
8774     fi
8775     if test -z "$JAVACOMPILER"; then
8776         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8777     fi
8778     if test "$build_os" = "cygwin"; then
8779         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8780             JAVACOMPILER="${JAVACOMPILER}.exe"
8781         fi
8782         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8783     fi
8786 dnl ===================================================================
8787 dnl Checks for javadoc
8788 dnl ===================================================================
8789 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8790     if test -z "$with_jdk_home"; then
8791         AC_PATH_PROG(JAVADOC, javadoc)
8792     else
8793         _javadoc_path="$with_jdk_home/bin/javadoc"
8794         dnl Check if there is a javadoc at all.
8795         if test -x "$_javadoc_path"; then
8796             JAVADOC=$_javadoc_path
8797         else
8798             AC_PATH_PROG(JAVADOC, javadoc)
8799         fi
8800     fi
8801     if test -z "$JAVADOC"; then
8802         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8803     fi
8804     if test "$build_os" = "cygwin"; then
8805         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8806             JAVADOC="${JAVADOC}.exe"
8807         fi
8808         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8809     fi
8811     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8812     JAVADOCISGJDOC="yes"
8813     fi
8815 AC_SUBST(JAVADOC)
8816 AC_SUBST(JAVADOCISGJDOC)
8818 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8819     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8820     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8821         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8822            # try to recover first by looking whether we have an alternative
8823            # system as in Debian or newer SuSEs where following /usr/bin/javac
8824            # over /etc/alternatives/javac leads to the right bindir where we
8825            # just need to strip a bit away to get a valid JAVA_HOME
8826            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8827         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8828             # maybe only one level of symlink (e.g. on Mac)
8829             JAVA_HOME=$(readlink $JAVACOMPILER)
8830             if test "$(dirname $JAVA_HOME)" = "."; then
8831                 # we've got no path to trim back
8832                 JAVA_HOME=""
8833             fi
8834         else
8835             # else warn
8836             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8837             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8838             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8839             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8840         fi
8841         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8842         if test "$JAVA_HOME" != "/usr"; then
8843             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8844                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8845                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8846                 dnl Tiger already returns a JDK path...
8847                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8848             else
8849                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8850                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8851                 dnl that checks which version to run
8852                 if test -f "$JAVA_HOME"; then
8853                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8854                 fi
8855             fi
8856         fi
8857     fi
8858     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8860     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8861     if test -z "$JAVA_HOME"; then
8862         if test "x$with_jdk_home" = "x"; then
8863             cat > findhome.java <<_ACEOF
8864 [import java.io.File;
8866 class findhome
8868     public static void main(String args[])
8869     {
8870         String jrelocation = System.getProperty("java.home");
8871         File jre = new File(jrelocation);
8872         System.out.println(jre.getParent());
8873     }
8875 _ACEOF
8876             AC_MSG_CHECKING([if javac works])
8877             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8878             AC_TRY_EVAL(javac_cmd)
8879             if test $? = 0 -a -f ./findhome.class; then
8880                 AC_MSG_RESULT([javac works])
8881             else
8882                 echo "configure: javac test failed" >&5
8883                 cat findhome.java >&5
8884                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8885             fi
8886             AC_MSG_CHECKING([if gij knows its java.home])
8887             JAVA_HOME=`$JAVAINTERPRETER findhome`
8888             if test $? = 0 -a "$JAVA_HOME" != ""; then
8889                 AC_MSG_RESULT([$JAVA_HOME])
8890             else
8891                 echo "configure: java test failed" >&5
8892                 cat findhome.java >&5
8893                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8894             fi
8895             # clean-up after ourselves
8896             rm -f ./findhome.java ./findhome.class
8897         else
8898             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8899         fi
8900     fi
8902     # now check if $JAVA_HOME is really valid
8903     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8904         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8905             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8906             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8907             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8908             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8909             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8910             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8911         fi
8912     fi
8913     PathFormat "$JAVA_HOME"
8914     JAVA_HOME="$formatted_path"
8917 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8918     "$_os" != Darwin
8919 then
8920     AC_MSG_CHECKING([for JAWT lib])
8921     if test "$_os" = WINNT; then
8922         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8923         JAWTLIB=jawt.lib
8924     else
8925         case "$host_cpu" in
8926         arm*)
8927             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8928             JAVA_ARCH=$my_java_arch
8929             ;;
8930         i*86)
8931             my_java_arch=i386
8932             ;;
8933         m68k)
8934             my_java_arch=m68k
8935             ;;
8936         powerpc)
8937             my_java_arch=ppc
8938             ;;
8939         powerpc64)
8940             my_java_arch=ppc64
8941             ;;
8942         powerpc64le)
8943             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8944             JAVA_ARCH=$my_java_arch
8945             ;;
8946         sparc64)
8947             my_java_arch=sparcv9
8948             ;;
8949         x86_64)
8950             my_java_arch=amd64
8951             ;;
8952         *)
8953             my_java_arch=$host_cpu
8954             ;;
8955         esac
8956         # This is where JDK9 puts the library
8957         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8958             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8959         else
8960             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8961         fi
8962         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8963     fi
8964     AC_MSG_RESULT([$JAWTLIB])
8966 AC_SUBST(JAWTLIB)
8968 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8969     case "$host_os" in
8971     cygwin*|wsl*)
8972         JAVAINC="-I$JAVA_HOME/include/win32"
8973         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8974         ;;
8976     darwin*)
8977         if test -d "$JAVA_HOME/include/darwin"; then
8978             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8979         else
8980             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8981         fi
8982         ;;
8984     dragonfly*)
8985         JAVAINC="-I$JAVA_HOME/include"
8986         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8987         ;;
8989     freebsd*)
8990         JAVAINC="-I$JAVA_HOME/include"
8991         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8992         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8993         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8994         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8995         ;;
8997     k*bsd*-gnu*)
8998         JAVAINC="-I$JAVA_HOME/include"
8999         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9000         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9001         ;;
9003     linux-gnu*)
9004         JAVAINC="-I$JAVA_HOME/include"
9005         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9006         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9007         ;;
9009     *netbsd*)
9010         JAVAINC="-I$JAVA_HOME/include"
9011         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9012         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9013        ;;
9015     openbsd*)
9016         JAVAINC="-I$JAVA_HOME/include"
9017         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9018         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9019         ;;
9021     solaris*)
9022         JAVAINC="-I$JAVA_HOME/include"
9023         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9024         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9025         ;;
9026     esac
9028 SOLARINC="$SOLARINC $JAVAINC"
9030 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9031     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9032     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9033     JDK_FOR_BUILD=$JDK
9034     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9037 AC_SUBST(JAVACFLAGS)
9038 AC_SUBST(JAVACOMPILER)
9039 AC_SUBST(JAVAINTERPRETER)
9040 AC_SUBST(JAVAIFLAGS)
9041 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9042 AC_SUBST(JAVA_HOME)
9043 AC_SUBST(JAVA_HOME_FOR_BUILD)
9044 AC_SUBST(JDK)
9045 AC_SUBST(JDK_FOR_BUILD)
9046 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9047 AC_SUBST(JAVA_SOURCE_VER)
9048 AC_SUBST(JAVA_TARGET_VER)
9051 dnl ===================================================================
9052 dnl Export file validation
9053 dnl ===================================================================
9054 AC_MSG_CHECKING([whether to enable export file validation])
9055 if test "$with_export_validation" != "no"; then
9056     if test -z "$ENABLE_JAVA"; then
9057         if test "$with_export_validation" = "yes"; then
9058             AC_MSG_ERROR([requested, but Java is disabled])
9059         else
9060             AC_MSG_RESULT([no, as Java is disabled])
9061         fi
9062     elif ! test -d "${SRC_ROOT}/schema"; then
9063         if test "$with_export_validation" = "yes"; then
9064             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9065         else
9066             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9067         fi
9068     else
9069         AC_MSG_RESULT([yes])
9070         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9072         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9073         if test -z "$ODFVALIDATOR"; then
9074             # remember to download the ODF toolkit with validator later
9075             AC_MSG_NOTICE([no odfvalidator found, will download it])
9076             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9077             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9079             # and fetch name of odfvalidator jar name from download.lst
9080             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9081             AC_SUBST(ODFVALIDATOR_JAR)
9083             if test -z "$ODFVALIDATOR_JAR"; then
9084                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9085             fi
9086         fi
9087         if test "$build_os" = "cygwin"; then
9088             # In case of Cygwin it will be executed from Windows,
9089             # so we need to run bash and absolute path to validator
9090             # so instead of "odfvalidator" it will be
9091             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9092             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9093         else
9094             ODFVALIDATOR="sh $ODFVALIDATOR"
9095         fi
9096         AC_SUBST(ODFVALIDATOR)
9099         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9100         if test -z "$OFFICEOTRON"; then
9101             # remember to download the officeotron with validator later
9102             AC_MSG_NOTICE([no officeotron found, will download it])
9103             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9104             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9106             # and fetch name of officeotron jar name from download.lst
9107             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9108             AC_SUBST(OFFICEOTRON_JAR)
9110             if test -z "$OFFICEOTRON_JAR"; then
9111                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9112             fi
9113         else
9114             # check version of existing officeotron
9115             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9116             if test 0"$OFFICEOTRON_VER" -lt 704; then
9117                 AC_MSG_ERROR([officeotron too old])
9118             fi
9119         fi
9120         if test "$build_os" = "cygwin"; then
9121             # In case of Cygwin it will be executed from Windows,
9122             # so we need to run bash and absolute path to validator
9123             # so instead of "odfvalidator" it will be
9124             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9125             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9126         else
9127             OFFICEOTRON="sh $OFFICEOTRON"
9128         fi
9129     fi
9130     AC_SUBST(OFFICEOTRON)
9131 else
9132     AC_MSG_RESULT([no])
9135 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9136 if test "$with_bffvalidator" != "no"; then
9137     AC_DEFINE(HAVE_BFFVALIDATOR)
9139     if test "$with_export_validation" = "no"; then
9140         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9141     fi
9143     if test "$with_bffvalidator" = "yes"; then
9144         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9145     else
9146         BFFVALIDATOR="$with_bffvalidator"
9147     fi
9149     if test "$build_os" = "cygwin"; then
9150         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9151             AC_MSG_RESULT($BFFVALIDATOR)
9152         else
9153             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9154         fi
9155     elif test -n "$BFFVALIDATOR"; then
9156         # We are not in Cygwin but need to run Windows binary with wine
9157         AC_PATH_PROGS(WINE, wine)
9159         # so swap in a shell wrapper that converts paths transparently
9160         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9161         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9162         AC_SUBST(BFFVALIDATOR_EXE)
9163         AC_MSG_RESULT($BFFVALIDATOR)
9164     else
9165         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9166     fi
9167     AC_SUBST(BFFVALIDATOR)
9168 else
9169     AC_MSG_RESULT([no])
9172 dnl ===================================================================
9173 dnl Check for epm (not needed for Windows)
9174 dnl ===================================================================
9175 AC_MSG_CHECKING([whether to enable EPM for packing])
9176 if test "$enable_epm" = "yes"; then
9177     AC_MSG_RESULT([yes])
9178     if test "$_os" != "WINNT"; then
9179         if test $_os = Darwin; then
9180             EPM=internal
9181         elif test -n "$with_epm"; then
9182             EPM=$with_epm
9183         else
9184             AC_PATH_PROG(EPM, epm, no)
9185         fi
9186         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9187             AC_MSG_NOTICE([EPM will be built.])
9188             BUILD_TYPE="$BUILD_TYPE EPM"
9189             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9190         else
9191             # Gentoo has some epm which is something different...
9192             AC_MSG_CHECKING([whether the found epm is the right epm])
9193             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9194                 AC_MSG_RESULT([yes])
9195             else
9196                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9197             fi
9198             AC_MSG_CHECKING([epm version])
9199             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9200             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9201                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9202                 AC_MSG_RESULT([OK, >= 3.7])
9203             else
9204                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9205                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9206             fi
9207         fi
9208     fi
9210     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9211         AC_MSG_CHECKING([for rpm])
9212         for a in "$RPM" rpmbuild rpm; do
9213             $a --usage >/dev/null 2> /dev/null
9214             if test $? -eq 0; then
9215                 RPM=$a
9216                 break
9217             else
9218                 $a --version >/dev/null 2> /dev/null
9219                 if test $? -eq 0; then
9220                     RPM=$a
9221                     break
9222                 fi
9223             fi
9224         done
9225         if test -z "$RPM"; then
9226             AC_MSG_ERROR([not found])
9227         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9228             RPM_PATH=`command -v $RPM`
9229             AC_MSG_RESULT([$RPM_PATH])
9230             SCPDEFS="$SCPDEFS -DWITH_RPM"
9231         else
9232             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9233         fi
9234     fi
9235     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9236         AC_PATH_PROG(DPKG, dpkg, no)
9237         if test "$DPKG" = "no"; then
9238             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9239         fi
9240     fi
9241     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9242        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9243         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9244             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9245                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9246                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9247                     AC_MSG_RESULT([yes])
9248                 else
9249                     AC_MSG_RESULT([no])
9250                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9251                         _pt="rpm"
9252                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9253                         add_warning "the rpms will need to be installed with --nodeps"
9254                     else
9255                         _pt="pkg"
9256                     fi
9257                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9258                     add_warning "the ${_pt}s will not be relocatable"
9259                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9260                                  relocation will work, you need to patch your epm with the
9261                                  patch in epm/epm-3.7.patch or build with
9262                                  --with-epm=internal which will build a suitable epm])
9263                 fi
9264             fi
9265         fi
9266     fi
9267     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9268         AC_PATH_PROG(PKGMK, pkgmk, no)
9269         if test "$PKGMK" = "no"; then
9270             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9271         fi
9272     fi
9273     AC_SUBST(RPM)
9274     AC_SUBST(DPKG)
9275     AC_SUBST(PKGMK)
9276 else
9277     for i in $PKGFORMAT; do
9278         case "$i" in
9279         bsd | deb | pkg | rpm | native | portable)
9280             AC_MSG_ERROR(
9281                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9282             ;;
9283         esac
9284     done
9285     AC_MSG_RESULT([no])
9286     EPM=NO
9288 AC_SUBST(EPM)
9290 ENABLE_LWP=
9291 if test "$enable_lotuswordpro" = "yes"; then
9292     ENABLE_LWP="TRUE"
9294 AC_SUBST(ENABLE_LWP)
9296 dnl ===================================================================
9297 dnl Check for building ODK
9298 dnl ===================================================================
9299 AC_MSG_CHECKING([whether to build the ODK])
9300 if test "$enable_odk" = yes; then
9301     if test "$DISABLE_DYNLOADING" = TRUE; then
9302         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9303     fi
9304     AC_MSG_RESULT([yes])
9305     BUILD_TYPE="$BUILD_TYPE ODK"
9306 else
9307     AC_MSG_RESULT([no])
9310 if test "$enable_odk" != yes; then
9311     unset DOXYGEN
9312 else
9313     if test "$with_doxygen" = no; then
9314         AC_MSG_CHECKING([for doxygen])
9315         unset DOXYGEN
9316         AC_MSG_RESULT([no])
9317     else
9318         if test "$with_doxygen" = yes; then
9319             AC_PATH_PROG([DOXYGEN], [doxygen])
9320             if test -z "$DOXYGEN"; then
9321                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9322             fi
9323             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9324                 if ! dot -V 2>/dev/null; then
9325                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9326                 fi
9327             fi
9328         else
9329             AC_MSG_CHECKING([for doxygen])
9330             DOXYGEN=$with_doxygen
9331             AC_MSG_RESULT([$DOXYGEN])
9332         fi
9333         if test -n "$DOXYGEN"; then
9334             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9335             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9336             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9337                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9338             fi
9339         fi
9340     fi
9342 AC_SUBST([DOXYGEN])
9344 dnl ==================================================================
9345 dnl libfuzzer
9346 dnl ==================================================================
9347 AC_MSG_CHECKING([whether to enable fuzzers])
9348 if test "$enable_fuzzers" != yes; then
9349     AC_MSG_RESULT([no])
9350 else
9351     if test -z $LIB_FUZZING_ENGINE; then
9352       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9353     fi
9354     AC_MSG_RESULT([yes])
9355     ENABLE_FUZZERS="TRUE"
9356     AC_DEFINE([ENABLE_FUZZERS],1)
9357     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9359 AC_SUBST(LIB_FUZZING_ENGINE)
9361 dnl ===================================================================
9362 dnl Check for system zlib
9363 dnl ===================================================================
9364 if test "$with_system_zlib" = "auto"; then
9365     case "$_os" in
9366     WINNT)
9367         with_system_zlib="$with_system_libs"
9368         ;;
9369     *)
9370         if test "$enable_fuzzers" != "yes"; then
9371             with_system_zlib=yes
9372         else
9373             with_system_zlib=no
9374         fi
9375         ;;
9376     esac
9379 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9380 dnl and has no pkg-config for it at least on some tinderboxes,
9381 dnl so leaving that out for now
9382 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9383 AC_MSG_CHECKING([which zlib to use])
9384 if test "$with_system_zlib" = "yes"; then
9385     AC_MSG_RESULT([external])
9386     SYSTEM_ZLIB=TRUE
9387     AC_CHECK_HEADER(zlib.h, [],
9388         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9389     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9390         [AC_MSG_ERROR(zlib not found or functional)], [])
9391 else
9392     AC_MSG_RESULT([internal])
9393     SYSTEM_ZLIB=
9394     BUILD_TYPE="$BUILD_TYPE ZLIB"
9395     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9396     if test "$COM" = "MSC"; then
9397         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9398     else
9399         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9400     fi
9402 AC_SUBST(ZLIB_CFLAGS)
9403 AC_SUBST(ZLIB_LIBS)
9404 AC_SUBST(SYSTEM_ZLIB)
9406 dnl ===================================================================
9407 dnl Check for system jpeg
9408 dnl ===================================================================
9409 AC_MSG_CHECKING([which libjpeg to use])
9410 if test "$with_system_jpeg" = "yes"; then
9411     AC_MSG_RESULT([external])
9412     SYSTEM_LIBJPEG=TRUE
9413     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9414         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9415     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9416         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9417 else
9418     SYSTEM_LIBJPEG=
9419     AC_MSG_RESULT([internal, libjpeg-turbo])
9420     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9422     case "$host_cpu" in
9423     x86_64 | amd64 | i*86 | x86 | ia32)
9424         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9425         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9426             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9427                 NASM="$LODE_HOME/opt/bin/nasm"
9428             elif test -x "/opt/lo/bin/nasm"; then
9429                 NASM="/opt/lo/bin/nasm"
9430             fi
9431         fi
9433         if test -n "$NASM"; then
9434             AC_MSG_CHECKING([for object file format of host system])
9435             case "$host_os" in
9436               cygwin* | mingw* | pw32* | wsl*)
9437                 case "$host_cpu" in
9438                   x86_64)
9439                     objfmt='Win64-COFF'
9440                     ;;
9441                   *)
9442                     objfmt='Win32-COFF'
9443                     ;;
9444                 esac
9445               ;;
9446               msdosdjgpp* | go32*)
9447                 objfmt='COFF'
9448               ;;
9449               os2-emx*) # not tested
9450                 objfmt='MSOMF' # obj
9451               ;;
9452               linux*coff* | linux*oldld*)
9453                 objfmt='COFF' # ???
9454               ;;
9455               linux*aout*)
9456                 objfmt='a.out'
9457               ;;
9458               linux*)
9459                 case "$host_cpu" in
9460                   x86_64)
9461                     objfmt='ELF64'
9462                     ;;
9463                   *)
9464                     objfmt='ELF'
9465                     ;;
9466                 esac
9467               ;;
9468               kfreebsd* | freebsd* | netbsd* | openbsd*)
9469                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9470                   objfmt='BSD-a.out'
9471                 else
9472                   case "$host_cpu" in
9473                     x86_64 | amd64)
9474                       objfmt='ELF64'
9475                       ;;
9476                     *)
9477                       objfmt='ELF'
9478                       ;;
9479                   esac
9480                 fi
9481               ;;
9482               solaris* | sunos* | sysv* | sco*)
9483                 case "$host_cpu" in
9484                   x86_64)
9485                     objfmt='ELF64'
9486                     ;;
9487                   *)
9488                     objfmt='ELF'
9489                     ;;
9490                 esac
9491               ;;
9492               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9493                 case "$host_cpu" in
9494                   x86_64)
9495                     objfmt='Mach-O64'
9496                     ;;
9497                   *)
9498                     objfmt='Mach-O'
9499                     ;;
9500                 esac
9501               ;;
9502               *)
9503                 objfmt='ELF ?'
9504               ;;
9505             esac
9507             AC_MSG_RESULT([$objfmt])
9508             if test "$objfmt" = 'ELF ?'; then
9509               objfmt='ELF'
9510               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9511             fi
9513             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9514             case "$objfmt" in
9515               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9516               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9517               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9518               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9519               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9520               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9521               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9522               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9523               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9524               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9525               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9526             esac
9527             AC_MSG_RESULT([$NAFLAGS])
9529             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9530             cat > conftest.asm << EOF
9531             [%line __oline__ "configure"
9532                     section .text
9533                     global  _main,main
9534             _main:
9535             main:   xor     eax,eax
9536                     ret
9537             ]
9539             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9540             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9541               AC_MSG_RESULT(yes)
9542             else
9543               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9544               cat conftest.asm >&AS_MESSAGE_LOG_FD
9545               rm -rf conftest*
9546               AC_MSG_RESULT(no)
9547               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9548               NASM=""
9549             fi
9551         fi
9553         if test -z "$NASM"; then
9554 cat << _EOS
9555 ****************************************************************************
9556 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9557 To get one please:
9559 _EOS
9560             if test "$build_os" = "cygwin"; then
9561 cat << _EOS
9562 install a pre-compiled binary for Win32
9564 mkdir -p /opt/lo/bin
9565 cd /opt/lo/bin
9566 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9567 chmod +x nasm
9569 or get and install one from https://www.nasm.us/
9571 Then re-run autogen.sh
9573 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9574 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`command -v nasm\` finds it.
9576 _EOS
9577             else
9578 cat << _EOS
9579 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9581 _EOS
9582             fi
9583             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9584             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9585         fi
9586       ;;
9587     esac
9590 AC_SUBST(NASM)
9591 AC_SUBST(NAFLAGS)
9592 AC_SUBST(LIBJPEG_CFLAGS)
9593 AC_SUBST(LIBJPEG_LIBS)
9594 AC_SUBST(SYSTEM_LIBJPEG)
9596 dnl ===================================================================
9597 dnl Check for system clucene
9598 dnl ===================================================================
9599 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9600 if test "$SYSTEM_CLUCENE" = TRUE; then
9601     AC_LANG_PUSH([C++])
9602     save_CXXFLAGS=$CXXFLAGS
9603     save_CPPFLAGS=$CPPFLAGS
9604     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9605     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9606     dnl https://sourceforge.net/p/clucene/bugs/200/
9607     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9608     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9609                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9610     CXXFLAGS=$save_CXXFLAGS
9611     CPPFLAGS=$save_CPPFLAGS
9612     AC_LANG_POP([C++])
9613     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9616 dnl ===================================================================
9617 dnl Check for system expat
9618 dnl ===================================================================
9619 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9621 dnl ===================================================================
9622 dnl Check for system xmlsec
9623 dnl ===================================================================
9624 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9626 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9627 if test "$enable_eot" = "yes"; then
9628     ENABLE_EOT="TRUE"
9629     AC_DEFINE([ENABLE_EOT])
9630     AC_MSG_RESULT([yes])
9632     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9633 else
9634     ENABLE_EOT=
9635     AC_MSG_RESULT([no])
9637 AC_SUBST([ENABLE_EOT])
9639 dnl ===================================================================
9640 dnl Check for DLP libs
9641 dnl ===================================================================
9642 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9643 AS_IF([test "$COM" = "MSC"],
9644       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9645       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9647 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9648 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9650 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9652 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9654 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9655 AS_IF([test "$COM" = "MSC"],
9656       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9657       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9659 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9660 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9662 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9664 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9665 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9667 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9669 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9671 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9673 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9674 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9676 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9677 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9679 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9681 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9682 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9684 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9686 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9688 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9690 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9692 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9693 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9695 dnl ===================================================================
9696 dnl Check for system lcms2
9697 dnl ===================================================================
9698 if test "$with_system_lcms2" != "yes"; then
9699     SYSTEM_LCMS2=
9701 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9702 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9703 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9704 if test "$GCC" = "yes"; then
9705     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9707 if test "$COM" = "MSC"; then # override the above
9708     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9711 dnl ===================================================================
9712 dnl Check for system cppunit
9713 dnl ===================================================================
9714 if test "$_os" != "Android" ; then
9715     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9718 dnl ===================================================================
9719 dnl Check whether freetype is available
9721 dnl FreeType has 3 different kinds of versions
9722 dnl * release, like 2.4.10
9723 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9724 dnl * soname
9725 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9727 dnl 9.9.3 is 2.2.0
9728 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9729 dnl ===================================================================
9730 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9731 if test "x$ac_config_site_64bit_host" = xYES; then
9732     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9733 else
9734     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9736 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9738 # ===================================================================
9739 # Check for system libxslt
9740 # to prevent incompatibilities between internal libxml2 and external libxslt,
9741 # or vice versa, use with_system_libxml here
9742 # ===================================================================
9743 if test "$with_system_libxml" = "auto"; then
9744     case "$_os" in
9745     WINNT|iOS|Android)
9746         with_system_libxml="$with_system_libs"
9747         ;;
9748     Emscripten)
9749         with_system_libxml=no
9750         ;;
9751     *)
9752         if test "$enable_fuzzers" != "yes"; then
9753             with_system_libxml=yes
9754         else
9755             with_system_libxml=no
9756         fi
9757         ;;
9758     esac
9761 AC_MSG_CHECKING([which libxslt to use])
9762 if test "$with_system_libxml" = "yes"; then
9763     AC_MSG_RESULT([external])
9764     SYSTEM_LIBXSLT=TRUE
9765     if test "$_os" = "Darwin"; then
9766         dnl make sure to use SDK path
9767         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9768         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9769         dnl omit -L/usr/lib
9770         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9771         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9772     else
9773         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9774         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9775         FilterLibs "${LIBXSLT_LIBS}"
9776         LIBXSLT_LIBS="${filteredlibs}"
9777         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9778         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9779         FilterLibs "${LIBEXSLT_LIBS}"
9780         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9781     fi
9783     dnl Check for xsltproc
9784     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9785     if test "$XSLTPROC" = "no"; then
9786         AC_MSG_ERROR([xsltproc is required])
9787     fi
9788 else
9789     AC_MSG_RESULT([internal])
9790     SYSTEM_LIBXSLT=
9791     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9793 AC_SUBST(SYSTEM_LIBXSLT)
9794 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9795     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9797 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9799 AC_SUBST(LIBEXSLT_CFLAGS)
9800 AC_SUBST(LIBEXSLT_LIBS)
9801 AC_SUBST(LIBXSLT_CFLAGS)
9802 AC_SUBST(LIBXSLT_LIBS)
9803 AC_SUBST(XSLTPROC)
9805 # ===================================================================
9806 # Check for system libxml
9807 # ===================================================================
9808 AC_MSG_CHECKING([which libxml to use])
9809 if test "$with_system_libxml" = "yes"; then
9810     AC_MSG_RESULT([external])
9811     SYSTEM_LIBXML=TRUE
9812     if test "$_os" = "Darwin"; then
9813         dnl make sure to use SDK path
9814         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9815         dnl omit -L/usr/lib
9816         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9817     elif test $_os = iOS; then
9818         dnl make sure to use SDK path
9819         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9820         LIBXML_CFLAGS="-I$usr/include/libxml2"
9821         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9822     else
9823         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9824         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9825         FilterLibs "${LIBXML_LIBS}"
9826         LIBXML_LIBS="${filteredlibs}"
9827     fi
9829     dnl Check for xmllint
9830     AC_PATH_PROG(XMLLINT, xmllint, no)
9831     if test "$XMLLINT" = "no"; then
9832         AC_MSG_ERROR([xmllint is required])
9833     fi
9834 else
9835     AC_MSG_RESULT([internal])
9836     SYSTEM_LIBXML=
9837     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9838     if test "$COM" = "MSC"; then
9839         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9840     fi
9841     if test "$COM" = "MSC"; then
9842         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9843     else
9844         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9845         if test "$DISABLE_DYNLOADING" = TRUE; then
9846             LIBXML_LIBS="$LIBXML_LIBS -lm"
9847         fi
9848     fi
9849     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9851 AC_SUBST(SYSTEM_LIBXML)
9852 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9853     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9855 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9856 AC_SUBST(LIBXML_CFLAGS)
9857 AC_SUBST(LIBXML_LIBS)
9858 AC_SUBST(XMLLINT)
9860 # =====================================================================
9861 # Checking for a Python interpreter with version >= 3.3.
9862 # Optionally user can pass an option to configure, i. e.
9863 # ./configure PYTHON=/usr/bin/python
9864 # =====================================================================
9865 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9866     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9867     # unless PYTHON is defined as above which allows 'system'
9868     enable_python=internal
9870 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9871     if test -n "$PYTHON"; then
9872         PYTHON_FOR_BUILD=$PYTHON
9873     else
9874         # This allows a lack of system python with no error, we use internal one in that case.
9875         AM_PATH_PYTHON([3.3],, [:])
9876         # Clean PYTHON_VERSION checked below if cross-compiling
9877         PYTHON_VERSION=""
9878         if test "$PYTHON" != ":"; then
9879             PYTHON_FOR_BUILD=$PYTHON
9880         fi
9881     fi
9884 # Checks for Python to use for Pyuno
9885 AC_MSG_CHECKING([which Python to use for Pyuno])
9886 case "$enable_python" in
9887 no|disable)
9888     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9889         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9890         # requirement from the choice whether to include Python stuff in the installer, but why
9891         # bother?
9892         AC_MSG_ERROR([Python is required at build time.])
9893     fi
9894     enable_python=no
9895     AC_MSG_RESULT([none])
9896     ;;
9897 ""|yes|auto)
9898     if test "$DISABLE_SCRIPTING" = TRUE; then
9899         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9900             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9901         fi
9902         AC_MSG_RESULT([none, overridden by --disable-scripting])
9903         enable_python=no
9904     elif test $build_os = cygwin -o $build_os = wsl; then
9905         dnl When building on Windows we don't attempt to use any installed
9906         dnl "system"  Python.
9907         AC_MSG_RESULT([fully internal])
9908         enable_python=internal
9909     elif test "$cross_compiling" = yes; then
9910         AC_MSG_RESULT([system])
9911         enable_python=system
9912     else
9913         # Unset variables set by the above AM_PATH_PYTHON so that
9914         # we actually do check anew.
9915         AC_MSG_RESULT([])
9916         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
9917         AM_PATH_PYTHON([3.3],, [:])
9918         AC_MSG_CHECKING([which Python to use for Pyuno])
9919         if test "$PYTHON" = ":"; then
9920             if test -z "$PYTHON_FOR_BUILD"; then
9921                 AC_MSG_RESULT([fully internal])
9922             else
9923                 AC_MSG_RESULT([internal])
9924             fi
9925             enable_python=internal
9926         else
9927             AC_MSG_RESULT([system])
9928             enable_python=system
9929         fi
9930     fi
9931     ;;
9932 internal)
9933     AC_MSG_RESULT([internal])
9934     ;;
9935 fully-internal)
9936     AC_MSG_RESULT([fully internal])
9937     enable_python=internal
9938     ;;
9939 system)
9940     AC_MSG_RESULT([system])
9941     if test "$_os" = Darwin -a -z "$PYTHON"; then
9942         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9943     fi
9944     ;;
9946     AC_MSG_ERROR([Incorrect --enable-python option])
9947     ;;
9948 esac
9950 if test $enable_python != no; then
9951     BUILD_TYPE="$BUILD_TYPE PYUNO"
9954 if test $enable_python = system; then
9955     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9956         # Fallback: Accept these in the environment, or as set above
9957         # for MacOSX.
9958         :
9959     elif test "$cross_compiling" != yes; then
9960         # Unset variables set by the above AM_PATH_PYTHON so that
9961         # we actually do check anew.
9962         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
9963         # This causes an error if no python command is found
9964         AM_PATH_PYTHON([3.3])
9965         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9966         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9967         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9968         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9969         if test -z "$PKG_CONFIG"; then
9970             PYTHON_CFLAGS="-I$python_include"
9971             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9972         elif $PKG_CONFIG --exists python-$python_version-embed; then
9973             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9974             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9975         elif $PKG_CONFIG --exists python-$python_version; then
9976             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9977             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9978         else
9979             PYTHON_CFLAGS="-I$python_include"
9980             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9981         fi
9982         FilterLibs "${PYTHON_LIBS}"
9983         PYTHON_LIBS="${filteredlibs}"
9984     else
9985         dnl How to find out the cross-compilation Python installation path?
9986         AC_MSG_CHECKING([for python version])
9987         AS_IF([test -n "$PYTHON_VERSION"],
9988               [AC_MSG_RESULT([$PYTHON_VERSION])],
9989               [AC_MSG_RESULT([not found])
9990                AC_MSG_ERROR([no usable python found])])
9991         test -n "$PYTHON_CFLAGS" && break
9992     fi
9994     dnl Check if the headers really work
9995     save_CPPFLAGS="$CPPFLAGS"
9996     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9997     AC_CHECK_HEADER(Python.h)
9998     CPPFLAGS="$save_CPPFLAGS"
10000     # let the PYTHON_FOR_BUILD match the same python installation that
10001     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10002     # better for PythonTests.
10003     PYTHON_FOR_BUILD=$PYTHON
10006 if test "$with_lxml" != no; then
10007     if test -z "$PYTHON_FOR_BUILD"; then
10008         case $build_os in
10009             cygwin)
10010                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10011                 ;;
10012             *)
10013                 if test "$cross_compiling" != yes ; then
10014                     BUILD_TYPE="$BUILD_TYPE LXML"
10015                 fi
10016                 ;;
10017         esac
10018     else
10019         AC_MSG_CHECKING([for python lxml])
10020         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10021             AC_MSG_RESULT([yes])
10022         else
10023             case $build_os in
10024                 cygwin)
10025                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10026                     ;;
10027                 *)
10028                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10029                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10030                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10031                         else
10032                             BUILD_TYPE="$BUILD_TYPE LXML"
10033                             AC_MSG_RESULT([no, using internal lxml])
10034                         fi
10035                     else
10036                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10037                     fi
10038                     ;;
10039             esac
10040         fi
10041     fi
10044 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10045     SYSTEM_PYTHON=
10046     PYTHON_VERSION_MAJOR=3
10047     PYTHON_VERSION_MINOR=8
10048     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10049     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10050         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10051     fi
10052     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10054     # Embedded Python dies without Home set
10055     if test "$HOME" = ""; then
10056         export HOME=""
10057     fi
10060 dnl By now enable_python should be "system", "internal" or "no"
10061 case $enable_python in
10062 system)
10063     SYSTEM_PYTHON=TRUE
10065     if test "x$ac_cv_header_Python_h" != "xyes"; then
10066        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10067     fi
10069     AC_LANG_PUSH(C)
10070     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10071     AC_MSG_CHECKING([for correct python library version])
10072        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10073 #include <Python.h>
10075 int main(int argc, char **argv) {
10076    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10077    else return 1;
10079        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10080     AC_LANG_POP(C)
10082     dnl FIXME Check if the Python library can be linked with, too?
10083     ;;
10085 internal)
10086     BUILD_TYPE="$BUILD_TYPE PYTHON"
10087     if test "$OS" = LINUX -o "$OS" = WNT ; then
10088         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10089     fi
10090     ;;
10092     DISABLE_PYTHON=TRUE
10093     SYSTEM_PYTHON=
10094     ;;
10096     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10097     ;;
10098 esac
10100 AC_SUBST(DISABLE_PYTHON)
10101 AC_SUBST(SYSTEM_PYTHON)
10102 AC_SUBST(PYTHON_CFLAGS)
10103 AC_SUBST(PYTHON_FOR_BUILD)
10104 AC_SUBST(PYTHON_LIBS)
10105 AC_SUBST(PYTHON_VERSION)
10106 AC_SUBST(PYTHON_VERSION_MAJOR)
10107 AC_SUBST(PYTHON_VERSION_MINOR)
10109 AC_MSG_CHECKING([whether to build LibreLogo])
10110 case "$enable_python" in
10111 no|disable)
10112     AC_MSG_RESULT([no; Python disabled])
10113     ;;
10115     if test "${enable_librelogo}" = "no"; then
10116         AC_MSG_RESULT([no])
10117     else
10118         AC_MSG_RESULT([yes])
10119         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10120         AC_DEFINE([ENABLE_LIBRELOGO],1)
10121     fi
10122     ;;
10123 esac
10124 AC_SUBST(ENABLE_LIBRELOGO)
10126 ENABLE_MARIADBC=
10127 MARIADBC_MAJOR=1
10128 MARIADBC_MINOR=0
10129 MARIADBC_MICRO=2
10130 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10131 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10132     ENABLE_MARIADBC=TRUE
10133     AC_MSG_RESULT([yes])
10134     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10135 else
10136     AC_MSG_RESULT([no])
10138 AC_SUBST(ENABLE_MARIADBC)
10139 AC_SUBST(MARIADBC_MAJOR)
10140 AC_SUBST(MARIADBC_MINOR)
10141 AC_SUBST(MARIADBC_MICRO)
10143 if test "$ENABLE_MARIADBC" = "TRUE"; then
10144     dnl ===================================================================
10145     dnl Check for system MariaDB
10146     dnl ===================================================================
10147     AC_MSG_CHECKING([which MariaDB to use])
10148     if test "$with_system_mariadb" = "yes"; then
10149         AC_MSG_RESULT([external])
10150         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10151         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10152         if test -z "$MARIADBCONFIG"; then
10153             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10154             if test -z "$MARIADBCONFIG"; then
10155                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10156                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10157             fi
10158         fi
10159         AC_MSG_CHECKING([MariaDB version])
10160         MARIADB_VERSION=`$MARIADBCONFIG --version`
10161         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10162         if test "$MARIADB_MAJOR" -ge "5"; then
10163             AC_MSG_RESULT([OK])
10164         else
10165             AC_MSG_ERROR([too old, use 5.0.x or later])
10166         fi
10167         AC_MSG_CHECKING([for MariaDB Client library])
10168         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10169         if test "$COM_IS_CLANG" = TRUE; then
10170             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10171         fi
10172         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10173         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10174         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10175         dnl linux32:
10176         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10177             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10178             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10179                 | sed -e 's|/lib64/|/lib/|')
10180         fi
10181         FilterLibs "${MARIADB_LIBS}"
10182         MARIADB_LIBS="${filteredlibs}"
10183         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10184         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10185         if test "$enable_bundle_mariadb" = "yes"; then
10186             AC_MSG_RESULT([yes])
10187             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10188             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10190 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10192 /g' | grep -E '(mysqlclient|mariadb)')
10193             if test "$_os" = "Darwin"; then
10194                 LIBMARIADB=${LIBMARIADB}.dylib
10195             elif test "$_os" = "WINNT"; then
10196                 LIBMARIADB=${LIBMARIADB}.dll
10197             else
10198                 LIBMARIADB=${LIBMARIADB}.so
10199             fi
10200             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10201             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10202             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10203                 AC_MSG_RESULT([found.])
10204                 PathFormat "$LIBMARIADB_PATH"
10205                 LIBMARIADB_PATH="$formatted_path"
10206             else
10207                 AC_MSG_ERROR([not found.])
10208             fi
10209         else
10210             AC_MSG_RESULT([no])
10211             BUNDLE_MARIADB_CONNECTOR_C=
10212         fi
10213     else
10214         AC_MSG_RESULT([internal])
10215         SYSTEM_MARIADB_CONNECTOR_C=
10216         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10217         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10218         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10219     fi
10221     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10222     AC_SUBST(MARIADB_CFLAGS)
10223     AC_SUBST(MARIADB_LIBS)
10224     AC_SUBST(LIBMARIADB)
10225     AC_SUBST(LIBMARIADB_PATH)
10226     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10229 dnl ===================================================================
10230 dnl Check for system hsqldb
10231 dnl ===================================================================
10232 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10233     AC_MSG_CHECKING([which hsqldb to use])
10234     if test "$with_system_hsqldb" = "yes"; then
10235         AC_MSG_RESULT([external])
10236         SYSTEM_HSQLDB=TRUE
10237         if test -z $HSQLDB_JAR; then
10238             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10239         fi
10240         if ! test -f $HSQLDB_JAR; then
10241                AC_MSG_ERROR(hsqldb.jar not found.)
10242         fi
10243         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10244         export HSQLDB_JAR
10245         if $PERL -e \
10246            'use Archive::Zip;
10247             my $file = "$ENV{'HSQLDB_JAR'}";
10248             my $zip = Archive::Zip->new( $file );
10249             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10250             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10251             {
10252                 push @l, split(/\n/, $mf);
10253                 foreach my $line (@l)
10254                 {
10255                     if ($line =~ m/Specification-Version:/)
10256                     {
10257                         ($t, $version) = split (/:/,$line);
10258                         $version =~ s/^\s//;
10259                         ($a, $b, $c, $d) = split (/\./,$version);
10260                         if ($c == "0" && $d > "8")
10261                         {
10262                             exit 0;
10263                         }
10264                         else
10265                         {
10266                             exit 1;
10267                         }
10268                     }
10269                 }
10270             }
10271             else
10272             {
10273                 exit 1;
10274             }'; then
10275             AC_MSG_RESULT([yes])
10276         else
10277             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10278         fi
10279     else
10280         AC_MSG_RESULT([internal])
10281         SYSTEM_HSQLDB=
10282         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10283         NEED_ANT=TRUE
10284     fi
10285 else
10286     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10287         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10288     fi
10290 AC_SUBST(SYSTEM_HSQLDB)
10291 AC_SUBST(HSQLDB_JAR)
10293 dnl ===================================================================
10294 dnl Check for PostgreSQL stuff
10295 dnl ===================================================================
10296 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10297 if test "x$enable_postgresql_sdbc" != "xno"; then
10298     AC_MSG_RESULT([yes])
10299     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10301     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10302         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10303     fi
10304     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10305         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10306     fi
10308     postgres_interface=""
10309     if test "$with_system_postgresql" = "yes"; then
10310         postgres_interface="external PostgreSQL"
10311         SYSTEM_POSTGRESQL=TRUE
10312         if test "$_os" = Darwin; then
10313             supp_path=''
10314             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10315                 pg_supp_path="$P_SEP$d$pg_supp_path"
10316             done
10317         fi
10318         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10319         if test -n "$PGCONFIG"; then
10320             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10321             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10322         else
10323             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10324               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10325               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10326             ],[
10327               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10328             ])
10329         fi
10330         FilterLibs "${POSTGRESQL_LIB}"
10331         POSTGRESQL_LIB="${filteredlibs}"
10332     else
10333         # if/when anything else than PostgreSQL uses Kerberos,
10334         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10335         WITH_KRB5=
10336         WITH_GSSAPI=
10337         case "$_os" in
10338         Darwin)
10339             # macOS has system MIT Kerberos 5 since 10.4
10340             if test "$with_krb5" != "no"; then
10341                 WITH_KRB5=TRUE
10342                 save_LIBS=$LIBS
10343                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10344                 # that the libraries where these functions are located on macOS will change, is it?
10345                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10346                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10347                 KRB5_LIBS=$LIBS
10348                 LIBS=$save_LIBS
10349                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10350                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10351                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10352                 LIBS=$save_LIBS
10353             fi
10354             if test "$with_gssapi" != "no"; then
10355                 WITH_GSSAPI=TRUE
10356                 save_LIBS=$LIBS
10357                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10358                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10359                 GSSAPI_LIBS=$LIBS
10360                 LIBS=$save_LIBS
10361             fi
10362             ;;
10363         WINNT)
10364             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10365                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10366             fi
10367             ;;
10368         Linux|GNU|*BSD|DragonFly)
10369             if test "$with_krb5" != "no"; then
10370                 WITH_KRB5=TRUE
10371                 save_LIBS=$LIBS
10372                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10373                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10374                 KRB5_LIBS=$LIBS
10375                 LIBS=$save_LIBS
10376                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10377                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10378                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10379                 LIBS=$save_LIBS
10380             fi
10381             if test "$with_gssapi" != "no"; then
10382                 WITH_GSSAPI=TRUE
10383                 save_LIBS=$LIBS
10384                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10385                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10386                 GSSAPI_LIBS=$LIBS
10387                 LIBS=$save_LIBS
10388             fi
10389             ;;
10390         *)
10391             if test "$with_krb5" = "yes"; then
10392                 WITH_KRB5=TRUE
10393                 save_LIBS=$LIBS
10394                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10395                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10396                 KRB5_LIBS=$LIBS
10397                 LIBS=$save_LIBS
10398                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10399                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10400                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10401                 LIBS=$save_LIBS
10402             fi
10403             if test "$with_gssapi" = "yes"; then
10404                 WITH_GSSAPI=TRUE
10405                 save_LIBS=$LIBS
10406                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10407                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10408                 LIBS=$save_LIBS
10409                 GSSAPI_LIBS=$LIBS
10410             fi
10411         esac
10413         if test -n "$with_libpq_path"; then
10414             SYSTEM_POSTGRESQL=TRUE
10415             postgres_interface="external libpq"
10416             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10417             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10418         else
10419             SYSTEM_POSTGRESQL=
10420             postgres_interface="internal"
10421             POSTGRESQL_LIB=""
10422             POSTGRESQL_INC="%OVERRIDE_ME%"
10423             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10424         fi
10425     fi
10427     AC_MSG_CHECKING([PostgreSQL C interface])
10428     AC_MSG_RESULT([$postgres_interface])
10430     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10431         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10432         save_CFLAGS=$CFLAGS
10433         save_CPPFLAGS=$CPPFLAGS
10434         save_LIBS=$LIBS
10435         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10436         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10437         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10438         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10439             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10440         CFLAGS=$save_CFLAGS
10441         CPPFLAGS=$save_CPPFLAGS
10442         LIBS=$save_LIBS
10443     fi
10444     BUILD_POSTGRESQL_SDBC=TRUE
10445 else
10446     AC_MSG_RESULT([no])
10448 AC_SUBST(WITH_KRB5)
10449 AC_SUBST(WITH_GSSAPI)
10450 AC_SUBST(GSSAPI_LIBS)
10451 AC_SUBST(KRB5_LIBS)
10452 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10453 AC_SUBST(SYSTEM_POSTGRESQL)
10454 AC_SUBST(POSTGRESQL_INC)
10455 AC_SUBST(POSTGRESQL_LIB)
10457 dnl ===================================================================
10458 dnl Check for Firebird stuff
10459 dnl ===================================================================
10460 ENABLE_FIREBIRD_SDBC=
10461 if test "$enable_firebird_sdbc" = "yes" ; then
10462     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10464     dnl ===================================================================
10465     dnl Check for system Firebird
10466     dnl ===================================================================
10467     AC_MSG_CHECKING([which Firebird to use])
10468     if test "$with_system_firebird" = "yes"; then
10469         AC_MSG_RESULT([external])
10470         SYSTEM_FIREBIRD=TRUE
10471         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10472         if test -z "$FIREBIRDCONFIG"; then
10473             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10474             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10475                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10476             ])
10477             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10478         else
10479             AC_MSG_NOTICE([fb_config found])
10480             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10481             AC_MSG_CHECKING([for Firebird Client library])
10482             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10483             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10484             FilterLibs "${FIREBIRD_LIBS}"
10485             FIREBIRD_LIBS="${filteredlibs}"
10486         fi
10487         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10488         AC_MSG_CHECKING([Firebird version])
10489         if test -n "${FIREBIRD_VERSION}"; then
10490             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10491             if test "$FIREBIRD_MAJOR" -ge "3"; then
10492                 AC_MSG_RESULT([OK])
10493             else
10494                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10495             fi
10496         else
10497             save_CFLAGS="${CFLAGS}"
10498             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10499             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10500 #if defined(FB_API_VER) && FB_API_VER == 30
10501 int fb_api_is_30(void) { return 0; }
10502 #else
10503 #error "Wrong Firebird API version"
10504 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10505             CFLAGS="$save_CFLAGS"
10506         fi
10507         ENABLE_FIREBIRD_SDBC=TRUE
10508         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10509     elif test "$enable_database_connectivity" = no; then
10510         AC_MSG_RESULT([none])
10511     elif test "$cross_compiling" = "yes"; then
10512         AC_MSG_RESULT([none])
10513     else
10514         dnl Embedded Firebird has version 3.0
10515         dnl We need libatomic_ops for any non X86/X64 system
10516         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10517             dnl ===================================================================
10518             dnl Check for system libatomic_ops
10519             dnl ===================================================================
10520             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10521             if test "$with_system_libatomic_ops" = "yes"; then
10522                 SYSTEM_LIBATOMIC_OPS=TRUE
10523                 AC_CHECK_HEADERS(atomic_ops.h, [],
10524                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10525             else
10526                 SYSTEM_LIBATOMIC_OPS=
10527                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10528                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10529                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10530             fi
10531         fi
10533         AC_MSG_RESULT([internal])
10534         SYSTEM_FIREBIRD=
10535         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10536         FIREBIRD_LIBS="-lfbclient"
10538         if test "$with_system_libtommath" = "yes"; then
10539             SYSTEM_LIBTOMMATH=TRUE
10540             dnl check for tommath presence
10541             save_LIBS=$LIBS
10542             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10543             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10544             LIBS=$save_LIBS
10545         else
10546             SYSTEM_LIBTOMMATH=
10547             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10548             LIBTOMMATH_LIBS="-ltommath"
10549             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10550         fi
10552         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10553         ENABLE_FIREBIRD_SDBC=TRUE
10554         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10555     fi
10557 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10558 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10559 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10560 AC_SUBST(LIBATOMIC_OPS_LIBS)
10561 AC_SUBST(SYSTEM_FIREBIRD)
10562 AC_SUBST(FIREBIRD_CFLAGS)
10563 AC_SUBST(FIREBIRD_LIBS)
10564 AC_SUBST(SYSTEM_LIBTOMMATH)
10565 AC_SUBST(LIBTOMMATH_CFLAGS)
10566 AC_SUBST(LIBTOMMATH_LIBS)
10568 dnl ===================================================================
10569 dnl Check for system curl
10570 dnl ===================================================================
10571 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10573 dnl ===================================================================
10574 dnl Check for system boost
10575 dnl ===================================================================
10576 AC_MSG_CHECKING([which boost to use])
10577 if test "$with_system_boost" = "yes"; then
10578     AC_MSG_RESULT([external])
10579     SYSTEM_BOOST=TRUE
10580     AX_BOOST_BASE([1.69],,[AC_MSG_ERROR([no suitable Boost found])])
10581     AX_BOOST_DATE_TIME
10582     AX_BOOST_FILESYSTEM
10583     AX_BOOST_IOSTREAMS
10584     AX_BOOST_LOCALE
10585     AC_LANG_PUSH([C++])
10586     save_CXXFLAGS=$CXXFLAGS
10587     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10588     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10589        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10590     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10591        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10592     CXXFLAGS=$save_CXXFLAGS
10593     AC_LANG_POP([C++])
10594     # this is in m4/ax_boost_base.m4
10595     FilterLibs "${BOOST_LDFLAGS}"
10596     BOOST_LDFLAGS="${filteredlibs}"
10597 else
10598     AC_MSG_RESULT([internal])
10599     BUILD_TYPE="$BUILD_TYPE BOOST"
10600     SYSTEM_BOOST=
10601     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10602         # use warning-suppressing wrapper headers
10603         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10604     else
10605         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10606     fi
10608 AC_SUBST(SYSTEM_BOOST)
10610 dnl ===================================================================
10611 dnl Check for system mdds
10612 dnl ===================================================================
10613 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10614 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10616 dnl ===================================================================
10617 dnl Check for system dragonbox
10618 dnl ===================================================================
10619 AC_MSG_CHECKING([which dragonbox to use])
10620 if test "$with_system_dragonbox" = "yes"; then
10621     AC_MSG_RESULT([external])
10622     SYSTEM_DRAGONBOX=TRUE
10623     AC_LANG_PUSH([C++])
10624     save_CPPFLAGS=$CPPFLAGS
10625     # This is where upstream installs to, unfortunately no .pc or so...
10626     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10627     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10628     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10629        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10630     AC_LANG_POP([C++])
10631     CPPFLAGS=$save_CPPFLAGS
10632 else
10633     AC_MSG_RESULT([internal])
10634     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10635     SYSTEM_DRAGONBOX=
10637 AC_SUBST([SYSTEM_DRAGONBOX])
10638 AC_SUBST([DRAGONBOX_CFLAGS])
10640 dnl ===================================================================
10641 dnl Check for system frozen
10642 dnl ===================================================================
10643 AC_MSG_CHECKING([which frozen to use])
10644 if test "$with_system_frozen" = "yes"; then
10645     AC_MSG_RESULT([external])
10646     SYSTEM_FROZEN=TRUE
10647     AC_LANG_PUSH([C++])
10648     save_CPPFLAGS=$CPPFLAGS
10649     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10650        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10651     AC_LANG_POP([C++])
10652     CPPFLAGS=$save_CPPFLAGS
10653 else
10654     AC_MSG_RESULT([internal])
10655     BUILD_TYPE="$BUILD_TYPE FROZEN"
10656     SYSTEM_FROZEN=
10658 AC_SUBST([SYSTEM_FROZEN])
10659 AC_SUBST([FROZEN_CFLAGS])
10661 dnl ===================================================================
10662 dnl Check for system libfixmath
10663 dnl ===================================================================
10664 AC_MSG_CHECKING([which libfixmath to use])
10665 if test "$with_system_libfixmath" = "yes"; then
10666     AC_MSG_RESULT([external])
10667     SYSTEM_LIBFIXMATH=TRUE
10668     AC_LANG_PUSH([C++])
10669     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10670        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10671     AC_CHECK_LIB([libfixmath], [fix16_mul], [LIBFIXMATH_LIBS=-llibfixmath],
10672                  [AC_CHECK_LIB([fixmath], [fix16_mul], [LIBFIXMATH_LIBS=-lfixmath],
10673                                [AC_MSG_ERROR(libfixmath lib not found or functional)])])
10674     AC_LANG_POP([C++])
10675 else
10676     AC_MSG_RESULT([internal])
10677     SYSTEM_LIBFIXMATH=
10678     LIBFIXMATH_LIBS=
10680 AC_SUBST([SYSTEM_LIBFIXMATH])
10681 AC_SUBST([LIBFIXMATH_LIBS])
10683 dnl ===================================================================
10684 dnl Check for system glm
10685 dnl ===================================================================
10686 AC_MSG_CHECKING([which glm to use])
10687 if test "$with_system_glm" = "yes"; then
10688     AC_MSG_RESULT([external])
10689     SYSTEM_GLM=TRUE
10690     AC_LANG_PUSH([C++])
10691     AC_CHECK_HEADER([glm/glm.hpp], [],
10692        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10693     AC_LANG_POP([C++])
10694 else
10695     AC_MSG_RESULT([internal])
10696     BUILD_TYPE="$BUILD_TYPE GLM"
10697     SYSTEM_GLM=
10698     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10700 AC_SUBST([GLM_CFLAGS])
10701 AC_SUBST([SYSTEM_GLM])
10703 dnl ===================================================================
10704 dnl Check for system odbc
10705 dnl ===================================================================
10706 AC_MSG_CHECKING([which odbc headers to use])
10707 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
10708     AC_MSG_RESULT([external])
10709     SYSTEM_ODBC_HEADERS=TRUE
10711     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10712         save_CPPFLAGS=$CPPFLAGS
10713         find_winsdk
10714         PathFormat "$winsdktest"
10715         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"
10716         AC_CHECK_HEADER(sqlext.h, [],
10717             [AC_MSG_ERROR(odbc not found. install odbc)],
10718             [#include <windows.h>])
10719         CPPFLAGS=$save_CPPFLAGS
10720     else
10721         AC_CHECK_HEADER(sqlext.h, [],
10722             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10723     fi
10724 elif test "$enable_database_connectivity" = no; then
10725     AC_MSG_RESULT([none])
10726 else
10727     AC_MSG_RESULT([internal])
10728     SYSTEM_ODBC_HEADERS=
10730 AC_SUBST(SYSTEM_ODBC_HEADERS)
10732 dnl ===================================================================
10733 dnl Check for system NSS
10734 dnl ===================================================================
10735 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10736     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10737     AC_DEFINE(HAVE_FEATURE_NSS)
10738     ENABLE_NSS=TRUE
10739 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10740     with_tls=openssl
10742 AC_SUBST(ENABLE_NSS)
10744 dnl ===================================================================
10745 dnl Enable LDAP support
10746 dnl ===================================================================
10748 if test "$test_openldap" = yes; then
10749     AC_MSG_CHECKING([whether to enable LDAP support])
10750     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10751         AC_MSG_RESULT([yes])
10752         ENABLE_LDAP=TRUE
10753     else
10754         if test "$enable_ldap" != "yes"; then
10755             AC_MSG_RESULT([no])
10756         else
10757             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10758         fi
10759     fi
10761 dnl ===================================================================
10762 dnl Check for system openldap
10763 dnl ===================================================================
10765     if test "$ENABLE_LDAP" = TRUE; then
10766         AC_MSG_CHECKING([which openldap library to use])
10767         if test "$with_system_openldap" = yes; then
10768             AC_MSG_RESULT([external])
10769             SYSTEM_OPENLDAP=TRUE
10770             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10771             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10772             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10773         else
10774             AC_MSG_RESULT([internal])
10775             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10776         fi
10777     fi
10780 AC_SUBST(ENABLE_LDAP)
10781 AC_SUBST(SYSTEM_OPENLDAP)
10783 dnl ===================================================================
10784 dnl Check for TLS/SSL and cryptographic implementation to use
10785 dnl ===================================================================
10786 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10787 if test -n "$with_tls"; then
10788     case $with_tls in
10789     openssl)
10790         AC_DEFINE(USE_TLS_OPENSSL)
10791         TLS=OPENSSL
10792         AC_MSG_RESULT([$TLS])
10794         if test "$enable_openssl" != "yes"; then
10795             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10796         fi
10798         # warn that OpenSSL has been selected but not all TLS code has this option
10799         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10800         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10801         ;;
10802     nss)
10803         AC_DEFINE(USE_TLS_NSS)
10804         TLS=NSS
10805         AC_MSG_RESULT([$TLS])
10806         ;;
10807     no)
10808         AC_MSG_RESULT([none])
10809         AC_MSG_WARN([Skipping TLS/SSL])
10810         ;;
10811     *)
10812         AC_MSG_RESULT([])
10813         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10814 openssl - OpenSSL
10815 nss - Mozilla's Network Security Services (NSS)
10816     ])
10817         ;;
10818     esac
10819 else
10820     # default to using NSS, it results in smaller oox lib
10821     AC_DEFINE(USE_TLS_NSS)
10822     TLS=NSS
10823     AC_MSG_RESULT([$TLS])
10825 AC_SUBST(TLS)
10827 dnl ===================================================================
10828 dnl Check for system sane
10829 dnl ===================================================================
10830 AC_MSG_CHECKING([which sane header to use])
10831 if test "$with_system_sane" = "yes"; then
10832     AC_MSG_RESULT([external])
10833     AC_CHECK_HEADER(sane/sane.h, [],
10834       [AC_MSG_ERROR(sane not found. install sane)], [])
10835 else
10836     AC_MSG_RESULT([internal])
10837     BUILD_TYPE="$BUILD_TYPE SANE"
10840 dnl ===================================================================
10841 dnl Check for system icu
10842 dnl ===================================================================
10843 ICU_MAJOR=73
10844 ICU_MINOR=2
10845 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10846 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10847 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10848 if test "$SYSTEM_ICU" = TRUE; then
10849     AC_LANG_PUSH([C++])
10850     AC_MSG_CHECKING([for unicode/rbbi.h])
10851     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10852     AC_LANG_POP([C++])
10854     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10855     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10856     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10858     if test "$CROSS_COMPILING" != TRUE; then
10859         # using the system icu tools can lead to version confusion, use the
10860         # ones from the build environment when cross-compiling
10861         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10862         if test -z "$SYSTEM_GENBRK"; then
10863             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10864         fi
10865         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10866         if test -z "$SYSTEM_GENCCODE"; then
10867             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10868         fi
10869         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10870         if test -z "$SYSTEM_GENCMN"; then
10871             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10872         fi
10873     fi
10876 AC_SUBST(SYSTEM_GENBRK)
10877 AC_SUBST(SYSTEM_GENCCODE)
10878 AC_SUBST(SYSTEM_GENCMN)
10879 AC_SUBST(ICU_MAJOR)
10880 AC_SUBST(ICU_MINOR)
10882 dnl ==================================================================
10883 dnl CURL
10884 dnl ==================================================================
10885 if test "$enable_curl" == "yes"; then
10886     AC_DEFINE([HAVE_FEATURE_CURL])
10889 dnl ==================================================================
10890 dnl Breakpad
10891 dnl ==================================================================
10892 DEFAULT_CRASHDUMP_VALUE="true"
10893 AC_MSG_CHECKING([whether to enable breakpad])
10894 if test "$enable_breakpad" != yes; then
10895     AC_MSG_RESULT([no])
10896 else
10897     if test "$enable_curl" != "yes"; then
10898         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10899     fi
10900     AC_MSG_RESULT([yes])
10901     ENABLE_BREAKPAD="TRUE"
10902     AC_DEFINE(ENABLE_BREAKPAD)
10903     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10904     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10906     AC_MSG_CHECKING([for disable crash dump])
10907     if test "$enable_crashdump" = no; then
10908         DEFAULT_CRASHDUMP_VALUE="false"
10909         AC_MSG_RESULT([yes])
10910     else
10911        AC_MSG_RESULT([no])
10912     fi
10914     AC_MSG_CHECKING([for crashreport config])
10915     if test "$with_symbol_config" = "no"; then
10916         BREAKPAD_SYMBOL_CONFIG="invalid"
10917         AC_MSG_RESULT([no])
10918     else
10919         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10920         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10921         AC_MSG_RESULT([yes])
10922     fi
10923     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10925 AC_SUBST(ENABLE_BREAKPAD)
10926 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10928 dnl ==================================================================
10929 dnl libcmis
10930 dnl ==================================================================
10931 if test "$enable_libcmis" == "yes"; then
10932     if test "$enable_curl" != "yes"; then
10933         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10934     fi
10937 dnl ===================================================================
10938 dnl Orcus
10939 dnl ===================================================================
10940 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10941 if test "$with_system_orcus" != "yes"; then
10942     if test "$SYSTEM_BOOST" = "TRUE"; then
10943         dnl Link with Boost.System
10944         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10945         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10946         dnl in documentation has no effect.
10947         AX_BOOST_SYSTEM
10948     fi
10950 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10951 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10952 AC_SUBST([BOOST_SYSTEM_LIB])
10953 AC_SUBST(SYSTEM_LIBORCUS)
10955 dnl ===================================================================
10956 dnl HarfBuzz
10957 dnl ===================================================================
10958 harfbuzz_required_version=5.1.0
10960 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10961 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10962 case "$_os" in
10963     Linux)
10964         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10965         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10966         ;;
10967     *)
10968         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10969         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10970         ;;
10971 esac
10972 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10973 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10975 if test "$COM" = "MSC"; then # override the above
10976     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10977     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10980 if test "$with_system_harfbuzz" = "yes"; then
10981     if test "$with_system_graphite" = "no"; then
10982         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10983     fi
10984     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10985     save_LIBS="$LIBS"
10986     save_CFLAGS="$CFLAGS"
10987     LIBS="$LIBS $HARFBUZZ_LIBS"
10988     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10989     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10990     LIBS="$save_LIBS"
10991     CFLAGS="$save_CFLAGS"
10992 else
10993     if test "$with_system_graphite" = "yes"; then
10994         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10995     fi
10998 if test "$USING_X11" = TRUE; then
10999     AC_PATH_X
11000     AC_PATH_XTRA
11001     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11003     if test -z "$x_includes"; then
11004         x_includes="default_x_includes"
11005     fi
11006     if test -z "$x_libraries"; then
11007         x_libraries="default_x_libraries"
11008     fi
11009     CFLAGS="$CFLAGS $X_CFLAGS"
11010     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11011     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11012 else
11013     x_includes="no_x_includes"
11014     x_libraries="no_x_libraries"
11017 if test "$USING_X11" = TRUE; then
11018     dnl ===================================================================
11019     dnl Check for extension headers
11020     dnl ===================================================================
11021     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11022      [#include <X11/extensions/shape.h>])
11024     # vcl needs ICE and SM
11025     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11026     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11027         [AC_MSG_ERROR(ICE library not found)])
11028     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11029     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11030         [AC_MSG_ERROR(SM library not found)])
11033 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11034     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11035     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11038 dnl ===================================================================
11039 dnl Check for system Xrender
11040 dnl ===================================================================
11041 AC_MSG_CHECKING([whether to use Xrender])
11042 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11043     AC_MSG_RESULT([yes])
11044     PKG_CHECK_MODULES(XRENDER, xrender)
11045     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11046     FilterLibs "${XRENDER_LIBS}"
11047     XRENDER_LIBS="${filteredlibs}"
11048     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11049       [AC_MSG_ERROR(libXrender not found or functional)], [])
11050     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11051       [AC_MSG_ERROR(Xrender not found. install X)], [])
11052 else
11053     AC_MSG_RESULT([no])
11055 AC_SUBST(XRENDER_CFLAGS)
11056 AC_SUBST(XRENDER_LIBS)
11058 dnl ===================================================================
11059 dnl Check for XRandr
11060 dnl ===================================================================
11061 AC_MSG_CHECKING([whether to enable RandR support])
11062 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11063     AC_MSG_RESULT([yes])
11064     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11065     if test "$ENABLE_RANDR" != "TRUE"; then
11066         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11067                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11068         XRANDR_CFLAGS=" "
11069         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11070           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11071         XRANDR_LIBS="-lXrandr "
11072         ENABLE_RANDR="TRUE"
11073     fi
11074     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11075     FilterLibs "${XRANDR_LIBS}"
11076     XRANDR_LIBS="${filteredlibs}"
11077 else
11078     ENABLE_RANDR=""
11079     AC_MSG_RESULT([no])
11081 AC_SUBST(XRANDR_CFLAGS)
11082 AC_SUBST(XRANDR_LIBS)
11083 AC_SUBST(ENABLE_RANDR)
11085 if test -z "$with_webdav"; then
11086     with_webdav=$test_webdav
11089 AC_MSG_CHECKING([for WebDAV support])
11090 case "$with_webdav" in
11092     AC_MSG_RESULT([no])
11093     WITH_WEBDAV=""
11094     ;;
11096     AC_MSG_RESULT([yes])
11097     # curl is already mandatory (almost) and checked elsewhere
11098     if test "$enable_curl" = "no"; then
11099         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11100     fi
11101     WITH_WEBDAV=TRUE
11102     ;;
11103 esac
11104 AC_SUBST(WITH_WEBDAV)
11106 dnl ===================================================================
11107 dnl Check for disabling cve_tests
11108 dnl ===================================================================
11109 AC_MSG_CHECKING([whether to execute CVE tests])
11110 # If not explicitly enabled or disabled, default
11111 if test -z "$enable_cve_tests"; then
11112     case "$OS" in
11113     WNT)
11114         # Default cves off for Windows with its wild and wonderful
11115         # variety of AV software kicking in and panicking
11116         enable_cve_tests=no
11117         ;;
11118     *)
11119         # otherwise yes
11120         enable_cve_tests=yes
11121         ;;
11122     esac
11124 if test "$enable_cve_tests" = "no"; then
11125     AC_MSG_RESULT([no])
11126     DISABLE_CVE_TESTS=TRUE
11127     AC_SUBST(DISABLE_CVE_TESTS)
11128 else
11129     AC_MSG_RESULT([yes])
11132 dnl ===================================================================
11133 dnl Check for system openssl
11134 dnl ===================================================================
11135 ENABLE_OPENSSL=
11136 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11137 if test "$enable_openssl" = "yes"; then
11138     AC_MSG_RESULT([no])
11139     ENABLE_OPENSSL=TRUE
11140     if test "$_os" = Darwin ; then
11141         # OpenSSL is deprecated when building for 10.7 or later.
11142         #
11143         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11144         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11146         with_system_openssl=no
11147         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11148     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11149             && test "$with_system_openssl" != "no"; then
11150         with_system_openssl=yes
11151         SYSTEM_OPENSSL=TRUE
11152         OPENSSL_CFLAGS=
11153         OPENSSL_LIBS="-lssl -lcrypto"
11154     else
11155         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11156         if test -n "${SYSTEM_OPENSSL}"; then
11157             AC_DEFINE([SYSTEM_OPENSSL])
11158         fi
11159     fi
11160     if test "$with_system_openssl" = "yes"; then
11161         AC_MSG_CHECKING([whether openssl supports SHA512])
11162         AC_LANG_PUSH([C])
11163         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11164             SHA512_CTX context;
11165 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11166         AC_LANG_POP(C)
11167     fi
11168 else
11169     AC_MSG_RESULT([yes])
11171     # warn that although OpenSSL is disabled, system libraries may depend on it
11172     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11173     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11176 AC_SUBST([ENABLE_OPENSSL])
11178 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11179     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11180         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11181         enable_cipher_openssl_backend=no
11182     else
11183         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11184     fi
11186 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11187 ENABLE_CIPHER_OPENSSL_BACKEND=
11188 if test "$enable_cipher_openssl_backend" = yes; then
11189     AC_MSG_RESULT([yes])
11190     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11191 else
11192     AC_MSG_RESULT([no])
11194 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11196 dnl ===================================================================
11197 dnl Select the crypto backends used by LO
11198 dnl ===================================================================
11200 if test "$build_crypto" = yes; then
11201     if test "$OS" = WNT; then
11202         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11203         AC_DEFINE([USE_CRYPTO_MSCAPI])
11204     elif test "$ENABLE_NSS" = TRUE; then
11205         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11206         AC_DEFINE([USE_CRYPTO_NSS])
11207     fi
11210 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11211 if test "$COM" = "MSC"; then
11212     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11213 else
11214     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11216 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11218 dnl ===================================================================
11219 dnl Check for system redland
11220 dnl ===================================================================
11221 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11222 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11223 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11224 if test "$with_system_redland" = "yes"; then
11225     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11226             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11227 else
11228     RAPTOR_MAJOR="0"
11229     RASQAL_MAJOR="3"
11230     REDLAND_MAJOR="0"
11232 AC_SUBST(RAPTOR_MAJOR)
11233 AC_SUBST(RASQAL_MAJOR)
11234 AC_SUBST(REDLAND_MAJOR)
11236 dnl ===================================================================
11237 dnl Check for system hunspell
11238 dnl ===================================================================
11239 AC_MSG_CHECKING([which libhunspell to use])
11240 if test "$with_system_hunspell" = "yes"; then
11241     AC_MSG_RESULT([external])
11242     SYSTEM_HUNSPELL=TRUE
11243     AC_LANG_PUSH([C++])
11244     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11245     if test "$HUNSPELL_PC" != "TRUE"; then
11246         AC_CHECK_HEADER(hunspell.hxx, [],
11247             [
11248             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11249             [AC_MSG_ERROR(hunspell headers not found.)], [])
11250             ], [])
11251         AC_CHECK_LIB([hunspell], [main], [:],
11252            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11253         HUNSPELL_LIBS=-lhunspell
11254     fi
11255     AC_LANG_POP([C++])
11256     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11257     FilterLibs "${HUNSPELL_LIBS}"
11258     HUNSPELL_LIBS="${filteredlibs}"
11259 else
11260     AC_MSG_RESULT([internal])
11261     SYSTEM_HUNSPELL=
11262     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11263     if test "$COM" = "MSC"; then
11264         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11265     else
11266         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11267     fi
11268     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11270 AC_SUBST(SYSTEM_HUNSPELL)
11271 AC_SUBST(HUNSPELL_CFLAGS)
11272 AC_SUBST(HUNSPELL_LIBS)
11274 dnl ===================================================================
11275 dnl Check for system zxcvbn
11276 dnl ===================================================================
11277 AC_MSG_CHECKING([which zxcvbn to use])
11278 if test "$with_system_zxcvbn" = "yes"; then
11279     AC_MSG_RESULT([external])
11280     SYSTEM_ZXCVBN=TRUE
11281     AC_CHECK_HEADER(zxcvbn.h, [],
11282        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11283     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11284         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11285 else
11286    AC_MSG_RESULT([internal])
11287    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11288    SYSTEM_ZXCVBN=
11290 AC_SUBST(SYSTEM_ZXCVBN)
11292 dnl ===================================================================
11293 dnl Check for system zxing
11294 dnl ===================================================================
11295 AC_MSG_CHECKING([whether to use zxing])
11296 if test "$enable_zxing" = "no"; then
11297     AC_MSG_RESULT([no])
11298     ENABLE_ZXING=
11299     SYSTEM_ZXING=
11300 else
11301     AC_MSG_RESULT([yes])
11302     ENABLE_ZXING=TRUE
11303     AC_MSG_CHECKING([which libzxing to use])
11304     if test "$with_system_zxing" = "yes"; then
11305         AC_MSG_RESULT([external])
11306         SYSTEM_ZXING=TRUE
11307         ZXING_CFLAGS=
11308         AC_LANG_PUSH([C++])
11309         save_CXXFLAGS=$CXXFLAGS
11310         save_IFS=$IFS
11311         IFS=$P_SEP
11312         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11313             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11314             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11315             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11316             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11317             dnl unsetting IFS."):
11318             IFS=$save_IFS
11319             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11320             dnl ignore them here:
11321             if test -z "$i"; then
11322                 continue
11323             fi
11324             dnl TODO: White space in $i would cause problems:
11325             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11326             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11327                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11328         done
11329         CXXFLAGS=$save_CXXFLAGS
11330         if test -z "$ZXING_CFLAGS"; then
11331             AC_MSG_ERROR(zxing headers not found.)
11332         fi
11333         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11334             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11335             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11336         AC_LANG_POP([C++])
11337         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11338         FilterLibs "${ZXING_LIBS}"
11339         ZXING_LIBS="${filteredlibs}"
11340     else
11341         AC_MSG_RESULT([internal])
11342         SYSTEM_ZXING=
11343         BUILD_TYPE="$BUILD_TYPE ZXING"
11344         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11345     fi
11346     if test "$ENABLE_ZXING" = TRUE; then
11347         AC_DEFINE(ENABLE_ZXING)
11348     fi
11349     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11350     AC_LANG_PUSH([C++])
11351     save_CXXFLAGS=$CXXFLAGS
11352     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11353     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11354             #include <BitMatrix.h>
11355             #include <BitMatrixIO.h>
11356             int main(){
11357                 ZXing::BitMatrix matrix(1, 1);
11358                 matrix.set(0, 0, true);
11359                 ZXing::ToSVG(matrix);
11360                 return 0;
11361             }
11362         ])], [
11363             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11364             AC_MSG_RESULT([yes])
11365         ], [AC_MSG_RESULT([no])])
11366     CXXFLAGS=$save_CXXFLAGS
11367     AC_LANG_POP([C++])
11368     AC_SUBST(HAVE_ZXING_TOSVG)
11370 AC_SUBST(SYSTEM_ZXING)
11371 AC_SUBST(ENABLE_ZXING)
11372 AC_SUBST(ZXING_CFLAGS)
11373 AC_SUBST(ZXING_LIBS)
11375 dnl ===================================================================
11376 dnl Check for system box2d
11377 dnl ===================================================================
11378 AC_MSG_CHECKING([which box2d to use])
11379 if test "$with_system_box2d" = "yes"; then
11380     AC_MSG_RESULT([external])
11381     SYSTEM_BOX2D=TRUE
11382     AC_LANG_PUSH([C++])
11383     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11384         [BOX2D_H_FOUND='FALSE'])
11385     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11386         _BOX2D_LIB=box2d
11387         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11388     else
11389         # fail this. there's no other alternative to check when we are here.
11390         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11391             [AC_MSG_ERROR(box2d headers not found.)])
11392         _BOX2D_LIB=Box2D
11393         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11394     fi
11395     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11396         [ AC_MSG_ERROR(box2d library not found.) ], [])
11397     BOX2D_LIBS=-l$_BOX2D_LIB
11398     AC_LANG_POP([C++])
11399     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11400     FilterLibs "${BOX2D_LIBS}"
11401     BOX2D_LIBS="${filteredlibs}"
11402 else
11403     AC_MSG_RESULT([internal])
11404     SYSTEM_BOX2D=
11405     BUILD_TYPE="$BUILD_TYPE BOX2D"
11407 AC_SUBST(SYSTEM_BOX2D)
11408 AC_SUBST(BOX2D_CFLAGS)
11409 AC_SUBST(BOX2D_LIBS)
11411 dnl ===================================================================
11412 dnl Checking for altlinuxhyph
11413 dnl ===================================================================
11414 AC_MSG_CHECKING([which altlinuxhyph to use])
11415 if test "$with_system_altlinuxhyph" = "yes"; then
11416     AC_MSG_RESULT([external])
11417     SYSTEM_HYPH=TRUE
11418     AC_CHECK_HEADER(hyphen.h, [],
11419        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11420     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11421        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11422        [#include <hyphen.h>])
11423     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11424         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11425     if test -z "$HYPHEN_LIB"; then
11426         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11427            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11428     fi
11429     if test -z "$HYPHEN_LIB"; then
11430         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11431            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11432     fi
11433 else
11434     AC_MSG_RESULT([internal])
11435     SYSTEM_HYPH=
11436     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11437     if test "$COM" = "MSC"; then
11438         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11439     else
11440         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11441     fi
11443 AC_SUBST(SYSTEM_HYPH)
11444 AC_SUBST(HYPHEN_LIB)
11446 dnl ===================================================================
11447 dnl Checking for mythes
11448 dnl ===================================================================
11449 AC_MSG_CHECKING([which mythes to use])
11450 if test "$with_system_mythes" = "yes"; then
11451     AC_MSG_RESULT([external])
11452     SYSTEM_MYTHES=TRUE
11453     AC_LANG_PUSH([C++])
11454     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11455     if test "$MYTHES_PKGCONFIG" = "no"; then
11456         AC_CHECK_HEADER(mythes.hxx, [],
11457             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11458         AC_CHECK_LIB([mythes-1.2], [main], [:],
11459             [ MYTHES_FOUND=no], [])
11460     if test "$MYTHES_FOUND" = "no"; then
11461         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11462                 [ MYTHES_FOUND=no], [])
11463     fi
11464     if test "$MYTHES_FOUND" = "no"; then
11465         AC_MSG_ERROR([mythes library not found!.])
11466     fi
11467     fi
11468     AC_LANG_POP([C++])
11469     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11470     FilterLibs "${MYTHES_LIBS}"
11471     MYTHES_LIBS="${filteredlibs}"
11472 else
11473     AC_MSG_RESULT([internal])
11474     SYSTEM_MYTHES=
11475     BUILD_TYPE="$BUILD_TYPE MYTHES"
11476     if test "$COM" = "MSC"; then
11477         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11478     else
11479         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11480     fi
11482 AC_SUBST(SYSTEM_MYTHES)
11483 AC_SUBST(MYTHES_CFLAGS)
11484 AC_SUBST(MYTHES_LIBS)
11486 dnl ===================================================================
11487 dnl How should we build the linear programming solver ?
11488 dnl ===================================================================
11490 ENABLE_COINMP=
11491 AC_MSG_CHECKING([whether to build with CoinMP])
11492 if test "$enable_coinmp" != "no"; then
11493     ENABLE_COINMP=TRUE
11494     AC_MSG_RESULT([yes])
11495     if test "$with_system_coinmp" = "yes"; then
11496         SYSTEM_COINMP=TRUE
11497         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11498         FilterLibs "${COINMP_LIBS}"
11499         COINMP_LIBS="${filteredlibs}"
11500     else
11501         BUILD_TYPE="$BUILD_TYPE COINMP"
11502     fi
11503 else
11504     AC_MSG_RESULT([no])
11506 AC_SUBST(ENABLE_COINMP)
11507 AC_SUBST(SYSTEM_COINMP)
11508 AC_SUBST(COINMP_CFLAGS)
11509 AC_SUBST(COINMP_LIBS)
11511 ENABLE_LPSOLVE=
11512 AC_MSG_CHECKING([whether to build with lpsolve])
11513 if test "$enable_lpsolve" != "no"; then
11514     ENABLE_LPSOLVE=TRUE
11515     AC_MSG_RESULT([yes])
11516 else
11517     AC_MSG_RESULT([no])
11519 AC_SUBST(ENABLE_LPSOLVE)
11521 if test "$ENABLE_LPSOLVE" = TRUE; then
11522     AC_MSG_CHECKING([which lpsolve to use])
11523     if test "$with_system_lpsolve" = "yes"; then
11524         AC_MSG_RESULT([external])
11525         SYSTEM_LPSOLVE=TRUE
11526         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11527            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11528         save_LIBS=$LIBS
11529         # some systems need this. Like Ubuntu...
11530         AC_CHECK_LIB(m, floor)
11531         AC_CHECK_LIB(dl, dlopen)
11532         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11533             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11534         LIBS=$save_LIBS
11535     else
11536         AC_MSG_RESULT([internal])
11537         SYSTEM_LPSOLVE=
11538         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11539     fi
11541 AC_SUBST(SYSTEM_LPSOLVE)
11543 dnl ===================================================================
11544 dnl Checking for libexttextcat
11545 dnl ===================================================================
11546 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11547 if test "$with_system_libexttextcat" = "yes"; then
11548     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11550 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11552 dnl ===================================================================
11553 dnl Checking for libnumbertext
11554 dnl ===================================================================
11555 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11556 if test "$with_system_libnumbertext" = "yes"; then
11557     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11558     SYSTEM_LIBNUMBERTEXT=YES
11559 else
11560     SYSTEM_LIBNUMBERTEXT=
11562 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11563 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11565 dnl ***************************************
11566 dnl testing libc version for Linux...
11567 dnl ***************************************
11568 if test "$_os" = "Linux"; then
11569     AC_MSG_CHECKING([whether the libc is recent enough])
11570     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11571     #include <features.h>
11572     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11573     #error glibc >= 2.1 is required
11574     #endif
11575     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11578 dnl =========================================
11579 dnl Check for uuidgen
11580 dnl =========================================
11581 if test "$_os" = "WINNT"; then
11582     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11583     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11584     UUIDGEN=uuidgen.exe
11585     AC_SUBST(UUIDGEN)
11586 else
11587     AC_PATH_PROG([UUIDGEN], [uuidgen])
11588     if test -z "$UUIDGEN"; then
11589         AC_MSG_WARN([uuid is needed for building installation sets])
11590     fi
11593 dnl ***************************************
11594 dnl Checking for bison and flex
11595 dnl ***************************************
11596 AC_PATH_PROG(BISON, bison)
11597 if test -z "$BISON"; then
11598     AC_MSG_ERROR([no bison found in \$PATH, install it])
11599 else
11600     AC_MSG_CHECKING([the bison version])
11601     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11602     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11603     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11604     dnl cause
11605     dnl
11606     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]
11607     dnl   typedef union YYSTYPE
11608     dnl           ~~~~~~^~~~~~~
11609     dnl
11610     dnl while at least 3.4.1 is know to be good:
11611     if test "$COMPILER_PLUGINS" = TRUE; then
11612         if test "$_bison_longver" -lt 2004; then
11613             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11614         fi
11615     else
11616         if test "$_bison_longver" -lt 2000; then
11617             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11618         fi
11619     fi
11621 AC_SUBST([BISON])
11623 AC_PATH_PROG(FLEX, flex)
11624 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11625     FLEX=`cygpath -m $FLEX`
11627 if test -z "$FLEX"; then
11628     AC_MSG_ERROR([no flex found in \$PATH, install it])
11629 else
11630     AC_MSG_CHECKING([the flex version])
11631     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11632     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11633         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11634     fi
11636 AC_SUBST([FLEX])
11638 AC_PATH_PROG(DIFF, diff)
11639 if test -z "$DIFF"; then
11640     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11642 AC_SUBST([DIFF])
11644 AC_PATH_PROG(UNIQ, uniq)
11645 if test -z "$UNIQ"; then
11646     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11648 AC_SUBST([UNIQ])
11650 dnl ***************************************
11651 dnl Checking for patch
11652 dnl ***************************************
11653 AC_PATH_PROG(PATCH, patch)
11654 if test -z "$PATCH"; then
11655     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11658 dnl On Solaris or macOS, check if --with-gnu-patch was used
11659 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11660     if test -z "$with_gnu_patch"; then
11661         GNUPATCH=$PATCH
11662     else
11663         if test -x "$with_gnu_patch"; then
11664             GNUPATCH=$with_gnu_patch
11665         else
11666             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11667         fi
11668     fi
11670     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11671     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11672         AC_MSG_RESULT([yes])
11673     else
11674         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11675             AC_MSG_RESULT([no, but accepted (Apple patch)])
11676             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11677         else
11678             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11679         fi
11680     fi
11681 else
11682     GNUPATCH=$PATCH
11685 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11686     GNUPATCH=`cygpath -m $GNUPATCH`
11689 dnl We also need to check for --with-gnu-cp
11691 if test -z "$with_gnu_cp"; then
11692     # check the place where the good stuff is hidden on Solaris...
11693     if test -x /usr/gnu/bin/cp; then
11694         GNUCP=/usr/gnu/bin/cp
11695     else
11696         AC_PATH_PROGS(GNUCP, gnucp cp)
11697     fi
11698     if test -z $GNUCP; then
11699         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11700     fi
11701 else
11702     if test -x "$with_gnu_cp"; then
11703         GNUCP=$with_gnu_cp
11704     else
11705         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11706     fi
11709 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11710     GNUCP=`cygpath -m $GNUCP`
11713 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11714 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11715     AC_MSG_RESULT([yes])
11716 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11717     AC_MSG_RESULT([yes])
11718 else
11719     case "$build_os" in
11720     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11721         x_GNUCP=[\#]
11722         GNUCP=''
11723         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11724         ;;
11725     *)
11726         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11727         ;;
11728     esac
11731 AC_SUBST(GNUPATCH)
11732 AC_SUBST(GNUCP)
11733 AC_SUBST(x_GNUCP)
11735 dnl ***************************************
11736 dnl testing assembler path
11737 dnl ***************************************
11738 ML_EXE=""
11739 if test "$_os" = "WINNT"; then
11740     case "$WIN_HOST_ARCH" in
11741     x86) assembler=ml.exe ;;
11742     x64) assembler=ml64.exe ;;
11743     arm64) assembler=armasm64.exe ;;
11744     esac
11746     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11747     if test -f "$MSVC_HOST_PATH/$assembler"; then
11748         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11749         AC_MSG_RESULT([$ML_EXE])
11750     else
11751         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11752     fi
11755 AC_SUBST(ML_EXE)
11757 dnl ===================================================================
11758 dnl We need zip and unzip
11759 dnl ===================================================================
11760 AC_PATH_PROG(ZIP, zip)
11761 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11762 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11763     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],,)
11766 AC_PATH_PROG(UNZIP, unzip)
11767 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11769 dnl ===================================================================
11770 dnl Zip must be a specific type for different build types.
11771 dnl ===================================================================
11772 if test $build_os = cygwin; then
11773     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11774         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11775     fi
11778 dnl ===================================================================
11779 dnl We need touch with -h option support.
11780 dnl ===================================================================
11781 AC_PATH_PROG(TOUCH, touch)
11782 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11783 touch "$WARNINGS_FILE"
11784 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11785     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],,)
11788 dnl ===================================================================
11789 dnl Check for system epoxy
11790 dnl ===================================================================
11791 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11792 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11794 dnl ===================================================================
11795 dnl Show which vclplugs will be built.
11796 dnl ===================================================================
11797 R=""
11799 libo_ENABLE_VCLPLUG([gen])
11800 libo_ENABLE_VCLPLUG([gtk3])
11801 libo_ENABLE_VCLPLUG([gtk3_kde5])
11802 libo_ENABLE_VCLPLUG([gtk4])
11803 libo_ENABLE_VCLPLUG([kf5])
11804 libo_ENABLE_VCLPLUG([kf6])
11805 libo_ENABLE_VCLPLUG([qt5])
11806 libo_ENABLE_VCLPLUG([qt6])
11808 if test "$_os" = "WINNT"; then
11809     R="$R win"
11810 elif test "$_os" = "Darwin"; then
11811     R="$R osx"
11812 elif test "$_os" = "iOS"; then
11813     R="ios"
11814 elif test "$_os" = Android; then
11815     R="android"
11818 build_vcl_plugins="$R"
11819 if test -z "$build_vcl_plugins"; then
11820     build_vcl_plugins=" none"
11822 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11823 VCL_PLUGIN_INFO=$R
11824 AC_SUBST([VCL_PLUGIN_INFO])
11826 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11827     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11830 dnl ===================================================================
11831 dnl Check for GTK libraries
11832 dnl ===================================================================
11834 GTK3_CFLAGS=""
11835 GTK3_LIBS=""
11836 ENABLE_GTKTILEDVIEWER=""
11837 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11838     if test "$with_system_cairo" = no; then
11839         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.'
11840     fi
11841     : ${with_system_cairo:=yes}
11842     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)
11843     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11844     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11845     FilterLibs "${GTK3_LIBS}"
11846     GTK3_LIBS="${filteredlibs}"
11848     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11849     if test "$with_system_epoxy" != "yes"; then
11850         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11851         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11852                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11853     fi
11854 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11855     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11856     if test "$build_os" = "cygwin"; then
11857         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11858         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11859     fi
11861     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11862     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11863     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11864     FilterLibs "${GTK3_LIBS}"
11865     GTK3_LIBS="${filteredlibs}"
11866     ENABLE_GTKTILEDVIEWER="yes"
11868 AC_SUBST(GTK3_LIBS)
11869 AC_SUBST(GTK3_CFLAGS)
11870 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11872 GTK4_CFLAGS=""
11873 GTK4_LIBS=""
11874 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11875     if test "$with_system_cairo" = no; then
11876         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11877     fi
11878     : ${with_system_cairo:=yes}
11879     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11880     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11881     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11882     FilterLibs "${GTK4_LIBS}"
11883     GTK4_LIBS="${filteredlibs}"
11885     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11886     if test "$with_system_epoxy" != "yes"; then
11887         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11888         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11889                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11890     fi
11892 AC_SUBST(GTK4_LIBS)
11893 AC_SUBST(GTK4_CFLAGS)
11895 if test "$enable_introspection" = yes; then
11896     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11897         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11898     else
11899         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11900     fi
11903 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11904 if ! test "$ENABLE_GTK3" = TRUE; then
11905     if test "$enable_atspi_tests" = yes; then
11906         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11907     fi
11908     enable_atspi_tests=no
11910 if ! test "$enable_atspi_tests" = no; then
11911     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11912     if ! test "$XVFB_RUN" = no; then
11913         dnl make sure the found xvfb-run actually works
11914         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11915         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11916             AC_MSG_RESULT([yes])
11917         else
11918             AC_MSG_RESULT([no])
11919             XVFB_RUN=no
11920         fi
11921     fi
11922     if test "$XVFB_RUN" = no; then
11923         if test "$enable_atspi_tests" = yes; then
11924             AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11925         fi
11926         enable_atspi_tests=no
11927     fi
11929 if ! test "$enable_atspi_tests" = no; then
11930     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11931     if test "$DBUS_LAUNCH" = no; then
11932         if test "$enable_atspi_tests" = yes; then
11933             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11934         fi
11935         enable_atspi_tests=no
11936     fi
11938 if ! test "$enable_atspi_tests" = no; then
11939     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11940                       [if test "$enable_atspi_tests" = yes; then
11941                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11942                        else
11943                            enable_atspi_tests=no
11944                        fi])
11946 if ! test "x$enable_atspi_tests" = xno; then
11947     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11948                       [have_atspi_scroll_to=1],
11949                       [have_atspi_scroll_to=0])
11950     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11951                        [Whether AT-SPI2 has the scrollTo API])
11953 ENABLE_ATSPI_TESTS=
11954 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11955 AC_SUBST([ENABLE_ATSPI_TESTS])
11957 dnl ===================================================================
11958 dnl check for dbus support
11959 dnl ===================================================================
11960 ENABLE_DBUS=""
11961 DBUS_CFLAGS=""
11962 DBUS_LIBS=""
11963 DBUS_GLIB_CFLAGS=""
11964 DBUS_GLIB_LIBS=""
11965 DBUS_HAVE_GLIB=""
11967 if test "$enable_dbus" = "no"; then
11968     test_dbus=no
11971 AC_MSG_CHECKING([whether to enable DBUS support])
11972 if test "$test_dbus" = "yes"; then
11973     ENABLE_DBUS="TRUE"
11974     AC_MSG_RESULT([yes])
11975     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11976     AC_DEFINE(ENABLE_DBUS)
11977     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11978     FilterLibs "${DBUS_LIBS}"
11979     DBUS_LIBS="${filteredlibs}"
11981     # Glib is needed for BluetoothServer
11982     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11983     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11984         [
11985             DBUS_HAVE_GLIB="TRUE"
11986             AC_DEFINE(DBUS_HAVE_GLIB,1)
11987         ],
11988         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11989     )
11990 else
11991     AC_MSG_RESULT([no])
11994 AC_SUBST(ENABLE_DBUS)
11995 AC_SUBST(DBUS_CFLAGS)
11996 AC_SUBST(DBUS_LIBS)
11997 AC_SUBST(DBUS_GLIB_CFLAGS)
11998 AC_SUBST(DBUS_GLIB_LIBS)
11999 AC_SUBST(DBUS_HAVE_GLIB)
12001 AC_MSG_CHECKING([whether to enable Impress remote control])
12002 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12003     AC_MSG_RESULT([yes])
12004     ENABLE_SDREMOTE=TRUE
12005     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
12006         <true/>"
12007     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12009     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12010         # The Bluetooth code doesn't compile with macOS SDK 10.15
12011         if test "$enable_sdremote_bluetooth" = yes; then
12012             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12013         fi
12014         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12015         enable_sdremote_bluetooth=no
12016     fi
12017     # If not explicitly enabled or disabled, default
12018     if test -z "$enable_sdremote_bluetooth"; then
12019         case "$OS" in
12020         LINUX|MACOSX|WNT)
12021             # Default to yes for these
12022             enable_sdremote_bluetooth=yes
12023             ;;
12024         *)
12025             # otherwise no
12026             enable_sdremote_bluetooth=no
12027             ;;
12028         esac
12029     fi
12030     # $enable_sdremote_bluetooth is guaranteed non-empty now
12032     if test "$enable_sdremote_bluetooth" != "no"; then
12033         if test "$OS" = "LINUX"; then
12034             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12035                 AC_MSG_RESULT([yes])
12036                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12037                 dnl ===================================================================
12038                 dnl Check for system bluez
12039                 dnl ===================================================================
12040                 AC_MSG_CHECKING([which Bluetooth header to use])
12041                 if test "$with_system_bluez" = "yes"; then
12042                     AC_MSG_RESULT([external])
12043                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12044                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12045                     SYSTEM_BLUEZ=TRUE
12046                 else
12047                     AC_MSG_RESULT([internal])
12048                     SYSTEM_BLUEZ=
12049                 fi
12050             else
12051                 AC_MSG_RESULT([no, dbus disabled])
12052                 ENABLE_SDREMOTE_BLUETOOTH=
12053                 SYSTEM_BLUEZ=
12054             fi
12055         else
12056             AC_MSG_RESULT([yes])
12057             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12058             SYSTEM_BLUEZ=
12059             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12060         <key>com.apple.security.device.bluetooth</key>
12061         <true/>"
12062         fi
12063     else
12064         AC_MSG_RESULT([no])
12065         ENABLE_SDREMOTE_BLUETOOTH=
12066         SYSTEM_BLUEZ=
12067     fi
12068 else
12069     ENABLE_SDREMOTE=
12070     SYSTEM_BLUEZ=
12071     AC_MSG_RESULT([no])
12073 AC_SUBST(ENABLE_SDREMOTE)
12074 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12075 AC_SUBST(SDREMOTE_ENTITLEMENT)
12076 AC_SUBST(SYSTEM_BLUEZ)
12078 dnl ===================================================================
12079 dnl Check whether to enable GIO support
12080 dnl ===================================================================
12081 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12082     AC_MSG_CHECKING([whether to enable GIO support])
12083     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12084         dnl Need at least 2.26 for the dbus support.
12085         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12086                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12087         if test "$ENABLE_GIO" = "TRUE"; then
12088             AC_DEFINE(ENABLE_GIO)
12089             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12090             FilterLibs "${GIO_LIBS}"
12091             GIO_LIBS="${filteredlibs}"
12092         fi
12093     else
12094         AC_MSG_RESULT([no])
12095     fi
12097 AC_SUBST(ENABLE_GIO)
12098 AC_SUBST(GIO_CFLAGS)
12099 AC_SUBST(GIO_LIBS)
12102 dnl ===================================================================
12104 SPLIT_APP_MODULES=""
12105 if test "$enable_split_app_modules" = "yes"; then
12106     SPLIT_APP_MODULES="TRUE"
12108 AC_SUBST(SPLIT_APP_MODULES)
12110 SPLIT_OPT_FEATURES=""
12111 if test "$enable_split_opt_features" = "yes"; then
12112     SPLIT_OPT_FEATURES="TRUE"
12114 AC_SUBST(SPLIT_OPT_FEATURES)
12116 dnl ===================================================================
12117 dnl Check whether the GStreamer libraries are available.
12118 dnl ===================================================================
12120 ENABLE_GSTREAMER_1_0=""
12122 if test "$test_gstreamer_1_0" = yes; then
12124     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12125     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12126         ENABLE_GSTREAMER_1_0="TRUE"
12127         AC_MSG_RESULT([yes])
12128         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12129         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12130         FilterLibs "${GSTREAMER_1_0_LIBS}"
12131         GSTREAMER_1_0_LIBS="${filteredlibs}"
12132         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12133     else
12134         AC_MSG_RESULT([no])
12135     fi
12137 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12138 AC_SUBST(GSTREAMER_1_0_LIBS)
12139 AC_SUBST(ENABLE_GSTREAMER_1_0)
12141 ENABLE_OPENGL_TRANSITIONS=
12142 ENABLE_OPENGL_CANVAS=
12143 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12144    : # disable
12145 elif test "$_os" = "Darwin"; then
12146     # We use frameworks on macOS, no need for detail checks
12147     ENABLE_OPENGL_TRANSITIONS=TRUE
12148     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12149     ENABLE_OPENGL_CANVAS=TRUE
12150 elif test $_os = WINNT; then
12151     ENABLE_OPENGL_TRANSITIONS=TRUE
12152     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12153     ENABLE_OPENGL_CANVAS=TRUE
12154 else
12155     if test "$USING_X11" = TRUE; then
12156         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12157         ENABLE_OPENGL_TRANSITIONS=TRUE
12158         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12159         ENABLE_OPENGL_CANVAS=TRUE
12160     fi
12163 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12164 AC_SUBST(ENABLE_OPENGL_CANVAS)
12166 dnl =================================================
12167 dnl Check whether to build with OpenCL support.
12168 dnl =================================================
12170 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12171     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12172     # platform (optional at run-time, used through clew).
12173     BUILD_TYPE="$BUILD_TYPE OPENCL"
12174     AC_DEFINE(HAVE_FEATURE_OPENCL)
12177 dnl =================================================
12178 dnl Check whether to build with dconf support.
12179 dnl =================================================
12181 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12182     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12183         if test "$enable_dconf" = yes; then
12184             AC_MSG_ERROR([dconf not found])
12185         else
12186             enable_dconf=no
12187         fi])
12189 AC_MSG_CHECKING([whether to enable dconf])
12190 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12191     DCONF_CFLAGS=
12192     DCONF_LIBS=
12193     ENABLE_DCONF=
12194     AC_MSG_RESULT([no])
12195 else
12196     ENABLE_DCONF=TRUE
12197     AC_DEFINE(ENABLE_DCONF)
12198     AC_MSG_RESULT([yes])
12200 AC_SUBST([DCONF_CFLAGS])
12201 AC_SUBST([DCONF_LIBS])
12202 AC_SUBST([ENABLE_DCONF])
12204 # pdf import?
12205 AC_MSG_CHECKING([whether to build the PDF import feature])
12206 ENABLE_PDFIMPORT=
12207 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12208     AC_MSG_RESULT([yes])
12209     ENABLE_PDFIMPORT=TRUE
12210     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12211 else
12212     AC_MSG_RESULT([no])
12215 # Pdfium?
12216 AC_MSG_CHECKING([whether to build PDFium])
12217 ENABLE_PDFIUM=
12218 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12219     AC_MSG_RESULT([yes])
12220     ENABLE_PDFIUM=TRUE
12221     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12222 else
12223     AC_MSG_RESULT([no])
12225 AC_SUBST(ENABLE_PDFIUM)
12227 if test "$ENABLE_PDFIUM" = "TRUE"; then
12228     AC_MSG_CHECKING([which OpenJPEG library to use])
12229     if test "$with_system_openjpeg" = "yes"; then
12230         SYSTEM_OPENJPEG2=TRUE
12231         AC_MSG_RESULT([external])
12232         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12233         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12234         FilterLibs "${OPENJPEG2_LIBS}"
12235         OPENJPEG2_LIBS="${filteredlibs}"
12236     else
12237         SYSTEM_OPENJPEG2=FALSE
12238         AC_MSG_RESULT([internal])
12239     fi
12241     AC_MSG_CHECKING([which Abseil library to use])
12242     if test "$with_system_abseil" = "yes"; then
12243         AC_MSG_RESULT([external])
12244         SYSTEM_ABSEIL=TRUE
12245         AC_LANG_PUSH([C++])
12246         PKG_CHECK_MODULES(ABSEIL, absl_bad_optional_access absl_bad_variant_access absl_inlined_vector )
12247         AC_LANG_POP([C++])
12248         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12249         FilterLibs "${ABSEIL_LIBS}"
12250         ABSEIL_LIBS="${filteredlibs}"
12251     else
12252         AC_MSG_RESULT([internal])
12253     fi
12255 AC_SUBST(SYSTEM_OPENJPEG2)
12256 AC_SUBST(SYSTEM_ABSEIL)
12257 AC_SUBST(ABSEIL_CFLAGS)
12258 AC_SUBST(ABSEIL_LIBS)
12260 dnl ===================================================================
12261 dnl Check for poppler
12262 dnl ===================================================================
12263 ENABLE_POPPLER=
12264 AC_MSG_CHECKING([whether to build Poppler])
12265 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12266     AC_MSG_RESULT([yes])
12267     ENABLE_POPPLER=TRUE
12268     AC_DEFINE(HAVE_FEATURE_POPPLER)
12269 else
12270     AC_MSG_RESULT([no])
12272 AC_SUBST(ENABLE_POPPLER)
12274 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12275     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12278 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12279     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12282 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12283     dnl ===================================================================
12284     dnl Check for system poppler
12285     dnl ===================================================================
12286     AC_MSG_CHECKING([which PDF import poppler to use])
12287     if test "$with_system_poppler" = "yes"; then
12288         AC_MSG_RESULT([external])
12289         SYSTEM_POPPLER=TRUE
12290         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12291         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12292         FilterLibs "${POPPLER_LIBS}"
12293         POPPLER_LIBS="${filteredlibs}"
12294     else
12295         AC_MSG_RESULT([internal])
12296         SYSTEM_POPPLER=
12297         BUILD_TYPE="$BUILD_TYPE POPPLER"
12298     fi
12299     AC_DEFINE([ENABLE_PDFIMPORT],1)
12301 AC_SUBST(ENABLE_PDFIMPORT)
12302 AC_SUBST(SYSTEM_POPPLER)
12303 AC_SUBST(POPPLER_CFLAGS)
12304 AC_SUBST(POPPLER_LIBS)
12306 # Skia?
12307 ENABLE_SKIA=
12308 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12309     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12310     if test "$SYSTEM_FREETYPE" = TRUE; then
12311         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12312             [skia_freetype_ok=yes],
12313             [skia_freetype_ok=no])
12314     else # internal is ok
12315         skia_freetype_ok=yes
12316     fi
12317     AC_MSG_CHECKING([whether to build Skia])
12318     if test "$skia_freetype_ok" = "yes"; then
12319         if test "$enable_skia" = "debug"; then
12320             AC_MSG_RESULT([yes (debug)])
12321             ENABLE_SKIA_DEBUG=TRUE
12322         else
12323             AC_MSG_RESULT([yes])
12324             ENABLE_SKIA_DEBUG=
12325         fi
12326         ENABLE_SKIA=TRUE
12327         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12328             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12329         fi
12331         AC_DEFINE(HAVE_FEATURE_SKIA)
12332         BUILD_TYPE="$BUILD_TYPE SKIA"
12334         if test "$OS" = "MACOSX"; then
12335             AC_DEFINE(SK_GANESH,1)
12336             AC_DEFINE(SK_METAL,1)
12337             SKIA_GPU=METAL
12338             AC_SUBST(SKIA_GPU)
12339         else
12340             AC_DEFINE(SK_GANESH,1)
12341             AC_DEFINE(SK_VULKAN,1)
12342             SKIA_GPU=VULKAN
12343             AC_SUBST(SKIA_GPU)
12344         fi
12345     else
12346         AC_MSG_RESULT([no (freetype too old)])
12347         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12348     fi
12350 else
12351     AC_MSG_CHECKING([whether to build Skia])
12352     AC_MSG_RESULT([no])
12354 AC_SUBST(ENABLE_SKIA)
12355 AC_SUBST(ENABLE_SKIA_DEBUG)
12357 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12358 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12359 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12360 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12361 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12362 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12363 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12364 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12365 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12366 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12367 LO_CLANG_VERSION=
12368 HAVE_LO_CLANG_DLLEXPORTINLINES=
12370 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12371     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12372         AC_MSG_CHECKING([for Clang])
12373         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12374     else
12375         if test "$_os" = "WINNT"; then
12376             AC_MSG_CHECKING([for clang-cl])
12377             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12378                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12379             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12380                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12381             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12382                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12383             fi
12384             if test -n "$LO_CLANG_CC"; then
12385                 dnl explicitly set -m32/-m64
12386                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12387                 LO_CLANG_CXX="$LO_CLANG_CC"
12388                 AC_MSG_RESULT([$LO_CLANG_CC])
12389             else
12390                 AC_MSG_RESULT([no])
12391             fi
12393             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12394             echo "#include <stdlib.h>" > conftest.c
12395             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12396                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12397             rm -f conftest.c conftest.obj
12398             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12399                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12400             else
12401                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12402             fi
12403         else
12404             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12405             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12406         fi
12407     fi
12408     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12409         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12410         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12411         if test "$LO_CLANG_VERSION" -lt 50002; then
12412             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12413             LO_CLANG_CC=
12414             LO_CLANG_CXX=
12415         fi
12416     fi
12417     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12418         save_CXX="$CXX"
12419         CXX="$LO_CLANG_CXX"
12420         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12421         AC_LANG_PUSH([C++])
12422         save_CXXFLAGS=$CXXFLAGS
12423         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12424         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12425                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12426                 AC_MSG_RESULT([yes])
12427             ], [AC_MSG_RESULT([no])])
12428         CXXFLAGS=$save_CXXFLAGS
12429         AC_LANG_POP([C++])
12430         CXX="$save_CXX"
12431         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12432             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.])
12433         fi
12434     fi
12435     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12436         # Skia is the default on Windows and Mac, so hard-require Clang.
12437         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12438         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12439             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12440         else
12441             AC_MSG_WARN([Clang compiler not found.])
12442         fi
12443     else
12445         save_CXX="$CXX"
12446         CXX="$LO_CLANG_CXX"
12447         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12448         flag_sse2=-msse2
12449         flag_ssse3=-mssse3
12450         flag_sse41=-msse4.1
12451         flag_sse42=-msse4.2
12452         flag_avx=-mavx
12453         flag_avx2=-mavx2
12454         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12455         flag_avx512f=-mavx512f
12456         flag_f16c=-mf16c
12457         flag_fma=-mfma
12459         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12460         AC_LANG_PUSH([C++])
12461         save_CXXFLAGS=$CXXFLAGS
12462         CXXFLAGS="$CXXFLAGS $flag_sse2"
12463         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12464             #include <emmintrin.h>
12465             int main () {
12466                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12467                 c = _mm_xor_si128 (a, b);
12468                 return 0;
12469             }
12470             ])],
12471             [can_compile_sse2=yes],
12472             [can_compile_sse2=no])
12473         AC_LANG_POP([C++])
12474         CXXFLAGS=$save_CXXFLAGS
12475         AC_MSG_RESULT([${can_compile_sse2}])
12476         if test "${can_compile_sse2}" = "yes" ; then
12477             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12478         fi
12480         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12481         AC_LANG_PUSH([C++])
12482         save_CXXFLAGS=$CXXFLAGS
12483         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12484         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12485             #include <tmmintrin.h>
12486             int main () {
12487                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12488                 c = _mm_maddubs_epi16 (a, b);
12489                 return 0;
12490             }
12491             ])],
12492             [can_compile_ssse3=yes],
12493             [can_compile_ssse3=no])
12494         AC_LANG_POP([C++])
12495         CXXFLAGS=$save_CXXFLAGS
12496         AC_MSG_RESULT([${can_compile_ssse3}])
12497         if test "${can_compile_ssse3}" = "yes" ; then
12498             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12499         fi
12501         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12502         AC_LANG_PUSH([C++])
12503         save_CXXFLAGS=$CXXFLAGS
12504         CXXFLAGS="$CXXFLAGS $flag_sse41"
12505         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12506             #include <smmintrin.h>
12507             int main () {
12508                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12509                 c = _mm_cmpeq_epi64 (a, b);
12510                 return 0;
12511             }
12512             ])],
12513             [can_compile_sse41=yes],
12514             [can_compile_sse41=no])
12515         AC_LANG_POP([C++])
12516         CXXFLAGS=$save_CXXFLAGS
12517         AC_MSG_RESULT([${can_compile_sse41}])
12518         if test "${can_compile_sse41}" = "yes" ; then
12519             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12520         fi
12522         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12523         AC_LANG_PUSH([C++])
12524         save_CXXFLAGS=$CXXFLAGS
12525         CXXFLAGS="$CXXFLAGS $flag_sse42"
12526         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12527             #include <nmmintrin.h>
12528             int main () {
12529                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12530                 c = _mm_cmpgt_epi64 (a, b);
12531                 return 0;
12532             }
12533             ])],
12534             [can_compile_sse42=yes],
12535             [can_compile_sse42=no])
12536         AC_LANG_POP([C++])
12537         CXXFLAGS=$save_CXXFLAGS
12538         AC_MSG_RESULT([${can_compile_sse42}])
12539         if test "${can_compile_sse42}" = "yes" ; then
12540             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12541         fi
12543         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12544         AC_LANG_PUSH([C++])
12545         save_CXXFLAGS=$CXXFLAGS
12546         CXXFLAGS="$CXXFLAGS $flag_avx"
12547         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12548             #include <immintrin.h>
12549             int main () {
12550                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12551                 c = _mm256_xor_ps(a, b);
12552                 return 0;
12553             }
12554             ])],
12555             [can_compile_avx=yes],
12556             [can_compile_avx=no])
12557         AC_LANG_POP([C++])
12558         CXXFLAGS=$save_CXXFLAGS
12559         AC_MSG_RESULT([${can_compile_avx}])
12560         if test "${can_compile_avx}" = "yes" ; then
12561             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12562         fi
12564         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12565         AC_LANG_PUSH([C++])
12566         save_CXXFLAGS=$CXXFLAGS
12567         CXXFLAGS="$CXXFLAGS $flag_avx2"
12568         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12569             #include <immintrin.h>
12570             int main () {
12571                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12572                 c = _mm256_maddubs_epi16(a, b);
12573                 return 0;
12574             }
12575             ])],
12576             [can_compile_avx2=yes],
12577             [can_compile_avx2=no])
12578         AC_LANG_POP([C++])
12579         CXXFLAGS=$save_CXXFLAGS
12580         AC_MSG_RESULT([${can_compile_avx2}])
12581         if test "${can_compile_avx2}" = "yes" ; then
12582             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12583         fi
12585         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12586         AC_LANG_PUSH([C++])
12587         save_CXXFLAGS=$CXXFLAGS
12588         CXXFLAGS="$CXXFLAGS $flag_avx512"
12589         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12590             #include <immintrin.h>
12591             int main () {
12592                 __m512i a = _mm512_loadu_si512(0);
12593                 __m512d v1 = _mm512_load_pd(0);
12594                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12595                 __m512d v2 = _mm512_abs_pd(v1);
12596                 return 0;
12597             }
12598             ])],
12599             [can_compile_avx512=yes],
12600             [can_compile_avx512=no])
12601         AC_LANG_POP([C++])
12602         CXXFLAGS=$save_CXXFLAGS
12603         AC_MSG_RESULT([${can_compile_avx512}])
12604         if test "${can_compile_avx512}" = "yes" ; then
12605             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12606             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12607         fi
12609         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12610         AC_LANG_PUSH([C++])
12611         save_CXXFLAGS=$CXXFLAGS
12612         CXXFLAGS="$CXXFLAGS $flag_f16c"
12613         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12614             #include <immintrin.h>
12615             int main () {
12616                 __m128i a = _mm_set1_epi32 (0);
12617                 __m128 c;
12618                 c = _mm_cvtph_ps(a);
12619                 return 0;
12620             }
12621             ])],
12622             [can_compile_f16c=yes],
12623             [can_compile_f16c=no])
12624         AC_LANG_POP([C++])
12625         CXXFLAGS=$save_CXXFLAGS
12626         AC_MSG_RESULT([${can_compile_f16c}])
12627         if test "${can_compile_f16c}" = "yes" ; then
12628             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12629         fi
12631         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12632         AC_LANG_PUSH([C++])
12633         save_CXXFLAGS=$CXXFLAGS
12634         CXXFLAGS="$CXXFLAGS $flag_fma"
12635         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12636             #include <immintrin.h>
12637             int main () {
12638                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12639                 d = _mm256_fmadd_ps(a, b, c);
12640                 return 0;
12641             }
12642             ])],
12643             [can_compile_fma=yes],
12644             [can_compile_fma=no])
12645         AC_LANG_POP([C++])
12646         CXXFLAGS=$save_CXXFLAGS
12647         AC_MSG_RESULT([${can_compile_fma}])
12648         if test "${can_compile_fma}" = "yes" ; then
12649             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12650         fi
12652         CXX="$save_CXX"
12653     fi
12656 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12658 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12659     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12660     AC_LANG_PUSH([C])
12661     save_CC="$CC"
12662     CC="$LO_CLANG_CC"
12663     save_CFLAGS=$CFLAGS
12664     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12665     dnl an empty program will do, we're checking the compiler flags
12666     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12667                       [use_ccache=yes], [use_ccache=no])
12668     CFLAGS=$save_CFLAGS
12669     CC=$save_CC
12670     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12671         AC_MSG_RESULT([yes])
12672     else
12673         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12674         AC_MSG_RESULT([no])
12675     fi
12676     AC_LANG_POP([C])
12678     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12679     AC_LANG_PUSH([C++])
12680     save_CXX="$CXX"
12681     CXX="$LO_CLANG_CXX"
12682     save_CXXFLAGS=$CXXFLAGS
12683     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12684     dnl an empty program will do, we're checking the compiler flags
12685     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12686                       [use_ccache=yes], [use_ccache=no])
12687     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12688         AC_MSG_RESULT([yes])
12689     else
12690         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12691         AC_MSG_RESULT([no])
12692     fi
12693     CXXFLAGS=$save_CXXFLAGS
12694     CXX=$save_CXX
12695     AC_LANG_POP([C++])
12698 AC_SUBST(LO_CLANG_CC)
12699 AC_SUBST(LO_CLANG_CXX)
12700 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12701 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12702 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12703 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12704 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12705 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12706 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12707 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12708 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12709 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12710 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12711 AC_SUBST(LO_CLANG_VERSION)
12712 AC_SUBST(CLANG_USE_LD)
12713 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12715 SYSTEM_GPGMEPP=
12717 AC_MSG_CHECKING([whether to enable gpgmepp])
12718 if test "$enable_gpgmepp" = no; then
12719     AC_MSG_RESULT([no])
12720 elif test "$enable_mpl_subset" = "yes"; then
12721     AC_MSG_RESULT([no (MPL only)])
12722 elif test "$enable_fuzzers" = "yes"; then
12723     AC_MSG_RESULT([no (oss-fuzz)])
12724 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12725     AC_MSG_RESULT([yes])
12726     dnl ===================================================================
12727     dnl Check for system gpgme
12728     dnl ===================================================================
12729     AC_MSG_CHECKING([which gpgmepp to use])
12730     if test "$with_system_gpgmepp" = "yes"; then
12731         AC_MSG_RESULT([external])
12732         SYSTEM_GPGMEPP=TRUE
12734         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12735         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12736             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12737         AC_CHECK_HEADER(gpgme.h, [],
12738             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12739         AC_CHECK_LIB(gpgmepp, main, [],
12740             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12741         GPGMEPP_LIBS=-lgpgmepp
12742     else
12743         AC_MSG_RESULT([internal])
12744         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12746         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12747         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12748         if test "$_os" != "WINNT"; then
12749             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12750             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12751         fi
12752     fi
12753     ENABLE_GPGMEPP=TRUE
12754     AC_DEFINE([HAVE_FEATURE_GPGME])
12755     AC_PATH_PROG(GPG, gpg)
12756     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12757     # so let's exclude that manually for the moment
12758     if test -n "$GPG" -a "$_os" != "WINNT"; then
12759         # make sure we not only have a working gpgme, but a full working
12760         # gpg installation to run OpenPGP signature verification
12761         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12762     fi
12763     if test "$_os" = "Linux"; then
12764       uid=`id -u`
12765       AC_MSG_CHECKING([for /run/user/$uid])
12766       if test -d /run/user/$uid; then
12767         AC_MSG_RESULT([yes])
12768         AC_PATH_PROG(GPGCONF, gpgconf)
12770         # Older versions of gpgconf are not working as expected, since
12771         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12772         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12773         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12774         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12775         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12776         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12777         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12778           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12779           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12780           if $GPGCONF --dump-options > /dev/null ; then
12781             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12782               AC_MSG_RESULT([yes])
12783               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12784               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12785             else
12786               AC_MSG_RESULT([no])
12787             fi
12788           else
12789             AC_MSG_RESULT([no. missing or broken gpgconf?])
12790           fi
12791         else
12792           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12793         fi
12794       else
12795         AC_MSG_RESULT([no])
12796      fi
12797    fi
12798 else
12799     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12801 AC_SUBST(ENABLE_GPGMEPP)
12802 AC_SUBST(SYSTEM_GPGMEPP)
12803 AC_SUBST(GPG_ERROR_CFLAGS)
12804 AC_SUBST(GPG_ERROR_LIBS)
12805 AC_SUBST(LIBASSUAN_CFLAGS)
12806 AC_SUBST(LIBASSUAN_LIBS)
12807 AC_SUBST(GPGMEPP_CFLAGS)
12808 AC_SUBST(GPGMEPP_LIBS)
12810 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12811 if test "$with_java" != "no"; then
12812     AC_MSG_RESULT([yes])
12813     ENABLE_JAVA_WEBSOCKET=TRUE
12814     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12815     NEED_ANT=TRUE
12816 else
12817     AC_MSG_RESULT([no])
12818     ENABLE_JAVA_WEBSOCKET=
12820 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12822 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12823 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12824     AC_MSG_RESULT([yes])
12825     ENABLE_MEDIAWIKI=TRUE
12826     BUILD_TYPE="$BUILD_TYPE XSLTML"
12827     if test  "x$with_java" = "xno"; then
12828         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12829     fi
12830 else
12831     AC_MSG_RESULT([no])
12832     ENABLE_MEDIAWIKI=
12833     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12835 AC_SUBST(ENABLE_MEDIAWIKI)
12837 AC_MSG_CHECKING([whether to build the Report Builder])
12838 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12839     AC_MSG_RESULT([yes])
12840     ENABLE_REPORTBUILDER=TRUE
12841     AC_MSG_CHECKING([which jfreereport libs to use])
12842     if test "$with_system_jfreereport" = "yes"; then
12843         SYSTEM_JFREEREPORT=TRUE
12844         AC_MSG_RESULT([external])
12845         if test -z $SAC_JAR; then
12846             SAC_JAR=/usr/share/java/sac.jar
12847         fi
12848         if ! test -f $SAC_JAR; then
12849              AC_MSG_ERROR(sac.jar not found.)
12850         fi
12852         if test -z $LIBXML_JAR; then
12853             if test -f /usr/share/java/libxml-1.0.0.jar; then
12854                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12855             elif test -f /usr/share/java/libxml.jar; then
12856                 LIBXML_JAR=/usr/share/java/libxml.jar
12857             else
12858                 AC_MSG_ERROR(libxml.jar replacement not found.)
12859             fi
12860         elif ! test -f $LIBXML_JAR; then
12861             AC_MSG_ERROR(libxml.jar not found.)
12862         fi
12864         if test -z $FLUTE_JAR; then
12865             if test -f /usr/share/java/flute-1.3.0.jar; then
12866                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12867             elif test -f /usr/share/java/flute.jar; then
12868                 FLUTE_JAR=/usr/share/java/flute.jar
12869             else
12870                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12871             fi
12872         elif ! test -f $FLUTE_JAR; then
12873             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12874         fi
12876         if test -z $JFREEREPORT_JAR; then
12877             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12878                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12879             elif test -f /usr/share/java/flow-engine.jar; then
12880                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12881             else
12882                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12883             fi
12884         elif ! test -f  $JFREEREPORT_JAR; then
12885                 AC_MSG_ERROR(jfreereport.jar not found.)
12886         fi
12888         if test -z $LIBLAYOUT_JAR; then
12889             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12890                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12891             elif test -f /usr/share/java/liblayout.jar; then
12892                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12893             else
12894                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12895             fi
12896         elif ! test -f $LIBLAYOUT_JAR; then
12897                 AC_MSG_ERROR(liblayout.jar not found.)
12898         fi
12900         if test -z $LIBLOADER_JAR; then
12901             if test -f /usr/share/java/libloader-1.0.0.jar; then
12902                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12903             elif test -f /usr/share/java/libloader.jar; then
12904                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12905             else
12906                 AC_MSG_ERROR(libloader.jar replacement not found.)
12907             fi
12908         elif ! test -f  $LIBLOADER_JAR; then
12909             AC_MSG_ERROR(libloader.jar not found.)
12910         fi
12912         if test -z $LIBFORMULA_JAR; then
12913             if test -f /usr/share/java/libformula-0.2.0.jar; then
12914                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12915             elif test -f /usr/share/java/libformula.jar; then
12916                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12917             else
12918                 AC_MSG_ERROR(libformula.jar replacement not found.)
12919             fi
12920         elif ! test -f $LIBFORMULA_JAR; then
12921                 AC_MSG_ERROR(libformula.jar not found.)
12922         fi
12924         if test -z $LIBREPOSITORY_JAR; then
12925             if test -f /usr/share/java/librepository-1.0.0.jar; then
12926                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12927             elif test -f /usr/share/java/librepository.jar; then
12928                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12929             else
12930                 AC_MSG_ERROR(librepository.jar replacement not found.)
12931             fi
12932         elif ! test -f $LIBREPOSITORY_JAR; then
12933             AC_MSG_ERROR(librepository.jar not found.)
12934         fi
12936         if test -z $LIBFONTS_JAR; then
12937             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12938                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12939             elif test -f /usr/share/java/libfonts.jar; then
12940                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12941             else
12942                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12943             fi
12944         elif ! test -f $LIBFONTS_JAR; then
12945                 AC_MSG_ERROR(libfonts.jar not found.)
12946         fi
12948         if test -z $LIBSERIALIZER_JAR; then
12949             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12950                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12951             elif test -f /usr/share/java/libserializer.jar; then
12952                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12953             else
12954                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12955             fi
12956         elif ! test -f $LIBSERIALIZER_JAR; then
12957                 AC_MSG_ERROR(libserializer.jar not found.)
12958         fi
12960         if test -z $LIBBASE_JAR; then
12961             if test -f /usr/share/java/libbase-1.0.0.jar; then
12962                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12963             elif test -f /usr/share/java/libbase.jar; then
12964                 LIBBASE_JAR=/usr/share/java/libbase.jar
12965             else
12966                 AC_MSG_ERROR(libbase.jar replacement not found.)
12967             fi
12968         elif ! test -f $LIBBASE_JAR; then
12969             AC_MSG_ERROR(libbase.jar not found.)
12970         fi
12972     else
12973         AC_MSG_RESULT([internal])
12974         SYSTEM_JFREEREPORT=
12975         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12976         NEED_ANT=TRUE
12977     fi
12978     BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
12979 else
12980     AC_MSG_RESULT([no])
12981     ENABLE_REPORTBUILDER=
12982     SYSTEM_JFREEREPORT=
12984 AC_SUBST(ENABLE_REPORTBUILDER)
12985 AC_SUBST(SYSTEM_JFREEREPORT)
12986 AC_SUBST(SAC_JAR)
12987 AC_SUBST(LIBXML_JAR)
12988 AC_SUBST(FLUTE_JAR)
12989 AC_SUBST(JFREEREPORT_JAR)
12990 AC_SUBST(LIBBASE_JAR)
12991 AC_SUBST(LIBLAYOUT_JAR)
12992 AC_SUBST(LIBLOADER_JAR)
12993 AC_SUBST(LIBFORMULA_JAR)
12994 AC_SUBST(LIBREPOSITORY_JAR)
12995 AC_SUBST(LIBFONTS_JAR)
12996 AC_SUBST(LIBSERIALIZER_JAR)
12998 # scripting provider for BeanShell?
12999 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
13000 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
13001     AC_MSG_RESULT([yes])
13002     ENABLE_SCRIPTING_BEANSHELL=TRUE
13004     dnl ===================================================================
13005     dnl Check for system beanshell
13006     dnl ===================================================================
13007     AC_MSG_CHECKING([which beanshell to use])
13008     if test "$with_system_beanshell" = "yes"; then
13009         AC_MSG_RESULT([external])
13010         SYSTEM_BSH=TRUE
13011         if test -z $BSH_JAR; then
13012             BSH_JAR=/usr/share/java/bsh.jar
13013         fi
13014         if ! test -f $BSH_JAR; then
13015             AC_MSG_ERROR(bsh.jar not found.)
13016         fi
13017     else
13018         AC_MSG_RESULT([internal])
13019         SYSTEM_BSH=
13020         BUILD_TYPE="$BUILD_TYPE BSH"
13021     fi
13022 else
13023     AC_MSG_RESULT([no])
13024     ENABLE_SCRIPTING_BEANSHELL=
13025     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13027 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13028 AC_SUBST(SYSTEM_BSH)
13029 AC_SUBST(BSH_JAR)
13031 # scripting provider for JavaScript?
13032 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13033 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13034     AC_MSG_RESULT([yes])
13035     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13037     dnl ===================================================================
13038     dnl Check for system rhino
13039     dnl ===================================================================
13040     AC_MSG_CHECKING([which rhino to use])
13041     if test "$with_system_rhino" = "yes"; then
13042         AC_MSG_RESULT([external])
13043         SYSTEM_RHINO=TRUE
13044         if test -z $RHINO_JAR; then
13045             RHINO_JAR=/usr/share/java/js.jar
13046         fi
13047         if ! test -f $RHINO_JAR; then
13048             AC_MSG_ERROR(js.jar not found.)
13049         fi
13050     else
13051         AC_MSG_RESULT([internal])
13052         SYSTEM_RHINO=
13053         BUILD_TYPE="$BUILD_TYPE RHINO"
13054         NEED_ANT=TRUE
13055     fi
13056 else
13057     AC_MSG_RESULT([no])
13058     ENABLE_SCRIPTING_JAVASCRIPT=
13059     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13061 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13062 AC_SUBST(SYSTEM_RHINO)
13063 AC_SUBST(RHINO_JAR)
13065 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13066 # paths should be added to library search path. So lets put all 64-bit
13067 # platforms there.
13068 supports_multilib=
13069 case "$host_cpu" in
13070 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13071     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13072         supports_multilib="yes"
13073     fi
13074     ;;
13076     ;;
13077 esac
13079 dnl ===================================================================
13080 dnl QT5 Integration
13081 dnl ===================================================================
13083 QT5_CFLAGS=""
13084 QT5_LIBS=""
13085 QT5_GOBJECT_CFLAGS=""
13086 QT5_GOBJECT_LIBS=""
13087 QT5_HAVE_GOBJECT=""
13088 QT5_PLATFORMS_SRCDIR=""
13089 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13090         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13091         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13092 then
13093     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13094     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13096     if test -n "$supports_multilib"; then
13097         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13098     fi
13100     qt5_test_include="QtWidgets/qapplication.h"
13101     if test "$_os" = "Emscripten"; then
13102         qt5_test_library="libQt5Widgets.a"
13103     else
13104         qt5_test_library="libQt5Widgets.so"
13105     fi
13107     dnl Check for qmake5
13108     if test -n "$QT5DIR"; then
13109         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13110     else
13111         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13112     fi
13113     if test "$QMAKE5" = "no"; then
13114         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13115     else
13116         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13117         if test -z "$qmake5_test_ver"; then
13118             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13119         fi
13120         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13121         qt5_minimal_minor="15"
13122         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13123             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13124         else
13125             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13126         fi
13127     fi
13129     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13130     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13131     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13132     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13134     AC_MSG_CHECKING([for Qt5 headers])
13135     qt5_incdir="no"
13136     for inc_dir in $qt5_incdirs; do
13137         if test -r "$inc_dir/$qt5_test_include"; then
13138             qt5_incdir="$inc_dir"
13139             break
13140         fi
13141     done
13142     AC_MSG_RESULT([$qt5_incdir])
13143     if test "x$qt5_incdir" = "xno"; then
13144         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13145     fi
13146     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13147     AC_LANG_PUSH([C++])
13148     save_CPPFLAGS=$CPPFLAGS
13149     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13150     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13151         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13152     CPPFLAGS=$save_CPPFLAGS
13153     AC_LANG_POP([C++])
13155     AC_MSG_CHECKING([for Qt5 libraries])
13156     qt5_libdir="no"
13157     for lib_dir in $qt5_libdirs; do
13158         if test -r "$lib_dir/$qt5_test_library"; then
13159             qt5_libdir="$lib_dir"
13160             break
13161         fi
13162     done
13163     AC_MSG_RESULT([$qt5_libdir])
13164     if test "x$qt5_libdir" = "xno"; then
13165         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13166     fi
13168     if test "$_os" = "Emscripten"; then
13169         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13170             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13171         fi
13172         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13173             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13174         fi
13176         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13177         if ! test -x "$EMSDK_LLVM_NM"; then
13178             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13179         fi
13180         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13181             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13182         fi
13183         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13184         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13185             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13186         fi
13187         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13188             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13189         fi
13190     fi
13192     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13193     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13194     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13195     if test "$_os" = "Emscripten"; then
13196         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13197     fi
13199     if test "$USING_X11" = TRUE; then
13200         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13201         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13202         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13203         QT5_USING_X11=1
13204         AC_DEFINE(QT5_USING_X11)
13205     fi
13207     dnl Check for Meta Object Compiler
13209     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13210     if test "$MOC5" = "no"; then
13211         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13212 the root of your Qt installation by exporting QT5DIR before running "configure".])
13213     fi
13215     if test "$test_gstreamer_1_0" = yes; then
13216         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13217                 QT5_HAVE_GOBJECT=1
13218                 AC_DEFINE(QT5_HAVE_GOBJECT)
13219             ],
13220             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13221         )
13222     fi
13224 AC_SUBST(QT5_CFLAGS)
13225 AC_SUBST(QT5_LIBS)
13226 AC_SUBST(MOC5)
13227 AC_SUBST(QT5_GOBJECT_CFLAGS)
13228 AC_SUBST(QT5_GOBJECT_LIBS)
13229 AC_SUBST(QT5_HAVE_GOBJECT)
13230 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13232 dnl ===================================================================
13233 dnl QT6 Integration
13234 dnl ===================================================================
13236 QT6_CFLAGS=""
13237 QT6_LIBS=""
13238 QT6_PLATFORMS_SRCDIR=""
13239 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13240         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13241 then
13242     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13243     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13245     if test -n "$supports_multilib"; then
13246         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13247     fi
13249     qt6_test_include="QtWidgets/qapplication.h"
13250     if test "$_os" = "Emscripten"; then
13251         qt6_test_library="libQt6Widgets.a"
13252     else
13253         qt6_test_library="libQt6Widgets.so"
13254     fi
13256     dnl Check for qmake6
13257     if test -n "$QT6DIR"; then
13258         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13259     else
13260         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13261     fi
13262     if test "$QMAKE6" = "no"; then
13263         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13264     else
13265         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13266         if test -z "$qmake6_test_ver"; then
13267             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13268         fi
13269         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13270     fi
13272     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13273     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13274     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13275     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13277     AC_MSG_CHECKING([for Qt6 headers])
13278     qt6_incdir="no"
13279     for inc_dir in $qt6_incdirs; do
13280         if test -r "$inc_dir/$qt6_test_include"; then
13281             qt6_incdir="$inc_dir"
13282             break
13283         fi
13284     done
13285     AC_MSG_RESULT([$qt6_incdir])
13286     if test "x$qt6_incdir" = "xno"; then
13287         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13288     fi
13289     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13290     AC_LANG_PUSH([C++])
13291     save_CPPFLAGS=$CPPFLAGS
13292     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13293     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13294         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13295     CPPFLAGS=$save_CPPFLAGS
13296     AC_LANG_POP([C++])
13298     AC_MSG_CHECKING([for Qt6 libraries])
13299     qt6_libdir="no"
13300     for lib_dir in $qt6_libdirs; do
13301         if test -r "$lib_dir/$qt6_test_library"; then
13302             qt6_libdir="$lib_dir"
13303             break
13304         fi
13305     done
13306     AC_MSG_RESULT([$qt6_libdir])
13307     if test "x$qt6_libdir" = "xno"; then
13308         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13309     fi
13311     if test "$_os" = "Emscripten"; then
13312         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13313             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13314         fi
13315         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13316             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13317         fi
13318     fi
13320     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13321     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13322     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13323     if test "$_os" = "Emscripten"; then
13324         QT6_LIBS="$QT6_LIBS -lQt6BundledPcre2 -lQt6BundledZLIB -L${qt6_platformsdir} -lqwasm -sGL_ENABLE_GET_PROC_ADDRESS"
13325     fi
13327     if test "$USING_X11" = TRUE; then
13328         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13329         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13330         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13331         QT6_USING_X11=1
13332         AC_DEFINE(QT6_USING_X11)
13333     fi
13335     dnl Check for Meta Object Compiler
13337     for lib_dir in $qt6_libdirs; do
13338         if test -z "$qt6_libexec_dirs"; then
13339             qt6_libexec_dirs="$lib_dir/libexec"
13340         else
13341             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13342         fi
13343     done
13344     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])
13345     if test "$MOC6" = "no"; then
13346         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13347 the root of your Qt installation by exporting QT6DIR before running "configure".])
13348     else
13349         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13350         if test -z "$moc6_test_ver"; then
13351             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13352         fi
13353         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13354     fi
13356 AC_SUBST(QT6_CFLAGS)
13357 AC_SUBST(QT6_LIBS)
13358 AC_SUBST(MOC6)
13359 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13361 dnl ===================================================================
13362 dnl KF5 Integration
13363 dnl ===================================================================
13365 KF5_CFLAGS=""
13366 KF5_LIBS=""
13367 KF5_CONFIG="kf5-config"
13368 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13369         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13370 then
13371     if test "$OS" = "HAIKU"; then
13372         haiku_arch="`echo $RTL_ARCH | tr X x`"
13373         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13374         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13375     fi
13377     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13378     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13379     if test -n "$supports_multilib"; then
13380         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13381     fi
13383     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13384     kf5_test_library="libKF5KIOFileWidgets.so"
13385     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13387     dnl kf5 KDE4 support compatibility installed
13388     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13389     if test "$KF5_CONFIG" != "no"; then
13390         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13391         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13392     fi
13394     dnl Check for KF5 headers
13395     AC_MSG_CHECKING([for KF5 headers])
13396     kf5_incdir="no"
13397     for kf5_check in $kf5_incdirs; do
13398         if test -r "$kf5_check/$kf5_test_include"; then
13399             kf5_incdir="$kf5_check/KF5"
13400             break
13401         fi
13402     done
13403     AC_MSG_RESULT([$kf5_incdir])
13404     if test "x$kf5_incdir" = "xno"; then
13405         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13406     fi
13408     dnl Check for KF5 libraries
13409     AC_MSG_CHECKING([for KF5 libraries])
13410     kf5_libdir="no"
13411     for kf5_check in $kf5_libdirs; do
13412         if test -r "$kf5_check/$kf5_test_library"; then
13413             kf5_libdir="$kf5_check"
13414             break
13415         fi
13416     done
13418     AC_MSG_RESULT([$kf5_libdir])
13419     if test "x$kf5_libdir" = "xno"; then
13420         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13421     fi
13423     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"
13424     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13425     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13427     if test "$USING_X11" = TRUE; then
13428         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13429     fi
13431     AC_LANG_PUSH([C++])
13432     save_CXXFLAGS=$CXXFLAGS
13433     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13434     AC_MSG_CHECKING([whether KDE is >= 5.0])
13435        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13436 #include <kcoreaddons_version.h>
13438 int main(int argc, char **argv) {
13439        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13440        else return 1;
13442        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13443     CXXFLAGS=$save_CXXFLAGS
13444     AC_LANG_POP([C++])
13446 AC_SUBST(KF5_CFLAGS)
13447 AC_SUBST(KF5_LIBS)
13449 dnl ===================================================================
13450 dnl KF6 Integration
13451 dnl ===================================================================
13453 KF6_CFLAGS=""
13454 KF6_LIBS=""
13455 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13456 then
13457     if test "$OS" = "HAIKU"; then
13458         haiku_arch="`echo $RTL_ARCH | tr X x`"
13459         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13460         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13461     fi
13463     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13464     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13465     if test -n "$supports_multilib"; then
13466         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13467     fi
13469     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13470     kf6_test_library="libKF6KIOFileWidgets.so"
13471     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13473     dnl Check for KF6 headers
13474     AC_MSG_CHECKING([for KF6 headers])
13475     kf6_incdir="no"
13476     for kf6_check in $kf6_incdirs; do
13477         if test -r "$kf6_check/$kf6_test_include"; then
13478             kf6_incdir="$kf6_check/KF6"
13479             break
13480         fi
13481     done
13482     AC_MSG_RESULT([$kf6_incdir])
13483     if test "x$kf6_incdir" = "xno"; then
13484         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13485     fi
13487     dnl Check for KF6 libraries
13488     AC_MSG_CHECKING([for KF6 libraries])
13489     kf6_libdir="no"
13490     for kf6_check in $kf6_libdirs; do
13491         if test -r "$kf6_check/$kf6_test_library"; then
13492             kf6_libdir="$kf6_check"
13493             break
13494         fi
13495     done
13497     AC_MSG_RESULT([$kf6_libdir])
13498     if test "x$kf6_libdir" = "xno"; then
13499         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13500     fi
13502     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"
13503     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13504     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13506     AC_LANG_PUSH([C++])
13507     save_CXXFLAGS=$CXXFLAGS
13508     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13509     dnl KF6 development version as of 2023-06 uses version number 5.240
13510     AC_MSG_CHECKING([whether KDE is >= 5.240])
13511        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13512 #include <kcoreaddons_version.h>
13514 int main(int argc, char **argv) {
13515        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13516        else return 1;
13518        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13519     CXXFLAGS=$save_CXXFLAGS
13520     AC_LANG_POP([C++])
13522 AC_SUBST(KF6_CFLAGS)
13523 AC_SUBST(KF6_LIBS)
13525 dnl ===================================================================
13526 dnl Test whether to include Evolution 2 support
13527 dnl ===================================================================
13528 AC_MSG_CHECKING([whether to enable evolution 2 support])
13529 if test "$enable_evolution2" = yes; then
13530     AC_MSG_RESULT([yes])
13531     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13532     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13533     FilterLibs "${GOBJECT_LIBS}"
13534     GOBJECT_LIBS="${filteredlibs}"
13535     ENABLE_EVOAB2="TRUE"
13536 else
13537     AC_MSG_RESULT([no])
13539 AC_SUBST(ENABLE_EVOAB2)
13540 AC_SUBST(GOBJECT_CFLAGS)
13541 AC_SUBST(GOBJECT_LIBS)
13543 dnl ===================================================================
13544 dnl Test which themes to include
13545 dnl ===================================================================
13546 AC_MSG_CHECKING([which themes to include])
13547 # if none given use default subset of available themes
13548 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13549     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"
13552 WITH_THEMES=""
13553 if test "x$with_theme" != "xno"; then
13554     for theme in $with_theme; do
13555         case $theme in
13556         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" ;;
13557         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13558         esac
13559     done
13561 AC_MSG_RESULT([$WITH_THEMES])
13562 AC_SUBST([WITH_THEMES])
13564 ###############################################################################
13565 # Extensions checking
13566 ###############################################################################
13567 AC_MSG_CHECKING([for extensions integration])
13568 if test "x$enable_extension_integration" != "xno"; then
13569     WITH_EXTENSION_INTEGRATION=TRUE
13570     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13571     AC_MSG_RESULT([yes, use integration])
13572 else
13573     WITH_EXTENSION_INTEGRATION=
13574     AC_MSG_RESULT([no, do not integrate])
13576 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13578 dnl Should any extra extensions be included?
13579 dnl There are standalone tests for each of these below.
13580 WITH_EXTRA_EXTENSIONS=
13581 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13583 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13584 if test "x$with_java" != "xno"; then
13585     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13588 AC_MSG_CHECKING([whether to build opens___.ttf])
13589 if test "$enable_build_opensymbol" = "yes"; then
13590     AC_MSG_RESULT([yes])
13591     AC_PATH_PROG(FONTFORGE, fontforge)
13592     if test -z "$FONTFORGE"; then
13593         AC_MSG_ERROR([fontforge not installed])
13594     fi
13595 else
13596     AC_MSG_RESULT([no])
13597     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13599 AC_SUBST(FONTFORGE)
13601 dnl ===================================================================
13602 dnl Test whether to include fonts
13603 dnl ===================================================================
13604 AC_MSG_CHECKING([whether to include third-party fonts])
13605 if test "$with_fonts" != "no"; then
13606     AC_MSG_RESULT([yes])
13607     WITH_FONTS=TRUE
13608     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13609     AC_DEFINE(HAVE_MORE_FONTS)
13610 else
13611     AC_MSG_RESULT([no])
13612     WITH_FONTS=
13613     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13615 AC_SUBST(WITH_FONTS)
13618 dnl ===================================================================
13619 dnl Test whether to enable online update service
13620 dnl ===================================================================
13621 AC_MSG_CHECKING([whether to enable online update])
13622 ENABLE_ONLINE_UPDATE=
13623 if test "$enable_online_update" = ""; then
13624     AC_MSG_RESULT([no])
13625 else
13626     if test "$enable_online_update" = "mar"; then
13627         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13628     elif test "$enable_online_update" = "yes"; then
13629         if test "$enable_curl" != "yes"; then
13630             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13631         fi
13632         AC_MSG_RESULT([yes])
13633         ENABLE_ONLINE_UPDATE="TRUE"
13634     else
13635         AC_MSG_RESULT([no])
13636     fi
13638 AC_SUBST(ENABLE_ONLINE_UPDATE)
13641 dnl ===================================================================
13642 dnl Test whether to enable mar online update service
13643 dnl ===================================================================
13644 AC_MSG_CHECKING([whether to enable mar online update])
13645 ENABLE_ONLINE_UPDATE_MAR=
13646 if test "$enable_online_update_mar" = yes; then
13647     AC_MSG_RESULT([yes])
13648     BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13649     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13650     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13651 else
13652     AC_MSG_RESULT([no])
13654 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13656 AC_MSG_CHECKING([for mar online update baseurl])
13657 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13658 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13659     AC_MSG_RESULT([yes])
13660 else
13661     AC_MSG_RESULT([no])
13663 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13665 AC_MSG_CHECKING([for mar online update certificateder])
13666 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13667 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13668     AC_MSG_RESULT([yes])
13669 else
13670     AC_MSG_RESULT([no])
13672 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13674 AC_MSG_CHECKING([for mar online update certificatename])
13675 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13676 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13677     AC_MSG_RESULT([yes])
13678 else
13679     AC_MSG_RESULT([no])
13681 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13683 AC_MSG_CHECKING([for mar online update certificatepath])
13684 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13685 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13686     AC_MSG_RESULT([yes])
13687 else
13688     AC_MSG_RESULT([no])
13690 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13693 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13694 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13695     if test "x$with_privacy_policy_url" = "xundefined"; then
13696         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13697     fi
13699 AC_SUBST(PRIVACY_POLICY_URL)
13700 dnl ===================================================================
13701 dnl Test whether we need bzip2
13702 dnl ===================================================================
13703 SYSTEM_BZIP2=
13704 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13705     AC_MSG_CHECKING([whether to use system bzip2])
13706     if test "$with_system_bzip2" = yes; then
13707         SYSTEM_BZIP2=TRUE
13708         AC_MSG_RESULT([yes])
13709         PKG_CHECK_MODULES(BZIP2, bzip2)
13710         FilterLibs "${BZIP2_LIBS}"
13711         BZIP2_LIBS="${filteredlibs}"
13712     else
13713         AC_MSG_RESULT([no])
13714         BUILD_TYPE="$BUILD_TYPE BZIP2"
13715     fi
13717 AC_SUBST(SYSTEM_BZIP2)
13718 AC_SUBST(BZIP2_CFLAGS)
13719 AC_SUBST(BZIP2_LIBS)
13721 dnl ===================================================================
13722 dnl Test whether to enable extension update
13723 dnl ===================================================================
13724 AC_MSG_CHECKING([whether to enable extension update])
13725 ENABLE_EXTENSION_UPDATE=
13726 if test "x$enable_extension_update" = "xno"; then
13727     AC_MSG_RESULT([no])
13728 else
13729     AC_MSG_RESULT([yes])
13730     ENABLE_EXTENSION_UPDATE="TRUE"
13731     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13732     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13734 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13737 dnl ===================================================================
13738 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13739 dnl ===================================================================
13740 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13741 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13742     AC_MSG_RESULT([no])
13743     ENABLE_SILENT_MSI=
13744 else
13745     AC_MSG_RESULT([yes])
13746     ENABLE_SILENT_MSI=TRUE
13747     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13749 AC_SUBST(ENABLE_SILENT_MSI)
13751 dnl ===================================================================
13752 dnl Check for WiX tools.
13753 dnl ===================================================================
13754 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13755     AC_MSG_RESULT([no])
13756     ENABLE_WIX=
13757 else
13758     AC_MSG_RESULT([yes])
13759     # FIXME: this should do proper detection, but the path is currently
13760     # hardcoded in msicreator/createmsi.py
13761     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13762       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13763     fi
13764     ENABLE_WIX=TRUE
13766 AC_SUBST(ENABLE_WIX)
13768 AC_MSG_CHECKING([whether and how to use Xinerama])
13769 if test "$USING_X11" = TRUE; then
13770     if test "$x_libraries" = "default_x_libraries"; then
13771         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13772         if test "x$XINERAMALIB" = x; then
13773            XINERAMALIB="/usr/lib"
13774         fi
13775     else
13776         XINERAMALIB="$x_libraries"
13777     fi
13778     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13779         # we have both versions, let the user decide but use the dynamic one
13780         # per default
13781         USE_XINERAMA=TRUE
13782         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13783             XINERAMA_LINK=dynamic
13784         else
13785             XINERAMA_LINK=static
13786         fi
13787     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13788         # we have only the dynamic version
13789         USE_XINERAMA=TRUE
13790         XINERAMA_LINK=dynamic
13791     elif test -e "$XINERAMALIB/libXinerama.a"; then
13792         # static version
13793         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13794             USE_XINERAMA=TRUE
13795             XINERAMA_LINK=static
13796         else
13797             USE_XINERAMA=
13798             XINERAMA_LINK=none
13799         fi
13800     else
13801         # no Xinerama
13802         USE_XINERAMA=
13803         XINERAMA_LINK=none
13804     fi
13805     if test "$USE_XINERAMA" = "TRUE"; then
13806         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13807         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13808             [AC_MSG_ERROR(Xinerama header not found.)], [])
13809         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13810         if test "x$XEXTLIB" = x; then
13811            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13812         fi
13813         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13814         if test "$_os" = "FreeBSD"; then
13815             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13816         fi
13817         if test "$_os" = "Linux"; then
13818             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13819         fi
13820         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13821             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13822     else
13823         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13824     fi
13825 else
13826     USE_XINERAMA=
13827     XINERAMA_LINK=none
13828     AC_MSG_RESULT([no])
13830 AC_SUBST(XINERAMA_LINK)
13832 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13833 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13834     enable_cairo_rgba=yes
13836 if test "$enable_cairo_rgba" = yes; then
13837     AC_DEFINE(ENABLE_CAIRO_RGBA)
13838     ENABLE_CAIRO_RGBA=TRUE
13839     AC_MSG_RESULT([yes])
13840 else
13841     ENABLE_CAIRO_RGBA=
13842     AC_MSG_RESULT([no])
13844 AC_SUBST(ENABLE_CAIRO_RGBA)
13846 dnl ===================================================================
13847 dnl Test whether to build cairo or rely on the system version
13848 dnl ===================================================================
13850 if test "$test_cairo" = "yes"; then
13851     AC_MSG_CHECKING([whether to use the system cairo])
13853     : ${with_system_cairo:=$with_system_libs}
13854     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13855         SYSTEM_CAIRO=TRUE
13856         AC_MSG_RESULT([yes])
13858         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13859         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13860         FilterLibs "${CAIRO_LIBS}"
13861         CAIRO_LIBS="${filteredlibs}"
13863         if test "$test_xrender" = "yes"; then
13864             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13865             AC_LANG_PUSH([C])
13866             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13867 #ifdef PictStandardA8
13868 #else
13869       return fail;
13870 #endif
13871 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13873             AC_LANG_POP([C])
13874         fi
13875     else
13876         AC_MSG_RESULT([no])
13877         BUILD_TYPE="$BUILD_TYPE CAIRO"
13878     fi
13880     if test "$enable_cairo_canvas" != no; then
13881         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13882         ENABLE_CAIRO_CANVAS=TRUE
13883     fi
13886 AC_SUBST(CAIRO_CFLAGS)
13887 AC_SUBST(CAIRO_LIBS)
13888 AC_SUBST(ENABLE_CAIRO_CANVAS)
13889 AC_SUBST(SYSTEM_CAIRO)
13891 dnl ===================================================================
13892 dnl Test whether to use avahi
13893 dnl ===================================================================
13894 if test "$_os" = "WINNT"; then
13895     # Windows uses bundled mDNSResponder
13896     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13897 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13898     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13899                       [ENABLE_AVAHI="TRUE"])
13900     AC_DEFINE(HAVE_FEATURE_AVAHI)
13901     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13902     FilterLibs "${AVAHI_LIBS}"
13903     AVAHI_LIBS="${filteredlibs}"
13906 AC_SUBST(ENABLE_AVAHI)
13907 AC_SUBST(AVAHI_CFLAGS)
13908 AC_SUBST(AVAHI_LIBS)
13910 dnl ===================================================================
13911 dnl Test whether to use liblangtag
13912 dnl ===================================================================
13913 SYSTEM_LIBLANGTAG=
13914 AC_MSG_CHECKING([whether to use system liblangtag])
13915 if test "$with_system_liblangtag" = yes; then
13916     SYSTEM_LIBLANGTAG=TRUE
13917     AC_MSG_RESULT([yes])
13918     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13919     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13920     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13921     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13922     FilterLibs "${LIBLANGTAG_LIBS}"
13923     LIBLANGTAG_LIBS="${filteredlibs}"
13924 else
13925     SYSTEM_LIBLANGTAG=
13926     AC_MSG_RESULT([no])
13927     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13928     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13929     if test "$COM" = "MSC"; then
13930         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13931     else
13932         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13933     fi
13935 AC_SUBST(SYSTEM_LIBLANGTAG)
13936 AC_SUBST(LIBLANGTAG_CFLAGS)
13937 AC_SUBST(LIBLANGTAG_LIBS)
13939 dnl ===================================================================
13940 dnl Test whether to build libpng or rely on the system version
13941 dnl ===================================================================
13943 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13944 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13945 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13947 dnl ===================================================================
13948 dnl Test whether to build libtiff or rely on the system version
13949 dnl ===================================================================
13951 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13953 dnl ===================================================================
13954 dnl Test whether to build libwebp or rely on the system version
13955 dnl ===================================================================
13957 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13959 dnl ===================================================================
13960 dnl Check for runtime JVM search path
13961 dnl ===================================================================
13962 if test "$ENABLE_JAVA" != ""; then
13963     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13964     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13965         AC_MSG_RESULT([yes])
13966         if ! test -d "$with_jvm_path"; then
13967             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13968         fi
13969         if ! test -d "$with_jvm_path"jvm; then
13970             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13971         fi
13972         JVM_ONE_PATH_CHECK="$with_jvm_path"
13973         AC_SUBST(JVM_ONE_PATH_CHECK)
13974     else
13975         AC_MSG_RESULT([no])
13976     fi
13979 dnl ===================================================================
13980 dnl Test for the presence of Ant and that it works
13981 dnl ===================================================================
13983 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13984 # breaks filename decoding, so for the ant section, set it to LANG
13985 LC_ALL=$LANG
13986 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13987     ANT_HOME=; export ANT_HOME
13988     WITH_ANT_HOME=; export WITH_ANT_HOME
13989     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13990         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13991             if test "$_os" = "WINNT"; then
13992                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13993             else
13994                 with_ant_home="$LODE_HOME/opt/ant"
13995             fi
13996         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13997             with_ant_home="$LODE_HOME/opt/ant"
13998         fi
13999     fi
14000     if test -z "$with_ant_home"; then
14001         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14002     else
14003         if test "$_os" = "WINNT"; then
14004             # AC_PATH_PROGS needs unix path
14005             with_ant_home=`cygpath -u "$with_ant_home"`
14006         fi
14007         AbsolutePath "$with_ant_home"
14008         with_ant_home=$absolute_path
14009         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14010         WITH_ANT_HOME=$with_ant_home
14011         ANT_HOME=$with_ant_home
14012     fi
14014     if test -z "$ANT"; then
14015         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14016     else
14017         # resolve relative or absolute symlink
14018         while test -h "$ANT"; do
14019             a_cwd=`pwd`
14020             a_basename=`basename "$ANT"`
14021             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14022             cd "`dirname "$ANT"`"
14023             cd "`dirname "$a_script"`"
14024             ANT="`pwd`"/"`basename "$a_script"`"
14025             cd "$a_cwd"
14026         done
14028         AC_MSG_CHECKING([if $ANT works])
14029         mkdir -p conftest.dir
14030         a_cwd=$(pwd)
14031         cd conftest.dir
14032         cat > conftest.java << EOF
14033         public class conftest {
14034             int testmethod(int a, int b) {
14035                     return a + b;
14036             }
14037         }
14040         cat > conftest.xml << EOF
14041         <project name="conftest" default="conftest">
14042         <target name="conftest">
14043             <javac srcdir="." includes="conftest.java">
14044             </javac>
14045         </target>
14046         </project>
14049         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14050         if test $? = 0 -a -f ./conftest.class; then
14051             AC_MSG_RESULT([Ant works])
14052             if test -z "$WITH_ANT_HOME"; then
14053                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14054                 if test -z "$ANT_HOME"; then
14055                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14056                 fi
14057             else
14058                 ANT_HOME="$WITH_ANT_HOME"
14059             fi
14060         else
14061             echo "configure: Ant test failed" >&5
14062             cat conftest.java >&5
14063             cat conftest.xml >&5
14064             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14065         fi
14066         cd "$a_cwd"
14067         rm -fr conftest.dir
14068     fi
14069     if test -z "$ANT_HOME"; then
14070         ANT_HOME="NO_ANT_HOME"
14071     else
14072         PathFormat "$ANT_HOME"
14073         ANT_HOME="$formatted_path"
14074         PathFormat "$ANT"
14075         ANT="$formatted_path"
14076     fi
14078     dnl Checking for ant.jar
14079     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14080         AC_MSG_CHECKING([Ant lib directory])
14081         if test -f $ANT_HOME/lib/ant.jar; then
14082             ANT_LIB="$ANT_HOME/lib"
14083         else
14084             if test -f $ANT_HOME/ant.jar; then
14085                 ANT_LIB="$ANT_HOME"
14086             else
14087                 if test -f /usr/share/java/ant.jar; then
14088                     ANT_LIB=/usr/share/java
14089                 else
14090                     if test -f /usr/share/ant-core/lib/ant.jar; then
14091                         ANT_LIB=/usr/share/ant-core/lib
14092                     else
14093                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14094                             ANT_LIB="$ANT_HOME/lib/ant"
14095                         else
14096                             if test -f /usr/share/lib/ant/ant.jar; then
14097                                 ANT_LIB=/usr/share/lib/ant
14098                             else
14099                                 AC_MSG_ERROR([Ant libraries not found!])
14100                             fi
14101                         fi
14102                     fi
14103                 fi
14104             fi
14105         fi
14106         PathFormat "$ANT_LIB"
14107         ANT_LIB="$formatted_path"
14108         AC_MSG_RESULT([Ant lib directory found.])
14109     fi
14111     ant_minver=1.6.0
14112     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14114     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14115     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14116     ant_version_major=`echo $ant_version | cut -d. -f1`
14117     ant_version_minor=`echo $ant_version | cut -d. -f2`
14118     echo "configure: ant_version $ant_version " >&5
14119     echo "configure: ant_version_major $ant_version_major " >&5
14120     echo "configure: ant_version_minor $ant_version_minor " >&5
14121     if test "$ant_version_major" -ge "2"; then
14122         AC_MSG_RESULT([yes, $ant_version])
14123     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14124         AC_MSG_RESULT([yes, $ant_version])
14125     else
14126         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14127     fi
14129     rm -f conftest* core core.* *.core
14131 AC_SUBST(ANT)
14132 AC_SUBST(ANT_HOME)
14133 AC_SUBST(ANT_LIB)
14135 OOO_JUNIT_JAR=
14136 HAMCREST_JAR=
14137 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14138     AC_MSG_CHECKING([for JUnit 4])
14139     if test "$with_junit" = "yes"; then
14140         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14141             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14142         elif test -e /usr/share/java/junit4.jar; then
14143             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14144         else
14145            if test -e /usr/share/lib/java/junit.jar; then
14146               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14147            else
14148               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14149            fi
14150         fi
14151     else
14152         OOO_JUNIT_JAR=$with_junit
14153     fi
14154     if test "$_os" = "WINNT"; then
14155         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14156     fi
14157     printf 'import org.junit.Before;' > conftest.java
14158     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14159         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14160     else
14161         AC_MSG_ERROR(
14162 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14163  specify its pathname via --with-junit=..., or disable it via --without-junit])
14164     fi
14165     rm -f conftest.class conftest.java
14166     if test $OOO_JUNIT_JAR != ""; then
14167         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14168     fi
14170     AC_MSG_CHECKING([for included Hamcrest])
14171     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14172     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14173         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14174     else
14175         AC_MSG_RESULT([Not included])
14176         AC_MSG_CHECKING([for standalone hamcrest jar.])
14177         if test "$with_hamcrest" = "yes"; then
14178             if test -e /usr/share/lib/java/hamcrest.jar; then
14179                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14180             elif test -e /usr/share/java/hamcrest/core.jar; then
14181                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14182             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14183                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14184             else
14185                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14186             fi
14187         else
14188             HAMCREST_JAR=$with_hamcrest
14189         fi
14190         if test "$_os" = "WINNT"; then
14191             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14192         fi
14193         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14194             AC_MSG_RESULT([$HAMCREST_JAR])
14195         else
14196             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),
14197                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14198         fi
14199     fi
14200     rm -f conftest.class conftest.java
14202 AC_SUBST(OOO_JUNIT_JAR)
14203 AC_SUBST(HAMCREST_JAR)
14204 # set back LC_ALL to C after the java related tests...
14205 LC_ALL=C
14207 AC_SUBST(SCPDEFS)
14210 # check for wget and curl
14212 WGET=
14213 CURL=
14215 if test "$enable_fetch_external" != "no"; then
14217 CURL=`command -v curl`
14219 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14220     # wget new enough?
14221     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14222     if test $? -eq 0; then
14223         WGET=$i
14224         break
14225     fi
14226 done
14228 if test -z "$WGET" -a -z "$CURL"; then
14229     AC_MSG_ERROR([neither wget nor curl found!])
14234 AC_SUBST(WGET)
14235 AC_SUBST(CURL)
14238 # check for sha256sum
14240 SHA256SUM=
14242 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14243     eval "$i -a 256 --version" > /dev/null 2>&1
14244     ret=$?
14245     if test $ret -eq 0; then
14246         SHA256SUM="$i -a 256"
14247         break
14248     fi
14249 done
14251 if test -z "$SHA256SUM"; then
14252     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14253         eval "$i --version" > /dev/null 2>&1
14254         ret=$?
14255         if test $ret -eq 0; then
14256             SHA256SUM=$i
14257             break
14258         fi
14259     done
14262 if test -z "$SHA256SUM"; then
14263     AC_MSG_ERROR([no sha256sum found!])
14266 AC_SUBST(SHA256SUM)
14268 dnl ===================================================================
14269 dnl Dealing with l10n options
14270 dnl ===================================================================
14271 AC_MSG_CHECKING([which languages to be built])
14272 # get list of all languages
14273 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14274 # the sed command does the following:
14275 #   + if a line ends with a backslash, append the next line to it
14276 #   + adds " on the beginning of the value (after =)
14277 #   + adds " at the end of the value
14278 #   + removes en-US; we want to put it on the beginning
14279 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14280 [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)]
14281 ALL_LANGS="en-US $completelangiso"
14282 # check the configured localizations
14283 WITH_LANG="$with_lang"
14285 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14286 # (Norwegian is "nb" and "nn".)
14287 if test "$WITH_LANG" = "no"; then
14288     WITH_LANG=
14291 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14292     AC_MSG_RESULT([en-US])
14293 else
14294     AC_MSG_RESULT([$WITH_LANG])
14295     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14296     if test -z "$MSGFMT"; then
14297         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14298             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14299         elif test -x "/opt/lo/bin/msgfmt"; then
14300             MSGFMT="/opt/lo/bin/msgfmt"
14301         else
14302             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14303             if test -z "$MSGFMT"; then
14304                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14305             fi
14306         fi
14307     fi
14308     if test -z "$MSGUNIQ"; then
14309         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14310             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14311         elif test -x "/opt/lo/bin/msguniq"; then
14312             MSGUNIQ="/opt/lo/bin/msguniq"
14313         else
14314             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14315             if test -z "$MSGUNIQ"; then
14316                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14317             fi
14318         fi
14319     fi
14321 AC_SUBST(MSGFMT)
14322 AC_SUBST(MSGUNIQ)
14323 # check that the list is valid
14324 for lang in $WITH_LANG; do
14325     test "$lang" = "ALL" && continue
14326     # need to check for the exact string, so add space before and after the list of all languages
14327     for vl in $ALL_LANGS; do
14328         if test "$vl" = "$lang"; then
14329            break
14330         fi
14331     done
14332     if test "$vl" != "$lang"; then
14333         # if you're reading this - you prolly quoted your languages remove the quotes ...
14334         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14335     fi
14336 done
14337 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14338     echo $WITH_LANG | grep -q en-US
14339     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14341 # list with substituted ALL
14342 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14343 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14344 test "$WITH_LANG" = "en-US" && WITH_LANG=
14345 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14346     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14347     ALL_LANGS=`echo $ALL_LANGS qtz`
14349 AC_SUBST(ALL_LANGS)
14350 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14351 AC_SUBST(WITH_LANG)
14352 AC_SUBST(WITH_LANG_LIST)
14353 AC_SUBST(GIT_NEEDED_SUBMODULES)
14355 WITH_POOR_HELP_LOCALIZATIONS=
14356 if test -d "$SRC_ROOT/translations/source"; then
14357     for l in `ls -1 $SRC_ROOT/translations/source`; do
14358         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14359             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14360         fi
14361     done
14363 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14365 if test -n "$with_locales" -a "$with_locales" != ALL; then
14366     WITH_LOCALES="$with_locales"
14368     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14369     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14370     # config_host/config_locales.h.in
14371     for locale in $WITH_LOCALES; do
14372         lang=${locale%_*}
14374         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14376         case $lang in
14377         hi|mr*ne)
14378             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14379             ;;
14380         bg|ru)
14381             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14382             ;;
14383         esac
14384     done
14385 else
14386     AC_DEFINE(WITH_LOCALE_ALL)
14388 AC_SUBST(WITH_LOCALES)
14390 dnl git submodule update --reference
14391 dnl ===================================================================
14392 if test -n "${GIT_REFERENCE_SRC}"; then
14393     for repo in ${GIT_NEEDED_SUBMODULES}; do
14394         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14395             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14396         fi
14397     done
14399 AC_SUBST(GIT_REFERENCE_SRC)
14401 dnl git submodules linked dirs
14402 dnl ===================================================================
14403 if test -n "${GIT_LINK_SRC}"; then
14404     for repo in ${GIT_NEEDED_SUBMODULES}; do
14405         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14406             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14407         fi
14408     done
14410 AC_SUBST(GIT_LINK_SRC)
14412 dnl branding
14413 dnl ===================================================================
14414 AC_MSG_CHECKING([for alternative branding images directory])
14415 # initialize mapped arrays
14416 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14417 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14419 if test -z "$with_branding" -o "$with_branding" = "no"; then
14420     AC_MSG_RESULT([none])
14421     DEFAULT_BRAND_IMAGES="$brand_files"
14422 else
14423     if ! test -d $with_branding ; then
14424         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14425     else
14426         AC_MSG_RESULT([$with_branding])
14427         CUSTOM_BRAND_DIR="$with_branding"
14428         for lfile in $brand_files
14429         do
14430             if ! test -f $with_branding/$lfile ; then
14431                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14432                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14433             else
14434                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14435             fi
14436         done
14437         check_for_progress="yes"
14438     fi
14440 AC_SUBST([BRAND_INTRO_IMAGES])
14441 AC_SUBST([CUSTOM_BRAND_DIR])
14442 AC_SUBST([CUSTOM_BRAND_IMAGES])
14443 AC_SUBST([DEFAULT_BRAND_IMAGES])
14446 AC_MSG_CHECKING([for 'intro' progress settings])
14447 PROGRESSBARCOLOR=
14448 PROGRESSSIZE=
14449 PROGRESSPOSITION=
14450 PROGRESSFRAMECOLOR=
14451 PROGRESSTEXTCOLOR=
14452 PROGRESSTEXTBASELINE=
14454 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14455     source "$with_branding/progress.conf"
14456     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14457 else
14458     AC_MSG_RESULT([none])
14461 AC_SUBST(PROGRESSBARCOLOR)
14462 AC_SUBST(PROGRESSSIZE)
14463 AC_SUBST(PROGRESSPOSITION)
14464 AC_SUBST(PROGRESSFRAMECOLOR)
14465 AC_SUBST(PROGRESSTEXTCOLOR)
14466 AC_SUBST(PROGRESSTEXTBASELINE)
14469 dnl ===================================================================
14470 dnl Custom build version
14471 dnl ===================================================================
14472 AC_MSG_CHECKING([for extra build ID])
14473 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14474     EXTRA_BUILDID="$with_extra_buildid"
14476 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14477 if test -n "$EXTRA_BUILDID" ; then
14478     AC_MSG_RESULT([$EXTRA_BUILDID])
14479 else
14480     AC_MSG_RESULT([not set])
14482 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14484 OOO_VENDOR=
14485 AC_MSG_CHECKING([for vendor])
14486 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14487     OOO_VENDOR="$USERNAME"
14489     if test -z "$OOO_VENDOR"; then
14490         OOO_VENDOR="$USER"
14491     fi
14493     if test -z "$OOO_VENDOR"; then
14494         OOO_VENDOR="`id -u -n`"
14495     fi
14497     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14498 else
14499     OOO_VENDOR="$with_vendor"
14500     AC_MSG_RESULT([$OOO_VENDOR])
14502 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14503 AC_SUBST(OOO_VENDOR)
14505 if test "$_os" = "Android" ; then
14506     ANDROID_PACKAGE_NAME=
14507     AC_MSG_CHECKING([for Android package name])
14508     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14509         if test -n "$ENABLE_DEBUG"; then
14510             # Default to the package name that makes ndk-gdb happy.
14511             ANDROID_PACKAGE_NAME="org.libreoffice"
14512         else
14513             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14514         fi
14516         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14517     else
14518         ANDROID_PACKAGE_NAME="$with_android_package_name"
14519         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14520     fi
14521     AC_SUBST(ANDROID_PACKAGE_NAME)
14524 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14525 if test "$with_compat_oowrappers" = "yes"; then
14526     WITH_COMPAT_OOWRAPPERS=TRUE
14527     AC_MSG_RESULT(yes)
14528 else
14529     WITH_COMPAT_OOWRAPPERS=
14530     AC_MSG_RESULT(no)
14532 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14534 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14535 AC_MSG_CHECKING([for install dirname])
14536 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14537     INSTALLDIRNAME="$with_install_dirname"
14539 AC_MSG_RESULT([$INSTALLDIRNAME])
14540 AC_SUBST(INSTALLDIRNAME)
14542 AC_MSG_CHECKING([for prefix])
14543 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14544 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14545 PREFIXDIR="$prefix"
14546 AC_MSG_RESULT([$PREFIXDIR])
14547 AC_SUBST(PREFIXDIR)
14549 LIBDIR=[$(eval echo $(eval echo $libdir))]
14550 AC_SUBST(LIBDIR)
14552 DATADIR=[$(eval echo $(eval echo $datadir))]
14553 AC_SUBST(DATADIR)
14555 MANDIR=[$(eval echo $(eval echo $mandir))]
14556 AC_SUBST(MANDIR)
14558 DOCDIR=[$(eval echo $(eval echo $docdir))]
14559 AC_SUBST(DOCDIR)
14561 BINDIR=[$(eval echo $(eval echo $bindir))]
14562 AC_SUBST(BINDIR)
14564 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14565 AC_SUBST(INSTALLDIR)
14567 TESTINSTALLDIR="${BUILDDIR}/test-install"
14568 AC_SUBST(TESTINSTALLDIR)
14571 # ===================================================================
14572 # OAuth2 id and secrets
14573 # ===================================================================
14575 AC_MSG_CHECKING([for Google Drive client id and secret])
14576 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14577     AC_MSG_RESULT([not set])
14578     GDRIVE_CLIENT_ID="\"\""
14579     GDRIVE_CLIENT_SECRET="\"\""
14580 else
14581     AC_MSG_RESULT([set])
14582     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14583     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14585 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14586 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14588 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14589 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14590     AC_MSG_RESULT([not set])
14591     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14592     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14593 else
14594     AC_MSG_RESULT([set])
14595     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14596     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14598 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14599 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14601 AC_MSG_CHECKING([for OneDrive client id and secret])
14602 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14603     AC_MSG_RESULT([not set])
14604     ONEDRIVE_CLIENT_ID="\"\""
14605     ONEDRIVE_CLIENT_SECRET="\"\""
14606 else
14607     AC_MSG_RESULT([set])
14608     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14609     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14611 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14612 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14615 dnl ===================================================================
14616 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14617 dnl --enable-dependency-tracking configure option
14618 dnl ===================================================================
14619 AC_MSG_CHECKING([whether to enable dependency tracking])
14620 if test "$enable_dependency_tracking" = "no"; then
14621     nodep=TRUE
14622     AC_MSG_RESULT([no])
14623 else
14624     AC_MSG_RESULT([yes])
14626 AC_SUBST(nodep)
14628 dnl ===================================================================
14629 dnl Number of CPUs to use during the build
14630 dnl ===================================================================
14631 AC_MSG_CHECKING([for number of processors to use])
14632 # plain --with-parallelism is just the default
14633 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14634     if test "$with_parallelism" = "no"; then
14635         PARALLELISM=0
14636     else
14637         PARALLELISM=$with_parallelism
14638     fi
14639 else
14640     if test "$enable_icecream" = "yes"; then
14641         PARALLELISM="40"
14642     else
14643         case `uname -s` in
14645         Darwin|FreeBSD|NetBSD|OpenBSD)
14646             PARALLELISM=`sysctl -n hw.ncpu`
14647             ;;
14649         Linux)
14650             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14651         ;;
14652         # what else than above does profit here *and* has /proc?
14653         *)
14654             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14655             ;;
14656         esac
14658         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14659         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14660     fi
14663 if test $PARALLELISM -eq 0; then
14664     AC_MSG_RESULT([explicit make -j option needed])
14665 else
14666     AC_MSG_RESULT([$PARALLELISM])
14668 AC_SUBST(PARALLELISM)
14671 # Set up ILIB for MSVC build
14673 ILIB1=
14674 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14675     ILIB="."
14676     if test -n "$JAVA_HOME"; then
14677         ILIB="$ILIB;$JAVA_HOME/lib"
14678     fi
14679     ILIB1=-link
14680     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14681     ILIB="$ILIB;$formatted_path"
14682     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14683     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14684     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14685     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14686         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14687         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14688     fi
14689     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14690     ucrtlibpath_formatted=$formatted_path
14691     ILIB="$ILIB;$ucrtlibpath_formatted"
14692     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14693     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14694         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14695         ILIB="$ILIB;$formatted_path"
14696     else
14697         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14698         ILIB="$ILIB;$formatted_path"
14699     fi
14701     if test "$cross_compiling" != "yes"; then
14702         ILIB_FOR_BUILD="$ILIB"
14703     fi
14705 AC_SUBST(ILIB)
14706 AC_SUBST(ILIB_FOR_BUILD)
14708 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14709 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14710 dnl from consteval constructor initializing const variable",
14711 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14712 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14713 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14714 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14715 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14716 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)" (which appears to be
14717 dnl fixed at least in Visual Studio Community 2022 Preview 17.9.0 Preview 5.0),
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), or
14722 dnl <https://developercommunity.visualstudio.com/t/Bogus-error-C2440-with-consteval-constru/10579616>
14723 dnl "Bogus error C2440 with consteval constructor (/std:c++20)":
14724 AC_LANG_PUSH([C++])
14725 save_CXX=$CXX
14726 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14727     CXX="env LIB=$ILIB $CXX"
14729 save_CXXFLAGS=$CXXFLAGS
14730 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14731 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14732         struct S {
14733             consteval S() { i = 1; }
14734             int i = 0;
14735         };
14736         S const s;
14738         struct S1 {
14739              int a;
14740              consteval S1(int n): a(n) {}
14741         };
14742         struct S2 {
14743             S1 x;
14744             S2(): x(0) {}
14745         };
14747         struct S3 {
14748             consteval S3() {}
14749             union {
14750                 int a;
14751                 unsigned b = 0;
14752             };
14753         };
14754         void f() { S3(); }
14756         struct S4 { consteval S4() = default; };
14757         void f4(bool b) { b ? S4() : S4(); }
14759         struct S5 {
14760             consteval S5() { c = 0; }
14761             char * f() { return &c; }
14762             union {
14763                 char c;
14764                 int i;
14765             };
14766         };
14767         auto s5 = S5().f();
14769         struct S6 {
14770             consteval S6(char const (&lit)[2]) {
14771                 buf[0] = lit[0];
14772                 buf[1] = lit[1];
14773             }
14774             union {
14775                 int x;
14776                 char buf[2];
14777             };
14778         };
14779         void f6() { S6("a"); }
14780     ], [
14781         return (s.i == 1) ? 0 : 1;
14782     ])], [
14783         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14784         AC_MSG_RESULT([yes])
14785     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14786 CXX=$save_CXX
14787 CXXFLAGS=$save_CXXFLAGS
14788 AC_LANG_POP([C++])
14790 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 std::strong_order])
14791 dnl ...which is known to not be implemented in libc++ prior to
14792 dnl <https://github.com/llvm/llvm-project/commit/d8380ad977e94498e170b06449c81f1fc27da7b5> "[libc++]
14793 dnl [P1614] Implement [cmp.alg]'s std::{strong,weak,partial}_order" in LLVM 14:
14794 AC_LANG_PUSH([C++])
14795 save_CXX=$CXX
14796 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14797     CXX="env LIB=$ILIB $CXX"
14799 save_CXXFLAGS=$CXXFLAGS
14800 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14801 AC_LINK_IFELSE([AC_LANG_PROGRAM([
14802         #include <compare>
14803     ], [
14804         (void) (std::strong_order(1.0, 2.0) < 0);
14805     ])], [
14806         AC_DEFINE([HAVE_CPP_STRONG_ORDER],[1])
14807         AC_MSG_RESULT([yes])
14808     ], [AC_MSG_RESULT([no])])
14809 CXX=$save_CXX
14810 CXXFLAGS=$save_CXXFLAGS
14811 AC_LANG_POP([C++])
14813 # ===================================================================
14814 # Creating bigger shared library to link against
14815 # ===================================================================
14816 AC_MSG_CHECKING([whether to create huge library])
14817 MERGELIBS=
14819 if test $_os = iOS -o $_os = Android; then
14820     # Never any point in mergelibs for these as we build just static
14821     # libraries anyway...
14822     enable_mergelibs=no
14825 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14826     if test $_os != Linux -a $_os != WINNT; then
14827         add_warning "--enable-mergelibs is not tested for this platform"
14828     fi
14829     MERGELIBS="TRUE"
14830     AC_MSG_RESULT([yes])
14831     AC_DEFINE(ENABLE_MERGELIBS)
14832 else
14833     AC_MSG_RESULT([no])
14835 AC_SUBST([MERGELIBS])
14837 dnl ===================================================================
14838 dnl icerun is a wrapper that stops us spawning tens of processes
14839 dnl locally - for tools that can't be executed on the compile cluster
14840 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14841 dnl ===================================================================
14842 AC_MSG_CHECKING([whether to use icerun wrapper])
14843 ICECREAM_RUN=
14844 if test "$enable_icecream" = "yes" && command -v icerun >/dev/null ; then
14845     ICECREAM_RUN=icerun
14846     AC_MSG_RESULT([yes])
14847 else
14848     AC_MSG_RESULT([no])
14850 AC_SUBST(ICECREAM_RUN)
14852 dnl ===================================================================
14853 dnl Setup the ICECC_VERSION for the build the same way it was set for
14854 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14855 dnl ===================================================================
14856 x_ICECC_VERSION=[\#]
14857 if test -n "$ICECC_VERSION" ; then
14858     x_ICECC_VERSION=
14860 AC_SUBST(x_ICECC_VERSION)
14861 AC_SUBST(ICECC_VERSION)
14863 dnl ===================================================================
14865 AC_MSG_CHECKING([MPL subset])
14866 MPL_SUBSET=
14867 LICENSE="LGPL"
14869 if test "$enable_mpl_subset" = "yes"; then
14870     mpl_error_string=
14871     newline=$'\n    *'
14872     warn_report=false
14873     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14874         warn_report=true
14875     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14876         warn_report=true
14877     fi
14878     if test "$warn_report" = "true"; then
14879         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14880     fi
14881     if test "x$enable_postgresql_sdbc" != "xno"; then
14882         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14883     fi
14884     if test "$enable_lotuswordpro" = "yes"; then
14885         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14886     fi
14887     if test -n "$ENABLE_POPPLER"; then
14888         if test "x$SYSTEM_POPPLER" = "x"; then
14889             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14890         fi
14891     fi
14892     # cf. m4/libo_check_extension.m4
14893     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14894         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14895     fi
14896     denied_themes=
14897     filtered_themes=
14898     for theme in $WITH_THEMES; do
14899         case $theme in
14900         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14901             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14902         *)
14903             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14904         esac
14905     done
14906     if test "x$denied_themes" != "x"; then
14907         if test "x$filtered_themes" == "x"; then
14908             filtered_themes="colibre"
14909         fi
14910         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14911     fi
14913     ENABLE_OPENGL_TRANSITIONS=
14915     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14916         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14917     fi
14919     if test "x$mpl_error_string" != "x"; then
14920         AC_MSG_ERROR([$mpl_error_string])
14921     fi
14923     MPL_SUBSET="TRUE"
14924     LICENSE="MPL-2.0"
14925     AC_DEFINE(MPL_HAVE_SUBSET)
14926     AC_MSG_RESULT([only])
14927 else
14928     AC_MSG_RESULT([no restrictions])
14930 AC_SUBST(MPL_SUBSET)
14931 AC_SUBST(LICENSE)
14933 dnl ===================================================================
14935 AC_MSG_CHECKING([formula logger])
14936 ENABLE_FORMULA_LOGGER=
14938 if test "x$enable_formula_logger" = "xyes"; then
14939     AC_MSG_RESULT([yes])
14940     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14941     ENABLE_FORMULA_LOGGER=TRUE
14942 elif test -n "$ENABLE_DBGUTIL" ; then
14943     AC_MSG_RESULT([yes])
14944     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14945     ENABLE_FORMULA_LOGGER=TRUE
14946 else
14947     AC_MSG_RESULT([no])
14950 AC_SUBST(ENABLE_FORMULA_LOGGER)
14952 dnl ===================================================================
14953 dnl Checking for active Antivirus software.
14954 dnl ===================================================================
14956 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14957     AC_MSG_CHECKING([for active Antivirus software])
14958     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14959     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14960     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14961         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14962             AC_MSG_RESULT([found])
14963             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14964             echo $EICAR_STRING > $SRC_ROOT/eicar
14965             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14966             rm $SRC_ROOT/eicar
14967             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14968                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14969             fi
14970             echo $EICAR_STRING > $BUILDDIR/eicar
14971             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14972             rm $BUILDDIR/eicar
14973             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14974                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14975             fi
14976             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"
14977         else
14978             AC_MSG_RESULT([not found])
14979         fi
14980     else
14981         AC_MSG_RESULT([n/a])
14982     fi
14985 dnl ===================================================================
14987 AC_MSG_CHECKING([for coredumpctl support])
14988 if test -z "$with_coredumpctl" && test $_os != Linux; then
14989     with_coredumpctl=no
14991 if test "$with_coredumpctl" = no; then
14992     WITH_COREDUMPCTL=
14993 else
14994     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14995     AC_PATH_PROG(JQ, jq)
14996     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14997     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14998     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14999         || test -z "$SYSTEMD_RUN"
15000     then
15001         if test -z "$with_coredumpctl"; then
15002             WITH_COREDUMPCTL=
15003         else
15004             if test -z "$COREDUMPCTL"; then
15005                 AC_MSG_ERROR([coredumpctl not found])
15006             fi
15007             if test -z "$JQ"; then
15008                 AC_MSG_ERROR([jq not found])
15009             fi
15010             if test -z "$SYSTEMD_ESCAPE"; then
15011                 AC_MSG_ERROR([systemd-escape not found])
15012             fi
15013             if test -z "$SYSTEMD_RUN"; then
15014                 AC_MSG_ERROR([systemd-run not found])
15015             fi
15016         fi
15017     else
15018         WITH_COREDUMPCTL=TRUE
15019     fi
15021 if test -z "$WITH_COREDUMPCTL"; then
15022     AC_MSG_RESULT([no])
15023 else
15024     AC_MSG_RESULT([yes])
15026 AC_SUBST(COREDUMPCTL)
15027 AC_SUBST(JQ)
15028 AC_SUBST(SYSTEMD_ESCAPE)
15029 AC_SUBST(SYSTEMD_RUN)
15030 AC_SUBST(WITH_COREDUMPCTL)
15032 dnl ===================================================================
15033 dnl Setting up the environment.
15034 dnl ===================================================================
15035 AC_MSG_NOTICE([setting up the build environment variables...])
15037 AC_SUBST(COMPATH)
15039 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15040     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15041         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15042         ATL_INCLUDE="$COMPATH/atlmfc/include"
15043     elif test -d "$COMPATH/atlmfc/lib"; then
15044         ATL_LIB="$COMPATH/atlmfc/lib"
15045         ATL_INCLUDE="$COMPATH/atlmfc/include"
15046     else
15047         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15048         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15049     fi
15050     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15051     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15052     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15055 if test "$build_os" = "cygwin"; then
15056     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15057     PathFormat "/usr/bin/find.exe"
15058     FIND="$formatted_path"
15059     PathFormat "/usr/bin/sort.exe"
15060     SORT="$formatted_path"
15061     PathFormat "/usr/bin/grep.exe"
15062     WIN_GREP="$formatted_path"
15063     PathFormat "/usr/bin/ls.exe"
15064     WIN_LS="$formatted_path"
15065     PathFormat "/usr/bin/touch.exe"
15066     WIN_TOUCH="$formatted_path"
15067 else
15068     FIND=find
15069     SORT=sort
15072 AC_SUBST(ATL_INCLUDE)
15073 AC_SUBST(ATL_LIB)
15074 AC_SUBST(FIND)
15075 AC_SUBST(SORT)
15076 AC_SUBST(WIN_GREP)
15077 AC_SUBST(WIN_LS)
15078 AC_SUBST(WIN_TOUCH)
15080 AC_SUBST(BUILD_TYPE)
15082 AC_SUBST(SOLARINC)
15084 PathFormat "$PERL"
15085 PERL="$formatted_path"
15086 AC_SUBST(PERL)
15088 if test -n "$TMPDIR"; then
15089     TEMP_DIRECTORY="$TMPDIR"
15090 else
15091     TEMP_DIRECTORY="/tmp"
15093 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15094 if test "$build_os" = "cygwin"; then
15095     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15096     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15098 AC_SUBST(TEMP_DIRECTORY)
15099 AC_SUBST(CYGWIN_BASH)
15101 # setup the PATH for the environment
15102 if test -n "$LO_PATH_FOR_BUILD"; then
15103     LO_PATH="$LO_PATH_FOR_BUILD"
15104     case "$host_os" in
15105     cygwin*|wsl*)
15106         pathmunge "$MSVC_HOST_PATH" "before"
15107         ;;
15108     esac
15109 else
15110     LO_PATH="$PATH"
15112     case "$host_os" in
15114     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15115         if test "$ENABLE_JAVA" != ""; then
15116             pathmunge "$JAVA_HOME/bin" "after"
15117         fi
15118         ;;
15120     cygwin*|wsl*)
15121         # Win32 make needs native paths
15122         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15123             LO_PATH=`cygpath -p -m "$PATH"`
15124         fi
15125         if test "$WIN_BUILD_ARCH" = "x64"; then
15126             # needed for msi packaging
15127             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15128         fi
15129         if test "$WIN_BUILD_ARCH" = "arm64"; then
15130             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15131             # the x86 ones probably would work just as well...
15132             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15133         fi
15134         # .NET 4.6 and higher don't have bin directory
15135         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15136             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15137         fi
15138         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15139         pathmunge "$CSC_PATH" "before"
15140         pathmunge "$MIDL_PATH" "before"
15141         pathmunge "$AL_PATH" "before"
15142         pathmunge "$MSVC_MULTI_PATH" "before"
15143         pathmunge "$MSVC_BUILD_PATH" "before"
15144         if test -n "$MSBUILD_PATH" ; then
15145             pathmunge "$MSBUILD_PATH" "before"
15146         fi
15147         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15148         if test "$ENABLE_JAVA" != ""; then
15149             if test -d "$JAVA_HOME/jre/bin/client"; then
15150                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15151             fi
15152             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15153                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15154             fi
15155             pathmunge "$JAVA_HOME/bin" "before"
15156         fi
15157         pathmunge "$MSVC_HOST_PATH" "before"
15158         ;;
15160     solaris*)
15161         pathmunge "/usr/css/bin" "before"
15162         if test "$ENABLE_JAVA" != ""; then
15163             pathmunge "$JAVA_HOME/bin" "after"
15164         fi
15165         ;;
15166     esac
15169 AC_SUBST(LO_PATH)
15171 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15172 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15173     x_LO_ELFCHECK_ALLOWLIST=
15174 else
15175     x_LO_ELFCHECK_ALLOWLIST=[\#]
15177 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15178 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15180 libo_FUZZ_SUMMARY
15182 # Generate a configuration sha256 we can use for deps
15183 if test -f config_host.mk; then
15184     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15186 if test -f config_host_lang.mk; then
15187     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15190 CFLAGS=$my_original_CFLAGS
15191 CXXFLAGS=$my_original_CXXFLAGS
15192 CPPFLAGS=$my_original_CPPFLAGS
15194 AC_CONFIG_LINKS([include:include])
15196 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15197 # BUILD platform configuration] - otherwise breaks cross building
15198 AC_CONFIG_FILES([config_host.mk
15199                  config_host_lang.mk
15200                  Makefile
15201                  bin/bffvalidator.sh
15202                  bin/odfvalidator.sh
15203                  bin/officeotron.sh
15204                  instsetoo_native/util/openoffice.lst
15205                  sysui/desktop/macosx/Info.plist
15206                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15207                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15208                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15210 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15211 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15212 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15213 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15214 AC_CONFIG_HEADERS([config_host/config_clang.h])
15215 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15216 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15217 AC_CONFIG_HEADERS([config_host/config_eot.h])
15218 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15219 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15220 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15221 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15222 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15223 AC_CONFIG_HEADERS([config_host/config_features.h])
15224 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15225 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15226 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15227 AC_CONFIG_HEADERS([config_host/config_folders.h])
15228 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15229 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15230 AC_CONFIG_HEADERS([config_host/config_gio.h])
15231 AC_CONFIG_HEADERS([config_host/config_global.h])
15232 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15233 AC_CONFIG_HEADERS([config_host/config_java.h])
15234 AC_CONFIG_HEADERS([config_host/config_langs.h])
15235 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15236 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15237 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15238 AC_CONFIG_HEADERS([config_host/config_locales.h])
15239 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15240 AC_CONFIG_HEADERS([config_host/config_oox.h])
15241 AC_CONFIG_HEADERS([config_host/config_options.h])
15242 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15243 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15244 AC_CONFIG_HEADERS([config_host/config_skia.h])
15245 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15246 AC_CONFIG_HEADERS([config_host/config_validation.h])
15247 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15248 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15249 AC_CONFIG_HEADERS([config_host/config_version.h])
15250 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15251 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15252 AC_CONFIG_HEADERS([config_host/config_python.h])
15253 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15254 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15255 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15256 AC_OUTPUT
15258 if test "$CROSS_COMPILING" = TRUE; then
15259     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15262 # touch the config timestamp file
15263 if test ! -f config_host.mk.stamp; then
15264     echo > config_host.mk.stamp
15265 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15266     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15267 else
15268     echo > config_host.mk.stamp
15271 # touch the config lang timestamp file
15272 if test ! -f config_host_lang.mk.stamp; then
15273     echo > config_host_lang.mk.stamp
15274 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15275     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15276 else
15277     echo > config_host_lang.mk.stamp
15281 if test \( "$STALE_MAKE" = "TRUE" \) \
15282         -a "$build_os" = "cygwin"; then
15284 cat << _EOS
15285 ****************************************************************************
15286 WARNING:
15287 Your make version is known to be horribly slow, and hard to debug
15288 problems with. To get a reasonably functional make please do:
15290 to install a pre-compiled binary make for Win32
15292  mkdir -p /opt/lo/bin
15293  cd /opt/lo/bin
15294  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15295  cp make-4.2.1-msvc.exe make
15296  chmod +x make
15298 to install from source:
15299 place yourself in a working directory of you choice.
15301  git clone git://git.savannah.gnu.org/make.git
15303  [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"]
15304  set PATH=%PATH%;C:\Cygwin\bin
15305  [or Cygwin64, if that is what you have]
15306  cd path-to-make-repo-you-cloned-above
15307  build_w32.bat --without-guile
15309 should result in a WinRel/gnumake.exe.
15310 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15312 Then re-run autogen.sh
15314 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15315 Alternatively, you can install the 'new' make where ever you want and make sure that `command -v make` finds it.
15317 _EOS
15321 cat << _EOF
15322 ****************************************************************************
15324 To show information on various make targets and make flags, run:
15325 $GNUMAKE help
15327 To just build, run:
15328 $GNUMAKE
15330 _EOF
15332 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15333     cat << _EOF
15334 After the build has finished successfully, you can immediately run what you built using the command:
15335 _EOF
15337     if test $_os = Darwin; then
15338         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15339     else
15340         echo instdir/program/soffice
15341     fi
15342     cat << _EOF
15344 If you want to run the unit tests, run:
15345 $GNUMAKE check
15347 _EOF
15350 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15351     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15352     cat "$WARNINGS_FILE_FOR_BUILD"
15353     echo
15356 if test -s "$WARNINGS_FILE"; then
15357     echo "HOST config ($WARNINGS_FILE)"
15358     cat "$WARNINGS_FILE"
15361 # Remove unneeded emconfigure artifacts
15362 rm -f a.out a.wasm a.out.js a.out.wasm
15364 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: