[cp] Allow creation of debuginfo and debugsource rpm/deb packages
[LibreOffice.git] / configure.ac
blob9d5d806b0ed274c4d24d74d1041a5dd239c0f4a3
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([Collabora Office],[24.04.0.1],[],[],[https://collaboraoffice.com/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     if test "$COM" = "MSC"; then
50         for f in $1; do
51             if test "x$f" != "x${f#-L}"; then
52                 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53             elif test "x$f" != "x${f#-l}"; then
54                 filteredlibs="$filteredlibs ${f:2}.lib"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
62                 # let's start with Fedora's paths for now
63                 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64                     # ignore it: on UNIXoids it is searched by default anyway
65                     # but if it's given explicitly then it may override other paths
66                     # (on macOS it would be an error to use it instead of SDK)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
78     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79     # function is called also on Unix.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
83     # $formatted_path is the argument in Windows format, but using forward slashes instead of
84     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85     # or shell metacharacters).
86     #
87     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
101     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$1"
114     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115         if test "$build_os" = "wsl"; then
116             formatted_path=$(echo "$formatted_path" | tr -d '\r')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
134                 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136                 formatted_path=`cygpath -sm "$formatted_path"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
144         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146         if test "$fp_count_slash$fp_count_colon" != "00"; then
147             if test "$fp_count_colon" = "0"; then
148                 new_formatted_path=`realpath "$formatted_path"`
149                 if test $? -ne 0;  then
150                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
182         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183         if test "$fp_count_space" != "0"; then
184             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
185         fi
186     fi
187     if test "$build_os" = "wsl"; then
188         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189         formatted_path_unix=$(wslpath "$formatted_path")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
198     # There appears to be no simple and portable method to get an absolute and
199     # canonical path, so we try creating the directory if does not exist and
200     # utilizing the shell and pwd.
202     # Args: $1: A possibly relative pathname
203     # Return value: $absolute_path
205     # Convert to unix path, mkdir would treat c:/path as a relative path.
206     PathFormat "$1"
207     local rel="$formatted_path_unix"
208     absolute_path=""
209     test ! -e "$rel" && mkdir -p "$rel"
210     if test -d "$rel" ; then
211         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212         absolute_path="$(pwd)"
213         cd - > /dev/null
214     else
215         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
216     fi
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
222 have_WARNINGS="no"
223 add_warning()
225     if test "$have_WARNINGS" = "no"; then
226         echo "*************************************" > "$WARNINGS_FILE"
227         have_WARNINGS="yes"
228         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
231         else
232             COLORWARN="* WARNING :"
233         fi
234     fi
235     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
242 dnl from themselves
244 mac_sanitize_path()
246     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249     mac_git_path=`which git 2>/dev/null`
250     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251         mac_path="$mac_path:`dirname $mac_git_path`"
252     fi
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255     mac_gpg_path=`which gpg 2>/dev/null`
256     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257         mac_path="$mac_path:`dirname $mac_gpg_path`"
258     fi
259     PATH="$mac_path"
260     unset mac_path
261     unset mac_git_path
262     unset mac_gpg_path
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
271     test "$4" -gt "$1" \
272         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
274     return $?
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284     eval local MIN_MINOR="\$${1}_${2}_MINOR"
285     eval local MIN_TINY="\$${1}_${2}_TINY"
286     eval local CUR_MAJOR="\$${1}_MAJOR"
287     eval local CUR_MINOR="\$${1}_MINOR"
288     eval local CUR_TINY="\$${1}_TINY"
289     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
290     return $?
293 echo "********************************************************************"
294 echo "*"
295 echo "*   Running ${PACKAGE_NAME} build configuration."
296 echo "*"
297 echo "********************************************************************"
298 echo ""
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308     ac_cv_host="x86_64-pc-wsl"
309     ac_cv_host_cpu="x86_64"
310     ac_cv_host_os="wsl"
311     ac_cv_build="$ac_cv_host"
312     ac_cv_build_cpu="$ac_cv_host_cpu"
313     ac_cv_build_os="$ac_cv_host_os"
315     # Emulation of Cygwin's cygpath command for WSL.
316     cygpath()
317     {
318         if test -n "$UNITTEST_WSL_CYGPATH"; then
319             echo -n cygpath "$@" "==> "
320         fi
322         # Cygwin's real cygpath has a plethora of options but we use only a few here.
323         local args="$@"
324         local opt
325         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
326         OPTIND=1
328         while getopts dmuwlsp opt; do
329             case "$opt" in
330                 \?)
331                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
332                     ;;
333                 ?)
334                     eval opt_$opt=yes
335                     ;;
336             esac
337         done
339         shift $((OPTIND-1))
341         if test $# -ne 1; then
342             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
343         fi
345         local input="$1"
347         local result
349         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352             if test -n "$opt_u"; then
353                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
354             fi
356             case "$input" in
357                 /mnt/*)
358                     # A Windows file in WSL format
359                     input=$(wslpath -w "$input")
360                     ;;
361                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362                     # Already in Windows format
363                     ;;
364                 /*)
365                     input=$(wslpath -w "$input")
366                     ;;
367                 *)
368                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
369                     ;;
370             esac
371             if test -n "$opt_d" -o -n "$opt_s"; then
372                 input=$($WSL_LO_HELPER --8.3 "$input")
373             fi
374             if test -n "$opt_m"; then
375                 input="${input//\\//}"
376             fi
377             echo "$input"
378         else
379             # Print Unix path
381             case "$input" in
382                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
383                     wslpath -u "$input"
384                     ;;
385                 /)
386                     echo "$input"
387                     ;;
388                 *)
389                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
390                     ;;
391             esac
392         fi
393     }
395     if test -n "$UNITTEST_WSL_CYGPATH"; then
396         BUILDDIR=.
398         # Nothing special with these file names, just arbitrary ones picked to test with
399         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403         # At least on my machine for instance this file does have an 8.3 name
404         cygpath -d /mnt/c/windows/WindowsUpdate.log
405         # But for instance this one doesn't
406         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407         cygpath -ws /mnt/c/windows/WindowsUpdate.log
408         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409         cygpath -ms /mnt/c/windows/WindowsUpdate.log
411         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
414         exit 0
415     fi
417     if test -z "$WSL_LO_HELPER"; then
418         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419             WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420         elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421             WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
422         fi
423     fi
424     if test -z "$WSL_LO_HELPER"; then
425         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
426     fi
429 AC_CANONICAL_HOST
430 AC_CANONICAL_BUILD
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
433     BUILDDIR=.
434     GREP=grep
436     # Use of PathFormat must be after AC_CANONICAL_BUILD above
437     PathFormat /
438     printf "$formatted_path , $formatted_path_unix\n"
440     PathFormat $PWD
441     printf "$formatted_path , $formatted_path_unix\n"
443     PathFormat "$PROGRAMFILESX86"
444     printf "$formatted_path , $formatted_path_unix\n"
446     exit 0
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452     PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455     PRODUCTNAME="${PRODUCTNAME}Dev"
456     PRODUCTNAME=AC_PACKAGE_NAME
458 AC_MSG_RESULT([$PRODUCTNAME])
459 AC_SUBST(PRODUCTNAME)
460 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
461 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
463 dnl ===================================================================
464 dnl Our version is defined by the AC_INIT() at the top of this script.
465 dnl ===================================================================
467 AC_MSG_CHECKING([for package version])
468 if test -n "$with_package_version" -a "$with_package_version" != no; then
469     PACKAGE_VERSION="$with_package_version"
471 AC_MSG_RESULT([$PACKAGE_VERSION])
473 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
475 LIBO_VERSION_MAJOR=$1
476 LIBO_VERSION_MINOR=$2
477 LIBO_VERSION_MICRO=$3
478 LIBO_VERSION_PATCH=$4
480 LIBO_VERSION_SUFFIX=$5
482 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
483 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
484 # they get undoubled before actually passed to sed.
485 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
486 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
487 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
488 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
490 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
491 # three non-negative integers. Please find more information about CFBundleVersion at
492 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
494 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
495 # of at most three non-negative integers. Please find more information about
496 # CFBundleShortVersionString at
497 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
499 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
500 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
502 AC_SUBST(LIBO_VERSION_MAJOR)
503 AC_SUBST(LIBO_VERSION_MINOR)
504 AC_SUBST(LIBO_VERSION_MICRO)
505 AC_SUBST(LIBO_VERSION_PATCH)
506 AC_SUBST(LIBO_VERSION_SUFFIX)
507 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
508 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
509 AC_SUBST(MACOSX_BUNDLE_VERSION)
511 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
512 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
513 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
514 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
516 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>&/dev/null`
517 LIBO_THIS_YEAR=${git_date:-2024}
518 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
520 dnl ===================================================================
521 dnl Product version
522 dnl ===================================================================
523 AC_MSG_CHECKING([for product version])
524 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
525 AC_MSG_RESULT([$PRODUCTVERSION])
526 AC_SUBST(PRODUCTVERSION)
528 AC_PROG_EGREP
529 # AC_PROG_EGREP doesn't set GREP on all systems as well
530 AC_PATH_PROG(GREP, grep)
532 BUILDDIR=`pwd`
533 cd $srcdir
534 SRC_ROOT=`pwd`
535 cd $BUILDDIR
536 x_Cygwin=[\#]
538 dnl ======================================
539 dnl Required GObject introspection version
540 dnl ======================================
541 INTROSPECTION_REQUIRED_VERSION=1.32.0
543 dnl ===================================================================
544 dnl Search all the common names for GNU Make
545 dnl ===================================================================
546 AC_MSG_CHECKING([for GNU Make])
548 # try to use our own make if it is available and GNUMAKE was not already defined
549 if test -z "$GNUMAKE"; then
550     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
551         GNUMAKE="$LODE_HOME/opt/bin/make"
552     elif test -x "/opt/lo/bin/make"; then
553         GNUMAKE="/opt/lo/bin/make"
554     fi
557 GNUMAKE_WIN_NATIVE=
558 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
559     if test -n "$a"; then
560         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
561         if test $? -eq 0;  then
562             if test "$build_os" = "cygwin"; then
563                 if test -n "$($a -v | grep 'Built for Windows')" ; then
564                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
565                     GNUMAKE_WIN_NATIVE="TRUE"
566                 else
567                     GNUMAKE=`which $a`
568                 fi
569             else
570                 GNUMAKE=`which $a`
571             fi
572             break
573         fi
574     fi
575 done
576 AC_MSG_RESULT($GNUMAKE)
577 if test -z "$GNUMAKE"; then
578     AC_MSG_ERROR([not found. install GNU Make.])
579 else
580     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
581         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
582     fi
585 win_short_path_for_make()
587     local short_path="$1"
588     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
589         cygpath -sm "$short_path"
590     else
591         cygpath -u "$(cygpath -d "$short_path")"
592     fi
596 if test "$build_os" = "cygwin"; then
597     PathFormat "$SRC_ROOT"
598     SRC_ROOT="$formatted_path"
599     PathFormat "$BUILDDIR"
600     BUILDDIR="$formatted_path"
601     x_Cygwin=
602     AC_MSG_CHECKING(for explicit COMSPEC)
603     if test -z "$COMSPEC"; then
604         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
605     else
606         AC_MSG_RESULT([found: $COMSPEC])
607     fi
610 AC_SUBST(SRC_ROOT)
611 AC_SUBST(BUILDDIR)
612 AC_SUBST(x_Cygwin)
613 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
614 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
615 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
617 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
618     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
621 # need sed in os checks...
622 AC_PATH_PROGS(SED, sed)
623 if test -z "$SED"; then
624     AC_MSG_ERROR([install sed to run this script])
627 # Set the ENABLE_LTO variable
628 # ===================================================================
629 AC_MSG_CHECKING([whether to use link-time optimization])
630 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
631     ENABLE_LTO="TRUE"
632     AC_MSG_RESULT([yes])
633 else
634     ENABLE_LTO=""
635     AC_MSG_RESULT([no])
637 AC_SUBST(ENABLE_LTO)
639 AC_ARG_ENABLE(fuzz-options,
640     AS_HELP_STRING([--enable-fuzz-options],
641         [Randomly enable or disable each of those configurable options
642          that are supposed to be freely selectable without interdependencies,
643          or where bad interaction from interdependencies is automatically avoided.])
646 dnl ===================================================================
647 dnl When building for Android, --with-android-ndk,
648 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
649 dnl mandatory
650 dnl ===================================================================
652 AC_ARG_WITH(android-ndk,
653     AS_HELP_STRING([--with-android-ndk],
654         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
657 AC_ARG_WITH(android-ndk-toolchain-version,
658     AS_HELP_STRING([--with-android-ndk-toolchain-version],
659         [Specify which toolchain version to use, of those present in the
660         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
661         with_android_ndk_toolchain_version=clang5.0)
663 AC_ARG_WITH(android-sdk,
664     AS_HELP_STRING([--with-android-sdk],
665         [Specify location of the Android SDK. Mandatory when building for Android.]),
668 AC_ARG_WITH(android-api-level,
669     AS_HELP_STRING([--with-android-api-level],
670         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
673 ANDROID_NDK_DIR=
674 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
675     with_android_ndk="$SRC_ROOT/external/android-ndk"
677 if test -n "$with_android_ndk"; then
678     eval ANDROID_NDK_DIR=$with_android_ndk
680     ANDROID_API_LEVEL=21
681     if test -n "$with_android_api_level" ; then
682         ANDROID_API_LEVEL="$with_android_api_level"
683     fi
685     if test $host_cpu = arm; then
686         LLVM_TRIPLE=armv7a-linux-androideabi
687         ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
688         ANDROID_APP_ABI=armeabi-v7a
689         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
690     elif test $host_cpu = aarch64; then
691         LLVM_TRIPLE=aarch64-linux-android
692         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
693         ANDROID_APP_ABI=arm64-v8a
694     elif test $host_cpu = x86_64; then
695         LLVM_TRIPLE=x86_64-linux-android
696         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
697         ANDROID_APP_ABI=x86_64
698     else
699         # host_cpu is something like "i386" or "i686" I guess, NDK uses
700         # "x86" in some contexts
701         LLVM_TRIPLE=i686-linux-android
702         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
703         ANDROID_APP_ABI=x86
704     fi
706     # Set up a lot of pre-canned defaults
708     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
709         if test ! -f $ANDROID_NDK_DIR/source.properties; then
710             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
711         fi
712         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
713     else
714         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
715     fi
716     if test -z "$ANDROID_NDK_VERSION";  then
717         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
718     fi
719     case $ANDROID_NDK_VERSION in
720     r9*|r10*)
721         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
722         ;;
723     11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
724         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
725         ;;
726     23.*|24.*|25.*)
727         ;;
728     *)
729         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
730         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
731         ;;
732     esac
734     case "$with_android_ndk_toolchain_version" in
735     clang5.0)
736         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
737         ;;
738     *)
739         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
740     esac
742     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
744     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
745     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
746     # manage to link the (app-specific) single huge .so that is built for the app in
747     # android/source/ if there is debug information in a significant part of the object files.
748     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
749     # all objects have been built with debug information.)
750     case $build_os in
751     linux-gnu*)
752         android_HOST_TAG=linux-x86_64
753         ;;
754     darwin*)
755         android_HOST_TAG=darwin-x86_64
756         ;;
757     *)
758         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
759         # ndk would also support windows and windows-x86_64
760         ;;
761     esac
762     ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
763     ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
765     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
766     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
767     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
768     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
769     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
771     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
772     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
773     if test "$ENABLE_LTO" = TRUE; then
774         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
775         # $CC and $CXX when building external libraries
776         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
777     fi
779     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
781     if test -z "$CC"; then
782         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
783         CC_BASE="clang"
784     fi
785     if test -z "$CXX"; then
786         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
787         CXX_BASE="clang++"
788     fi
790 AC_SUBST(ANDROID_NDK_DIR)
791 AC_SUBST(ANDROID_API_LEVEL)
792 AC_SUBST(ANDROID_APP_ABI)
793 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
794 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
795 AC_SUBST(ANDROID_TOOLCHAIN)
797 dnl ===================================================================
798 dnl --with-android-sdk
799 dnl ===================================================================
800 ANDROID_SDK_DIR=
801 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
802     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
804 if test -n "$with_android_sdk"; then
805     eval ANDROID_SDK_DIR=$with_android_sdk
806     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
808 AC_SUBST(ANDROID_SDK_DIR)
810 AC_ARG_ENABLE([android-lok],
811     AS_HELP_STRING([--enable-android-lok],
812         [The Android app from the android/ subdir needs several tweaks all
813          over the place that break the LOK when used in the Online-based
814          Android app.  This switch indicates that the intent of this build is
815          actually the Online-based, non-modified LOK.])
817 ENABLE_ANDROID_LOK=
818 if test -n "$ANDROID_NDK_DIR" ; then
819     if test "$enable_android_lok" = yes; then
820         ENABLE_ANDROID_LOK=TRUE
821         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
822         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
823     else
824         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
825     fi
827 AC_SUBST([ENABLE_ANDROID_LOK])
829 libo_FUZZ_ARG_ENABLE([android-editing],
830     AS_HELP_STRING([--enable-android-editing],
831         [Enable the experimental editing feature on Android.])
833 ENABLE_ANDROID_EDITING=
834 if test "$enable_android_editing" = yes; then
835     ENABLE_ANDROID_EDITING=TRUE
837 AC_SUBST([ENABLE_ANDROID_EDITING])
839 disable_database_connectivity_dependencies()
841     enable_evolution2=no
842     enable_firebird_sdbc=no
843     enable_mariadb_sdbc=no
844     enable_postgresql_sdbc=no
845     enable_report_builder=no
848 # ===================================================================
850 # Start initial platform setup
852 # The using_* variables reflect platform support and should not be
853 # changed after the "End initial platform setup" block.
854 # This is also true for most test_* variables.
855 # ===================================================================
856 build_crypto=yes
857 test_clucene=no
858 test_gdb_index=no
859 test_openldap=yes
860 test_split_debug=no
861 test_webdav=yes
862 usable_dlapi=yes
864 # There is currently just iOS not using salplug, so this explicitly enables it.
865 # must: using_freetype_fontconfig
866 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
867 # must: using_x11
869 # Default values, as such probably valid just for Linux, set
870 # differently below just for Mac OSX, but at least better than
871 # hardcoding these as we used to do. Much of this is duplicated also
872 # in solenv for old build system and for gbuild, ideally we should
873 # perhaps define stuff like this only here in configure.ac?
875 LINKFLAGSSHL="-shared"
876 PICSWITCH="-fpic"
877 DLLPOST=".so"
879 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
881 INSTROOTBASESUFFIX=
882 INSTROOTCONTENTSUFFIX=
883 SDKDIRNAME=sdk
885 HOST_PLATFORM="$host"
887 host_cpu_for_clang="$host_cpu"
889 case "$host_os" in
891 solaris*)
892     using_freetype_fontconfig=yes
893     using_x11=yes
894     build_skia=yes
895     _os=SunOS
897     dnl ===========================================================
898     dnl Check whether we're using Solaris 10 - SPARC or Intel.
899     dnl ===========================================================
900     AC_MSG_CHECKING([the Solaris operating system release])
901     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
902     if test "$_os_release" -lt "10"; then
903         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
904     else
905         AC_MSG_RESULT([ok ($_os_release)])
906     fi
908     dnl Check whether we're using a SPARC or i386 processor
909     AC_MSG_CHECKING([the processor type])
910     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
911         AC_MSG_RESULT([ok ($host_cpu)])
912     else
913         AC_MSG_ERROR([only SPARC and i386 processors are supported])
914     fi
915     ;;
917 linux-gnu*|k*bsd*-gnu*|linux-musl*)
918     using_freetype_fontconfig=yes
919     using_x11=yes
920     build_skia=yes
921     test_gdb_index=yes
922     test_split_debug=yes
923     if test "$enable_fuzzers" = yes; then
924         test_system_freetype=no
925     fi
926     _os=Linux
927     ;;
929 gnu)
930     using_freetype_fontconfig=yes
931     using_x11=no
932     _os=GNU
933      ;;
935 cygwin*|wsl*)
936     # When building on Windows normally with MSVC under Cygwin,
937     # configure thinks that the host platform (the platform the
938     # built code will run on) is Cygwin, even if it obviously is
939     # Windows, which in Autoconf terminology is called
940     # "mingw32". (Which is misleading as MinGW is the name of the
941     # tool-chain, not an operating system.)
943     # Somewhat confusing, yes. But this configure script doesn't
944     # look at $host etc that much, it mostly uses its own $_os
945     # variable, set here in this case statement.
947     using_freetype_fontconfig=no
948     using_x11=no
949     test_unix_dlapi=no
950     test_openldap=no
951     enable_pagein=no
952     build_skia=yes
953     _os=WINNT
955     DLLPOST=".dll"
956     LINKFLAGSNOUNDEFS=
958     if test "$host_cpu" = "aarch64"; then
959         build_skia=no
960         enable_gpgmepp=no
961         enable_coinmp=no
962         enable_firebird_sdbc=no
963     fi
964     ;;
966 darwin*) # macOS
967     using_freetype_fontconfig=no
968     using_x11=no
969     build_skia=yes
970     enable_pagein=no
971     if test -n "$LODE_HOME" ; then
972         mac_sanitize_path
973         AC_MSG_NOTICE([sanitized the PATH to $PATH])
974     fi
975     _os=Darwin
976     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
977     INSTROOTCONTENTSUFFIX=/Contents
978     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
979     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
980     LINKFLAGSSHL="-dynamiclib"
982     # -fPIC is default
983     PICSWITCH=""
985     DLLPOST=".dylib"
987     # -undefined error is the default
988     LINKFLAGSNOUNDEFS=""
989     case "$host_cpu" in
990     aarch64|arm64)
991         # Apple's Clang uses "arm64"
992         host_cpu_for_clang=arm64
993     esac
996 ios*) # iOS
997     using_freetype_fontconfig=no
998     using_x11=no
999     build_crypto=no
1000     test_libcmis=no
1001     test_openldap=no
1002     test_webdav=no
1003     if test -n "$LODE_HOME" ; then
1004         mac_sanitize_path
1005         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1006     fi
1007     enable_gpgmepp=no
1008     _os=iOS
1009     enable_mpl_subset=yes
1010     enable_lotuswordpro=no
1011     disable_database_connectivity_dependencies
1012     enable_coinmp=no
1013     enable_lpsolve=no
1014     enable_extension_integration=no
1015     enable_xmlhelp=no
1016     with_ppds=no
1017     if test "$enable_ios_simulator" = "yes"; then
1018         host=x86_64-apple-darwin
1019     fi
1020     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1021     LINKFLAGSSHL="-dynamiclib"
1023     # -fPIC is default
1024     PICSWITCH=""
1026     DLLPOST=".dylib"
1028     # -undefined error is the default
1029     LINKFLAGSNOUNDEFS=""
1031     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1032     # part, so use aarch64-apple-darwin for now.
1033     HOST_PLATFORM=aarch64-apple-darwin
1035     # Apple's Clang uses "arm64"
1036     host_cpu_for_clang=arm64
1039 freebsd*)
1040     using_freetype_fontconfig=yes
1041     using_x11=yes
1042     build_skia=yes
1043     AC_MSG_CHECKING([the FreeBSD operating system release])
1044     if test -n "$with_os_version"; then
1045         OSVERSION="$with_os_version"
1046     else
1047         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1048     fi
1049     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1050     AC_MSG_CHECKING([which thread library to use])
1051     if test "$OSVERSION" -lt "500016"; then
1052         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1053         PTHREAD_LIBS="-pthread"
1054     elif test "$OSVERSION" -lt "502102"; then
1055         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1056         PTHREAD_LIBS="-lc_r"
1057     else
1058         PTHREAD_CFLAGS=""
1059         PTHREAD_LIBS="-pthread"
1060     fi
1061     AC_MSG_RESULT([$PTHREAD_LIBS])
1062     _os=FreeBSD
1063     ;;
1065 *netbsd*)
1066     using_freetype_fontconfig=yes
1067     using_x11=yes
1068     test_gtk3_kde5=no
1069     build_skia=yes
1070     PTHREAD_LIBS="-pthread -lpthread"
1071     _os=NetBSD
1072     ;;
1074 openbsd*)
1075     using_freetype_fontconfig=yes
1076     using_x11=yes
1077     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1078     PTHREAD_LIBS="-pthread"
1079     _os=OpenBSD
1080     ;;
1082 dragonfly*)
1083     using_freetype_fontconfig=yes
1084     using_x11=yes
1085     build_skia=yes
1086     PTHREAD_LIBS="-pthread"
1087     _os=DragonFly
1088     ;;
1090 linux-android*)
1091     # API exists, but seems not really usable since Android 7 AFAIK
1092     usable_dlapi=no
1093     using_freetype_fontconfig=yes
1094     using_headless_plugin=no
1095     using_x11=no
1096     build_crypto=no
1097     test_openldap=no
1098     test_system_freetype=no
1099     test_webdav=no
1100     disable_database_connectivity_dependencies
1101     enable_lotuswordpro=no
1102     enable_mpl_subset=yes
1103     enable_cairo_canvas=no
1104     enable_coinmp=yes
1105     enable_lpsolve=no
1106     enable_odk=no
1107     enable_python=no
1108     enable_xmlhelp=no
1109     _os=Android
1110     ;;
1112 haiku*)
1113     using_freetype_fontconfig=yes
1114     using_x11=no
1115     test_gtk3=no
1116     test_gtk3_kde5=no
1117     test_kf5=yes
1118     test_kf6=yes
1119     enable_odk=no
1120     enable_coinmp=no
1121     enable_pdfium=no
1122     enable_sdremote=no
1123     enable_postgresql_sdbc=no
1124     enable_firebird_sdbc=no
1125     _os=Haiku
1126     ;;
1128 emscripten)
1129     # API currently just exists in headers, not code
1130     usable_dlapi=no
1131     using_freetype_fontconfig=yes
1132     using_x11=yes
1133     test_openldap=no
1134     test_qt5=yes
1135     test_split_debug=yes
1136     test_system_freetype=no
1137     enable_compiler_plugins=no
1138     enable_customtarget_components=yes
1139     enable_split_debug=yes
1140     enable_wasm_strip=yes
1141     with_system_zlib=no
1142     with_theme="colibre"
1143     _os=Emscripten
1144     ;;
1147     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1148     ;;
1149 esac
1151 AC_SUBST(HOST_PLATFORM)
1153 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1154     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1157 # Set defaults, if not set by platform
1158 test "${test_cups+set}" = set || test_cups="$using_x11"
1159 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1160 test "${test_gen+set}" = set || test_gen="$using_x11"
1161 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1162 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1163 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1164 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1165 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1166 # don't handle test_qt5, so it can disable test_kf5 later
1167 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1168 test "${test_randr+set}" = set || test_randr="$using_x11"
1169 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1170 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1172 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1173 # Make sure fontconfig and freetype test both either system or not
1174 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1175 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1177 # convenience / platform overriding "fixes"
1178 # Don't sort!
1179 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1180 test "$test_kf5" = yes && test_qt5=yes
1181 test "$test_gtk3" != yes && enable_gtk3=no
1182 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1183 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1184 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1186 # Keep in sync with the above $using_x11 depending test default list
1187 disable_x11_tests()
1189     test_cups=no
1190     test_dbus=no
1191     test_gen=no
1192     test_gstreamer_1_0=no
1193     test_gtk3_kde5=no
1194     test_gtk3=no
1195     test_gtk4=no
1196     test_kf5=no
1197     test_kf6=no
1198     test_qt5=no
1199     test_qt6=no
1200     test_randr=no
1201     test_xrender=no
1204 test "$using_x11" = yes && USING_X11=TRUE
1206 if test "$using_freetype_fontconfig" = yes; then
1207     AC_DEFINE(USE_HEADLESS_CODE)
1208     USE_HEADLESS_CODE=TRUE
1209     if test "$using_headless_plugin" = yes; then
1210         AC_DEFINE(ENABLE_HEADLESS)
1211         ENABLE_HEADLESS=TRUE
1212     fi
1213 else
1214     test_fontconfig=no
1215     test_freetype=no
1218 AC_SUBST(ENABLE_HEADLESS)
1219 AC_SUBST(USE_HEADLESS_CODE)
1221 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1222 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1223 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1224 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1226 # ===================================================================
1228 # End initial platform setup
1230 # ===================================================================
1232 if test "$_os" = "Android" ; then
1233     # Verify that the NDK and SDK options are proper
1234     if test -z "$with_android_ndk"; then
1235         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1236     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1237         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1238     fi
1240     if test -z "$ANDROID_SDK_DIR"; then
1241         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1242     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1243         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1244     fi
1247 AC_SUBST(SDKDIRNAME)
1249 AC_SUBST(PTHREAD_CFLAGS)
1250 AC_SUBST(PTHREAD_LIBS)
1252 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1253 # By default use the ones specified by our build system,
1254 # but explicit override is possible.
1255 AC_MSG_CHECKING(for explicit AFLAGS)
1256 if test -n "$AFLAGS"; then
1257     AC_MSG_RESULT([$AFLAGS])
1258     x_AFLAGS=
1259 else
1260     AC_MSG_RESULT(no)
1261     x_AFLAGS=[\#]
1263 AC_MSG_CHECKING(for explicit CFLAGS)
1264 if test -n "$CFLAGS"; then
1265     AC_MSG_RESULT([$CFLAGS])
1266     x_CFLAGS=
1267 else
1268     AC_MSG_RESULT(no)
1269     x_CFLAGS=[\#]
1271 AC_MSG_CHECKING(for explicit CXXFLAGS)
1272 if test -n "$CXXFLAGS"; then
1273     AC_MSG_RESULT([$CXXFLAGS])
1274     x_CXXFLAGS=
1275 else
1276     AC_MSG_RESULT(no)
1277     x_CXXFLAGS=[\#]
1279 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1280 if test -n "$OBJCFLAGS"; then
1281     AC_MSG_RESULT([$OBJCFLAGS])
1282     x_OBJCFLAGS=
1283 else
1284     AC_MSG_RESULT(no)
1285     x_OBJCFLAGS=[\#]
1287 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1288 if test -n "$OBJCXXFLAGS"; then
1289     AC_MSG_RESULT([$OBJCXXFLAGS])
1290     x_OBJCXXFLAGS=
1291 else
1292     AC_MSG_RESULT(no)
1293     x_OBJCXXFLAGS=[\#]
1295 AC_MSG_CHECKING(for explicit LDFLAGS)
1296 if test -n "$LDFLAGS"; then
1297     AC_MSG_RESULT([$LDFLAGS])
1298     x_LDFLAGS=
1299 else
1300     AC_MSG_RESULT(no)
1301     x_LDFLAGS=[\#]
1303 AC_SUBST(AFLAGS)
1304 AC_SUBST(CFLAGS)
1305 AC_SUBST(CXXFLAGS)
1306 AC_SUBST(OBJCFLAGS)
1307 AC_SUBST(OBJCXXFLAGS)
1308 AC_SUBST(LDFLAGS)
1309 AC_SUBST(x_AFLAGS)
1310 AC_SUBST(x_CFLAGS)
1311 AC_SUBST(x_CXXFLAGS)
1312 AC_SUBST(x_OBJCFLAGS)
1313 AC_SUBST(x_OBJCXXFLAGS)
1314 AC_SUBST(x_LDFLAGS)
1316 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1317 my_original_CFLAGS=$CFLAGS
1318 my_original_CXXFLAGS=$CXXFLAGS
1319 my_original_CPPFLAGS=$CPPFLAGS
1321 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1322 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1323 dnl AC_PROG_CC internally.
1324 if test "$_os" != "WINNT"; then
1325     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1326     save_CFLAGS=$CFLAGS
1327     AC_PROG_CC
1328     CFLAGS=$save_CFLAGS
1329     if test -z "$CC_BASE"; then
1330         CC_BASE=`first_arg_basename "$CC"`
1331     fi
1334 if test "$_os" != "WINNT"; then
1335     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1336 else
1337     ENDIANNESS=little
1339 AC_SUBST(ENDIANNESS)
1341 if test "$usable_dlapi" != no; then
1342     AC_DEFINE([HAVE_DLAPI])
1343     if test "$test_unix_dlapi" != no; then
1344         save_LIBS="$LIBS"
1345         AC_SEARCH_LIBS([dlsym], [dl],
1346             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1347             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1348         LIBS="$save_LIBS"
1349         AC_DEFINE([HAVE_UNIX_DLAPI])
1350     fi
1352 AC_SUBST(UNIX_DLAPI_LIBS)
1354 # Check for a (GNU) backtrace implementation
1355 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1356 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1357 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1358     save_LIBS="$LIBS"
1359     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1360         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1361         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1362     LIBS="$save_LIBS"
1364 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1365     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1368 dnl ===================================================================
1369 dnl Sanity checks for Emscripten SDK setup
1370 dnl ===================================================================
1372 EMSCRIPTEN_MIN_MAJOR=2
1373 EMSCRIPTEN_MIN_MINOR=0
1374 EMSCRIPTEN_MIN_TINY=31
1375 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1377 if test "$_os" = "Emscripten"; then
1378     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1379     AS_IF([test -z "$EMSDK"],
1380           [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1381     EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1382     if test -f "$EMSCRIPTEN_VERSION_H"; then
1383         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1384         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1385         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1386     else
1387         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1388         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1389         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1390         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1391     fi
1393     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1395     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1396     if test $? -eq 0; then
1397         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1398     else
1399         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1400     fi
1402     EMSCRIPTEN_ERROR=0
1403     if ! which emconfigure >/dev/null 2>&1; then
1404         AC_MSG_WARN([emconfigure must be in your \$PATH])
1405         EMSCRIPTEN_ERROR=1
1406     fi
1407     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1408         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1409         EMSCRIPTEN_ERROR=1
1410     fi
1411     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1412     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1413         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1414         EMSCRIPTEN_ERROR=1
1415     fi
1416     if test $EMSCRIPTEN_ERROR -ne 0; then
1417         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1418     fi
1420 AC_SUBST(EMSDK_FILE_PACKAGER)
1422 ###############################################################################
1423 # Extensions switches --enable/--disable
1424 ###############################################################################
1425 # By default these should be enabled unless having extra dependencies.
1426 # If there is extra dependency over configure options then the enable should
1427 # be automagic based on whether the requiring feature is enabled or not.
1428 # All this options change anything only with --enable-extension-integration.
1430 # The name of this option and its help string makes it sound as if
1431 # extensions are built anyway, just not integrated in the installer,
1432 # if you use --disable-extension-integration. Is that really the
1433 # case?
1435 AC_ARG_ENABLE(ios-simulator,
1436     AS_HELP_STRING([--enable-ios-simulator],
1437         [build for iOS simulator])
1440 libo_FUZZ_ARG_ENABLE(extension-integration,
1441     AS_HELP_STRING([--disable-extension-integration],
1442         [Disable integration of the built extensions in the installer of the
1443          product. Use this switch to disable the integration.])
1446 AC_ARG_ENABLE(avmedia,
1447     AS_HELP_STRING([--disable-avmedia],
1448         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1449 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1451 AC_ARG_ENABLE(database-connectivity,
1452     AS_HELP_STRING([--disable-database-connectivity],
1453         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1456 # This doesn't mean not building (or "integrating") extensions
1457 # (although it probably should; i.e. it should imply
1458 # --disable-extension-integration I guess), it means not supporting
1459 # any extension mechanism at all
1460 libo_FUZZ_ARG_ENABLE(extensions,
1461     AS_HELP_STRING([--disable-extensions],
1462         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1465 AC_ARG_ENABLE(scripting,
1466     AS_HELP_STRING([--disable-scripting],
1467         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1468 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1470 # This is mainly for Android and iOS, but could potentially be used in some
1471 # special case otherwise, too, so factored out as a separate setting
1473 AC_ARG_ENABLE(dynamic-loading,
1474     AS_HELP_STRING([--disable-dynamic-loading],
1475         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1478 libo_FUZZ_ARG_ENABLE(report-builder,
1479     AS_HELP_STRING([--disable-report-builder],
1480         [Disable the Report Builder.])
1483 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1484     AS_HELP_STRING([--enable-ext-wiki-publisher],
1485         [Enable the Wiki Publisher extension.])
1488 libo_FUZZ_ARG_ENABLE(lpsolve,
1489     AS_HELP_STRING([--disable-lpsolve],
1490         [Disable compilation of the lp solve solver ])
1492 libo_FUZZ_ARG_ENABLE(coinmp,
1493     AS_HELP_STRING([--disable-coinmp],
1494         [Disable compilation of the CoinMP solver ])
1497 libo_FUZZ_ARG_ENABLE(pdfimport,
1498     AS_HELP_STRING([--disable-pdfimport],
1499         [Disable building the PDF import feature.])
1502 libo_FUZZ_ARG_ENABLE(pdfium,
1503     AS_HELP_STRING([--disable-pdfium],
1504         [Disable building PDFium. Results in unsecure PDF signature verification.])
1507 libo_FUZZ_ARG_ENABLE(skia,
1508     AS_HELP_STRING([--disable-skia],
1509         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1512 ###############################################################################
1514 dnl ---------- *** ----------
1516 libo_FUZZ_ARG_ENABLE(mergelibs,
1517     AS_HELP_STRING([--enable-mergelibs],
1518         [Merge several of the smaller libraries into one big, "merged", one.])
1521 libo_FUZZ_ARG_ENABLE(breakpad,
1522     AS_HELP_STRING([--enable-breakpad],
1523         [Enables breakpad for crash reporting.])
1526 libo_FUZZ_ARG_ENABLE(crashdump,
1527     AS_HELP_STRING([--disable-crashdump],
1528         [Disable dump.ini and dump-file, when --enable-breakpad])
1531 AC_ARG_ENABLE(fetch-external,
1532     AS_HELP_STRING([--disable-fetch-external],
1533         [Disables fetching external tarballs from web sources.])
1536 AC_ARG_ENABLE(fuzzers,
1537     AS_HELP_STRING([--enable-fuzzers],
1538         [Enables building libfuzzer targets for fuzz testing.])
1541 libo_FUZZ_ARG_ENABLE(pch,
1542     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1543         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1544          Using 'system' will include only external headers, 'base' will add also headers
1545          from base modules, 'normal' will also add all headers except from the module built,
1546          'full' will use all suitable headers even from a module itself.])
1549 libo_FUZZ_ARG_ENABLE(epm,
1550     AS_HELP_STRING([--enable-epm],
1551         [LibreOffice includes self-packaging code, that requires epm, however epm is
1552          useless for large scale package building.])
1555 libo_FUZZ_ARG_ENABLE(odk,
1556     AS_HELP_STRING([--enable-odk],
1557         [Enable building the Office Development Kit, the part that extensions need to build against])
1560 AC_ARG_ENABLE(mpl-subset,
1561     AS_HELP_STRING([--enable-mpl-subset],
1562         [Don't compile any pieces which are not MPL or more liberally licensed])
1565 libo_FUZZ_ARG_ENABLE(evolution2,
1566     AS_HELP_STRING([--enable-evolution2],
1567         [Allows the built-in evolution 2 addressbook connectivity build to be
1568          enabled.])
1571 AC_ARG_ENABLE(avahi,
1572     AS_HELP_STRING([--enable-avahi],
1573         [Determines whether to use Avahi to advertise Impress to remote controls.])
1576 libo_FUZZ_ARG_ENABLE(werror,
1577     AS_HELP_STRING([--enable-werror],
1578         [Turn warnings to errors. (Has no effect in modules where the treating
1579          of warnings as errors is disabled explicitly.)]),
1582 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1583     AS_HELP_STRING([--enable-assert-always-abort],
1584         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1587 libo_FUZZ_ARG_ENABLE(dbgutil,
1588     AS_HELP_STRING([--enable-dbgutil],
1589         [Provide debugging support from --enable-debug and include additional debugging
1590          utilities such as object counting or more expensive checks.
1591          This is the recommended option for developers.
1592          Note that this makes the build ABI incompatible, it is not possible to mix object
1593          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1595 libo_FUZZ_ARG_ENABLE(debug,
1596     AS_HELP_STRING([--enable-debug],
1597         [Include debugging information, disable compiler optimization and inlining plus
1598          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1600 libo_FUZZ_ARG_ENABLE(split-debug,
1601     AS_HELP_STRING([--disable-split-debug],
1602         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1603          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1605 libo_FUZZ_ARG_ENABLE(gdb-index,
1606     AS_HELP_STRING([--disable-gdb-index],
1607         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1608          The feature requires a linker that supports the --gdb-index option.]))
1610 libo_FUZZ_ARG_ENABLE(sal-log,
1611     AS_HELP_STRING([--enable-sal-log],
1612         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1614 libo_FUZZ_ARG_ENABLE(symbols,
1615     AS_HELP_STRING([--enable-symbols],
1616         [Generate debug information.
1617          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1618          otherwise. It is possible to explicitly specify gbuild build targets
1619          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1620          everything in the directory; there is no ordering, more specific overrides
1621          more general, and disabling takes precedence).
1622          Example: --enable-symbols="all -sw/ -Library_sc".]))
1624 libo_FUZZ_ARG_ENABLE(optimized,
1625     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1626         [Whether to compile with optimization flags.
1627          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1628          otherwise. Using 'debug' will try to use only optimizations that should
1629          not interfere with debugging. For Emscripten we default to optimized (-O1)
1630          debug build, as otherwise binaries become too large.]))
1632 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1633     AS_HELP_STRING([--disable-runtime-optimizations],
1634         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1635          JVM JIT) that are known to interact badly with certain dynamic analysis
1636          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1637          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1638          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1640 AC_ARG_WITH(valgrind,
1641     AS_HELP_STRING([--with-valgrind],
1642         [Make availability of Valgrind headers a hard requirement.]))
1644 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1645     AS_HELP_STRING([--enable-compiler-plugins],
1646         [Enable compiler plugins that will perform additional checks during
1647          building. Enabled automatically by --enable-dbgutil.
1648          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1649 COMPILER_PLUGINS_DEBUG=
1650 if test "$enable_compiler_plugins" = debug; then
1651     enable_compiler_plugins=yes
1652     COMPILER_PLUGINS_DEBUG=TRUE
1655 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1656     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1657         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1658          relevant in the --disable-compiler-plugins case.]))
1660 libo_FUZZ_ARG_ENABLE(ooenv,
1661     AS_HELP_STRING([--enable-ooenv],
1662         [Enable ooenv for the instdir installation.]))
1664 AC_ARG_ENABLE(lto,
1665     AS_HELP_STRING([--enable-lto],
1666         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1667          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1668          linker.)]))
1670 AC_ARG_ENABLE(python,
1671     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1672         [Enables or disables Python support at run-time.
1673          Also specifies what Python to use at build-time.
1674          'fully-internal' even forces the internal version for uses of Python
1675          during the build.
1676          On macOS the only choices are
1677          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1678          ]))
1680 libo_FUZZ_ARG_ENABLE(gtk3,
1681     AS_HELP_STRING([--disable-gtk3],
1682         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1683 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1685 AC_ARG_ENABLE(gtk4,
1686     AS_HELP_STRING([--enable-gtk4],
1687         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1689 AC_ARG_ENABLE(atspi-tests,
1690     AS_HELP_STRING([--disable-atspi-tests],
1691         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1693 AC_ARG_ENABLE(introspection,
1694     AS_HELP_STRING([--enable-introspection],
1695         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1696          Linux distributions.)]))
1698 AC_ARG_ENABLE(split-app-modules,
1699     AS_HELP_STRING([--enable-split-app-modules],
1700         [Split file lists for app modules, e.g. base, calc.
1701          Has effect only with make distro-pack-install]),
1704 AC_ARG_ENABLE(split-opt-features,
1705     AS_HELP_STRING([--enable-split-opt-features],
1706         [Split file lists for some optional features, e.g. pyuno, testtool.
1707          Has effect only with make distro-pack-install]),
1710 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1711     AS_HELP_STRING([--disable-cairo-canvas],
1712         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1715 libo_FUZZ_ARG_ENABLE(dbus,
1716     AS_HELP_STRING([--disable-dbus],
1717         [Determines whether to enable features that depend on dbus.
1718          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1719 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1721 libo_FUZZ_ARG_ENABLE(sdremote,
1722     AS_HELP_STRING([--disable-sdremote],
1723         [Determines whether to enable Impress remote control (i.e. the server component).]),
1724 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1726 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1727     AS_HELP_STRING([--disable-sdremote-bluetooth],
1728         [Determines whether to build sdremote with bluetooth support.
1729          Requires dbus on Linux.]))
1731 libo_FUZZ_ARG_ENABLE(gio,
1732     AS_HELP_STRING([--disable-gio],
1733         [Determines whether to use the GIO support.]),
1734 ,test "${enable_gio+set}" = set || enable_gio=yes)
1736 AC_ARG_ENABLE(qt5,
1737     AS_HELP_STRING([--enable-qt5],
1738         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1739          available.]),
1742 AC_ARG_ENABLE(qt6,
1743     AS_HELP_STRING([--enable-qt6],
1744         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1745          available.]),
1748 AC_ARG_ENABLE(kf5,
1749     AS_HELP_STRING([--enable-kf5],
1750         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1751          KF5 are available.]),
1754 AC_ARG_ENABLE(kf6,
1755     AS_HELP_STRING([--enable-kf6],
1756         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1757          KF6 are available.]),
1761 AC_ARG_ENABLE(gtk3_kde5,
1762     AS_HELP_STRING([--enable-gtk3-kde5],
1763         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1764          platforms where Gtk3, Qt5 and Plasma is available.]),
1767 AC_ARG_ENABLE(gen,
1768     AS_HELP_STRING([--enable-gen],
1769         [To select the gen backend in case of --disable-dynamic-loading.
1770          Per default auto-enabled when X11 is used.]),
1771 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1773 AC_ARG_ENABLE(gui,
1774     AS_HELP_STRING([--disable-gui],
1775         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1776 ,enable_gui=yes)
1778 libo_FUZZ_ARG_ENABLE(randr,
1779     AS_HELP_STRING([--disable-randr],
1780         [Disable RandR support in the vcl project.]),
1781 ,test "${enable_randr+set}" = set || enable_randr=yes)
1783 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1784     AS_HELP_STRING([--disable-gstreamer-1-0],
1785         [Disable building with the gstreamer 1.0 avmedia backend.]),
1786 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1788 libo_FUZZ_ARG_ENABLE([eot],
1789     [AS_HELP_STRING([--enable-eot],
1790         [Enable support for Embedded OpenType fonts.])],
1791 ,test "${enable_eot+set}" = set || enable_eot=no)
1793 libo_FUZZ_ARG_ENABLE(cve-tests,
1794     AS_HELP_STRING([--disable-cve-tests],
1795         [Prevent CVE tests to be executed]),
1798 AC_ARG_ENABLE(build-opensymbol,
1799     AS_HELP_STRING([--enable-build-opensymbol],
1800         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1801          fontforge installed.]),
1804 AC_ARG_ENABLE(dependency-tracking,
1805     AS_HELP_STRING([--enable-dependency-tracking],
1806         [Do not reject slow dependency extractors.])[
1807   --disable-dependency-tracking
1808                           Disables generation of dependency information.
1809                           Speed up one-time builds.],
1812 AC_ARG_ENABLE(icecream,
1813     AS_HELP_STRING([--enable-icecream],
1814         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1815          It defaults to /opt/icecream for the location of the icecream gcc/g++
1816          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1819 AC_ARG_ENABLE(ld,
1820     AS_HELP_STRING([--enable-ld=<linker>],
1821         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1822          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1823          If <linker> contains any ':', the part before the first ':' is used as the value of
1824          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1825          needed for Clang 12).]),
1828 libo_FUZZ_ARG_ENABLE(cups,
1829     AS_HELP_STRING([--disable-cups],
1830         [Do not build cups support.])
1833 AC_ARG_ENABLE(ccache,
1834     AS_HELP_STRING([--disable-ccache],
1835         [Do not try to use ccache automatically.
1836          By default we will try to detect if ccache is available; in that case if
1837          CC/CXX are not yet set, and --enable-icecream is not given, we
1838          attempt to use ccache. --disable-ccache disables ccache completely.
1839          Additionally ccache's depend mode is enabled if possible,
1840          use --enable-ccache=nodepend to enable ccache without depend mode.
1844 AC_ARG_ENABLE(z7-debug,
1845     AS_HELP_STRING([--enable-z7-debug],
1846         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1847          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1848          Enabled by default if ccache is detected.]))
1850 libo_FUZZ_ARG_ENABLE(online-update,
1851     AS_HELP_STRING([--enable-online-update],
1852         [Enable the online update service that will check for new versions of
1853          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1856 libo_FUZZ_ARG_ENABLE(online-update-mar,
1857     AS_HELP_STRING([--enable-online-update-mar],
1858         [Enable the experimental Mozilla-like online update service that will
1859          check for new versions of LibreOffice. Disabled by default.]),
1862 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1863     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1864         [Set the base URL value for --enable-online-update-mar.
1865          (Can be left off for debug purposes, even if that may render the feature
1866          non-functional.)]),
1869 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1870     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1871         [Set the certificate DER value for --enable-online-update-mar.
1872          (Can be left off for debug purposes, even if that may render the feature
1873          non-functional.)]),
1876 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1877     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1878         [Set the certificate name value for --enable-online-update-mar.
1879          (Can be left off for debug purposes, even if that may render the feature
1880          non-functional.)]),
1883 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1884     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1885         [Set the certificate path value for --enable-online-update-mar.
1886          (Can be left off for debug purposes, even if that may render the feature
1887          non-functional.)]),
1890 libo_FUZZ_ARG_WITH(online-update-mar-uploadurl,
1891     AS_HELP_STRING([--with-online-update-mar-uploadurl=...],
1892         [Set the upload URL value for --enable-online-update-mar.
1893          (Can be left off for debug purposes, even if that may render the feature
1894          non-functional.)]),
1897 libo_FUZZ_ARG_ENABLE(extension-update,
1898     AS_HELP_STRING([--disable-extension-update],
1899         [Disable possibility to update installed extensions.]),
1902 libo_FUZZ_ARG_ENABLE(release-build,
1903     AS_HELP_STRING([--enable-release-build],
1904         [Enable release build. Note that the "release build" choice is orthogonal to
1905          whether symbols are present, debug info is generated, or optimization
1906          is done.
1907          See https://wiki.documentfoundation.org/Development/DevBuild]),
1910 AC_ARG_ENABLE(windows-build-signing,
1911     AS_HELP_STRING([--enable-windows-build-signing],
1912         [Enable signing of windows binaries (*.exe, *.dll)]),
1915 AC_ARG_ENABLE(silent-msi,
1916     AS_HELP_STRING([--enable-silent-msi],
1917         [Enable MSI with LIMITUI=1 (silent install).]),
1920 AC_ARG_ENABLE(wix,
1921     AS_HELP_STRING([--enable-wix],
1922         [Build Windows installer using WiX.]),
1925 AC_ARG_ENABLE(macosx-code-signing,
1926     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1927         [Sign executables, dylibs, frameworks and the app bundle. If you
1928          don't provide an identity the first suitable certificate
1929          in your keychain is used.]),
1932 AC_ARG_ENABLE(macosx-package-signing,
1933     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1934         [Create a .pkg suitable for uploading to the Mac App Store and sign
1935          it. If you don't provide an identity the first suitable certificate
1936          in your keychain is used.]),
1939 AC_ARG_ENABLE(macosx-sandbox,
1940     AS_HELP_STRING([--enable-macosx-sandbox],
1941         [Make the app bundle run in a sandbox. Requires code signing.
1942          Is required by apps distributed in the Mac App Store, and implies
1943          adherence to App Store rules.]),
1946 AC_ARG_WITH(macosx-bundle-identifier,
1947     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1948         [Define the macOS bundle identifier. Default is the somewhat weird
1949          org.libreoffice.script ("script", huh?).]),
1950 ,with_macosx_bundle_identifier=org.libreoffice.script)
1952 AC_ARG_WITH(macosx-provisioning-profile,
1953     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1954         [Specify the path to a provisioning profile to use]),
1957 AC_ARG_WITH(product-name,
1958     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1959         [Define the product name. Default is AC_PACKAGE_NAME.]),
1960 ,with_product_name=$PRODUCTNAME)
1962 libo_FUZZ_ARG_ENABLE(community-flavor,
1963     AS_HELP_STRING([--disable-community-flavor],
1964         [Disable the Community branding.]),
1967 AC_ARG_WITH(package-version,
1968     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1969         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1972 libo_FUZZ_ARG_ENABLE(readonly-installset,
1973     AS_HELP_STRING([--enable-readonly-installset],
1974         [Prevents any attempts by LibreOffice to write into its installation. That means
1975          at least that no "system-wide" extensions can be added. Partly experimental work in
1976          progress, probably not fully implemented. Always enabled for macOS.]),
1979 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1980     AS_HELP_STRING([--disable-mariadb-sdbc],
1981         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1984 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1985     AS_HELP_STRING([--disable-postgresql-sdbc],
1986         [Disable the build of the PostgreSQL-SDBC driver.])
1989 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1990     AS_HELP_STRING([--disable-lotuswordpro],
1991         [Disable the build of the Lotus Word Pro filter.]),
1992 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1994 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1995     AS_HELP_STRING([--disable-firebird-sdbc],
1996         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1997 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1999 AC_ARG_ENABLE(bogus-pkg-config,
2000     AS_HELP_STRING([--enable-bogus-pkg-config],
2001         [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.]),
2004 AC_ARG_ENABLE(openssl,
2005     AS_HELP_STRING([--disable-openssl],
2006         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2007          components will use NSS. Work in progress,
2008          use only if you are hacking on it.]),
2009 ,enable_openssl=yes)
2011 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2012     AS_HELP_STRING([--enable-cipher-openssl-backend],
2013         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2014          Requires --enable-openssl.]))
2016 AC_ARG_ENABLE(nss,
2017     AS_HELP_STRING([--disable-nss],
2018         [Disable using NSS. If disabled,
2019          components will use openssl. Work in progress,
2020          use only if you are hacking on it.]),
2021 ,enable_nss=yes)
2023 AC_ARG_ENABLE(library-bin-tar,
2024     AS_HELP_STRING([--enable-library-bin-tar],
2025         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2026         Some libraries can save their build result in a tarball
2027         stored in TARFILE_LOCATION. That binary tarball is
2028         uniquely identified by the source tarball,
2029         the content of the config_host.mk file and the content
2030         of the top-level directory in core for that library
2031         If this option is enabled, then if such a tarfile exist, it will be untarred
2032         instead of the source tarfile, and the build step will be skipped for that
2033         library.
2034         If a proper tarfile does not exist, then the normal source-based
2035         build is done for that library and a proper binary tarfile is created
2036         for the next time.]),
2039 AC_ARG_ENABLE(dconf,
2040     AS_HELP_STRING([--disable-dconf],
2041         [Disable the dconf configuration backend (enabled by default where
2042          available).]))
2044 libo_FUZZ_ARG_ENABLE(formula-logger,
2045     AS_HELP_STRING(
2046         [--enable-formula-logger],
2047         [Enable formula logger for logging formula calculation flow in Calc.]
2048     )
2051 AC_ARG_ENABLE(ldap,
2052     AS_HELP_STRING([--disable-ldap],
2053         [Disable LDAP support.]),
2054 ,enable_ldap=yes)
2056 AC_ARG_ENABLE(opencl,
2057     AS_HELP_STRING([--disable-opencl],
2058         [Disable OpenCL support.]),
2059 ,enable_opencl=yes)
2061 libo_FUZZ_ARG_ENABLE(librelogo,
2062     AS_HELP_STRING([--disable-librelogo],
2063         [Do not build LibreLogo.]),
2064 ,enable_librelogo=yes)
2066 AC_ARG_ENABLE(wasm-strip,
2067     AS_HELP_STRING([--enable-wasm-strip],
2068         [Strip the static build like for WASM/emscripten platform.]),
2071 AC_ARG_WITH(main-module,
2072     AS_HELP_STRING([--with-main-module=<writer/calc>],
2073         [Specify which main module to build for wasm.
2074         Default value is 'writer'.]),
2077 AC_ARG_ENABLE(wasm-exceptions,
2078     AS_HELP_STRING([--enable-wasm-exceptions],
2079         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2080         matter of fact, this is currently not finished by any implementation)
2081         (see https://webassembly.org/roadmap/ for the current state]),
2084 AC_ARG_ENABLE(xmlhelp,
2085     AS_HELP_STRING([--disable-xmlhelp],
2086         [Disable XML help support]),
2087 ,enable_xmlhelp=yes)
2089 AC_ARG_ENABLE(customtarget-components,
2090     AS_HELP_STRING([--enable-customtarget-components],
2091         [Generates the static UNO object constructor mapping from the build.]))
2093 dnl ===================================================================
2094 dnl Optional Packages (--with/without-)
2095 dnl ===================================================================
2097 AC_ARG_WITH(gcc-home,
2098     AS_HELP_STRING([--with-gcc-home],
2099         [Specify the location of gcc/g++ manually. This can be used in conjunction
2100          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2101          non-default path.]),
2104 AC_ARG_WITH(gnu-patch,
2105     AS_HELP_STRING([--with-gnu-patch],
2106         [Specify location of GNU patch on Solaris or FreeBSD.]),
2109 AC_ARG_WITH(build-platform-configure-options,
2110     AS_HELP_STRING([--with-build-platform-configure-options],
2111         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2114 AC_ARG_WITH(gnu-cp,
2115     AS_HELP_STRING([--with-gnu-cp],
2116         [Specify location of GNU cp on Solaris or FreeBSD.]),
2119 AC_ARG_WITH(external-tar,
2120     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2121         [Specify an absolute path of where to find (and store) tarfiles.]),
2122     TARFILE_LOCATION=$withval ,
2125 AC_ARG_WITH(referenced-git,
2126     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2127         [Specify another checkout directory to reference. This makes use of
2128                  git submodule update --reference, and saves a lot of diskspace
2129                  when having multiple trees side-by-side.]),
2130     GIT_REFERENCE_SRC=$withval ,
2133 AC_ARG_WITH(linked-git,
2134     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2135         [Specify a directory where the repositories of submodules are located.
2136          This uses a method similar to git-new-workdir to get submodules.]),
2137     GIT_LINK_SRC=$withval ,
2140 AC_ARG_WITH(galleries,
2141     AS_HELP_STRING([--with-galleries],
2142         [Specify how galleries should be built. It is possible either to
2143          build these internally from source ("build"),
2144          or to disable them ("no")]),
2147 AC_ARG_WITH(templates,
2148     AS_HELP_STRING([--with-templates],
2149         [Specify we build with or without template files. It is possible either to
2150          build with templates ("yes"),
2151          or to disable them ("no")]),
2154 AC_ARG_WITH(theme,
2155     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2156         [Choose which themes to include. By default those themes with an '*' are included.
2157          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2158          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2159          *elementary, *elementary_svg,
2160          *karasa_jaga, *karasa_jaga_svg,
2161          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2162          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2165 libo_FUZZ_ARG_WITH(helppack-integration,
2166     AS_HELP_STRING([--without-helppack-integration],
2167         [It will not integrate the helppacks to the installer
2168          of the product. Please use this switch to use the online help
2169          or separate help packages.]),
2172 libo_FUZZ_ARG_WITH(fonts,
2173     AS_HELP_STRING([--without-fonts],
2174         [LibreOffice includes some third-party fonts to provide a reliable basis for
2175          help content, templates, samples, etc. When these fonts are already
2176          known to be available on the system then you should use this option.]),
2179 AC_ARG_ENABLE(noto-font,
2180     AS_HELP_STRING([--enable-noto-font],
2181         [Add more Google Noto fonts.]),
2184 AC_ARG_WITH(epm,
2185     AS_HELP_STRING([--with-epm],
2186         [Decides which epm to use. Default is to use the one from the system if
2187          one is built. When either this is not there or you say =internal epm
2188          will be built.]),
2191 AC_ARG_WITH(package-format,
2192     AS_HELP_STRING([--with-package-format],
2193         [Specify package format(s) for LibreOffice installation sets. The
2194          implicit --without-package-format leads to no installation sets being
2195          generated. Possible values: archive, bsd, deb, dmg,
2196          installed, msi, pkg, and rpm.
2197          Example: --with-package-format='deb rpm']),
2200 AC_ARG_WITH(tls,
2201     AS_HELP_STRING([--with-tls],
2202         [Decides which TLS/SSL and cryptographic implementations to use for
2203          LibreOffice's code. Default is to use NSS although OpenSSL is also
2204          possible. Notice that selecting NSS restricts the usage of OpenSSL
2205          in LO's code but selecting OpenSSL doesn't restrict by now the
2206          usage of NSS in LO's code. Possible values: openssl, nss.
2207          Example: --with-tls="nss"]),
2210 AC_ARG_WITH(system-libs,
2211     AS_HELP_STRING([--with-system-libs],
2212         [Use libraries already on system -- enables all --with-system-* flags.]),
2215 AC_ARG_WITH(system-bzip2,
2216     AS_HELP_STRING([--with-system-bzip2],
2217         [Use bzip2 already on system. Used when --enable-online-update-mar
2218         or --enable-python=internal]),,
2219     [with_system_bzip2="$with_system_libs"])
2221 AC_ARG_WITH(system-headers,
2222     AS_HELP_STRING([--with-system-headers],
2223         [Use headers already on system -- enables all --with-system-* flags for
2224          external packages whose headers are the only entities used i.e.
2225          boost/odbc/sane-header(s).]),,
2226     [with_system_headers="$with_system_libs"])
2228 AC_ARG_WITH(system-jars,
2229     AS_HELP_STRING([--without-system-jars],
2230         [When building with --with-system-libs, also the needed jars are expected
2231          on the system. Use this to disable that]),,
2232     [with_system_jars="$with_system_libs"])
2234 AC_ARG_WITH(system-cairo,
2235     AS_HELP_STRING([--with-system-cairo],
2236         [Use cairo libraries already on system.  Happens automatically for
2237          (implicit) --enable-gtk3.]))
2239 AC_ARG_WITH(system-epoxy,
2240     AS_HELP_STRING([--with-system-epoxy],
2241         [Use epoxy libraries already on system.  Happens automatically for
2242          (implicit) --enable-gtk3.]),,
2243        [with_system_epoxy="$with_system_libs"])
2245 AC_ARG_WITH(myspell-dicts,
2246     AS_HELP_STRING([--with-myspell-dicts],
2247         [Adds myspell dictionaries to the LibreOffice installation set]),
2250 AC_ARG_WITH(system-dicts,
2251     AS_HELP_STRING([--without-system-dicts],
2252         [Do not use dictionaries from system paths.]),
2255 AC_ARG_WITH(external-dict-dir,
2256     AS_HELP_STRING([--with-external-dict-dir],
2257         [Specify external dictionary dir.]),
2260 AC_ARG_WITH(external-hyph-dir,
2261     AS_HELP_STRING([--with-external-hyph-dir],
2262         [Specify external hyphenation pattern dir.]),
2265 AC_ARG_WITH(external-thes-dir,
2266     AS_HELP_STRING([--with-external-thes-dir],
2267         [Specify external thesaurus dir.]),
2270 AC_ARG_WITH(system-zlib,
2271     AS_HELP_STRING([--with-system-zlib],
2272         [Use zlib already on system.]),,
2273     [with_system_zlib=auto])
2275 AC_ARG_WITH(system-jpeg,
2276     AS_HELP_STRING([--with-system-jpeg],
2277         [Use jpeg already on system.]),,
2278     [with_system_jpeg="$with_system_libs"])
2280 AC_ARG_WITH(system-expat,
2281     AS_HELP_STRING([--with-system-expat],
2282         [Use expat already on system.]),,
2283     [with_system_expat="$with_system_libs"])
2285 AC_ARG_WITH(system-libxml,
2286     AS_HELP_STRING([--with-system-libxml],
2287         [Use libxml/libxslt already on system.]),,
2288     [with_system_libxml=auto])
2290 AC_ARG_WITH(system-openldap,
2291     AS_HELP_STRING([--with-system-openldap],
2292         [Use the OpenLDAP LDAP SDK already on system.]),,
2293     [with_system_openldap="$with_system_libs"])
2295 libo_FUZZ_ARG_ENABLE(poppler,
2296     AS_HELP_STRING([--disable-poppler],
2297         [Disable building Poppler.])
2300 AC_ARG_WITH(system-poppler,
2301     AS_HELP_STRING([--with-system-poppler],
2302         [Use system poppler (only needed for PDF import).]),,
2303     [with_system_poppler="$with_system_libs"])
2305 AC_ARG_WITH(system-abseil,
2306     AS_HELP_STRING([--with-system-abseil],
2307         [Use the abseil libraries already on system.]),,
2308     [with_system_abseil="$with_system_libs"])
2310 AC_ARG_WITH(system-openjpeg,
2311     AS_HELP_STRING([--with-system-openjpeg],
2312         [Use the OpenJPEG library already on system.]),,
2313     [with_system_openjpeg="$with_system_libs"])
2315 libo_FUZZ_ARG_ENABLE(gpgmepp,
2316     AS_HELP_STRING([--disable-gpgmepp],
2317         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2320 AC_ARG_WITH(system-gpgmepp,
2321     AS_HELP_STRING([--with-system-gpgmepp],
2322         [Use gpgmepp already on system]),,
2323     [with_system_gpgmepp="$with_system_libs"])
2325 AC_ARG_WITH(system-mariadb,
2326     AS_HELP_STRING([--with-system-mariadb],
2327         [Use MariaDB/MySQL libraries already on system.]),,
2328     [with_system_mariadb="$with_system_libs"])
2330 AC_ARG_ENABLE(bundle-mariadb,
2331     AS_HELP_STRING([--enable-bundle-mariadb],
2332         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2335 AC_ARG_WITH(system-postgresql,
2336     AS_HELP_STRING([--with-system-postgresql],
2337         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2338          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2339     [with_system_postgresql="$with_system_libs"])
2341 AC_ARG_WITH(libpq-path,
2342     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2343         [Use this PostgreSQL C interface (libpq) installation for building
2344          the PostgreSQL-SDBC extension.]),
2347 AC_ARG_WITH(system-firebird,
2348     AS_HELP_STRING([--with-system-firebird],
2349         [Use Firebird libraries already on system, for building the Firebird-SDBC
2350          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2351     [with_system_firebird="$with_system_libs"])
2353 AC_ARG_WITH(system-libtommath,
2354             AS_HELP_STRING([--with-system-libtommath],
2355                            [Use libtommath already on system]),,
2356             [with_system_libtommath="$with_system_libs"])
2358 AC_ARG_WITH(system-hsqldb,
2359     AS_HELP_STRING([--with-system-hsqldb],
2360         [Use hsqldb already on system.]))
2362 AC_ARG_WITH(hsqldb-jar,
2363     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2364         [Specify path to jarfile manually.]),
2365     HSQLDB_JAR=$withval)
2367 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2368     AS_HELP_STRING([--disable-scripting-beanshell],
2369         [Disable support for scripts in BeanShell.]),
2373 AC_ARG_WITH(system-beanshell,
2374     AS_HELP_STRING([--with-system-beanshell],
2375         [Use beanshell already on system.]),,
2376     [with_system_beanshell="$with_system_jars"])
2378 AC_ARG_WITH(beanshell-jar,
2379     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2380         [Specify path to jarfile manually.]),
2381     BSH_JAR=$withval)
2383 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2384     AS_HELP_STRING([--disable-scripting-javascript],
2385         [Disable support for scripts in JavaScript.]),
2389 AC_ARG_WITH(system-rhino,
2390     AS_HELP_STRING([--with-system-rhino],
2391         [Use rhino already on system.]),,)
2392 #    [with_system_rhino="$with_system_jars"])
2393 # Above is not used as we have different debug interface
2394 # patched into internal rhino. This code needs to be fixed
2395 # before we can enable it by default.
2397 AC_ARG_WITH(rhino-jar,
2398     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2399         [Specify path to jarfile manually.]),
2400     RHINO_JAR=$withval)
2402 AC_ARG_WITH(system-jfreereport,
2403     AS_HELP_STRING([--with-system-jfreereport],
2404         [Use JFreeReport already on system.]),,
2405     [with_system_jfreereport="$with_system_jars"])
2407 AC_ARG_WITH(sac-jar,
2408     AS_HELP_STRING([--with-sac-jar=JARFILE],
2409         [Specify path to jarfile manually.]),
2410     SAC_JAR=$withval)
2412 AC_ARG_WITH(libxml-jar,
2413     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2414         [Specify path to jarfile manually.]),
2415     LIBXML_JAR=$withval)
2417 AC_ARG_WITH(flute-jar,
2418     AS_HELP_STRING([--with-flute-jar=JARFILE],
2419         [Specify path to jarfile manually.]),
2420     FLUTE_JAR=$withval)
2422 AC_ARG_WITH(jfreereport-jar,
2423     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2424         [Specify path to jarfile manually.]),
2425     JFREEREPORT_JAR=$withval)
2427 AC_ARG_WITH(liblayout-jar,
2428     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2429         [Specify path to jarfile manually.]),
2430     LIBLAYOUT_JAR=$withval)
2432 AC_ARG_WITH(libloader-jar,
2433     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2434         [Specify path to jarfile manually.]),
2435     LIBLOADER_JAR=$withval)
2437 AC_ARG_WITH(libformula-jar,
2438     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2439         [Specify path to jarfile manually.]),
2440     LIBFORMULA_JAR=$withval)
2442 AC_ARG_WITH(librepository-jar,
2443     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2444         [Specify path to jarfile manually.]),
2445     LIBREPOSITORY_JAR=$withval)
2447 AC_ARG_WITH(libfonts-jar,
2448     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2449         [Specify path to jarfile manually.]),
2450     LIBFONTS_JAR=$withval)
2452 AC_ARG_WITH(libserializer-jar,
2453     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2454         [Specify path to jarfile manually.]),
2455     LIBSERIALIZER_JAR=$withval)
2457 AC_ARG_WITH(libbase-jar,
2458     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2459         [Specify path to jarfile manually.]),
2460     LIBBASE_JAR=$withval)
2462 AC_ARG_WITH(system-odbc,
2463     AS_HELP_STRING([--with-system-odbc],
2464         [Use the odbc headers already on system.]),,
2465     [with_system_odbc="auto"])
2467 AC_ARG_WITH(system-sane,
2468     AS_HELP_STRING([--with-system-sane],
2469         [Use sane.h already on system.]),,
2470     [with_system_sane="$with_system_headers"])
2472 AC_ARG_WITH(system-bluez,
2473     AS_HELP_STRING([--with-system-bluez],
2474         [Use bluetooth.h already on system.]),,
2475     [with_system_bluez="$with_system_headers"])
2477 AC_ARG_WITH(system-boost,
2478     AS_HELP_STRING([--with-system-boost],
2479         [Use boost already on system.]),,
2480     [with_system_boost="$with_system_headers"])
2482 AC_ARG_WITH(system-dragonbox,
2483     AS_HELP_STRING([--with-system-dragonbox],
2484         [Use dragonbox already on system.]),,
2485     [with_system_dragonbox="$with_system_headers"])
2487 AC_ARG_WITH(system-frozen,
2488     AS_HELP_STRING([--with-system-frozen],
2489         [Use frozen already on system.]),,
2490     [with_system_frozen="$with_system_headers"])
2492 AC_ARG_WITH(system-libfixmath,
2493     AS_HELP_STRING([--with-system-libfixmath],
2494         [Use libfixmath already on system.]),,
2495     [with_system_libfixmath="$with_system_libs"])
2497 AC_ARG_WITH(system-glm,
2498     AS_HELP_STRING([--with-system-glm],
2499         [Use glm already on system.]),,
2500     [with_system_glm="$with_system_headers"])
2502 AC_ARG_WITH(system-hunspell,
2503     AS_HELP_STRING([--with-system-hunspell],
2504         [Use libhunspell already on system.]),,
2505     [with_system_hunspell="$with_system_libs"])
2507 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2508     AS_HELP_STRING([--enable-cairo-rgba],
2509         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2511 libo_FUZZ_ARG_ENABLE(zxing,
2512     AS_HELP_STRING([--disable-zxing],
2513        [Disable use of zxing external library.]))
2515 AC_ARG_WITH(system-zxing,
2516     AS_HELP_STRING([--with-system-zxing],
2517         [Use libzxing already on system.]),,
2518     [with_system_zxing="$with_system_libs"])
2520 AC_ARG_WITH(system-zxcvbn,
2521     AS_HELP_STRING([--with-system-zxcvbn],
2522         [Use libzxcvbn already on system.]),,
2523     [with_system_zxcvbn="$with_system_libs"])
2525 AC_ARG_WITH(system-box2d,
2526     AS_HELP_STRING([--with-system-box2d],
2527         [Use box2d already on system.]),,
2528     [with_system_box2d="$with_system_libs"])
2530 AC_ARG_WITH(system-mythes,
2531     AS_HELP_STRING([--with-system-mythes],
2532         [Use mythes already on system.]),,
2533     [with_system_mythes="$with_system_libs"])
2535 AC_ARG_WITH(system-altlinuxhyph,
2536     AS_HELP_STRING([--with-system-altlinuxhyph],
2537         [Use ALTLinuxhyph already on system.]),,
2538     [with_system_altlinuxhyph="$with_system_libs"])
2540 AC_ARG_WITH(system-lpsolve,
2541     AS_HELP_STRING([--with-system-lpsolve],
2542         [Use lpsolve already on system.]),,
2543     [with_system_lpsolve="$with_system_libs"])
2545 AC_ARG_WITH(system-coinmp,
2546     AS_HELP_STRING([--with-system-coinmp],
2547         [Use CoinMP already on system.]),,
2548     [with_system_coinmp="$with_system_libs"])
2550 AC_ARG_WITH(system-liblangtag,
2551     AS_HELP_STRING([--with-system-liblangtag],
2552         [Use liblangtag library already on system.]),,
2553     [with_system_liblangtag="$with_system_libs"])
2555 AC_ARG_WITH(system-lockfile,
2556     AS_HELP_STRING([--with-system-lockfile[=file]],
2557         [Detect a system lockfile program or use the \$file argument.]))
2559 AC_ARG_WITH(webdav,
2560     AS_HELP_STRING([--without-webdav],
2561         [Disable WebDAV support in the UCB.]))
2563 AC_ARG_WITH(linker-hash-style,
2564     AS_HELP_STRING([--with-linker-hash-style],
2565         [Use linker with --hash-style=<style> when linking shared objects.
2566          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2567          if supported on the build system, and "sysv" otherwise.]))
2569 AC_ARG_WITH(jdk-home,
2570     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2571         [If you have installed JDK 17 or later on your system please supply the
2572          path here. Note that this is not the location of the java command but the
2573          location of the entire distribution. In case of cross-compiling, this
2574          is the JDK of the host os. Use --with-build-platform-configure-options
2575          to point to a different build platform JDK.]),
2578 AC_ARG_WITH(help,
2579     AS_HELP_STRING([--with-help],
2580         [Enable the build of help. There is a special parameter "common" that
2581          can be used to bundle only the common part, .e.g help-specific icons.
2582          This is useful when you build the helpcontent separately.])
2583     [
2584                           Usage:     --with-help    build the old local help
2585                                  --without-help     no local help (default)
2586                                  --with-help=html   build the new HTML local help
2587                                  --with-help=online build the new HTML online help
2588     ],
2591 AC_ARG_WITH(omindex,
2592    AS_HELP_STRING([--with-omindex],
2593         [Enable the support of xapian-omega index for online help.])
2594    [
2595                          Usage: --with-omindex=server prepare the pages for omindex
2596                                 but let xapian-omega be built in server.
2597                                 --with-omindex=noxap do not prepare online pages
2598                                 for xapian-omega
2599   ],
2602 libo_FUZZ_ARG_WITH(java,
2603     AS_HELP_STRING([--with-java=<java command>],
2604         [Specify the name of the Java interpreter command. Typically "java"
2605          which is the default.
2607          To build without support for Java components, applets, accessibility
2608          or the XML filters written in Java, use --without-java or --with-java=no.]),
2609     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2610     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2613 AC_ARG_WITH(jvm-path,
2614     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2615         [Use a specific JVM search path at runtime.
2616          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2619 AC_ARG_WITH(ant-home,
2620     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2621         [If you have installed Apache Ant on your system, please supply the path here.
2622          Note that this is not the location of the Ant binary but the location
2623          of the entire distribution.]),
2626 AC_ARG_WITH(symbol-config,
2627     AS_HELP_STRING([--with-symbol-config],
2628         [Configuration for the crashreport symbol upload]),
2629         [],
2630         [with_symbol_config=no])
2632 AC_ARG_WITH(export-validation,
2633     AS_HELP_STRING([--without-export-validation],
2634         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2635 ,with_export_validation=auto)
2637 AC_ARG_WITH(bffvalidator,
2638     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2639         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2640          Requires installed Microsoft Office Binary File Format Validator.
2641          Note: export-validation (--with-export-validation) is required to be turned on.
2642          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2643 ,with_bffvalidator=no)
2645 libo_FUZZ_ARG_WITH(junit,
2646     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2647         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2648          --without-junit disables those tests. Not relevant in the --without-java case.]),
2649 ,with_junit=yes)
2651 AC_ARG_WITH(hamcrest,
2652     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2653         [Specifies the hamcrest jar file to use for JUnit-based tests.
2654          --without-junit disables those tests. Not relevant in the --without-java case.]),
2655 ,with_hamcrest=yes)
2657 AC_ARG_WITH(perl-home,
2658     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2659         [If you have installed Perl 5 Distribution, on your system, please
2660          supply the path here. Note that this is not the location of the Perl
2661          binary but the location of the entire distribution.]),
2664 libo_FUZZ_ARG_WITH(doxygen,
2665     AS_HELP_STRING(
2666         [--with-doxygen=<absolute path to doxygen executable>],
2667         [Specifies the doxygen executable to use when generating ODK C/C++
2668          documentation. --without-doxygen disables generation of ODK C/C++
2669          documentation. Not relevant in the --disable-odk case.]),
2670 ,with_doxygen=yes)
2672 AC_ARG_WITH(visual-studio,
2673     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2674         [Specify which Visual Studio version to use in case several are
2675          installed. Currently 2019 (default) and 2022 are supported.]),
2678 AC_ARG_WITH(windows-sdk,
2679     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2680         [Specify which Windows SDK, or "Windows Kit", version to use
2681          in case the one that came with the selected Visual Studio
2682          is not what you want for some reason. Note that not all compiler/SDK
2683          combinations are supported. The intent is that this option should not
2684          be needed.]),
2687 AC_ARG_WITH(lang,
2688     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2689         [Use this option to build LibreOffice with additional UI language support.
2690          English (US) is always included by default.
2691          Separate multiple languages with space.
2692          For all languages, use --with-lang=ALL.]),
2695 AC_ARG_WITH(locales,
2696     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2697         [Use this option to limit the locale information built in.
2698          Separate multiple locales with space.
2699          Very experimental and might well break stuff.
2700          Just a desperate measure to shrink code and data size.
2701          By default all the locales available is included.
2702          Just works with --disable-dynloading. Defaults to "ALL".
2703          This option is completely unrelated to --with-lang.])
2704     [
2705                           Affects also our character encoding conversion
2706                           tables for encodings mainly targeted for a
2707                           particular locale, like EUC-CN and EUC-TW for
2708                           zh, ISO-2022-JP for ja.
2710                           Affects also our add-on break iterator data for
2711                           some languages.
2713                           For the default, all locales, don't use this switch at all.
2714                           Specifying just the language part of a locale means all matching
2715                           locales will be included.
2716     ],
2719 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2720 libo_FUZZ_ARG_WITH(krb5,
2721     AS_HELP_STRING([--with-krb5],
2722         [Enable MIT Kerberos 5 support in modules that support it.
2723          By default automatically enabled on platforms
2724          where a good system Kerberos 5 is available.]),
2727 libo_FUZZ_ARG_WITH(gssapi,
2728     AS_HELP_STRING([--with-gssapi],
2729         [Enable GSSAPI support in modules that support it.
2730          By default automatically enabled on platforms
2731          where a good system GSSAPI is available.]),
2734 libo_FUZZ_ARG_WITH(lxml,
2735     AS_HELP_STRING([--without-lxml],
2736         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2737          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2738          report widget classes and ids.]),
2741 libo_FUZZ_ARG_WITH(latest-c++,
2742     AS_HELP_STRING([--with-latest-c++],
2743         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2744          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2745         [with_latest_c__=no])
2747 AC_ARG_WITH(gtk3-build,
2748     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2749         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2750          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2752 dnl ===================================================================
2753 dnl Branding
2754 dnl ===================================================================
2756 AC_ARG_WITH(branding,
2757     AS_HELP_STRING([--with-branding=/path/to/images],
2758         [Use given path to retrieve branding images set.])
2759     [
2760                           Search for intro.png about.svg and logo.svg.
2761                           If any is missing, default ones will be used instead.
2763                           Search also progress.conf for progress
2764                           settings on intro screen :
2766                           PROGRESSBARCOLOR="255,255,255" Set color of
2767                           progress bar. Comma separated RGB decimal values.
2768                           PROGRESSSIZE="407,6" Set size of progress bar.
2769                           Comma separated decimal values (width, height).
2770                           PROGRESSPOSITION="61,317" Set position of progress
2771                           bar from left,top. Comma separated decimal values.
2772                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2773                           bar frame. Comma separated RGB decimal values.
2774                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2775                           bar text. Comma separated RGB decimal values.
2776                           PROGRESSTEXTBASELINE="287" Set vertical position of
2777                           progress bar text from top. Decimal value.
2779                           Default values will be used if not found.
2780     ],
2784 AC_ARG_WITH(extra-buildid,
2785     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2786         [Show addition build identification in about dialog.]),
2790 AC_ARG_WITH(vendor,
2791     AS_HELP_STRING([--with-vendor="John the Builder"],
2792         [Set vendor of the build.]),
2795 AC_ARG_WITH(privacy-policy-url,
2796     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2797         [The URL to your privacy policy (needed when
2798          enabling online-update or crashreporting via breakpad)]),
2799         [if test "x$with_privacy_policy_url" = "xyes"; then
2800             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2801          elif test "x$with_privacy_policy_url" = "xno"; then
2802             with_privacy_policy_url="undefined"
2803          fi]
2804 ,[with_privacy_policy_url="undefined"])
2806 AC_ARG_WITH(android-package-name,
2807     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2808         [Set Android package name of the build.]),
2811 AC_ARG_WITH(compat-oowrappers,
2812     AS_HELP_STRING([--with-compat-oowrappers],
2813         [Install oo* wrappers in parallel with
2814          lo* ones to keep backward compatibility.
2815          Has effect only with make distro-pack-install]),
2818 AC_ARG_WITH(os-version,
2819     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2820         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2823 AC_ARG_WITH(parallelism,
2824     AS_HELP_STRING([--with-parallelism],
2825         [Number of jobs to run simultaneously during build. Parallel builds can
2826         save a lot of time on multi-cpu machines. Defaults to the number of
2827         CPUs on the machine, unless you configure --enable-icecream - then to
2828         40.]),
2831 AC_ARG_WITH(all-tarballs,
2832     AS_HELP_STRING([--with-all-tarballs],
2833         [Download all external tarballs unconditionally]))
2835 AC_ARG_WITH(gdrive-client-id,
2836     AS_HELP_STRING([--with-gdrive-client-id],
2837         [Provides the client id of the application for OAuth2 authentication
2838         on Google Drive. If either this or --with-gdrive-client-secret is
2839         empty, the feature will be disabled]),
2842 AC_ARG_WITH(gdrive-client-secret,
2843     AS_HELP_STRING([--with-gdrive-client-secret],
2844         [Provides the client secret of the application for OAuth2
2845         authentication on Google Drive. If either this or
2846         --with-gdrive-client-id is empty, the feature will be disabled]),
2849 AC_ARG_WITH(alfresco-cloud-client-id,
2850     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2851         [Provides the client id of the application for OAuth2 authentication
2852         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2853         empty, the feature will be disabled]),
2856 AC_ARG_WITH(alfresco-cloud-client-secret,
2857     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2858         [Provides the client secret of the application for OAuth2
2859         authentication on Alfresco Cloud. If either this or
2860         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2863 AC_ARG_WITH(onedrive-client-id,
2864     AS_HELP_STRING([--with-onedrive-client-id],
2865         [Provides the client id of the application for OAuth2 authentication
2866         on OneDrive. If either this or --with-onedrive-client-secret is
2867         empty, the feature will be disabled]),
2870 AC_ARG_WITH(onedrive-client-secret,
2871     AS_HELP_STRING([--with-onedrive-client-secret],
2872         [Provides the client secret of the application for OAuth2
2873         authentication on OneDrive. If either this or
2874         --with-onedrive-client-id is empty, the feature will be disabled]),
2877 dnl Check for coredumpctl support to present information about crashing test processes:
2878 AC_ARG_WITH(coredumpctl,
2879     AS_HELP_STRING([--with-coredumpctl],
2880         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2881         processes.]))
2883 AC_ARG_WITH(buildconfig-recorded,
2884     AS_HELP_STRING([--with-buildconfig-recorded],
2885         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2888 AC_MSG_CHECKING([whether to record build config])
2889 if test -z "$with_buildconfig_recorded"; then
2890     with_buildconfig_recorded=no
2892 if test "$with_buildconfig_recorded" = no; then
2893     AC_MSG_RESULT([no])
2894 else
2895     AC_MSG_RESULT([yes])
2896     # replace backslashes, to get a valid c++ string
2897     config_args=$(echo $ac_configure_args | tr '\\' '/')
2898     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2899     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2902 dnl ===================================================================
2903 dnl Do we want to use pre-build binary tarball for recompile
2904 dnl ===================================================================
2906 if test "$enable_library_bin_tar" = "yes" ; then
2907     USE_LIBRARY_BIN_TAR=TRUE
2908 else
2909     USE_LIBRARY_BIN_TAR=
2911 AC_SUBST(USE_LIBRARY_BIN_TAR)
2913 dnl ===================================================================
2914 dnl Test whether build target is Release Build
2915 dnl ===================================================================
2916 AC_MSG_CHECKING([whether build target is Release Build])
2917 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2918     AC_MSG_RESULT([no])
2919     ENABLE_RELEASE_BUILD=
2920     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2921     dnl the newlines and then complains about spaces.
2922     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/>'
2923 else
2924     AC_MSG_RESULT([yes])
2925     ENABLE_RELEASE_BUILD=TRUE
2926     GET_TASK_ALLOW_ENTITLEMENT=
2928 AC_SUBST(ENABLE_RELEASE_BUILD)
2929 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2931 AC_MSG_CHECKING([whether to build a Community flavor])
2932 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2933     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2934     AC_MSG_RESULT([yes])
2935 else
2936     AC_MSG_RESULT([no])
2939 dnl ===================================================================
2940 dnl Test whether to sign Windows Build
2941 dnl ===================================================================
2942 AC_MSG_CHECKING([whether to sign windows build])
2943 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2944     AC_MSG_RESULT([yes])
2945     WINDOWS_BUILD_SIGNING="TRUE"
2946 else
2947     AC_MSG_RESULT([no])
2948     WINDOWS_BUILD_SIGNING="FALSE"
2950 AC_SUBST(WINDOWS_BUILD_SIGNING)
2952 dnl ===================================================================
2953 dnl MacOSX build and runtime environment options
2954 dnl ===================================================================
2956 AC_ARG_WITH(macosx-version-min-required,
2957     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2958         [set the minimum OS version needed to run the built LibreOffice])
2959     [
2960                           e. g.: --with-macosx-version-min-required=10.15
2961     ],
2964 dnl ===================================================================
2965 dnl Check for incompatible options set by fuzzing, and reset those
2966 dnl automatically to working combinations
2967 dnl ===================================================================
2969 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2970         "$enable_dbus" != "$enable_avahi"; then
2971     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2972     enable_avahi=$enable_dbus
2975 add_lopath_after ()
2977     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2978         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2979     fi
2982 add_lopath_before ()
2984     local IFS=${P_SEP}
2985     local path_cleanup
2986     local dir
2987     for dir in $LO_PATH ; do
2988         if test "$dir" != "$1" ; then
2989             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2990         fi
2991     done
2992     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2995 dnl ===================================================================
2996 dnl check for required programs (grep, awk, sed, bash)
2997 dnl ===================================================================
2999 pathmunge ()
3001     local new_path
3002     if test -n "$1"; then
3003         if test "$build_os" = "cygwin"; then
3004             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3005                 PathFormat "$1"
3006                 new_path=`cygpath -sm "$formatted_path"`
3007             else
3008                 PathFormat "$1"
3009                 new_path=`cygpath -u "$formatted_path"`
3010             fi
3011         else
3012             new_path="$1"
3013         fi
3014         if test "$2" = "after"; then
3015             add_lopath_after "$new_path"
3016         else
3017             add_lopath_before "$new_path"
3018         fi
3019     fi
3022 AC_PROG_AWK
3023 AC_PATH_PROG( AWK, $AWK)
3024 if test -z "$AWK"; then
3025     AC_MSG_ERROR([install awk to run this script])
3028 AC_PATH_PROG(BASH, bash)
3029 if test -z "$BASH"; then
3030     AC_MSG_ERROR([bash not found in \$PATH])
3032 AC_SUBST(BASH)
3034 # prefer parallel compression tools, if available
3035 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3036 if test -z "$COMPRESSIONTOOL"; then
3037     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3038     if test -z "$COMPRESSIONTOOL"; then
3039         AC_MSG_ERROR([gzip not found in \$PATH])
3040     fi
3042 AC_SUBST(COMPRESSIONTOOL)
3044 AC_MSG_CHECKING([for GNU or BSD tar])
3045 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3046     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3047     if test $? -eq 0;  then
3048         GNUTAR=$a
3049         break
3050     fi
3051 done
3052 AC_MSG_RESULT($GNUTAR)
3053 if test -z "$GNUTAR"; then
3054     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3056 AC_SUBST(GNUTAR)
3058 AC_MSG_CHECKING([for tar's option to strip components])
3059 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3060 if test $? -eq 0; then
3061     STRIP_COMPONENTS="--strip-components"
3062 else
3063     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3064     if test $? -eq 0; then
3065         STRIP_COMPONENTS="--strip-path"
3066     else
3067         STRIP_COMPONENTS="unsupported"
3068     fi
3070 AC_MSG_RESULT($STRIP_COMPONENTS)
3071 if test x$STRIP_COMPONENTS = xunsupported; then
3072     AC_MSG_ERROR([you need a tar that is able to strip components.])
3074 AC_SUBST(STRIP_COMPONENTS)
3076 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3077 dnl desktop OSes from "mobile" ones.
3079 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3080 dnl In other words, that when building for an OS that is not a
3081 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3083 dnl Note the direction of the implication; there is no assumption that
3084 dnl cross-compiling would imply a non-desktop OS.
3086 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3087     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3088     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3089     if test "$_os" != Emscripten; then
3090         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3091     fi
3094 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3095 # also work with the default gtk3 plugin.
3096 if test "$enable_wasm_strip" = "yes"; then
3097     enable_avmedia=no
3098     enable_libcmis=no
3099     enable_coinmp=no
3100     enable_cups=no
3101     test "$_os" = Emscripten && enable_curl=no
3102     enable_database_connectivity=no
3103     enable_dbus=no
3104     enable_dconf=no
3105     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3106     enable_extension_integration=no
3107     enable_extensions=no
3108     enable_extension_update=no
3109     enable_gio=no
3110     enable_gpgmepp=no
3111     enable_ldap=no
3112     enable_lotuswordpro=no
3113     enable_lpsolve=no
3114     enable_nss=no
3115     enable_odk=no
3116     enable_online_update=no
3117     enable_opencl=no
3118     enable_pdfimport=no
3119     enable_randr=no
3120     enable_report_builder=no
3121     enable_scripting=no
3122     enable_sdremote_bluetooth=no
3123     enable_skia=no
3124     enable_xmlhelp=no
3125     enable_zxing=no
3126     test_libepubgen=no
3127     test_libcdr=no
3128     test_libcmis=no
3129     test_libetonyek=no
3130     test_libfreehand=no
3131     test_libmspub=no
3132     test_libpagemaker=no
3133     test_libqxp=no
3134     test_libvisio=no
3135     test_libzmf=no
3136     test_webdav=no
3137     with_galleries=no
3138     with_templates=no
3139     with_webdav=no
3140     with_x=no
3142     test "${with_fonts+set}" = set || with_fonts=yes
3143     test "${with_locales+set}" = set || with_locales=en
3145     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3146     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3147     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3148     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3149 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3150     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3151     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3152     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3153     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3154 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3155     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3156     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3157     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3158     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3159     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3160     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3161     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3162     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3165 EMSCRIPTEN_NEH_MAJOR=3
3166 EMSCRIPTEN_NEH_MINOR=1
3167 EMSCRIPTEN_NEH_TINY=3
3168 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3170 if test "$enable_wasm_exceptions" = yes; then
3171     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3172     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3173     if test $? -ne 0; then
3174         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3175     else
3176         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3177     fi
3178     ENABLE_WASM_EXCEPTIONS=TRUE
3180 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3182 # Whether to build "avmedia" functionality or not.
3184 if test "$enable_avmedia" = yes; then
3185     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3186     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3187 else
3188     test_gstreamer_1_0=no
3191 # Decide whether to build database connectivity stuff (including Base) or not.
3192 if test "$enable_database_connectivity" != no; then
3193     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3194     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3195 else
3196     if test "$_os" = iOS; then
3197         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3198     fi
3199     disable_database_connectivity_dependencies
3202 if test -z "$enable_extensions"; then
3203     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3204     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3205         enable_extensions=yes
3206     fi
3209 DISABLE_SCRIPTING=''
3210 if test "$enable_scripting" = yes; then
3211     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3212     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3213 else
3214     DISABLE_SCRIPTING='TRUE'
3215     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3218 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3219     # Disable dynamic_loading always for iOS and Android
3220     enable_dynamic_loading=no
3221 elif test -z "$enable_dynamic_loading"; then
3222     # Otherwise enable it unless specifically disabled
3223     enable_dynamic_loading=yes
3226 DISABLE_DYNLOADING=''
3227 if test "$enable_dynamic_loading" = yes; then
3228     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3229 else
3230     DISABLE_DYNLOADING='TRUE'
3231     if test $_os != iOS -a $_os != Android; then
3232         enable_database_connectivity=no
3233         enable_nss=no
3234         enable_odk=no
3235         enable_python=no
3236         enable_skia=no
3237         with_java=no
3238     fi
3240 AC_SUBST(DISABLE_DYNLOADING)
3242 ENABLE_CUSTOMTARGET_COMPONENTS=
3243 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3244     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3245     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3246         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3247     fi
3249 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3251 if test "$enable_extensions" = yes; then
3252     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3253     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3254 else
3255     enable_extension_integration=no
3256     enable_extension_update=no
3259 # remember SYSBASE value
3260 AC_SUBST(SYSBASE)
3262 dnl ===================================================================
3263 dnl  Sort out various gallery compilation options
3264 dnl ===================================================================
3265 WITH_GALLERY_BUILD=TRUE
3266 AC_MSG_CHECKING([how to build and package galleries])
3267 if test -n "${with_galleries}"; then
3268     if test "$with_galleries" = "build"; then
3269         if test "$enable_database_connectivity" = no; then
3270             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3271         fi
3272         AC_MSG_RESULT([build from source images internally])
3273     elif test "$with_galleries" = "no"; then
3274         WITH_GALLERY_BUILD=
3275         AC_MSG_RESULT([disable non-internal gallery build])
3276     else
3277         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3278     fi
3279 else
3280     if test $_os != iOS -a $_os != Android; then
3281         AC_MSG_RESULT([internal src images for desktop])
3282     else
3283         WITH_GALLERY_BUILD=
3284         AC_MSG_RESULT([disable src image build])
3285     fi
3287 AC_SUBST(WITH_GALLERY_BUILD)
3289 dnl ===================================================================
3290 dnl  Sort out various templates compilation options
3291 dnl ===================================================================
3292 WITH_TEMPLATES=TRUE
3293 AC_MSG_CHECKING([build with or without template files])
3294 if test -n "${with_templates}"; then
3295     if test "$with_templates" = "yes"; then
3296         AC_MSG_RESULT([enable all templates])
3297     elif test "$with_templates" = "no"; then
3298         WITH_TEMPLATES=
3299         AC_MSG_RESULT([disable non-internal templates])
3300     else
3301         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3302     fi
3303 else
3304     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3305         AC_MSG_RESULT([enable all templates])
3306     else
3307         WITH_TEMPLATES=
3308         AC_MSG_RESULT([disable non-internal templates])
3309     fi
3311 AC_SUBST(WITH_TEMPLATES)
3313 dnl ===================================================================
3314 dnl  Checks if ccache is available
3315 dnl ===================================================================
3316 CCACHE_DEPEND_MODE=
3317 if test "$enable_ccache" = "no"; then
3318     CCACHE=""
3319 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3320     case "%$CC%$CXX%" in
3321     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3322     # assume that's good then
3323     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3324         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3325         CCACHE_DEPEND_MODE=1
3326         ;;
3327     *)
3328         # try to use our own ccache if it is available and CCACHE was not already defined
3329         if test -z "$CCACHE"; then
3330             if test "$_os" = "WINNT"; then
3331                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3332             fi
3333             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3334                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3335             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3336                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3337             fi
3338         fi
3339         AC_PATH_PROG([CCACHE],[ccache],[not found])
3340         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3341             CCACHE=`win_short_path_for_make "$CCACHE"`
3342             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3343             rm -f conftest.txt
3344             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3345             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3346             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3347                 AC_MSG_RESULT(yes)
3348             else
3349                 AC_MSG_RESULT(no)
3350                 CCACHE="not found"
3351             fi
3352             rm -f conftest.txt
3353         fi
3354         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3355             # on windows/VC perhaps sccache is around?
3356             case "%$CC%$CXX%" in
3357             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3358             # assume that's good then
3359             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3360                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3361                 CCACHE_DEPEND_MODE=1
3362                 SCCACHE=1
3363                 ;;
3364             *)
3365                 # for sharing code below, reuse CCACHE env var
3366                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3367                 if test "$CCACHE" != "not found"; then
3368                     CCACHE=`win_short_path_for_make "$CCACHE"`
3369                     SCCACHE=1
3370                     CCACHE_DEPEND_MODE=1
3371                 fi
3372                 ;;
3373             esac
3374         fi
3375         if test "$CCACHE" = "not found"; then
3376             CCACHE=""
3377         fi
3378         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3379             CCACHE_DEPEND_MODE=1
3380             # Need to check for ccache version: otherwise prevents
3381             # caching of the results (like "-x objective-c++" for Mac)
3382             if test $_os = Darwin -o $_os = iOS; then
3383                 # Check ccache version
3384                 AC_MSG_CHECKING([whether version of ccache is suitable])
3385                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3386                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3387                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3388                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3389                 else
3390                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3391                     CCACHE=""
3392                     CCACHE_DEPEND_MODE=
3393                 fi
3394             fi
3395         fi
3396         ;;
3397     esac
3398 else
3399     CCACHE=""
3401 if test "$enable_ccache" = "nodepend"; then
3402     CCACHE_DEPEND_MODE=""
3404 AC_SUBST(CCACHE_DEPEND_MODE)
3406 # sccache defaults are good enough
3407 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3408     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3409     # or (...) max_size = 20.0 G
3410     # -p works with both 4.2 and 4.4
3411     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3412     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3413     if test "$ccache_size" = ""; then
3414         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3415         if test "$ccache_size" = ""; then
3416             ccache_size=0
3417         fi
3418         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3419         if test $ccache_size -lt 1024; then
3420             CCACHE=""
3421             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3422             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3423         else
3424             # warn that ccache may be too small for debug build
3425             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3426             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3427         fi
3428     else
3429         if test $ccache_size -lt 5; then
3430             #warn that ccache may be too small for debug build
3431             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3432             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3433         fi
3434     fi
3437 ENABLE_Z7_DEBUG=
3438 if test "$enable_z7_debug" != no; then
3439     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3440         ENABLE_Z7_DEBUG=TRUE
3441     fi
3442 else
3443     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3444     add_warning "ccache will not work with --disable-z7-debug"
3446 AC_SUBST(ENABLE_Z7_DEBUG)
3448 dnl ===================================================================
3449 dnl  Checks for C compiler,
3450 dnl  The check for the C++ compiler is later on.
3451 dnl ===================================================================
3452 if test "$_os" != "WINNT"; then
3453     GCC_HOME_SET="true"
3454     AC_MSG_CHECKING([gcc home])
3455     if test -z "$with_gcc_home"; then
3456         if test "$enable_icecream" = "yes"; then
3457             if test -d "/usr/lib/icecc/bin"; then
3458                 GCC_HOME="/usr/lib/icecc/"
3459             elif test -d "/usr/libexec/icecc/bin"; then
3460                 GCC_HOME="/usr/libexec/icecc/"
3461             elif test -d "/opt/icecream/bin"; then
3462                 GCC_HOME="/opt/icecream/"
3463             else
3464                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3466             fi
3467         else
3468             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3469             GCC_HOME_SET="false"
3470         fi
3471     else
3472         GCC_HOME="$with_gcc_home"
3473     fi
3474     AC_MSG_RESULT($GCC_HOME)
3475     AC_SUBST(GCC_HOME)
3477     if test "$GCC_HOME_SET" = "true"; then
3478         if test -z "$CC"; then
3479             CC="$GCC_HOME/bin/gcc"
3480             CC_BASE="gcc"
3481         fi
3482         if test -z "$CXX"; then
3483             CXX="$GCC_HOME/bin/g++"
3484             CXX_BASE="g++"
3485         fi
3486     fi
3489 COMPATH=`dirname "$CC"`
3490 if test "$COMPATH" = "."; then
3491     AC_PATH_PROGS(COMPATH, $CC)
3492     dnl double square bracket to get single because of M4 quote...
3493     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3495 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3497 dnl ===================================================================
3498 dnl Java support
3499 dnl ===================================================================
3500 AC_MSG_CHECKING([whether to build with Java support])
3501 if test "$with_java" != "no"; then
3502     if test "$DISABLE_SCRIPTING" = TRUE; then
3503         AC_MSG_RESULT([no, overridden by --disable-scripting])
3504         ENABLE_JAVA=""
3505         with_java=no
3506     else
3507         AC_MSG_RESULT([yes])
3508         ENABLE_JAVA="TRUE"
3509         AC_DEFINE(HAVE_FEATURE_JAVA)
3510     fi
3511 else
3512     AC_MSG_RESULT([no])
3513     ENABLE_JAVA=""
3516 AC_SUBST(ENABLE_JAVA)
3518 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3520 dnl ENABLE_JAVA="" indicate no Java support at all
3522 dnl ===================================================================
3523 dnl Check macOS SDK and compiler
3524 dnl ===================================================================
3526 if test $_os = Darwin; then
3528     # The SDK in the currently selected Xcode should be found.
3530     AC_MSG_CHECKING([what macOS SDK to use])
3531     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3532     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3533     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3534     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3535     # problems that existed in the PPC days with target versions not being respected or random
3536     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3537     # SDK version is enough, no need to do both...
3538     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3539     if test ! -d "$MACOSX_SDK_PATH"; then
3540         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3541     fi
3542     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3543     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3544     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3545     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3546     # 10.10.2 is 101002
3547     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3548     # correct version in case such an old SDK is specified, it will be rejected later anyway
3549     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3550     if test $MACOSX_SDK_VERSION -lt 101500; then
3551         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3552     fi
3553     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3554         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3555     fi
3556     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3558     AC_MSG_CHECKING([what minimum version of macOS to require])
3559     if test "$with_macosx_version_min_required" = "" ; then
3560         if test "$host_cpu" = x86_64; then
3561             with_macosx_version_min_required="10.15";
3562         else
3563             with_macosx_version_min_required="11.0";
3564         fi
3565     fi
3566     # see same notes about MACOSX_SDK_VERSION above
3567     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3568     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3569         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3570     fi
3571     AC_MSG_RESULT([$with_macosx_version_min_required])
3573     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3574     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3575         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3576     else
3577         AC_MSG_RESULT([yes])
3578     fi
3580     # export this so that "xcrun" invocations later return matching values
3581     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3582     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3583     export DEVELOPER_DIR
3584     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3585     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3587     AC_MSG_CHECKING([whether Xcode is new enough])
3588     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3589     my_xcode_ver2=${my_xcode_ver1#Xcode }
3590     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3591     if test "$my_xcode_ver3" -ge 1205; then
3592         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3593         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3594             if test "$my_xcode_ver3" -ge 1600; then
3595                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3596                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3597                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3598             fi
3599             if test "$my_xcode_ver3" -ge 1500; then
3600                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3601                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3602                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3603                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3604                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3605                 x_LDFLAGS=
3606             fi
3607         fi
3608     else
3609         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3610     fi
3612     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3613     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3615     LIBTOOL=/usr/bin/libtool
3616     INSTALL_NAME_TOOL=install_name_tool
3617     if test -z "$save_CC"; then
3618         stdlib=-stdlib=libc++
3620         AC_MSG_CHECKING([what C compiler to use])
3621         CC="`xcrun -find clang`"
3622         CC_BASE=`first_arg_basename "$CC"`
3623         if test "$host_cpu" = x86_64; then
3624             CC+=" -target x86_64-apple-macos"
3625         else
3626             CC+=" -target arm64-apple-macos"
3627         fi
3628         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3629         AC_MSG_RESULT([$CC])
3631         AC_MSG_CHECKING([what C++ compiler to use])
3632         CXX="`xcrun -find clang++`"
3633         CXX_BASE=`first_arg_basename "$CXX"`
3634         if test "$host_cpu" = x86_64; then
3635             CXX+=" -target x86_64-apple-macos"
3636         else
3637             CXX+=" -target arm64-apple-macos"
3638         fi
3639         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3640         AC_MSG_RESULT([$CXX])
3642         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3643         AR=`xcrun -find ar`
3644         NM=`xcrun -find nm`
3645         STRIP=`xcrun -find strip`
3646         LIBTOOL=`xcrun -find libtool`
3647         RANLIB=`xcrun -find ranlib`
3648     fi
3650     AC_MSG_CHECKING([whether to do code signing])
3652     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3653         AC_MSG_RESULT([no])
3654     else
3655         if test "$enable_macosx_code_signing" = yes; then
3656             # By default use the first suitable certificate (?).
3658             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3659             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3660             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3661             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3662             # "Developer ID Application" one.
3663             identity="Developer ID Application:"
3664         else
3665             identity=$enable_macosx_code_signing
3666         fi
3667         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3668         if test -n "$identity"; then
3669             MACOSX_CODESIGNING_IDENTITY=$identity
3670             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3671             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3672         else
3673             AC_MSG_ERROR([cannot determine identity to use])
3674         fi
3675     fi
3677     AC_MSG_CHECKING([whether to create a Mac App Store package])
3679     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3680         AC_MSG_RESULT([no])
3681     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3682         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3683     else
3684         if test "$enable_macosx_package_signing" = yes; then
3685             # By default use the first suitable certificate.
3686             # It should be a "3rd Party Mac Developer Installer" one
3687             identity="3rd Party Mac Developer Installer:"
3688         else
3689             identity=$enable_macosx_package_signing
3690         fi
3691         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3692         if test -n "$identity"; then
3693             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3694             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3695             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3696         else
3697             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3698         fi
3699     fi
3701     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3702         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3703     fi
3705     AC_MSG_CHECKING([whether to sandbox the application])
3707     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3708         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3709     elif test "$enable_macosx_sandbox" = yes; then
3710         ENABLE_MACOSX_SANDBOX=TRUE
3711         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3712         AC_MSG_RESULT([yes])
3713     else
3714         AC_MSG_RESULT([no])
3715     fi
3717     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3718     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3719     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3721     if test -n "$with_macosx_provisioning_profile" ; then
3722         if test ! -f "$with_macosx_provisioning_profile"; then
3723             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3724         else
3725             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3726             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3727                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3728                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3729                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3730         fi
3731     fi
3733 AC_SUBST(MACOSX_SDK_PATH)
3734 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3735 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3736 AC_SUBST(INSTALL_NAME_TOOL)
3737 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3738 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3739 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3740 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3741 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3742 AC_SUBST(MACOSX_PROVISIONING_INFO)
3743 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3744 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3745 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3747 dnl ===================================================================
3748 dnl Check iOS SDK and compiler
3749 dnl ===================================================================
3751 if test $_os = iOS; then
3752     AC_MSG_CHECKING([what iOS SDK to use])
3754     if test "$enable_ios_simulator" = "yes"; then
3755         platformlc=iphonesimulator
3756         versionmin=-mios-simulator-version-min=14.5
3757     else
3758         platformlc=iphoneos
3759         versionmin=-miphoneos-version-min=14.5
3760     fi
3762     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3764     if ! test -d "$sysroot"; then
3765         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3766     fi
3768     AC_MSG_RESULT($sysroot)
3770     stdlib="-stdlib=libc++"
3772     AC_MSG_CHECKING([what C compiler to use])
3773     CC="`xcrun -find clang`"
3774     CC_BASE=`first_arg_basename "$CC"`
3775     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3776     AC_MSG_RESULT([$CC])
3778     AC_MSG_CHECKING([what C++ compiler to use])
3779     CXX="`xcrun -find clang++`"
3780     CXX_BASE=`first_arg_basename "$CXX"`
3781     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3782     AC_MSG_RESULT([$CXX])
3784     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3785     AR=`xcrun -find ar`
3786     NM=`xcrun -find nm`
3787     STRIP=`xcrun -find strip`
3788     LIBTOOL=`xcrun -find libtool`
3789     RANLIB=`xcrun -find ranlib`
3792 AC_MSG_CHECKING([whether to treat the installation as read-only])
3794 if test $_os = Darwin; then
3795     enable_readonly_installset=yes
3796 elif test "$enable_extensions" != yes; then
3797     enable_readonly_installset=yes
3799 if test "$enable_readonly_installset" = yes; then
3800     AC_MSG_RESULT([yes])
3801     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3802 else
3803     AC_MSG_RESULT([no])
3806 dnl ===================================================================
3807 dnl Structure of install set
3808 dnl ===================================================================
3810 if test $_os = Darwin; then
3811     LIBO_BIN_FOLDER=MacOS
3812     LIBO_ETC_FOLDER=Resources
3813     LIBO_LIBEXEC_FOLDER=MacOS
3814     LIBO_LIB_FOLDER=Frameworks
3815     LIBO_LIB_PYUNO_FOLDER=Resources
3816     LIBO_SHARE_FOLDER=Resources
3817     LIBO_SHARE_HELP_FOLDER=Resources/help
3818     LIBO_SHARE_JAVA_FOLDER=Resources/java
3819     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3820     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3821     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3822     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3823     LIBO_URE_BIN_FOLDER=MacOS
3824     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3825     LIBO_URE_LIB_FOLDER=Frameworks
3826     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3827     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3828 elif test $_os = WINNT; then
3829     LIBO_BIN_FOLDER=program
3830     LIBO_ETC_FOLDER=program
3831     LIBO_LIBEXEC_FOLDER=program
3832     LIBO_LIB_FOLDER=program
3833     LIBO_LIB_PYUNO_FOLDER=program
3834     LIBO_SHARE_FOLDER=share
3835     LIBO_SHARE_HELP_FOLDER=help
3836     LIBO_SHARE_JAVA_FOLDER=program/classes
3837     LIBO_SHARE_PRESETS_FOLDER=presets
3838     LIBO_SHARE_READMES_FOLDER=readmes
3839     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3840     LIBO_SHARE_SHELL_FOLDER=program/shell
3841     LIBO_URE_BIN_FOLDER=program
3842     LIBO_URE_ETC_FOLDER=program
3843     LIBO_URE_LIB_FOLDER=program
3844     LIBO_URE_MISC_FOLDER=program
3845     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3846 else
3847     LIBO_BIN_FOLDER=program
3848     LIBO_ETC_FOLDER=program
3849     LIBO_LIBEXEC_FOLDER=program
3850     LIBO_LIB_FOLDER=program
3851     LIBO_LIB_PYUNO_FOLDER=program
3852     LIBO_SHARE_FOLDER=share
3853     LIBO_SHARE_HELP_FOLDER=help
3854     LIBO_SHARE_JAVA_FOLDER=program/classes
3855     LIBO_SHARE_PRESETS_FOLDER=presets
3856     LIBO_SHARE_READMES_FOLDER=readmes
3857     if test "$enable_fuzzers" != yes; then
3858         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3859     else
3860         LIBO_SHARE_RESOURCE_FOLDER=resource
3861     fi
3862     LIBO_SHARE_SHELL_FOLDER=program/shell
3863     LIBO_URE_BIN_FOLDER=program
3864     LIBO_URE_ETC_FOLDER=program
3865     LIBO_URE_LIB_FOLDER=program
3866     LIBO_URE_MISC_FOLDER=program
3867     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3869 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3870 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3871 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3872 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3873 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3874 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3875 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3876 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3877 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3878 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3879 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3880 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3886 # Not all of them needed in config_host.mk, add more if need arises
3887 AC_SUBST(LIBO_BIN_FOLDER)
3888 AC_SUBST(LIBO_ETC_FOLDER)
3889 AC_SUBST(LIBO_LIB_FOLDER)
3890 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3891 AC_SUBST(LIBO_SHARE_FOLDER)
3892 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3893 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3894 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3895 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3896 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3897 AC_SUBST(LIBO_URE_BIN_FOLDER)
3898 AC_SUBST(LIBO_URE_ETC_FOLDER)
3899 AC_SUBST(LIBO_URE_LIB_FOLDER)
3900 AC_SUBST(LIBO_URE_MISC_FOLDER)
3901 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3903 dnl ===================================================================
3904 dnl Windows specific tests and stuff
3905 dnl ===================================================================
3907 reg_get_value()
3909     # Return value: $regvalue
3910     unset regvalue
3912     if test "$build_os" = "wsl"; then
3913         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3914         return
3915     fi
3917     local _regentry="/proc/registry${1}/${2}"
3918     if test -f "$_regentry"; then
3919         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3920         # Registry keys read via /proc/registry* are always \0 terminated!
3921         local _regvalue=$(tr -d '\0' < "$_regentry")
3922         if test $? -eq 0; then
3923             regvalue=$_regvalue
3924         fi
3925     fi
3928 # Get a value from the 32-bit side of the Registry
3929 reg_get_value_32()
3931     reg_get_value "32" "$1"
3934 # Get a value from the 64-bit side of the Registry
3935 reg_get_value_64()
3937     reg_get_value "64" "$1"
3940 reg_list_values()
3942     # Return value: $reglist
3943     unset reglist
3945     if test "$build_os" = "wsl"; then
3946         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3947         return
3948     fi
3950     reglist=$(ls "/proc/registry${1}/${2}")
3953 # List values from the 32-bit side of the Registry
3954 reg_list_values_32()
3956     reg_list_values "32" "$1"
3959 # List values from the 64-bit side of the Registry
3960 reg_list_values_64()
3962     reg_list_values "64" "$1"
3965 case "$host_os" in
3966 cygwin*|wsl*)
3967     COM=MSC
3968     OS=WNT
3969     RTL_OS=Windows
3970     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3971         P_SEP=";"
3972     else
3973         P_SEP=:
3974     fi
3975     case "$host_cpu" in
3976     x86_64)
3977         CPUNAME=X86_64
3978         RTL_ARCH=X86_64
3979         PLATFORMID=windows_x86_64
3980         WINDOWS_X64=1
3981         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3982         WIN_HOST_ARCH="x64"
3983         WIN_MULTI_ARCH="x86"
3984         WIN_HOST_BITS=64
3985         ;;
3986     i*86)
3987         CPUNAME=INTEL
3988         RTL_ARCH=x86
3989         PLATFORMID=windows_x86
3990         WIN_HOST_ARCH="x86"
3991         WIN_HOST_BITS=32
3992         WIN_OTHER_ARCH="x64"
3993         ;;
3994     aarch64)
3995         CPUNAME=AARCH64
3996         RTL_ARCH=AARCH64
3997         PLATFORMID=windows_aarch64
3998         WINDOWS_X64=1
3999         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4000         WIN_HOST_ARCH="arm64"
4001         WIN_HOST_BITS=64
4002         with_ucrt_dir=no
4003         ;;
4004     *)
4005         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4006         ;;
4007     esac
4009     case "$build_cpu" in
4010     x86_64) WIN_BUILD_ARCH="x64" ;;
4011     i*86) WIN_BUILD_ARCH="x86" ;;
4012     aarch64) WIN_BUILD_ARCH="arm64" ;;
4013     *)
4014         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4015         ;;
4016     esac
4018     SCPDEFS="$SCPDEFS -D_MSC_VER"
4019     ;;
4020 esac
4022 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4023 # other-arch won't, but wouldn't break the build (x64 on x86).
4024 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4025     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4029 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4030     # To allow building Windows multi-arch releases without cross-tooling
4031     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4032         cross_compiling="yes"
4033     fi
4036 if test "$cross_compiling" = "yes"; then
4037     export CROSS_COMPILING=TRUE
4038     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4039         ENABLE_WASM_STRIP=TRUE
4040     fi
4041     if test "$_os" = "Emscripten"; then
4042         if test "$with_main_module" = "calc"; then
4043             ENABLE_WASM_STRIP_WRITER=TRUE
4044         elif test "$with_main_module" = "writer"; then
4045             ENABLE_WASM_STRIP_CALC=TRUE
4046         fi
4047     fi
4048 else
4049     CROSS_COMPILING=
4050     BUILD_TYPE="$BUILD_TYPE NATIVE"
4052 AC_SUBST(CROSS_COMPILING)
4053 AC_SUBST(ENABLE_WASM_STRIP)
4054 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4055 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4057 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4058 # NOTE: must _not_ be used for bundled external libraries!
4059 ISYSTEM=
4060 if test "$GCC" = "yes"; then
4061     AC_MSG_CHECKING( for -isystem )
4062     save_CFLAGS=$CFLAGS
4063     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4064     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4065     CFLAGS=$save_CFLAGS
4066     if test -n "$ISYSTEM"; then
4067         AC_MSG_RESULT(yes)
4068     else
4069         AC_MSG_RESULT(no)
4070     fi
4072 if test -z "$ISYSTEM"; then
4073     # fall back to using -I
4074     ISYSTEM=-I
4076 AC_SUBST(ISYSTEM)
4078 dnl ===================================================================
4079 dnl  Check which Visual Studio compiler is used
4080 dnl ===================================================================
4082 map_vs_year_to_version()
4084     # Return value: $vsversion
4086     unset vsversion
4088     case $1 in
4089     2019)
4090         vsversion=16;;
4091     2022)
4092         vsversion=17;;
4093     2022preview)
4094         vsversion=17.9;;
4095     *)
4096         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4097     esac
4100 vs_versions_to_check()
4102     # Args: $1 (optional) : versions to check, in the order of preference
4103     # Return value: $vsversions
4105     unset vsversions
4107     if test -n "$1"; then
4108         map_vs_year_to_version "$1"
4109         vsversions=$vsversion
4110     else
4111         # Default version is 2019
4112         vsversions="16"
4113     fi
4116 win_get_env_from_vsdevcmdbat()
4118     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4119     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4120     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4121     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4122     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4123     local result
4124     if test "$build_os" = "wsl"; then
4125         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4126     else
4127         chmod +x $WRAPPERBATCHFILEPATH
4128         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4129     fi
4130     rm -f $WRAPPERBATCHFILEPATH
4131     printf '%s' "$result"
4134 find_ucrt()
4136     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4137     if test -n "$regvalue"; then
4138         PathFormat "$regvalue"
4139         UCRTSDKDIR=$formatted_path_unix
4140         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4141         UCRTVERSION=$regvalue
4142         # Rest if not exist
4143         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4144           UCRTSDKDIR=
4145         fi
4146     fi
4147     if test -z "$UCRTSDKDIR"; then
4148         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4149         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4150         if test -f "$ide_env_file"; then
4151             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4152             UCRTSDKDIR=$formatted_path
4153             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4154             dnl Hack needed at least by tml:
4155             if test "$UCRTVERSION" = 10.0.15063.0 \
4156                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4157                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4158             then
4159                 UCRTVERSION=10.0.14393.0
4160             fi
4161         else
4162           AC_MSG_ERROR([No UCRT found])
4163         fi
4164     fi
4167 find_msvc()
4169     # Find Visual C++
4170     # Args: $1 (optional) : The VS version year
4171     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4173     unset vctest vctoolset vcnumwithdot vcbuildnumber
4175     vs_versions_to_check "$1"
4176     if test "$build_os" = wsl; then
4177         vswhere="$PROGRAMFILESX86"
4178         if test -z "$vswhere"; then
4179             vswhere="c:\\Program Files (x86)"
4180         fi
4181     else
4182         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4183     fi
4184     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4185     PathFormat "$vswhere"
4186     vswhere=$formatted_path_unix
4187     for ver in $vsversions; do
4188         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4189         if test -z "$vswhereoutput"; then
4190             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4191         fi
4192         # Fall back to all MS products (this includes VC++ Build Tools)
4193         if ! test -n "$vswhereoutput"; then
4194             AC_MSG_CHECKING([VC++ Build Tools and similar])
4195             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4196         fi
4197         if test -n "$vswhereoutput"; then
4198             PathFormat "$vswhereoutput"
4199             vctest=$formatted_path_unix
4200             break
4201         fi
4202     done
4204     if test -n "$vctest"; then
4205         vcnumwithdot="$ver"
4206         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4207             vcnumwithdot=$vcnumwithdot.0
4208         fi
4209         case "$vcnumwithdot" in
4210         16.0)
4211             vcyear=2019
4212             vctoolset=v142
4213             ;;
4214         17.0 | 17.9)
4215             vcyear=2022
4216             vctoolset=v143
4217             ;;
4218         esac
4219         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4221     fi
4224 test_cl_exe()
4226     AC_MSG_CHECKING([$1 compiler])
4228     CL_EXE_PATH="$2/cl.exe"
4230     if test ! -f "$CL_EXE_PATH"; then
4231         if test "$1" = "multi-arch"; then
4232             AC_MSG_WARN([no compiler (cl.exe) in $2])
4233             return 1
4234         else
4235             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4236         fi
4237     fi
4239     dnl ===========================================================
4240     dnl  Check for the corresponding mspdb*.dll
4241     dnl ===========================================================
4243     # MSVC 15.0 has libraries from 14.0?
4244     mspdbnum="140"
4246     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4247         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4248     fi
4250     # The compiles has to find its shared libraries
4251     OLD_PATH="$PATH"
4252     TEMP_PATH=`cygpath -d "$2"`
4253     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4255     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4256         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4257     fi
4259     PATH="$OLD_PATH"
4261     AC_MSG_RESULT([$CL_EXE_PATH])
4264 SOLARINC=
4265 MSBUILD_PATH=
4266 DEVENV=
4267 if test "$_os" = "WINNT"; then
4268     AC_MSG_CHECKING([Visual C++])
4269     find_msvc "$with_visual_studio"
4270     if test -z "$vctest"; then
4271         if test -n "$with_visual_studio"; then
4272             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4273         else
4274             AC_MSG_ERROR([no Visual Studio installation found])
4275         fi
4276     fi
4277     AC_MSG_RESULT([])
4279     VC_PRODUCT_DIR="$vctest/VC"
4280     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4282     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4283     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4284         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4285         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4286         if test $? -ne 0; then
4287             WIN_MULTI_ARCH=""
4288             WIN_OTHER_ARCH=""
4289         fi
4290     fi
4292     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4293         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4294         test_cl_exe "build" "$MSVC_BUILD_PATH"
4295     fi
4297     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4298         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4299         test_cl_exe "host" "$MSVC_HOST_PATH"
4300     else
4301         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4302     fi
4304     AC_MSG_CHECKING([for short pathname of VC product directory])
4305     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4306     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4308     UCRTSDKDIR=
4309     UCRTVERSION=
4311     AC_MSG_CHECKING([for UCRT location])
4312     find_ucrt
4313     # find_ucrt errors out if it doesn't find it
4314     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4315     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4316     ucrtincpath_formatted=$formatted_path
4317     # SOLARINC is used for external modules and must be set too.
4318     # And no, it's not sufficient to set SOLARINC only, as configure
4319     # itself doesn't honour it.
4320     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4321     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4322     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4323     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4325     AC_SUBST(UCRTSDKDIR)
4326     AC_SUBST(UCRTVERSION)
4328     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4329     # Find the proper version of MSBuild.exe to use based on the VS version
4330     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4331     if test -z "$regvalue" ; then
4332         if test "$WIN_BUILD_ARCH" != "x64"; then
4333             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4334         else
4335             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4336         fi
4337     fi
4338     if test -d "$regvalue" ; then
4339         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4340         AC_MSG_RESULT([$regvalue])
4341     else
4342         AC_MSG_ERROR([MSBuild.exe location not found])
4343     fi
4345     # Find the version of devenv.exe
4346     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4347     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4348     DEVENV_unix=$(cygpath -u "$DEVENV")
4349     if test ! -e "$DEVENV_unix"; then
4350         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4351     fi
4353     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4354     dnl needed when building CLR code:
4355     if test -z "$MSVC_CXX"; then
4356         # This gives us a posix path with 8.3 filename restrictions
4357         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4358     fi
4360     if test -z "$CC"; then
4361         CC=$MSVC_CXX
4362         CC_BASE=`first_arg_basename "$CC"`
4363     fi
4364     if test -z "$CXX"; then
4365         CXX=$MSVC_CXX
4366         CXX_BASE=`first_arg_basename "$CXX"`
4367     fi
4369     if test -n "$CC"; then
4370         # Remove /cl.exe from CC case insensitive
4371         AC_MSG_NOTICE([found Visual C++ $vcyear])
4373         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4374         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4376         PathFormat "$COMPATH"
4377         COMPATH=`win_short_path_for_make "$formatted_path"`
4379         VCVER=$vcnumwithdot
4380         VCTOOLSET=$vctoolset
4382         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4383         # are always "better", we list them in reverse chronological order.
4385         case "$vcnumwithdot" in
4386         16.0 | 17.0 | 17.9)
4387             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4388             ;;
4389         esac
4391         # The expectation is that --with-windows-sdk should not need to be used
4392         if test -n "$with_windows_sdk"; then
4393             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4394             *" "$with_windows_sdk" "*)
4395                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4396                 ;;
4397             *)
4398                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4399                 ;;
4400             esac
4401         fi
4403         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4404         ac_objext=obj
4405         ac_exeext=exe
4407     else
4408         AC_MSG_ERROR([Visual C++ not found after all, huh])
4409     fi
4411     # ERROR if VS version < 16.5
4412     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4413     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4414         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4415         // between Visual Studio versions and _MSC_VER:
4416         #if _MSC_VER < 1925
4417         #error
4418         #endif
4419     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4421     # WARN if VS version < 16.10
4422     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4423     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4424         #if _MSC_VER < 1929
4425         #error
4426         #endif
4427     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4429     if test $vs2019_recommended_version = yes; then
4430         AC_MSG_RESULT([yes])
4431     else
4432         AC_MSG_WARN([no])
4433         add_warning "You should have at least Visual Studio 2019 version 16.10 to avoid build problems. Otherwise, you may face problems with the build of some modules including dragonbox."
4434     fi
4436     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4437     # version of the Explorer extension (and maybe other small
4438     # bits, too) needed when installing a 32-bit LibreOffice on a
4439     # 64-bit OS. The 64-bit Explorer extension is a feature that
4440     # has been present since long in OOo. Don't confuse it with
4441     # building LibreOffice itself as 64-bit code.
4443     BUILD_X64=
4444     CXX_X64_BINARY=
4446     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4447         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4448         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4449              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4450         then
4451             BUILD_X64=TRUE
4452             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4453             AC_MSG_RESULT([found])
4454         else
4455             AC_MSG_RESULT([not found])
4456             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4457         fi
4458     elif test "$WIN_HOST_ARCH" = "x64"; then
4459         CXX_X64_BINARY=$CXX
4460     fi
4461     AC_SUBST(BUILD_X64)
4463     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4464     AC_SUBST(CXX_X64_BINARY)
4466     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4467     # needed to support TWAIN scan on both 32- and 64-bit systems
4469     case "$WIN_HOST_ARCH" in
4470     x64)
4471         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4472         if test -n "$CXX_X86_BINARY"; then
4473             BUILD_X86=TRUE
4474             AC_MSG_RESULT([preset])
4475         elif test -n "$WIN_MULTI_ARCH"; then
4476             BUILD_X86=TRUE
4477             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4478             AC_MSG_RESULT([found])
4479         else
4480             AC_MSG_RESULT([not found])
4481             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4482         fi
4483         ;;
4484     x86)
4485         BUILD_X86=TRUE
4486         CXX_X86_BINARY=$MSVC_CXX
4487         ;;
4488     esac
4489     AC_SUBST(BUILD_X86)
4490     AC_SUBST(CXX_X86_BINARY)
4492 AC_SUBST(VCVER)
4493 AC_SUBST(VCTOOLSET)
4494 AC_SUBST(DEVENV)
4495 AC_SUBST(MSVC_CXX)
4497 COM_IS_CLANG=
4498 AC_MSG_CHECKING([whether the compiler is actually Clang])
4499 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4500     #ifndef __clang__
4501     you lose
4502     #endif
4503     int foo=42;
4504     ]])],
4505     [AC_MSG_RESULT([yes])
4506      COM_IS_CLANG=TRUE],
4507     [AC_MSG_RESULT([no])])
4508 AC_SUBST(COM_IS_CLANG)
4510 CLANGVER=
4511 if test "$COM_IS_CLANG" = TRUE; then
4512     AC_MSG_CHECKING([whether Clang is new enough])
4513     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4514         #if !defined __apple_build_version__
4515         #error
4516         #endif
4517         ]])],
4518         [my_apple_clang=yes],[my_apple_clang=])
4519     if test "$my_apple_clang" = yes; then
4520         AC_MSG_RESULT([assumed yes (Apple Clang)])
4521     elif test "$_os" = Emscripten; then
4522         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4523     else
4524         if test "$_os" = WINNT; then
4525             dnl In which case, assume clang-cl:
4526             my_args="/EP /TC"
4527         else
4528             my_args="-E -P"
4529         fi
4530         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4531         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4532         CLANGVER=`echo $clang_version \
4533             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4534         if test "$CLANGVER" -ge 120000; then
4535             AC_MSG_RESULT([yes ($clang_version)])
4536         else
4537             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4538         fi
4539         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4540         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4541     fi
4544 SHOWINCLUDES_PREFIX=
4545 if test "$_os" = WINNT; then
4546     dnl We need to guess the prefix of the -showIncludes output, it can be
4547     dnl localized
4548     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4549     echo "#include <stdlib.h>" > conftest.c
4550     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4551         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4552     rm -f conftest.c conftest.obj
4553     if test -z "$SHOWINCLUDES_PREFIX"; then
4554         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4555     else
4556         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4557     fi
4559 AC_SUBST(SHOWINCLUDES_PREFIX)
4562 # prefix C with ccache if needed
4564 if test "$CCACHE" != ""; then
4565     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4567     AC_LANG_PUSH([C])
4568     save_CFLAGS=$CFLAGS
4569     CFLAGS="$CFLAGS --ccache-skip -O2"
4570     # msvc does not fail on unknown options, check stdout
4571     if test "$COM" = MSC; then
4572         CFLAGS="$CFLAGS -nologo"
4573     fi
4574     save_ac_c_werror_flag=$ac_c_werror_flag
4575     ac_c_werror_flag=yes
4576     dnl an empty program will do, we're checking the compiler flags
4577     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4578                       [use_ccache=yes], [use_ccache=no])
4579     CFLAGS=$save_CFLAGS
4580     ac_c_werror_flag=$save_ac_c_werror_flag
4581     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4582         AC_MSG_RESULT([yes])
4583     else
4584         CC="$CCACHE $CC"
4585         CC_BASE="ccache $CC_BASE"
4586         AC_MSG_RESULT([no])
4587     fi
4588     AC_LANG_POP([C])
4591 # ===================================================================
4592 # check various GCC options that Clang does not support now but maybe
4593 # will somewhen in the future, check them even for GCC, so that the
4594 # flags are set
4595 # ===================================================================
4597 HAVE_GCC_GGDB2=
4598 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4599     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4600     save_CFLAGS=$CFLAGS
4601     CFLAGS="$CFLAGS -Werror -ggdb2"
4602     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4603     CFLAGS=$save_CFLAGS
4604     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4605         AC_MSG_RESULT([yes])
4606     else
4607         AC_MSG_RESULT([no])
4608     fi
4610     if test "$host_cpu" = "m68k"; then
4611         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4612         save_CFLAGS=$CFLAGS
4613         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4614         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4615         CFLAGS=$save_CFLAGS
4616         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4617             AC_MSG_RESULT([yes])
4618         else
4619             AC_MSG_ERROR([no])
4620         fi
4621     fi
4623 AC_SUBST(HAVE_GCC_GGDB2)
4625 dnl ===================================================================
4626 dnl  Test the gcc version
4627 dnl ===================================================================
4628 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4629     AC_MSG_CHECKING([the GCC version])
4630     _gcc_version=`$CC -dumpfullversion`
4631     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4632         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4633     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4635     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4637     if test "$gcc_full_version" -lt 120000; then
4638         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4639     fi
4640 else
4641     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4642     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4643     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4644     # (which reports itself as GCC 4.2.1).
4645     GCC_VERSION=
4647 AC_SUBST(GCC_VERSION)
4649 dnl Set the ENABLE_DBGUTIL variable
4650 dnl ===================================================================
4651 AC_MSG_CHECKING([whether to build with additional debug utilities])
4652 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4653     ENABLE_DBGUTIL="TRUE"
4654     # this is an extra var so it can have different default on different MSVC
4655     # versions (in case there are version specific problems with it)
4656     MSVC_USE_DEBUG_RUNTIME="TRUE"
4658     AC_MSG_RESULT([yes])
4659     # cppunit and graphite expose STL in public headers
4660     if test "$with_system_cppunit" = "yes"; then
4661         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4662     else
4663         with_system_cppunit=no
4664     fi
4665     if test "$with_system_graphite" = "yes"; then
4666         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4667     else
4668         with_system_graphite=no
4669     fi
4670     if test "$with_system_orcus" = "yes"; then
4671         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4672     else
4673         with_system_orcus=no
4674     fi
4675     if test "$with_system_libcmis" = "yes"; then
4676         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4677     else
4678         with_system_libcmis=no
4679     fi
4680     if test "$with_system_hunspell" = "yes"; then
4681         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4682     else
4683         with_system_hunspell=no
4684     fi
4685     if test "$with_system_gpgmepp" = "yes"; then
4686         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4687     else
4688         with_system_gpgmepp=no
4689     fi
4690     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4691     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4692     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4693     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4694     # of those two is using the system variant:
4695     if test "$with_system_libnumbertext" = "yes"; then
4696         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4697     else
4698         with_system_libnumbertext=no
4699     fi
4700     if test "$with_system_libwps" = "yes"; then
4701         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4702     else
4703         with_system_libwps=no
4704     fi
4705 else
4706     ENABLE_DBGUTIL=""
4707     MSVC_USE_DEBUG_RUNTIME=""
4708     AC_MSG_RESULT([no])
4710 AC_SUBST(ENABLE_DBGUTIL)
4711 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4713 dnl Set the ENABLE_DEBUG variable.
4714 dnl ===================================================================
4715 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4716     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4718 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4719     if test -z "$libo_fuzzed_enable_debug"; then
4720         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4721     else
4722         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4723         enable_debug=yes
4724     fi
4727 AC_MSG_CHECKING([whether to do a debug build])
4728 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4729     ENABLE_DEBUG="TRUE"
4730     if test -n "$ENABLE_DBGUTIL" ; then
4731         AC_MSG_RESULT([yes (dbgutil)])
4732     else
4733         AC_MSG_RESULT([yes])
4734     fi
4735 else
4736     ENABLE_DEBUG=""
4737     AC_MSG_RESULT([no])
4739 AC_SUBST(ENABLE_DEBUG)
4741 dnl ===================================================================
4742 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4743 dnl This is done only after compiler checks (need to know if Clang is
4744 dnl used, for different defaults) and after checking if a debug build
4745 dnl is wanted (non-debug builds get the default linker if not explicitly
4746 dnl specified otherwise).
4747 dnl All checks for linker features/options should come after this.
4748 dnl ===================================================================
4749 check_use_ld()
4751     use_ld=-fuse-ld=${1%%:*}
4752     use_ld_path=${1#*:}
4753     if test "$use_ld_path" != "$1"; then
4754         if test "$COM_IS_CLANG" = TRUE; then
4755             if test "$CLANGVER" -ge 120000; then
4756                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4757             else
4758                 use_ld="-fuse-ld=${use_ld_path}"
4759             fi
4760         else
4761             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4762             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4763             # pickup the alternative linker, when called by libtool for linking.
4764             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4765             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4766         fi
4767     fi
4768     use_ld_fail_if_error=$2
4769     use_ld_ok=
4770     AC_MSG_CHECKING([for $use_ld linker support])
4771     use_ld_ldflags_save="$LDFLAGS"
4772     LDFLAGS="$LDFLAGS $use_ld"
4773     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4774 #include <stdio.h>
4775         ],[
4776 printf ("hello world\n");
4777         ])], USE_LD=$use_ld, [])
4778     if test -n "$USE_LD"; then
4779         AC_MSG_RESULT( yes )
4780         use_ld_ok=yes
4781     else
4782         if test -n "$use_ld_fail_if_error"; then
4783             AC_MSG_ERROR( no )
4784         else
4785             AC_MSG_RESULT( no )
4786         fi
4787     fi
4788     if test -n "$use_ld_ok"; then
4789         dnl keep the value of LDFLAGS
4790         return 0
4791     fi
4792     LDFLAGS="$use_ld_ldflags_save"
4793     return 1
4795 USE_LD=
4796 if test "$enable_ld" != "no"; then
4797     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4798         if test -n "$enable_ld"; then
4799             check_use_ld "$enable_ld" fail_if_error
4800         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4801             dnl non-debug builds default to the default linker
4802             true
4803         elif test -n "$COM_IS_CLANG"; then
4804             check_use_ld lld
4805             if test $? -ne 0; then
4806                 check_use_ld gold
4807                 if test $? -ne 0; then
4808                     check_use_ld mold
4809                 fi
4810             fi
4811         else
4812             # For gcc first try gold, new versions also support lld/mold.
4813             check_use_ld gold
4814             if test $? -ne 0; then
4815                 check_use_ld lld
4816                 if test $? -ne 0; then
4817                     check_use_ld mold
4818                 fi
4819             fi
4820         fi
4821         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4822         rm conftest.out
4823         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4824         if test -z "$ld_used"; then
4825             ld_used="unknown"
4826         fi
4827         AC_MSG_CHECKING([for linker that is used])
4828         AC_MSG_RESULT([$ld_used])
4829         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4830             if echo "$ld_used" | grep -q "^GNU ld"; then
4831                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4832                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4833             fi
4834         fi
4835     else
4836         if test "$enable_ld" = "yes"; then
4837             AC_MSG_ERROR([--enable-ld not supported])
4838         fi
4839     fi
4841 AC_SUBST(USE_LD)
4842 AC_SUBST(LD)
4844 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4845 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4846     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4847     bsymbolic_functions_ldflags_save=$LDFLAGS
4848     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4849     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4850 #include <stdio.h>
4851         ],[
4852 printf ("hello world\n");
4853         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4854     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4855         AC_MSG_RESULT( found )
4856     else
4857         AC_MSG_RESULT( not found )
4858     fi
4859     LDFLAGS=$bsymbolic_functions_ldflags_save
4861 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4863 LD_GC_SECTIONS=
4864 if test "$GCC" = "yes"; then
4865     for flag in "--gc-sections" "-dead_strip"; do
4866         AC_MSG_CHECKING([for $flag linker support])
4867         ldflags_save=$LDFLAGS
4868         LDFLAGS="$LDFLAGS -Wl,$flag"
4869         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4870 #include <stdio.h>
4871             ],[
4872 printf ("hello world\n");
4873             ])],[
4874             LD_GC_SECTIONS="-Wl,$flag"
4875             AC_MSG_RESULT( found )
4876             ], [
4877             AC_MSG_RESULT( not found )
4878             ])
4879         LDFLAGS=$ldflags_save
4880         if test -n "$LD_GC_SECTIONS"; then
4881             break
4882         fi
4883     done
4885 AC_SUBST(LD_GC_SECTIONS)
4887 HAVE_EXTERNAL_DWARF=
4888 if test "$enable_split_debug" != no; then
4889     use_split_debug=
4890     if test -n "$ENABLE_LTO"; then
4891         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4892     elif test "$enable_split_debug" = yes; then
4893         use_split_debug=1
4894     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4895     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4896         use_split_debug=1
4897     fi
4898     if test -n "$use_split_debug"; then
4899         if test "$_os" = "Emscripten"; then
4900             TEST_CC_FLAG=-gseparate-dwarf
4901         else
4902             TEST_CC_FLAG=-gsplit-dwarf
4903         fi
4904         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4905         save_CFLAGS=$CFLAGS
4906         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4907         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4908         CFLAGS=$save_CFLAGS
4909         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4910             AC_MSG_RESULT([yes])
4911         else
4912             if test "$enable_split_debug" = yes; then
4913                 AC_MSG_ERROR([no])
4914             else
4915                 AC_MSG_RESULT([no])
4916             fi
4917         fi
4918     fi
4919     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4920         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4921         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4922     fi
4924 AC_SUBST(HAVE_EXTERNAL_DWARF)
4926 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4927 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4928 save_CFLAGS=$CFLAGS
4929 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4930 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4931 CFLAGS=$save_CFLAGS
4932 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4933     AC_MSG_RESULT([yes])
4934 else
4935     AC_MSG_RESULT([no])
4937 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4939 ENABLE_GDB_INDEX=
4940 if test "$enable_gdb_index" != "no"; then
4941     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4942     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4943         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4944         save_CFLAGS=$CFLAGS
4945         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4946         have_ggnu_pubnames=
4947         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4948         if test "$have_ggnu_pubnames" != "TRUE"; then
4949             if test "$enable_gdb_index" = "yes"; then
4950                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4951             else
4952                 AC_MSG_RESULT( no )
4953             fi
4954         else
4955             AC_MSG_RESULT( yes )
4956             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4957             ldflags_save=$LDFLAGS
4958             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4959             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4960 #include <stdio.h>
4961                 ],[
4962 printf ("hello world\n");
4963                 ])], ENABLE_GDB_INDEX=TRUE, [])
4964             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4965                 AC_MSG_RESULT( yes )
4966             else
4967                 if test "$enable_gdb_index" = "yes"; then
4968                     AC_MSG_ERROR( no )
4969                 else
4970                     AC_MSG_RESULT( no )
4971                 fi
4972             fi
4973             LDFLAGS=$ldflags_save
4974         fi
4975         CFLAGS=$save_CFLAGS
4976         fi
4977     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4978         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4979         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4980     fi
4982 AC_SUBST(ENABLE_GDB_INDEX)
4984 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4985     enable_sal_log=yes
4987 if test "$enable_sal_log" = yes; then
4988     ENABLE_SAL_LOG=TRUE
4990 AC_SUBST(ENABLE_SAL_LOG)
4992 dnl Check for enable symbols option
4993 dnl ===================================================================
4994 AC_MSG_CHECKING([whether to generate debug information])
4995 if test -z "$enable_symbols"; then
4996     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4997         enable_symbols=yes
4998     else
4999         enable_symbols=no
5000     fi
5002 if test "$enable_symbols" = yes; then
5003     ENABLE_SYMBOLS_FOR=all
5004     AC_MSG_RESULT([yes])
5005 elif test "$enable_symbols" = no; then
5006     ENABLE_SYMBOLS_FOR=
5007     AC_MSG_RESULT([no])
5008 else
5009     # Selective debuginfo.
5010     ENABLE_SYMBOLS_FOR="$enable_symbols"
5011     AC_MSG_RESULT([for "$enable_symbols"])
5013 AC_SUBST(ENABLE_SYMBOLS_FOR)
5014 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
5015     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5016     AC_MSG_CHECKING([whether enough memory is available for linking])
5017     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5018     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5019     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5020         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5021     else
5022         AC_MSG_RESULT([yes])
5023     fi
5026 ENABLE_OPTIMIZED=
5027 ENABLE_OPTIMIZED_DEBUG=
5028 AC_MSG_CHECKING([whether to compile with optimization flags])
5029 if test -z "$enable_optimized"; then
5030     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5031         enable_optimized=no
5032     else
5033         enable_optimized=yes
5034     fi
5036 if test "$enable_optimized" = yes; then
5037     ENABLE_OPTIMIZED=TRUE
5038     AC_MSG_RESULT([yes])
5039 elif test "$enable_optimized" = debug; then
5040     ENABLE_OPTIMIZED_DEBUG=TRUE
5041     AC_MSG_RESULT([yes (debug)])
5042     HAVE_GCC_OG=
5043     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5044         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5045         save_CFLAGS=$CFLAGS
5046         CFLAGS="$CFLAGS -Werror -Og"
5047         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5048         CFLAGS=$save_CFLAGS
5049         if test "$HAVE_GCC_OG" = "TRUE"; then
5050             AC_MSG_RESULT([yes])
5051         else
5052             AC_MSG_RESULT([no])
5053         fi
5054     fi
5055     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5056         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5057     fi
5058 else
5059     AC_MSG_RESULT([no])
5061 AC_SUBST(ENABLE_OPTIMIZED)
5062 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5065 # determine CPUNAME, OS, ...
5067 case "$host_os" in
5069 cygwin*|wsl*)
5070     # Already handled
5071     ;;
5073 darwin*)
5074     COM=GCC
5075     OS=MACOSX
5076     RTL_OS=MacOSX
5077     P_SEP=:
5079     case "$host_cpu" in
5080     aarch64|arm64)
5081         if test "$enable_ios_simulator" = "yes"; then
5082             OS=iOS
5083         else
5084             CPUNAME=AARCH64
5085             RTL_ARCH=AARCH64
5086             PLATFORMID=macosx_aarch64
5087         fi
5088         ;;
5089     x86_64)
5090         if test "$enable_ios_simulator" = "yes"; then
5091             OS=iOS
5092         fi
5093         CPUNAME=X86_64
5094         RTL_ARCH=X86_64
5095         PLATFORMID=macosx_x86_64
5096         ;;
5097     *)
5098         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5099         ;;
5100     esac
5101     ;;
5103 ios*)
5104     COM=GCC
5105     OS=iOS
5106     RTL_OS=iOS
5107     P_SEP=:
5109     case "$host_cpu" in
5110     aarch64|arm64)
5111         if test "$enable_ios_simulator" = "yes"; then
5112             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5113         fi
5114         ;;
5115     *)
5116         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5117         ;;
5118     esac
5119     CPUNAME=AARCH64
5120     RTL_ARCH=AARCH64
5121     PLATFORMID=ios_arm64
5122     ;;
5124 dragonfly*)
5125     COM=GCC
5126     OS=DRAGONFLY
5127     RTL_OS=DragonFly
5128     P_SEP=:
5130     case "$host_cpu" in
5131     i*86)
5132         CPUNAME=INTEL
5133         RTL_ARCH=x86
5134         PLATFORMID=dragonfly_x86
5135         ;;
5136     x86_64)
5137         CPUNAME=X86_64
5138         RTL_ARCH=X86_64
5139         PLATFORMID=dragonfly_x86_64
5140         ;;
5141     *)
5142         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5143         ;;
5144     esac
5145     ;;
5147 freebsd*)
5148     COM=GCC
5149     RTL_OS=FreeBSD
5150     OS=FREEBSD
5151     P_SEP=:
5153     case "$host_cpu" in
5154     aarch64)
5155         CPUNAME=AARCH64
5156         PLATFORMID=freebsd_aarch64
5157         RTL_ARCH=AARCH64
5158         ;;
5159     i*86)
5160         CPUNAME=INTEL
5161         RTL_ARCH=x86
5162         PLATFORMID=freebsd_x86
5163         ;;
5164     x86_64|amd64)
5165         CPUNAME=X86_64
5166         RTL_ARCH=X86_64
5167         PLATFORMID=freebsd_x86_64
5168         ;;
5169     powerpc64)
5170         CPUNAME=POWERPC64
5171         RTL_ARCH=PowerPC_64
5172         PLATFORMID=freebsd_powerpc64
5173         ;;
5174     powerpc|powerpcspe)
5175         CPUNAME=POWERPC
5176         RTL_ARCH=PowerPC
5177         PLATFORMID=freebsd_powerpc
5178         ;;
5179     *)
5180         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5181         ;;
5182     esac
5183     ;;
5185 haiku*)
5186     COM=GCC
5187     GUIBASE=haiku
5188     RTL_OS=Haiku
5189     OS=HAIKU
5190     P_SEP=:
5192     case "$host_cpu" in
5193     i*86)
5194         CPUNAME=INTEL
5195         RTL_ARCH=x86
5196         PLATFORMID=haiku_x86
5197         ;;
5198     x86_64|amd64)
5199         CPUNAME=X86_64
5200         RTL_ARCH=X86_64
5201         PLATFORMID=haiku_x86_64
5202         ;;
5203     *)
5204         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5205         ;;
5206     esac
5207     ;;
5209 kfreebsd*)
5210     COM=GCC
5211     OS=LINUX
5212     RTL_OS=kFreeBSD
5213     P_SEP=:
5215     case "$host_cpu" in
5217     i*86)
5218         CPUNAME=INTEL
5219         RTL_ARCH=x86
5220         PLATFORMID=kfreebsd_x86
5221         ;;
5222     x86_64)
5223         CPUNAME=X86_64
5224         RTL_ARCH=X86_64
5225         PLATFORMID=kfreebsd_x86_64
5226         ;;
5227     *)
5228         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5229         ;;
5230     esac
5231     ;;
5233 linux-gnu*|linux-musl*)
5234     COM=GCC
5235     OS=LINUX
5236     RTL_OS=Linux
5237     P_SEP=:
5239     case "$host_cpu" in
5241     aarch64)
5242         CPUNAME=AARCH64
5243         PLATFORMID=linux_aarch64
5244         RTL_ARCH=AARCH64
5245         EPM_FLAGS="-a arm64"
5246         ;;
5247     alpha)
5248         CPUNAME=AXP
5249         RTL_ARCH=ALPHA
5250         PLATFORMID=linux_alpha
5251         ;;
5252     arm*)
5253         CPUNAME=ARM
5254         EPM_FLAGS="-a arm"
5255         RTL_ARCH=ARM_EABI
5256         PLATFORMID=linux_arm_eabi
5257         case "$host_cpu" in
5258         arm*-linux)
5259             RTL_ARCH=ARM_OABI
5260             PLATFORMID=linux_arm_oabi
5261             ;;
5262         esac
5263         ;;
5264     hppa)
5265         CPUNAME=HPPA
5266         RTL_ARCH=HPPA
5267         EPM_FLAGS="-a hppa"
5268         PLATFORMID=linux_hppa
5269         ;;
5270     i*86)
5271         CPUNAME=INTEL
5272         RTL_ARCH=x86
5273         PLATFORMID=linux_x86
5274         ;;
5275     ia64)
5276         CPUNAME=IA64
5277         RTL_ARCH=IA64
5278         PLATFORMID=linux_ia64
5279         ;;
5280     mips)
5281         CPUNAME=MIPS
5282         RTL_ARCH=MIPS_EB
5283         EPM_FLAGS="-a mips"
5284         PLATFORMID=linux_mips_eb
5285         ;;
5286     mips64)
5287         CPUNAME=MIPS64
5288         RTL_ARCH=MIPS64_EB
5289         EPM_FLAGS="-a mips64"
5290         PLATFORMID=linux_mips64_eb
5291         ;;
5292     mips64el)
5293         CPUNAME=MIPS64
5294         RTL_ARCH=MIPS64_EL
5295         EPM_FLAGS="-a mips64el"
5296         PLATFORMID=linux_mips64_el
5297         ;;
5298     mipsel)
5299         CPUNAME=MIPS
5300         RTL_ARCH=MIPS_EL
5301         EPM_FLAGS="-a mipsel"
5302         PLATFORMID=linux_mips_el
5303         ;;
5304     riscv64)
5305         CPUNAME=RISCV64
5306         RTL_ARCH=RISCV64
5307         EPM_FLAGS="-a riscv64"
5308         PLATFORMID=linux_riscv64
5309         ;;
5310     m68k)
5311         CPUNAME=M68K
5312         RTL_ARCH=M68K
5313         PLATFORMID=linux_m68k
5314         ;;
5315     powerpc)
5316         CPUNAME=POWERPC
5317         RTL_ARCH=PowerPC
5318         PLATFORMID=linux_powerpc
5319         ;;
5320     powerpc64)
5321         CPUNAME=POWERPC64
5322         RTL_ARCH=PowerPC_64
5323         PLATFORMID=linux_powerpc64
5324         ;;
5325     powerpc64le)
5326         CPUNAME=POWERPC64
5327         RTL_ARCH=PowerPC_64_LE
5328         PLATFORMID=linux_powerpc64_le
5329         ;;
5330     sparc)
5331         CPUNAME=SPARC
5332         RTL_ARCH=SPARC
5333         PLATFORMID=linux_sparc
5334         ;;
5335     sparc64)
5336         CPUNAME=SPARC64
5337         RTL_ARCH=SPARC64
5338         PLATFORMID=linux_sparc64
5339         ;;
5340     s390x)
5341         CPUNAME=S390X
5342         RTL_ARCH=S390x
5343         PLATFORMID=linux_s390x
5344         ;;
5345     x86_64)
5346         CPUNAME=X86_64
5347         RTL_ARCH=X86_64
5348         PLATFORMID=linux_x86_64
5349         ;;
5350     loongarch64)
5351         CPUNAME=LOONGARCH64
5352         RTL_ARCH=LOONGARCH64
5353         PLATFORMID=linux_loongarch64
5354         ;;
5355     *)
5356         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5357         ;;
5358     esac
5359     ;;
5361 linux-android*)
5362     COM=GCC
5363     OS=ANDROID
5364     RTL_OS=Android
5365     P_SEP=:
5367     case "$host_cpu" in
5369     arm|armel)
5370         CPUNAME=ARM
5371         RTL_ARCH=ARM_EABI
5372         PLATFORMID=android_arm_eabi
5373         ;;
5374     aarch64)
5375         CPUNAME=AARCH64
5376         RTL_ARCH=AARCH64
5377         PLATFORMID=android_aarch64
5378         ;;
5379     i*86)
5380         CPUNAME=INTEL
5381         RTL_ARCH=x86
5382         PLATFORMID=android_x86
5383         ;;
5384     x86_64)
5385         CPUNAME=X86_64
5386         RTL_ARCH=X86_64
5387         PLATFORMID=android_x86_64
5388         ;;
5389     *)
5390         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5391         ;;
5392     esac
5393     ;;
5395 *netbsd*)
5396     COM=GCC
5397     OS=NETBSD
5398     RTL_OS=NetBSD
5399     P_SEP=:
5401     case "$host_cpu" in
5402     i*86)
5403         CPUNAME=INTEL
5404         RTL_ARCH=x86
5405         PLATFORMID=netbsd_x86
5406         ;;
5407     powerpc)
5408         CPUNAME=POWERPC
5409         RTL_ARCH=PowerPC
5410         PLATFORMID=netbsd_powerpc
5411         ;;
5412     sparc)
5413         CPUNAME=SPARC
5414         RTL_ARCH=SPARC
5415         PLATFORMID=netbsd_sparc
5416         ;;
5417     x86_64)
5418         CPUNAME=X86_64
5419         RTL_ARCH=X86_64
5420         PLATFORMID=netbsd_x86_64
5421         ;;
5422     *)
5423         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5424         ;;
5425     esac
5426     ;;
5428 openbsd*)
5429     COM=GCC
5430     OS=OPENBSD
5431     RTL_OS=OpenBSD
5432     P_SEP=:
5434     case "$host_cpu" in
5435     i*86)
5436         CPUNAME=INTEL
5437         RTL_ARCH=x86
5438         PLATFORMID=openbsd_x86
5439         ;;
5440     x86_64)
5441         CPUNAME=X86_64
5442         RTL_ARCH=X86_64
5443         PLATFORMID=openbsd_x86_64
5444         ;;
5445     *)
5446         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5447         ;;
5448     esac
5449     SOLARINC="$SOLARINC -I/usr/local/include"
5450     ;;
5452 solaris*)
5453     COM=GCC
5454     OS=SOLARIS
5455     RTL_OS=Solaris
5456     P_SEP=:
5458     case "$host_cpu" in
5459     i*86)
5460         CPUNAME=INTEL
5461         RTL_ARCH=x86
5462         PLATFORMID=solaris_x86
5463         ;;
5464     sparc)
5465         CPUNAME=SPARC
5466         RTL_ARCH=SPARC
5467         PLATFORMID=solaris_sparc
5468         ;;
5469     sparc64)
5470         CPUNAME=SPARC64
5471         RTL_ARCH=SPARC64
5472         PLATFORMID=solaris_sparc64
5473         ;;
5474     *)
5475         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5476         ;;
5477     esac
5478     SOLARINC="$SOLARINC -I/usr/local/include"
5479     ;;
5481 emscripten*)
5482     COM=GCC
5483     OS=EMSCRIPTEN
5484     RTL_OS=Emscripten
5485     P_SEP=:
5487     case "$host_cpu" in
5488     wasm32|wasm64)
5489         ;;
5490     *)
5491         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5492         ;;
5493     esac
5494     CPUNAME=INTEL
5495     RTL_ARCH=x86
5496     PLATFORMID=linux_x86
5497     ;;
5500     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5501     ;;
5502 esac
5504 DISABLE_GUI=""
5505 if test "$enable_gui" = "no"; then
5506     if test "$using_x11" != yes; then
5507         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5508     fi
5509     USING_X11=
5510     DISABLE_GUI=TRUE
5511     test_epoxy=no
5512 else
5513     AC_DEFINE(HAVE_FEATURE_UI)
5515 AC_SUBST(DISABLE_GUI)
5517 if test "$with_x" = "no"; then
5518     USING_X11=
5521 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5522     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5525 if test "$using_x11" = yes; then
5526     if test "$USING_X11" = TRUE; then
5527         AC_DEFINE(USING_X11)
5528     else
5529         disable_x11_tests
5530         if test "$DISABLE_DYNLOADING" = TRUE; then
5531             test_qt5=yes
5532         fi
5533     fi
5534 else
5535     if test "$USING_X11" = TRUE; then
5536         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5537     fi
5540 WORKDIR="${BUILDDIR}/workdir"
5541 INSTDIR="${BUILDDIR}/instdir"
5542 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5543 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5544 AC_SUBST(COM)
5545 AC_SUBST(CPUNAME)
5546 AC_SUBST(RTL_OS)
5547 AC_SUBST(RTL_ARCH)
5548 AC_SUBST(EPM_FLAGS)
5549 AC_SUBST(USING_X11)
5550 AC_SUBST([INSTDIR])
5551 AC_SUBST([INSTROOT])
5552 AC_SUBST([INSTROOTBASE])
5553 AC_SUBST(OS)
5554 AC_SUBST(P_SEP)
5555 AC_SUBST(WORKDIR)
5556 AC_SUBST(PLATFORMID)
5557 AC_SUBST(WINDOWS_X64)
5558 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5559 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5561 if test "$OS" = WNT -a "$COM" = MSC; then
5562     case "$CPUNAME" in
5563     INTEL) CPPU_ENV=msci ;;
5564     X86_64) CPPU_ENV=mscx ;;
5565     AARCH64) CPPU_ENV=msca ;;
5566     *)
5567         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5568         ;;
5569     esac
5570 else
5571     CPPU_ENV=gcc3
5573 AC_SUBST(CPPU_ENV)
5575 dnl ===================================================================
5576 dnl Test which package format to use
5577 dnl ===================================================================
5578 AC_MSG_CHECKING([which package format to use])
5579 if test -n "$with_package_format" -a "$with_package_format" != no; then
5580     for i in $with_package_format; do
5581         case "$i" in
5582         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5583             ;;
5584         *)
5585             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5586 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5587 deb - Debian software distribution
5588 pkg - Solaris software distribution
5589 rpm - RedHat software distribution
5591 LibreOffice additionally supports:
5592 archive - .tar.gz or .zip
5593 dmg - macOS .dmg
5594 installed - installation tree
5595 msi - Windows .msi
5596         ])
5597             ;;
5598         esac
5599     done
5600     # fakeroot is needed to ensure correct file ownerships/permissions
5601     # inside deb packages and tar archives created on Linux and Solaris.
5602     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5603         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5604         if test "$FAKEROOT" = "no"; then
5605             AC_MSG_ERROR(
5606                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5607         fi
5608     fi
5609     PKGFORMAT="$with_package_format"
5610     AC_MSG_RESULT([$PKGFORMAT])
5611 else
5612     PKGFORMAT=
5613     AC_MSG_RESULT([none])
5615 AC_SUBST(PKGFORMAT)
5617 dnl ===================================================================
5618 dnl handle help related options
5620 dnl If you change help related options, please update README.help
5621 dnl ===================================================================
5623 ENABLE_HTMLHELP=
5624 HELP_OMINDEX_PAGE=
5625 HELP_ONLINE=
5626 WITH_HELPPACKS=
5628 AC_MSG_CHECKING([which help to build])
5629 if test -n "$with_help" -a "$with_help" != "no"; then
5630     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5631     BUILD_TYPE="$BUILD_TYPE HELP"
5632     case "$with_help" in
5633     "html")
5634         ENABLE_HTMLHELP=TRUE
5635         WITH_HELPPACKS=TRUE
5636         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5637         AC_MSG_RESULT([HTML (local)])
5638         ;;
5639     "online")
5640         ENABLE_HTMLHELP=TRUE
5641         HELP_ONLINE=TRUE
5642         AC_MSG_RESULT([HTML (online)])
5643         ;;
5644     yes)
5645         WITH_HELPPACKS=TRUE
5646         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5647         AC_MSG_RESULT([XML (local)])
5648         ;;
5649     *)
5650         AC_MSG_ERROR([Unknown --with-help=$with_help])
5651         ;;
5652     esac
5653 else
5654     AC_MSG_RESULT([no])
5657 AC_MSG_CHECKING([if we need to build the help index tooling])
5658 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5659     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5660     test_clucene=yes
5661     AC_MSG_RESULT([yes])
5662 else
5663     AC_MSG_RESULT([no])
5666 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5667 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5668     if test "$HELP_ONLINE" != TRUE; then
5669         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5670     fi
5671     case "$with_omindex" in
5672     "server")
5673         HELP_OMINDEX_PAGE=TRUE
5674         AC_MSG_RESULT([SERVER])
5675         ;;
5676     "noxap")
5677         AC_MSG_RESULT([NOXAP])
5678         ;;
5679     *)
5680         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5681         ;;
5682     esac
5683 else
5684     AC_MSG_RESULT([no])
5687 AC_MSG_CHECKING([whether to include the XML-help support])
5688 if test "$enable_xmlhelp" = yes; then
5689     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5690     test_clucene=yes
5691     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5692     AC_MSG_RESULT([yes])
5693 else
5694     if test "$with_help" = yes; then
5695         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5696     fi
5697     AC_MSG_RESULT([no])
5700 dnl Test whether to integrate helppacks into the product's installer
5701 AC_MSG_CHECKING([for helppack integration])
5702 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5703     AC_MSG_RESULT([no integration])
5704 else
5705     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5706     AC_MSG_RESULT([integration])
5709 AC_SUBST([ENABLE_HTMLHELP])
5710 AC_SUBST([HELP_OMINDEX_PAGE])
5711 AC_SUBST([HELP_ONLINE])
5712 # WITH_HELPPACKS is used only in configure
5714 dnl ===================================================================
5715 dnl Set up a different compiler to produce tools to run on the build
5716 dnl machine when doing cross-compilation
5717 dnl ===================================================================
5719 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5720 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5721 if test "$cross_compiling" = "yes"; then
5722     AC_MSG_CHECKING([for BUILD platform configuration])
5723     echo
5724     rm -rf CONF-FOR-BUILD config_build.mk
5725     mkdir CONF-FOR-BUILD
5726     # Here must be listed all files needed when running the configure script. In particular, also
5727     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5728     # keep them in the same order as there.
5729     (cd $SRC_ROOT && tar cf - \
5730         config.guess \
5731         bin/get_config_variables \
5732         solenv/bin/getcompver.awk \
5733         solenv/inc/langlist.mk \
5734         download.lst \
5735         config_host.mk.in \
5736         config_host_lang.mk.in \
5737         Makefile.in \
5738         bin/bffvalidator.sh.in \
5739         bin/odfvalidator.sh.in \
5740         bin/officeotron.sh.in \
5741         instsetoo_native/util/openoffice.lst.in \
5742         config_host/*.in \
5743         sysui/desktop/macosx/Info.plist.in \
5744         sysui/desktop/macosx/hardened_runtime.xcent.in \
5745         sysui/desktop/macosx/lo.xcent.in \
5746         .vscode/vs-code-template.code-workspace.in \
5747         solenv/lockfile/autoconf.h.in \
5748         ) \
5749     | (cd CONF-FOR-BUILD && tar xf -)
5750     cp configure CONF-FOR-BUILD
5751     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5752     (
5753     unset COM USING_X11 OS CPUNAME
5754     unset CC CXX SYSBASE CFLAGS
5755     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5756     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5757     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5758     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5759     if test -n "$CC_FOR_BUILD"; then
5760         export CC="$CC_FOR_BUILD"
5761         CC_BASE=`first_arg_basename "$CC"`
5762     fi
5763     if test -n "$CXX_FOR_BUILD"; then
5764         export CXX="$CXX_FOR_BUILD"
5765         CXX_BASE=`first_arg_basename "$CXX"`
5766     fi
5767     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5768     cd CONF-FOR-BUILD
5770     # Handle host configuration, which affects the cross-toolset too
5771     sub_conf_opts=""
5772     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5773     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5774     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5775     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5776     if test -n "$ENABLE_JAVA"; then
5777         case "$_os" in
5778         Android)
5779             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5780             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5781             ;;
5782         *)
5783             if test -z "$with_jdk_home"; then
5784                 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.])
5785             fi
5786             ;;
5787         esac
5788     else
5789         sub_conf_opts="$sub_conf_opts --without-java"
5790     fi
5791     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5792     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5793     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5794     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5795     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5796     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5797     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5798     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5799     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5800     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5801     if test "$_os" = "Emscripten"; then
5802         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5803         if test "${with_main_module+set}" = set; then
5804             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5805         else
5806             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5807         fi
5808     fi
5809     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5810     # when cross-compiling for aarch64, overriding the defaults below
5811     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5813     # Don't bother having configure look for stuff not needed for the build platform anyway
5814     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5815     sub_conf_defaults=" \
5816         --build="$build_alias" \
5817         --disable-cairo-canvas \
5818         --disable-cups \
5819         --disable-customtarget-components \
5820         --disable-firebird-sdbc \
5821         --disable-gpgmepp \
5822         --disable-gstreamer-1-0 \
5823         --disable-gtk3 \
5824         --disable-gtk4 \
5825         --disable-libcmis \
5826         --disable-mariadb-sdbc \
5827         --disable-nss \
5828         --disable-online-update \
5829         --disable-opencl \
5830         --disable-openssl \
5831         --disable-pdfimport \
5832         --disable-postgresql-sdbc \
5833         --disable-skia \
5834         --disable-xmlhelp \
5835         --enable-dynamic-loading \
5836         --enable-icecream="$enable_icecream" \
5837         --without-doxygen \
5838         --without-tls \
5839         --without-webdav \
5840         --without-x \
5842     # single quotes added for better readability in case of spaces
5843     echo "    Running CONF-FOR-BUILD/configure" \
5844         $sub_conf_defaults \
5845         --with-parallelism="'$with_parallelism'" \
5846         --with-theme="'$with_theme'" \
5847         --with-vendor="'$with_vendor'" \
5848         $sub_conf_opts \
5849         $with_build_platform_configure_options \
5850         --srcdir=$srcdir
5852     ./configure \
5853         $sub_conf_defaults \
5854         --with-parallelism="$with_parallelism" \
5855         --with-theme="$with_theme" \
5856         "--with-vendor=$with_vendor" \
5857         $sub_conf_opts \
5858         $with_build_platform_configure_options \
5859         --srcdir=$srcdir \
5860         2>&1 | sed -e 's/^/    /'
5861     if test [${PIPESTATUS[0]}] -ne 0; then
5862         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5863     fi
5865     # filter permitted build targets
5866     PERMITTED_BUILD_TARGETS="
5867         ARGON2
5868         AVMEDIA
5869         BOOST
5870         BZIP2
5871         CAIRO
5872         CLUCENE
5873         CURL
5874         DBCONNECTIVITY
5875         DESKTOP
5876         DRAGONBOX
5877         DYNLOADING
5878         EPOXY
5879         EXPAT
5880         FROZEN
5881         GLM
5882         GRAPHITE
5883         HARFBUZZ
5884         HELPTOOLS
5885         ICU
5886         LCMS2
5887         LIBJPEG_TURBO
5888         LIBLANGTAG
5889         LibO
5890         LIBFFI
5891         LIBPN
5892         LIBTIFF
5893         LIBWEBP
5894         LIBXML2
5895         LIBXSLT
5896         MDDS
5897         NATIVE
5898         OPENSSL
5899         ORCUS
5900         PYTHON
5901         SCRIPTING
5902         ZLIB
5903         ZXCVBN
5905     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5906     # newlined lists, to use grep as a filter
5907     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5908     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5909     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5910     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5912     cp config_host.mk ../config_build.mk
5913     cp config_host_lang.mk ../config_build_lang.mk
5914     mv config.log ../config.Build.log
5915     mkdir -p ../config_build
5916     mv config_host/*.h ../config_build
5917     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5919     # all these will get a _FOR_BUILD postfix
5920     DIRECT_FOR_BUILD_SETTINGS="
5921         CC
5922         CPPU_ENV
5923         CXX
5924         ILIB
5925         JAVA_HOME
5926         JAVAIFLAGS
5927         JDK
5928         JDK_SECURITYMANAGER_DISALLOWED
5929         LIBO_BIN_FOLDER
5930         LIBO_LIB_FOLDER
5931         LIBO_URE_LIB_FOLDER
5932         LIBO_URE_MISC_FOLDER
5933         OS
5934         SDKDIRNAME
5935         SYSTEM_LIBXML
5936         SYSTEM_LIBXSLT
5938     # these overwrite host config with build config
5939     OVERWRITING_SETTINGS="
5940         ANT
5941         ANT_HOME
5942         ANT_LIB
5943         JAVA_SOURCE_VER
5944         JAVA_TARGET_VER
5945         JAVACFLAGS
5946         JAVACOMPILER
5947         JAVADOC
5948         JAVADOCISGJDOC
5949         LOCKFILE
5950         SYSTEM_GENBRK
5951         SYSTEM_GENCCODE
5952         SYSTEM_GENCMN
5954     # these need some special handling
5955     EXTRA_HANDLED_SETTINGS="
5956         INSTDIR
5957         INSTROOT
5958         PATH
5959         WORKDIR
5961     OLD_PATH=$PATH
5962     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5963     BUILD_PATH=$PATH
5964     PATH=$OLD_PATH
5966     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5967     echo "$line" >>build-config
5969     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5970         VV='$'$V
5971         VV=`eval "echo $VV"`
5972         if test -n "$VV"; then
5973             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5974             echo "$line" >>build-config
5975         fi
5976     done
5978     for V in $OVERWRITING_SETTINGS; do
5979         VV='$'$V
5980         VV=`eval "echo $VV"`
5981         if test -n "$VV"; then
5982             line=${V}='${'${V}:-$VV'}'
5983             echo "$line" >>build-config
5984         fi
5985     done
5987     for V in INSTDIR INSTROOT WORKDIR; do
5988         VV='$'$V
5989         VV=`eval "echo $VV"`
5990         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5991         if test -n "$VV"; then
5992             line="${V}_FOR_BUILD='$VV'"
5993             echo "$line" >>build-config
5994         fi
5995     done
5997     )
5998     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5999     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])
6000     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6001              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6003     eval `cat CONF-FOR-BUILD/build-config`
6005     AC_MSG_RESULT([checking for BUILD platform configuration... done])
6007     rm -rf CONF-FOR-BUILD
6008 else
6009     OS_FOR_BUILD="$OS"
6010     CC_FOR_BUILD="$CC"
6011     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6012     CXX_FOR_BUILD="$CXX"
6013     INSTDIR_FOR_BUILD="$INSTDIR"
6014     INSTROOT_FOR_BUILD="$INSTROOT"
6015     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6016     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6017     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6018     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6019     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6020     WORKDIR_FOR_BUILD="$WORKDIR"
6022 AC_SUBST(OS_FOR_BUILD)
6023 AC_SUBST(INSTDIR_FOR_BUILD)
6024 AC_SUBST(INSTROOT_FOR_BUILD)
6025 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6026 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6027 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6028 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6029 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6030 AC_SUBST(WORKDIR_FOR_BUILD)
6031 AC_SUBST(CC_FOR_BUILD)
6032 AC_SUBST(CXX_FOR_BUILD)
6033 AC_SUBST(CPPU_ENV_FOR_BUILD)
6035 dnl ===================================================================
6036 dnl Check for lockfile deps
6037 dnl ===================================================================
6038 if test -z "$CROSS_COMPILING"; then
6039     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6040     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6041     AC_MSG_CHECKING([which lockfile binary to use])
6042     case "$with_system_lockfile" in
6043     yes)
6044         AC_MSG_RESULT([external])
6045         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6046         ;;
6047     no)
6048         AC_MSG_RESULT([internal])
6049         ;;
6050     *)
6051         if test -x "$with_system_lockfile"; then
6052             LOCKFILE="$with_system_lockfile"
6053         else
6054             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6055         fi
6056         AC_MSG_RESULT([$with_system_lockfile])
6057         ;;
6058     esac
6061 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6062     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6065 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6066 AC_CHECK_FUNCS([utime utimes])
6067 AC_SUBST(LOCKFILE)
6069 dnl ===================================================================
6070 dnl Check for syslog header
6071 dnl ===================================================================
6072 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6074 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6075 dnl ===================================================================
6076 AC_MSG_CHECKING([whether to turn warnings to errors])
6077 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6078     ENABLE_WERROR="TRUE"
6079     PYTHONWARNINGS="error"
6080     AC_MSG_RESULT([yes])
6081 else
6082     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6083         ENABLE_WERROR="TRUE"
6084         PYTHONWARNINGS="error"
6085         AC_MSG_RESULT([yes])
6086     else
6087         AC_MSG_RESULT([no])
6088     fi
6090 AC_SUBST(ENABLE_WERROR)
6091 AC_SUBST(PYTHONWARNINGS)
6093 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6094 dnl ===================================================================
6095 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6096 if test -z "$enable_assert_always_abort"; then
6097    if test "$ENABLE_DEBUG" = TRUE; then
6098        enable_assert_always_abort=yes
6099    else
6100        enable_assert_always_abort=no
6101    fi
6103 if test "$enable_assert_always_abort" = "yes"; then
6104     ASSERT_ALWAYS_ABORT="TRUE"
6105     AC_MSG_RESULT([yes])
6106 else
6107     ASSERT_ALWAYS_ABORT="FALSE"
6108     AC_MSG_RESULT([no])
6110 AC_SUBST(ASSERT_ALWAYS_ABORT)
6112 # Determine whether to use ooenv for the instdir installation
6113 # ===================================================================
6114 if test $_os != "WINNT" -a $_os != "Darwin"; then
6115     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6116     if test -z "$enable_ooenv"; then
6117         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6118             enable_ooenv=yes
6119         else
6120             enable_ooenv=no
6121         fi
6122     fi
6123     if test "$enable_ooenv" = "no"; then
6124         AC_MSG_RESULT([no])
6125     else
6126         ENABLE_OOENV="TRUE"
6127         AC_MSG_RESULT([yes])
6128     fi
6130 AC_SUBST(ENABLE_OOENV)
6132 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6133     if test "$enable_qt5" = "no"; then
6134         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6135     else
6136         enable_qt5=yes
6137     fi
6140 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6141     if test "$enable_qt6" = "no"; then
6142         AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6143     else
6144         enable_qt6=yes
6145     fi
6149 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6150 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6151     AC_MSG_RESULT([yes])
6152     ENABLE_PAGEIN=TRUE
6153     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6154 else
6155     AC_MSG_RESULT([no])
6157 AC_SUBST(ENABLE_PAGEIN)
6159 dnl ===================================================================
6160 dnl check for cups support
6161 dnl ===================================================================
6163 AC_MSG_CHECKING([whether to enable CUPS support])
6164 if test "$test_cups" = yes -a "$enable_cups" != no; then
6165     ENABLE_CUPS=TRUE
6166     AC_MSG_RESULT([yes])
6168     AC_MSG_CHECKING([whether cups support is present])
6169     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6170     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6171     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6172         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6173     fi
6174 else
6175     AC_MSG_RESULT([no])
6178 AC_SUBST(ENABLE_CUPS)
6180 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6182 dnl whether to find & fetch external tarballs?
6183 dnl ===================================================================
6184 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6185    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6186        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6187    else
6188        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6189    fi
6191 if test -z "$TARFILE_LOCATION"; then
6192     if test -d "$SRC_ROOT/src" ; then
6193         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6194         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6195     fi
6196     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6197 else
6198     AbsolutePath "$TARFILE_LOCATION"
6199     PathFormat "${absolute_path}"
6200     TARFILE_LOCATION="${formatted_path_unix}"
6202 AC_SUBST(TARFILE_LOCATION)
6204 AC_MSG_CHECKING([whether we want to fetch tarballs])
6205 if test "$enable_fetch_external" != "no"; then
6206     if test "$with_all_tarballs" = "yes"; then
6207         AC_MSG_RESULT([yes, all of them])
6208         DO_FETCH_TARBALLS="ALL"
6209     else
6210         AC_MSG_RESULT([yes, if we use them])
6211         DO_FETCH_TARBALLS="TRUE"
6212     fi
6213 else
6214     AC_MSG_RESULT([no])
6215     DO_FETCH_TARBALLS=
6217 AC_SUBST(DO_FETCH_TARBALLS)
6219 dnl Test whether to include MySpell dictionaries
6220 dnl ===================================================================
6221 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6222 if test "$with_myspell_dicts" = "yes"; then
6223     AC_MSG_RESULT([yes])
6224     WITH_MYSPELL_DICTS=TRUE
6225     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6226     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6227 else
6228     AC_MSG_RESULT([no])
6229     WITH_MYSPELL_DICTS=
6231 AC_SUBST(WITH_MYSPELL_DICTS)
6233 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6234 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6235     if test "$with_system_dicts" = yes; then
6236         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6237     fi
6238     with_system_dicts=no
6241 AC_MSG_CHECKING([whether to use dicts from external paths])
6242 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6243     AC_MSG_RESULT([yes])
6244     SYSTEM_DICTS=TRUE
6245     AC_MSG_CHECKING([for spelling dictionary directory])
6246     if test -n "$with_external_dict_dir"; then
6247         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6248     else
6249         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6250         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6251             DICT_SYSTEM_DIR=file:///usr/share/myspell
6252         fi
6253     fi
6254     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6255     AC_MSG_CHECKING([for hyphenation patterns directory])
6256     if test -n "$with_external_hyph_dir"; then
6257         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6258     else
6259         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6260     fi
6261     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6262     AC_MSG_CHECKING([for thesaurus directory])
6263     if test -n "$with_external_thes_dir"; then
6264         THES_SYSTEM_DIR=file://$with_external_thes_dir
6265     else
6266         THES_SYSTEM_DIR=file:///usr/share/mythes
6267     fi
6268     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6269 else
6270     AC_MSG_RESULT([no])
6271     SYSTEM_DICTS=
6273 AC_SUBST(SYSTEM_DICTS)
6274 AC_SUBST(DICT_SYSTEM_DIR)
6275 AC_SUBST(HYPH_SYSTEM_DIR)
6276 AC_SUBST(THES_SYSTEM_DIR)
6278 dnl ===================================================================
6279 dnl Precompiled headers.
6280 ENABLE_PCH=""
6281 AC_MSG_CHECKING([whether to enable pch feature])
6282 if test -z "$enable_pch"; then
6283     if test "$_os" = "WINNT"; then
6284         # Enabled by default on Windows.
6285         enable_pch=yes
6286         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6287         if test -z "$enable_ccache" -a "$SCCACHE"; then
6288             CCACHE=""
6289         fi
6290     else
6291         enable_pch=no
6292     fi
6294 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6295     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6297 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6298     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6300 if test "$enable_pch" = "system"; then
6301     ENABLE_PCH="1"
6302     AC_MSG_RESULT([yes (system headers)])
6303 elif test "$enable_pch" = "base"; then
6304     ENABLE_PCH="2"
6305     AC_MSG_RESULT([yes (system and base headers)])
6306 elif test "$enable_pch" = "normal"; then
6307     ENABLE_PCH="3"
6308     AC_MSG_RESULT([yes (normal)])
6309 elif test "$enable_pch" = "full"; then
6310     ENABLE_PCH="4"
6311     AC_MSG_RESULT([yes (full)])
6312 elif test "$enable_pch" = "yes"; then
6313     # Pick a suitable default.
6314     if test "$GCC" = "yes"; then
6315         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6316         # while making the PCHs larger and rebuilds more likely.
6317         ENABLE_PCH="2"
6318         AC_MSG_RESULT([yes (system and base headers)])
6319     else
6320         # With MSVC the highest level makes a significant difference,
6321         # and it was the default when there used to be no PCH levels.
6322         ENABLE_PCH="4"
6323         AC_MSG_RESULT([yes (full)])
6324     fi
6325 elif test "$enable_pch" = "no"; then
6326     AC_MSG_RESULT([no])
6327 else
6328     AC_MSG_ERROR([Unknown value for --enable-pch])
6330 AC_SUBST(ENABLE_PCH)
6331 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6332 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6333     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6334     if test "$CCACHE_BIN" != "not found"; then
6335         AC_MSG_CHECKING([ccache version])
6336         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6337         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6338         AC_MSG_RESULT([$CCACHE_VERSION])
6339         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6340         if test "$CCACHE_NUMVER" -gt "030701"; then
6341             AC_MSG_RESULT([yes])
6342         else
6343             AC_MSG_RESULT([no (not newer than 3.7.1)])
6344             CCACHE_DEPEND_MODE=
6345         fi
6346     fi
6349 PCH_INSTANTIATE_TEMPLATES=
6350 if test -n "$ENABLE_PCH"; then
6351     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6352     save_CFLAGS=$CFLAGS
6353     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6354     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6355     CFLAGS=$save_CFLAGS
6356     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6357         AC_MSG_RESULT(yes)
6358     else
6359         AC_MSG_RESULT(no)
6360     fi
6362 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6364 BUILDING_PCH_WITH_OBJ=
6365 if test -n "$ENABLE_PCH"; then
6366     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6367     save_CFLAGS=$CFLAGS
6368     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6369     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6370     CFLAGS=$save_CFLAGS
6371     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6372         AC_MSG_RESULT(yes)
6373     else
6374         AC_MSG_RESULT(no)
6375     fi
6377 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6379 PCH_CODEGEN=
6380 PCH_NO_CODEGEN=
6381 fpch_prefix=
6382 if test "$COM" = MSC; then
6383     fpch_prefix="-Xclang "
6385 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6386     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6387     save_CFLAGS=$CFLAGS
6388     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6389     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6390         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6391     CFLAGS=$save_CFLAGS
6392     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6393     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6394         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6395     CFLAGS=$save_CFLAGS
6396     if test -n "$PCH_CODEGEN"; then
6397         AC_MSG_RESULT(yes)
6398     else
6399         AC_MSG_RESULT(no)
6400     fi
6402 AC_SUBST(PCH_CODEGEN)
6403 AC_SUBST(PCH_NO_CODEGEN)
6404 PCH_DEBUGINFO=
6405 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6406     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6407     save_CFLAGS=$CFLAGS
6408     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6409     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6410     CFLAGS=$save_CFLAGS
6411     if test -n "$PCH_DEBUGINFO"; then
6412         AC_MSG_RESULT(yes)
6413     else
6414         AC_MSG_RESULT(no)
6415     fi
6417 AC_SUBST(PCH_DEBUGINFO)
6419 TAB=`printf '\t'`
6421 AC_MSG_CHECKING([the GNU Make version])
6422 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6423 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6424 if test "$_make_longver" -ge "040000"; then
6425     AC_MSG_RESULT([$GNUMAKE $_make_version])
6426 else
6427     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6430 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6431 STALE_MAKE=
6432 if test "$_make_ver_check" = ""; then
6433    STALE_MAKE=TRUE
6436 HAVE_LD_HASH_STYLE=FALSE
6437 WITH_LINKER_HASH_STYLE=
6438 AC_MSG_CHECKING([for --hash-style gcc linker support])
6439 if test "$GCC" = "yes"; then
6440     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6441         hash_styles="gnu sysv"
6442     elif test "$with_linker_hash_style" = "no"; then
6443         hash_styles=
6444     else
6445         hash_styles="$with_linker_hash_style"
6446     fi
6448     for hash_style in $hash_styles; do
6449         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6450         hash_style_ldflags_save=$LDFLAGS
6451         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6453         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6454             [
6455 #include <stdio.h>
6456             ],[
6457 printf ("");
6458             ])],
6459             [
6460                   HAVE_LD_HASH_STYLE=TRUE
6461                   WITH_LINKER_HASH_STYLE=$hash_style
6462             ],
6463             [HAVE_LD_HASH_STYLE=FALSE],
6464             [HAVE_LD_HASH_STYLE=FALSE])
6465         LDFLAGS=$hash_style_ldflags_save
6466     done
6468     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6469         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6470     else
6471         AC_MSG_RESULT( no )
6472     fi
6473     LDFLAGS=$hash_style_ldflags_save
6474 else
6475     AC_MSG_RESULT( no )
6477 AC_SUBST(HAVE_LD_HASH_STYLE)
6478 AC_SUBST(WITH_LINKER_HASH_STYLE)
6480 dnl ===================================================================
6481 dnl Check whether there's a Perl version available.
6482 dnl ===================================================================
6483 if test -z "$with_perl_home"; then
6484     AC_PATH_PROG(PERL, perl)
6485 else
6486     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6487     _perl_path="$with_perl_home/bin/perl"
6488     if test -x "$_perl_path"; then
6489         PERL=$_perl_path
6490     else
6491         AC_MSG_ERROR([$_perl_path not found])
6492     fi
6495 dnl ===================================================================
6496 dnl Testing for Perl version 5 or greater.
6497 dnl $] is the Perl version variable, it is returned as an integer
6498 dnl ===================================================================
6499 if test "$PERL"; then
6500     AC_MSG_CHECKING([the Perl version])
6501     ${PERL} -e "exit($]);"
6502     _perl_version=$?
6503     if test "$_perl_version" -lt 5; then
6504         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6505     fi
6506     AC_MSG_RESULT([Perl $_perl_version])
6507 else
6508     AC_MSG_ERROR([Perl not found, install Perl 5])
6511 dnl ===================================================================
6512 dnl Testing for required Perl modules
6513 dnl ===================================================================
6515 AC_MSG_CHECKING([for required Perl modules])
6516 perl_use_string="use Cwd ; use Digest::MD5"
6517 if test "$_os" = "WINNT"; then
6518     if test -n "$PKGFORMAT"; then
6519         for i in $PKGFORMAT; do
6520             case "$i" in
6521             msi)
6522                 # for getting fonts versions to use in MSI
6523                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6524                 ;;
6525             esac
6526         done
6527     fi
6529 if test "$with_system_hsqldb" = "yes"; then
6530     perl_use_string="$perl_use_string ; use Archive::Zip"
6532 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6533     # OpenSSL needs that to build
6534     perl_use_string="$perl_use_string ; use FindBin"
6536 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6537     AC_MSG_RESULT([all modules found])
6538 else
6539     AC_MSG_RESULT([failed to find some modules])
6540     # Find out which modules are missing.
6541     for i in $perl_use_string; do
6542         if test "$i" != "use" -a "$i" != ";"; then
6543             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6544                 missing_perl_modules="$missing_perl_modules $i"
6545             fi
6546         fi
6547     done
6548     AC_MSG_ERROR([
6549     The missing Perl modules are: $missing_perl_modules
6550     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6553 dnl ===================================================================
6554 dnl Check for pkg-config
6555 dnl ===================================================================
6556 if test "$_os" != "WINNT"; then
6557     PKG_PROG_PKG_CONFIG
6559 AC_SUBST(PKG_CONFIG)
6560 AC_SUBST(PKG_CONFIG_PATH)
6561 AC_SUBST(PKG_CONFIG_LIBDIR)
6563 if test "$_os" != "WINNT"; then
6565     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6566     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6567     # explicitly. Or put /path/to/compiler in PATH yourself.
6569     toolprefix=gcc
6570     if test "$COM_IS_CLANG" = "TRUE"; then
6571         toolprefix=llvm
6572     fi
6573     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6574     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6575     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6576     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6577     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6578     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6580 AC_SUBST(AR)
6581 AC_SUBST(NM)
6582 AC_SUBST(OBJDUMP)
6583 AC_SUBST(RANLIB)
6584 AC_SUBST(READELF)
6585 AC_SUBST(STRIP)
6587 dnl ===================================================================
6588 dnl pkg-config checks on macOS
6589 dnl ===================================================================
6591 if test $_os = Darwin; then
6592     AC_MSG_CHECKING([for bogus pkg-config])
6593     if test -n "$PKG_CONFIG"; then
6594         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6595             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6596         else
6597             if test "$enable_bogus_pkg_config" = "yes"; then
6598                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6599             else
6600                 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.])
6601             fi
6602         fi
6603     else
6604         AC_MSG_RESULT([no, good])
6605     fi
6608 find_csc()
6610     # Return value: $csctest
6612     unset csctest
6614     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6615     if test -n "$regvalue"; then
6616         csctest=$regvalue
6617         return
6618     fi
6621 find_al()
6623     # Return value: $altest
6625     unset altest
6627     # We need this check to detect 4.6.1 or above.
6628     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6629         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6630         PathFormat "$regvalue"
6631         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6632             altest=$regvalue
6633             return
6634         fi
6635     done
6637     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6638     for x in $reglist; do
6639         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6640         PathFormat "$regvalue"
6641         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6642             altest=$regvalue
6643             return
6644         fi
6645     done
6648 find_dotnetsdk()
6650     unset frametest
6652     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
6653         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6654         if test -n "$regvalue"; then
6655             frametest=$regvalue
6656             return
6657         fi
6658     done
6659     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6662 find_winsdk_version()
6664     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6665     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6667     unset winsdktest winsdkbinsubdir winsdklibsubdir
6669     case "$1" in
6670     8.0|8.0A)
6671         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6672         if test -n "$regvalue"; then
6673             winsdktest=$regvalue
6674             winsdklibsubdir=win8
6675             return
6676         fi
6677         ;;
6678     8.1|8.1A)
6679         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6680         if test -n "$regvalue"; then
6681             winsdktest=$regvalue
6682             winsdklibsubdir=winv6.3
6683             return
6684         fi
6685         ;;
6686     10.0)
6687         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6688         if test -n "$regvalue"; then
6689             winsdktest=$regvalue
6690             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6691             if test -n "$regvalue"; then
6692                 winsdkbinsubdir="$regvalue".0
6693                 winsdklibsubdir=$winsdkbinsubdir
6694                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6695                 local tmppath_unix=$(cygpath -u "$tmppath")
6696                 # test exist the SDK path
6697                 if test -d "$tmppath_unix"; then
6698                    # when path is convertible to a short path then path is okay
6699                    cygpath -d "$tmppath" >/dev/null 2>&1
6700                    if test $? -ne 0; then
6701                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6702                    fi
6703                 else
6704                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6705                 fi
6706             fi
6707             return
6708         fi
6709         ;;
6710     esac
6713 find_winsdk()
6715     # Return value: From find_winsdk_version
6717     unset winsdktest
6719     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6720         find_winsdk_version $ver
6721         if test -n "$winsdktest"; then
6722             return
6723         fi
6724     done
6727 find_msms()
6729     # Return value: $msmdir
6730     local version="$1"
6732     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6733     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6734     local my_msm_dir
6736     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6738     msmdir=
6739     case "$VCVER" in
6740     16.0 | 17.0 | 17.9)
6741         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6742             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6743             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6744             if test -e "$my_msm_dir${my_msm_file}"; then
6745                 msmdir=$my_msm_dir
6746             fi
6747         done
6748         ;;
6749     esac
6751     if test -n "$msmdir"; then
6752         msmdir=`cygpath -m "$msmdir"`
6753         AC_MSG_RESULT([$msmdir])
6754     else
6755         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6756             AC_MSG_FAILURE([not found])
6757         else
6758             AC_MSG_WARN([not found (check config.log)])
6759             add_warning "MSM ${my_msm_file} not found"
6760         fi
6761     fi
6764 find_msvc_x64_dlls()
6766     # Return value: $msvcdllpath, $msvcdlls
6768     AC_MSG_CHECKING([for MSVC x64 DLL path])
6770     dnl Order crtver in increasing order. Then check the directories returned by
6771     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6772     dnl the result will be the highest CRT version found in the highest directory.
6774     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6775     case "$VCVER" in
6776     16.0 | 17.0 | 17.9)
6777         for crtver in 141 142 143; do
6778             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6779                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6780                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6781                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6782                 fi
6783             done
6784         done
6785         ;;
6786     esac
6787     AC_MSG_RESULT([$msvcdllpath])
6788     AC_MSG_CHECKING([for MSVC x64 DLLs])
6789     msvcdlls="msvcp140.dll vcruntime140.dll"
6790     for dll in $msvcdlls; do
6791         if ! test -f "$msvcdllpath/$dll"; then
6792             AC_MSG_FAILURE([missing $dll])
6793         fi
6794     done
6795     AC_MSG_RESULT([found all ($msvcdlls)])
6798 dnl =========================================
6799 dnl Check for the Windows  SDK.
6800 dnl =========================================
6801 if test "$_os" = "WINNT"; then
6802     AC_MSG_CHECKING([for Windows SDK])
6803     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6804         find_winsdk
6805         WINDOWS_SDK_HOME=$winsdktest
6807         # normalize if found
6808         if test -n "$WINDOWS_SDK_HOME"; then
6809             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6810             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6811         fi
6813         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6814     fi
6816     if test -n "$WINDOWS_SDK_HOME"; then
6817         # Remove a possible trailing backslash
6818         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6820         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6821              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6822              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6823             have_windows_sdk_headers=yes
6824         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6825              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6826              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6827             have_windows_sdk_headers=yes
6828         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6829              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6830              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6831             have_windows_sdk_headers=yes
6832         else
6833             have_windows_sdk_headers=no
6834         fi
6836         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6837             have_windows_sdk_libs=yes
6838         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6839             have_windows_sdk_libs=yes
6840         else
6841             have_windows_sdk_libs=no
6842         fi
6844         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6845             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6846 the  Windows SDK are installed.])
6847         fi
6848     fi
6850     if test -z "$WINDOWS_SDK_HOME"; then
6851         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6852     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6853         WINDOWS_SDK_VERSION=80
6854         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6855     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6856         WINDOWS_SDK_VERSION=81
6857         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6858     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6859         WINDOWS_SDK_VERSION=10
6860         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6861     else
6862         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6863     fi
6864     PathFormat "$WINDOWS_SDK_HOME"
6865     WINDOWS_SDK_HOME="$formatted_path"
6866     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6867     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6868         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6869         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6870             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6871         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6872             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6873         fi
6874     fi
6876     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6877     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6878     dnl but not in v8.0), so allow this to be overridden with a
6879     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6880     dnl and configuration error if no WiLangId.vbs is found would arguably be
6881     dnl better, but I do not know under which conditions exactly it is needed by
6882     dnl msiglobal.pm:
6883     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6884         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6885         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6886         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6887             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6888             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6889         fi
6890         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6891             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6892             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6893         fi
6894         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6895             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6896             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6897         fi
6898     fi
6899     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6900         if test -n "$with_package_format" -a "$with_package_format" != no; then
6901             for i in "$with_package_format"; do
6902                 if test "$i" = "msi"; then
6903                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6904                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6905                     fi
6906                 fi
6907             done
6908         fi
6909     fi
6911 AC_SUBST(WINDOWS_SDK_HOME)
6912 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6913 AC_SUBST(WINDOWS_SDK_VERSION)
6914 AC_SUBST(WINDOWS_SDK_WILANGID)
6916 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6917     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6918     dnl dir, it also determines that dir's path w/o an arch segment if any,
6919     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6920     AC_MSG_CHECKING([for midl.exe])
6922     find_winsdk
6923     PathFormat "$winsdktest"
6924     winsdktest_unix="$formatted_path_unix"
6926     if test -n "$winsdkbinsubdir" \
6927         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6928     then
6929         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6930         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6931     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6932         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6933         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6934     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6935         MIDL_PATH=$winsdktest/Bin
6936         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6937     fi
6938     PathFormat "$MIDL_PATH"
6939     if test ! -f "$formatted_path_unix/midl.exe"; then
6940         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6941     else
6942         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6943     fi
6945     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6946     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6948     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6949          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6950          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6951          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6952     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6953          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6954          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6955          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6956     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6957          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6958          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6959          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6960     else
6961         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6962     fi
6964     dnl Check csc.exe
6965     AC_MSG_CHECKING([for csc.exe])
6966     find_csc
6967     PathFormat "$csctest"
6968     csctest_unix="$formatted_path_unix"
6969     if test -f "$csctest_unix/csc.exe"; then
6970         CSC_PATH="$csctest"
6971     fi
6972     if test ! -f "$csctest_unix/csc.exe"; then
6973         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6974     else
6975         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6976     fi
6978     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6980     dnl Check al.exe
6981     AC_MSG_CHECKING([for al.exe])
6982     if test -n "$winsdkbinsubdir" \
6983         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6984     then
6985         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6986     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6987         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6988     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6989         AL_PATH="$winsdktest/Bin"
6990     fi
6992     if test -z "$AL_PATH"; then
6993         find_al
6994         PathFormat "$altest"
6995         altest_unix="$formatted_path_unix"
6996         if test -f "$altest_unix/bin/al.exe"; then
6997             AL_PATH="$altest/bin"
6998         elif test -f "$altest_unix/al.exe"; then
6999             AL_PATH="$altest"
7000         fi
7001     fi
7002     PathFormat "$AL_PATH"
7003     if test ! -f "$formatted_path_unix/al.exe"; then
7004         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7005     else
7006         AC_MSG_RESULT([$AL_PATH/al.exe])
7007     fi
7009     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7011     dnl Check mscoree.lib / .NET Framework dir
7012     AC_MSG_CHECKING(.NET Framework)
7013     find_dotnetsdk
7014     PathFormat "$frametest"
7015     frametest="$formatted_path_unix"
7016     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7017         DOTNET_FRAMEWORK_HOME="$frametest"
7018     else
7019         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7020             DOTNET_FRAMEWORK_HOME="$winsdktest"
7021         fi
7022     fi
7023     PathFormat "$DOTNET_FRAMEWORK_HOME"
7024     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
7025         AC_MSG_ERROR([mscoree.lib not found])
7026     fi
7027     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7029     PathFormat "$MIDL_PATH"
7030     MIDL_PATH="$formatted_path"
7032     PathFormat "$AL_PATH"
7033     AL_PATH="$formatted_path"
7035     PathFormat "$DOTNET_FRAMEWORK_HOME"
7036     DOTNET_FRAMEWORK_HOME="$formatted_path"
7038     PathFormat "$CSC_PATH"
7039     CSC_PATH="$formatted_path"
7042 dnl ===================================================================
7043 dnl Testing for C++ compiler and version...
7044 dnl ===================================================================
7046 if test "$_os" != "WINNT"; then
7047     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7048     save_CXXFLAGS=$CXXFLAGS
7049     AC_PROG_CXX
7050     CXXFLAGS=$save_CXXFLAGS
7051     if test -z "$CXX_BASE"; then
7052         CXX_BASE=`first_arg_basename "$CXX"`
7053     fi
7056 dnl check for GNU C++ compiler version
7057 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7058     AC_MSG_CHECKING([the GNU C++ compiler version])
7060     _gpp_version=`$CXX -dumpversion`
7061     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7063     if test "$_gpp_majmin" -lt "700"; then
7064         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7065     else
7066         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7067     fi
7069     dnl see https://issuetracker.google.com/issues/36962819
7070         glibcxx_threads=no
7071         AC_LANG_PUSH([C++])
7072         AC_REQUIRE_CPP
7073         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7074         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7075             #include <bits/c++config.h>]],[[
7076             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7077             && !defined(_GLIBCXX__PTHREADS) \
7078             && !defined(_GLIBCXX_HAS_GTHREADS)
7079             choke me
7080             #endif
7081         ]])],[AC_MSG_RESULT([yes])
7082         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7083         AC_LANG_POP([C++])
7084         if test $glibcxx_threads = yes; then
7085             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7086         fi
7088 AC_SUBST(BOOST_CXXFLAGS)
7091 # prefx CXX with ccache if needed
7093 if test "$CCACHE" != ""; then
7094     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7095     AC_LANG_PUSH([C++])
7096     save_CXXFLAGS=$CXXFLAGS
7097     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7098     # msvc does not fail on unknown options, check stdout
7099     if test "$COM" = MSC; then
7100         CXXFLAGS="$CXXFLAGS -nologo"
7101     fi
7102     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7103     ac_cxx_werror_flag=yes
7104     dnl an empty program will do, we're checking the compiler flags
7105     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7106                       [use_ccache=yes], [use_ccache=no])
7107     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7108         AC_MSG_RESULT([yes])
7109     else
7110         CXX="$CCACHE $CXX"
7111         CXX_BASE="ccache $CXX_BASE"
7112         AC_MSG_RESULT([no])
7113     fi
7114     CXXFLAGS=$save_CXXFLAGS
7115     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7116     AC_LANG_POP([C++])
7119 dnl ===================================================================
7120 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7121 dnl ===================================================================
7123 if test "$_os" != "WINNT"; then
7124     AC_PROG_CXXCPP
7126     dnl Check whether there's a C pre-processor.
7127     AC_PROG_CPP
7131 dnl ===================================================================
7132 dnl Find integral type sizes and alignments
7133 dnl ===================================================================
7135 if test "$_os" != "WINNT"; then
7137     AC_CHECK_SIZEOF(long)
7138     AC_CHECK_SIZEOF(short)
7139     AC_CHECK_SIZEOF(int)
7140     AC_CHECK_SIZEOF(long long)
7141     AC_CHECK_SIZEOF(double)
7142     AC_CHECK_SIZEOF(void*)
7143     AC_CHECK_SIZEOF(size_t)
7145     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7146     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7147     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7148     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7149     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7150     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7152     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7153     m4_pattern_allow([AC_CHECK_ALIGNOF])
7154     m4_ifdef([AC_CHECK_ALIGNOF],
7155         [
7156             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7157             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7158             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7159             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7160         ],
7161         [
7162             case "$_os-$host_cpu" in
7163             Linux-i686)
7164                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7165                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7166                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7167                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7168                 ;;
7169             Linux-x86_64)
7170                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7171                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7172                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7173                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7174                 ;;
7175             *)
7176                 if test -z "$ac_cv_alignof_short" -o \
7177                         -z "$ac_cv_alignof_int" -o \
7178                         -z "$ac_cv_alignof_long" -o \
7179                         -z "$ac_cv_alignof_double"; then
7180                    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.])
7181                 fi
7182                 ;;
7183             esac
7184         ])
7186     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7187     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7188     if test $ac_cv_sizeof_long -eq 8; then
7189         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7190     elif test $ac_cv_sizeof_double -eq 8; then
7191         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7192     else
7193         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7194     fi
7196     dnl Check for large file support
7197     AC_SYS_LARGEFILE
7198     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7199         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7200     fi
7201     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7202         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7203     fi
7204 else
7205     # Hardcode for MSVC
7206     SAL_TYPES_SIZEOFSHORT=2
7207     SAL_TYPES_SIZEOFINT=4
7208     SAL_TYPES_SIZEOFLONG=4
7209     SAL_TYPES_SIZEOFLONGLONG=8
7210     if test $WIN_HOST_BITS -eq 32; then
7211         SAL_TYPES_SIZEOFPOINTER=4
7212         SIZEOF_SIZE_T=4
7213     else
7214         SAL_TYPES_SIZEOFPOINTER=8
7215         SIZEOF_SIZE_T=8
7216     fi
7217     SAL_TYPES_ALIGNMENT2=2
7218     SAL_TYPES_ALIGNMENT4=4
7219     SAL_TYPES_ALIGNMENT8=8
7220     LFS_CFLAGS=''
7222 AC_SUBST(LFS_CFLAGS)
7223 AC_SUBST(SIZEOF_SIZE_T)
7225 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7226 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7227 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7228 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7229 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7230 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7231 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7232 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7234 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7235 AC_MSG_CHECKING([whether jumbo sheets are supported])
7236 if test "$_os" != "WINNT"; then
7237     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7238         AC_MSG_RESULT([yes])
7239         ENABLE_JUMBO_SHEETS=TRUE
7240         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7241     else
7242         AC_MSG_RESULT([no])
7243     fi
7244 else
7245     if test $WIN_HOST_BITS -gt 32; then
7246         # 64bit windows is special-cased for tools::Long because long is 32bit
7247         AC_MSG_RESULT([yes])
7248         ENABLE_JUMBO_SHEETS=TRUE
7249         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7250     else
7251         AC_MSG_RESULT([no])
7252     fi
7254 AC_SUBST(ENABLE_JUMBO_SHEETS)
7256 dnl ===================================================================
7257 dnl Check whether to enable runtime optimizations
7258 dnl ===================================================================
7259 ENABLE_RUNTIME_OPTIMIZATIONS=
7260 AC_MSG_CHECKING([whether to enable runtime optimizations])
7261 if test -z "$enable_runtime_optimizations"; then
7262     for i in $CC; do
7263         case $i in
7264         -fsanitize=*)
7265             enable_runtime_optimizations=no
7266             break
7267             ;;
7268         esac
7269     done
7271 if test "$enable_runtime_optimizations" != no; then
7272     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7273     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7274     AC_MSG_RESULT([yes])
7275 else
7276     AC_MSG_RESULT([no])
7278 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7280 dnl ===================================================================
7281 dnl Check if valgrind headers are available
7282 dnl ===================================================================
7283 ENABLE_VALGRIND=
7284 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7285     prev_cppflags=$CPPFLAGS
7286     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7287     # or where does it come from?
7288     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7289     AC_CHECK_HEADER([valgrind/valgrind.h],
7290         [ENABLE_VALGRIND=TRUE])
7291     CPPFLAGS=$prev_cppflags
7293 AC_SUBST([ENABLE_VALGRIND])
7294 if test -z "$ENABLE_VALGRIND"; then
7295     if test "$with_valgrind" = yes; then
7296         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7297     fi
7298     VALGRIND_CFLAGS=
7300 AC_SUBST([VALGRIND_CFLAGS])
7303 dnl ===================================================================
7304 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7305 dnl ===================================================================
7307 # We need at least the sys/sdt.h include header.
7308 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7309 if test "$SDT_H_FOUND" = "TRUE"; then
7310     # Found sys/sdt.h header, now make sure the c++ compiler works.
7311     # Old g++ versions had problems with probes in constructors/destructors.
7312     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7313     AC_LANG_PUSH([C++])
7314     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7315     #include <sys/sdt.h>
7316     class ProbeClass
7317     {
7318     private:
7319       int& ref;
7320       const char *name;
7322     public:
7323       ProbeClass(int& v, const char *n) : ref(v), name(n)
7324       {
7325         DTRACE_PROBE2(_test_, cons, name, ref);
7326       }
7328       void method(int min)
7329       {
7330         DTRACE_PROBE3(_test_, meth, name, ref, min);
7331         ref -= min;
7332       }
7334       ~ProbeClass()
7335       {
7336         DTRACE_PROBE2(_test_, dest, name, ref);
7337       }
7338     };
7339     ]],[[
7340     int i = 64;
7341     DTRACE_PROBE1(_test_, call, i);
7342     ProbeClass inst = ProbeClass(i, "call");
7343     inst.method(24);
7344     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7345           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7346     AC_LANG_POP([C++])
7348 AC_CONFIG_HEADERS([config_host/config_probes.h])
7350 dnl ===================================================================
7351 dnl GCC features
7352 dnl ===================================================================
7353 HAVE_GCC_STACK_CLASH_PROTECTION=
7354 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7355     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7356     save_CFLAGS=$CFLAGS
7357     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7358     AC_LINK_IFELSE(
7359         [AC_LANG_PROGRAM(, [[return 0;]])],
7360         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7361         [AC_MSG_RESULT([no])])
7362     CFLAGS=$save_CFLAGS
7364     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7365     save_CFLAGS=$CFLAGS
7366     CFLAGS="$CFLAGS -Werror -mno-avx"
7367     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7368     CFLAGS=$save_CFLAGS
7369     if test "$HAVE_GCC_AVX" = "TRUE"; then
7370         AC_MSG_RESULT([yes])
7371     else
7372         AC_MSG_RESULT([no])
7373     fi
7375     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7376     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7377     int v = 0;
7378     if (__sync_add_and_fetch(&v, 1) != 1 ||
7379         __sync_sub_and_fetch(&v, 1) != 0)
7380         return 1;
7381     __sync_synchronize();
7382     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7383         v != 1)
7384         return 1;
7385     return 0;
7386 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7387     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7388         AC_MSG_RESULT([yes])
7389         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7390     else
7391         AC_MSG_RESULT([no])
7392     fi
7394     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7395     AC_LANG_PUSH([C++])
7396     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7397             #include <cstddef>
7398             #include <cxxabi.h>
7399             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7400         ])], [
7401             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7402             AC_MSG_RESULT([yes])
7403         ], [AC_MSG_RESULT([no])])
7404     AC_LANG_POP([C++])
7406     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7407     AC_LANG_PUSH([C++])
7408     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7409             #include <cstddef>
7410             #include <cxxabi.h>
7411             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7412         ])], [
7413             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7414             AC_MSG_RESULT([yes])
7415         ], [AC_MSG_RESULT([no])])
7416     AC_LANG_POP([C++])
7418     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7419     AC_LANG_PUSH([C++])
7420     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7421             #include <cxxabi.h>
7422             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7423         ])], [
7424             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7425             AC_MSG_RESULT([yes])
7426         ], [AC_MSG_RESULT([no])])
7427     AC_LANG_POP([C++])
7429     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7430     AC_LANG_PUSH([C++])
7431     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7432             #include <cstddef>
7433             #include <cxxabi.h>
7434             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7435         ])], [
7436             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7437             AC_MSG_RESULT([yes])
7438         ], [AC_MSG_RESULT([no])])
7439     AC_LANG_POP([C++])
7441     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7442     AC_LANG_PUSH([C++])
7443     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7444             #include <cstddef>
7445             #include <cxxabi.h>
7446             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7447         ])], [
7448             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7449             AC_MSG_RESULT([yes])
7450         ], [AC_MSG_RESULT([no])])
7451     AC_LANG_POP([C++])
7453     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7454     AC_LANG_PUSH([C++])
7455     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7456             #include <cxxabi.h>
7457             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7458         ])], [
7459             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7460             AC_MSG_RESULT([yes])
7461         ], [AC_MSG_RESULT([no])])
7462     AC_LANG_POP([C++])
7464     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7465     AC_LANG_PUSH([C++])
7466     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7467             #include <cxxabi.h>
7468             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7469         ])], [
7470             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7471             AC_MSG_RESULT([yes])
7472         ], [AC_MSG_RESULT([no])])
7473     AC_LANG_POP([C++])
7475     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7476     AC_LANG_PUSH([C++])
7477     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7478             #include <cxxabi.h>
7479             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7480         ])], [
7481             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7482             AC_MSG_RESULT([yes])
7483         ], [AC_MSG_RESULT([no])])
7484     AC_LANG_POP([C++])
7486     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7487     AC_LANG_PUSH([C++])
7488     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7489             #include <cstddef>
7490             #include <cxxabi.h>
7491             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7492         ])], [
7493             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7494             AC_MSG_RESULT([yes])
7495         ], [AC_MSG_RESULT([no])])
7496     AC_LANG_POP([C++])
7498     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7499     AC_LANG_PUSH([C++])
7500     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7501             #include <cstddef>
7502             #include <cxxabi.h>
7503             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7504         ])], [
7505             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7506             AC_MSG_RESULT([yes])
7507         ], [AC_MSG_RESULT([no])])
7508     AC_LANG_POP([C++])
7511 AC_SUBST(HAVE_GCC_AVX)
7512 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7513 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7515 dnl ===================================================================
7516 dnl Identify the C++ library
7517 dnl ===================================================================
7519 AC_MSG_CHECKING([what the C++ library is])
7520 HAVE_LIBSTDCPP=
7521 HAVE_LIBCPP=
7522 AC_LANG_PUSH([C++])
7523 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7524 #include <utility>
7525 #ifndef __GLIBCXX__
7526 foo bar
7527 #endif
7528 ]])],
7529     [CPP_LIBRARY=GLIBCXX
7530      cpp_library_name="GNU libstdc++"
7531      HAVE_LIBSTDCPP=TRUE
7532     ],
7533     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7534 #include <utility>
7535 #ifndef _LIBCPP_VERSION
7536 foo bar
7537 #endif
7538 ]])],
7539     [CPP_LIBRARY=LIBCPP
7540      cpp_library_name="LLVM libc++"
7541      AC_DEFINE([HAVE_LIBCPP])
7542      HAVE_LIBCPP=TRUE
7543     ],
7544     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7545 #include <utility>
7546 #ifndef _MSC_VER
7547 foo bar
7548 #endif
7549 ]])],
7550     [CPP_LIBRARY=MSVCRT
7551      cpp_library_name="Microsoft"
7552     ],
7553     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7554 AC_MSG_RESULT([$cpp_library_name])
7555 AC_LANG_POP([C++])
7556 AC_SUBST([HAVE_LIBSTDCPP])
7557 AC_SUBST([HAVE_LIBCPP])
7559 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7560 then
7561     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7562     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7563     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7564     # although there will be backwards compatibility).
7565     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7566     # and there would be undefined references to debug functions.
7567     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7568     # So check if debug mode can be used and disable or downgrade it to assertions
7569     # if needed.
7570     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7571     AC_LANG_PUSH([C++])
7572     libcpp_debug_links=
7573     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7574 #define _LIBCPP_DEBUG 0 // only assertions
7575 #include <vector>
7576 int main()
7578     std::vector<int> v;
7579     v.push_back( 1 );
7580     return v[ 3 ];
7582 ]])], [libcpp_debug_links=1])
7583     if test -n "$libcpp_debug_links"; then
7584         # we can use at least assertions, check if debug mode works
7585         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7586 #define _LIBCPP_DEBUG 1 // debug mode
7587 #include <string>
7588 #include <vector>
7589 int foo(const std::vector<int>& v) { return *v.begin(); }
7590 int main()
7592     std::vector<int> v;
7593     v.push_back( 1 );
7594     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7595     return (foo(v) + s.size()) != 0 ? 0 : 1;
7597 ]])],
7598         [AC_MSG_RESULT(yes)
7599          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7600         ],
7601         [AC_MSG_RESULT(no, using only assertions)
7602          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7603         ]
7604         )
7605     else
7606         AC_MSG_RESULT(no)
7607     fi
7608     AC_LANG_POP([C++])
7610 AC_SUBST([LIBCPP_DEBUG])
7612 dnl ===================================================================
7613 dnl Check for gperf
7614 dnl ===================================================================
7615 AC_PATH_PROG(GPERF, gperf)
7616 if test -z "$GPERF"; then
7617     AC_MSG_ERROR([gperf not found but needed. Install it.])
7619 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7620     GPERF=`cygpath -m $GPERF`
7622 AC_MSG_CHECKING([whether gperf is new enough])
7623 my_gperf_ver1=$($GPERF --version | head -n 1)
7624 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7625 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7626 if test "$my_gperf_ver3" -ge 301; then
7627     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7628 else
7629     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7631 AC_SUBST(GPERF)
7633 dnl ===================================================================
7634 dnl Check for system libcmis
7635 dnl ===================================================================
7636 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7638 dnl ===================================================================
7639 dnl C++11
7640 dnl ===================================================================
7642 if test -z "${CXXFLAGS_CXX11+x}"; then
7643     AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7644     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7645         if test "$with_latest_c__" = yes; then
7646             CXXFLAGS_CXX11=-std:c++latest
7647         else
7648             CXXFLAGS_CXX11=-std:c++20
7649         fi
7650         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7651     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7652         my_flags='-std=c++20 -std=c++2a'
7653         if test "$with_latest_c__" = yes; then
7654             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7655         fi
7656         for flag in $my_flags; do
7657             if test "$COM" = MSC; then
7658                 flag="-Xclang $flag"
7659             fi
7660             save_CXXFLAGS=$CXXFLAGS
7661             CXXFLAGS="$CXXFLAGS $flag -Werror"
7662             AC_LANG_PUSH([C++])
7663             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7664                 #include <algorithm>
7665                 #include <functional>
7666                 #include <vector>
7668                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7669                     std::sort(v.begin(), v.end(), fn);
7670                 }
7671                 ]])],[CXXFLAGS_CXX11=$flag])
7672             AC_LANG_POP([C++])
7673             CXXFLAGS=$save_CXXFLAGS
7674             if test -n "$CXXFLAGS_CXX11"; then
7675                 break
7676             fi
7677         done
7678     fi
7679     if test -n "$CXXFLAGS_CXX11"; then
7680         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7681     else
7682         AC_MSG_ERROR(no)
7683     fi
7685 AC_SUBST(CXXFLAGS_CXX11)
7687 if test "$GCC" = "yes"; then
7688     save_CXXFLAGS=$CXXFLAGS
7689     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7690     CHECK_L_ATOMIC
7691     CXXFLAGS=$save_CXXFLAGS
7692     AC_SUBST(ATOMIC_LIB)
7695 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7696 save_CXXFLAGS=$CXXFLAGS
7697 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7698 AC_LANG_PUSH([C++])
7700 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7701 #include <stddef.h>
7703 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7705 namespace
7707         struct b
7708         {
7709                 int i;
7710                 int j;
7711         };
7713 ]], [[
7714 struct a
7716         int i;
7717         int j;
7719 a thinga[]={{0,0}, {1,1}};
7720 b thingb[]={{0,0}, {1,1}};
7721 size_t i = sizeof(sal_n_array_size(thinga));
7722 size_t j = sizeof(sal_n_array_size(thingb));
7723 return !(i != 0 && j != 0);
7725     ], [ AC_MSG_RESULT(yes) ],
7726     [ AC_MSG_ERROR(no)])
7727 AC_LANG_POP([C++])
7728 CXXFLAGS=$save_CXXFLAGS
7730 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7731 if test "$GCC" = yes; then
7732     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7733     AC_LANG_PUSH([C++])
7734     save_CXXFLAGS=$CXXFLAGS
7735     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7736     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7737     CXXFLAGS=$save_CXXFLAGS
7738     AC_LANG_POP([C++])
7739     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7740         AC_MSG_RESULT([yes])
7741     else
7742         AC_MSG_RESULT([no])
7743     fi
7745 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7747 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7748 AC_LANG_PUSH([C++])
7749 save_CXXFLAGS=$CXXFLAGS
7750 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7751 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7752         #include <algorithm>
7753         #include <initializer_list>
7754         #include <vector>
7755         template<typename T> class S {
7756         private:
7757             std::vector<T> v_;
7758         public:
7759             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7760         };
7761         constinit S<int> s{3, 2, 1};
7762     ])], [
7763         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7764         AC_MSG_RESULT([yes])
7765     ], [AC_MSG_RESULT([no])])
7766 CXXFLAGS=$save_CXXFLAGS
7767 AC_LANG_POP([C++])
7769 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7770 AC_LANG_PUSH([C++])
7771 save_CXXFLAGS=$CXXFLAGS
7772 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7773 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7774         struct S1 { S1(S1 &&); };
7775         struct S2: S1 {};
7776         S1 f(S2 s) { return s; }
7777     ])], [
7778         AC_DEFINE([HAVE_P1155R3],[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 supports C++20 std::atomic_ref])
7785 HAVE_CXX20_ATOMIC_REF=
7786 AC_LANG_PUSH([C++])
7787 save_CXXFLAGS=$CXXFLAGS
7788 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7789 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7790         #include <atomic>
7791         int x;
7792         std::atomic_ref<int> y(x);
7793     ])], [
7794         HAVE_CXX20_ATOMIC_REF=TRUE
7795         AC_MSG_RESULT([yes])
7796     ], [AC_MSG_RESULT([no])])
7797 CXXFLAGS=$save_CXXFLAGS
7798 AC_LANG_POP([C++])
7799 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7801 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7802 dnl which is included in -Wextra anyway):
7803 HAVE_WDEPRECATED_COPY_DTOR=
7804 if test "$GCC" = yes; then
7805     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7806     AC_LANG_PUSH([C++])
7807     save_CXXFLAGS=$CXXFLAGS
7808     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7809     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7810             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7811             AC_MSG_RESULT([yes])
7812         ], [AC_MSG_RESULT([no])])
7813     CXXFLAGS=$save_CXXFLAGS
7814     AC_LANG_POP([C++])
7816 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7818 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7819 dnl uninitialized warning for code like
7821 dnl   OString f();
7822 dnl   boost::optional<OString> * g(bool b) {
7823 dnl       boost::optional<OString> o;
7824 dnl       if (b) o = f();
7825 dnl       return new boost::optional<OString>(o);
7826 dnl   }
7828 dnl (as is e.g. present, in a slightly more elaborate form, in
7829 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7830 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7831 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7832 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7833     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7834     AC_LANG_PUSH([C++])
7835     save_CXXFLAGS=$CXXFLAGS
7836     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7837     if test "$ENABLE_OPTIMIZED" = TRUE; then
7838         CXXFLAGS="$CXXFLAGS -O2"
7839     else
7840         CXXFLAGS="$CXXFLAGS -O0"
7841     fi
7842     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7843             #include <new>
7844             void f1(int);
7845             struct S1 {
7846                 ~S1() { f1(n); }
7847                 int n = 0;
7848             };
7849             struct S2 {
7850                 S2() {}
7851                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7852                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7853                 void set(S1 s) {
7854                     new (stg) S1(s);
7855                     init = true;
7856                 }
7857                 bool init = false;
7858                 char stg[sizeof (S1)];
7859             } ;
7860             S1 f2();
7861             S2 * f3(bool b) {
7862                 S2 o;
7863                 if (b) o.set(f2());
7864                 return new S2(o);
7865             }
7866         ]])], [AC_MSG_RESULT([no])], [
7867             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7868             AC_MSG_RESULT([yes])
7869         ])
7870     CXXFLAGS=$save_CXXFLAGS
7871     AC_LANG_POP([C++])
7873 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7875 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7876 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7877 dnl hits us e.g. with GCC 10 and --enable-optimized at
7879 dnl   In file included from include/rtl/string.hxx:49,
7880 dnl                    from include/rtl/ustring.hxx:43,
7881 dnl                    from include/osl/file.hxx:35,
7882 dnl                    from include/codemaker/global.hxx:28,
7883 dnl                    from include/codemaker/options.hxx:23,
7884 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7885 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7886 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,
7887 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,
7888 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,
7889 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7890 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7891 dnl      78 |         memcpy( buffer, data, length );
7892 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7893 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7894 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7895     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7896     AC_LANG_PUSH([C++])
7897     save_CXXFLAGS=$CXXFLAGS
7898     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7899     if test "$ENABLE_OPTIMIZED" = TRUE; then
7900         CXXFLAGS="$CXXFLAGS -O2"
7901     else
7902         CXXFLAGS="$CXXFLAGS -O0"
7903     fi
7904     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7905     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7906             void fill(char const * begin, char const * end, char c);
7907             struct q {
7908                 char ids[4];
7909                 char username[6];
7910             };
7911             void test(q & c) {
7912                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7913                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7914             }
7915         ]])], [AC_MSG_RESULT([no])], [
7916             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7917             AC_MSG_RESULT([yes])
7918         ])
7919     CXXFLAGS=$save_CXXFLAGS
7920     AC_LANG_POP([C++])
7922 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7924 HAVE_DLLEXPORTINLINES=
7925 if test "$_os" = "WINNT"; then
7926     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7927     AC_LANG_PUSH([C++])
7928     save_CXXFLAGS=$CXXFLAGS
7929     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7930     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7931             HAVE_DLLEXPORTINLINES=TRUE
7932             AC_MSG_RESULT([yes])
7933         ], [AC_MSG_RESULT([no])])
7934     CXXFLAGS=$save_CXXFLAGS
7935     AC_LANG_POP([C++])
7937 AC_SUBST([HAVE_DLLEXPORTINLINES])
7939 dnl ===================================================================
7940 dnl CPU Intrinsics support - SSE, AVX
7941 dnl ===================================================================
7943 CXXFLAGS_INTRINSICS_SSE2=
7944 CXXFLAGS_INTRINSICS_SSSE3=
7945 CXXFLAGS_INTRINSICS_SSE41=
7946 CXXFLAGS_INTRINSICS_SSE42=
7947 CXXFLAGS_INTRINSICS_AVX=
7948 CXXFLAGS_INTRINSICS_AVX2=
7949 CXXFLAGS_INTRINSICS_AVX512=
7950 CXXFLAGS_INTRINSICS_AVX512F=
7951 CXXFLAGS_INTRINSICS_F16C=
7952 CXXFLAGS_INTRINSICS_FMA=
7954 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7955     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7956     flag_sse2=-msse2
7957     flag_ssse3=-mssse3
7958     flag_sse41=-msse4.1
7959     flag_sse42=-msse4.2
7960     flag_avx=-mavx
7961     flag_avx2=-mavx2
7962     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7963     flag_avx512f=-mavx512f
7964     flag_f16c=-mf16c
7965     flag_fma=-mfma
7966 else
7967     # With MSVC using -arch is in fact not necessary for being able
7968     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7969     # even if compiled with -arch:AVX, the -arch option really only affects
7970     # instructions generated for C/C++ code.
7971     # So use the matching same (or lower) -arch options, but only in order
7972     # to generate the best matching instructions for the C++ code surrounding
7973     # the intrinsics.
7974     # SSE2 is the default for x86/x64, so no need to specify the option.
7975     flag_sse2=
7976     # No specific options for these, use the next lower.
7977     flag_ssse3="$flag_sse2"
7978     flag_sse41="$flag_sse2"
7979     flag_sse42="$flag_sse2"
7980     flag_avx=-arch:AVX
7981     flag_avx2=-arch:AVX2
7982     flag_avx512=-arch:AVX512
7983     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7984     flag_avx512f=-arch:AVX2
7985     # No MSVC options for these.
7986     flag_f16c="$flag_sse2"
7987     flag_fma="$flag_sse2"
7990 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7991 AC_LANG_PUSH([C++])
7992 save_CXXFLAGS=$CXXFLAGS
7993 CXXFLAGS="$CXXFLAGS $flag_sse2"
7994 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7995     #include <emmintrin.h>
7996     int main () {
7997         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7998         c = _mm_xor_si128 (a, b);
7999         return 0;
8000     }
8001     ])],
8002     [can_compile_sse2=yes],
8003     [can_compile_sse2=no])
8004 AC_LANG_POP([C++])
8005 CXXFLAGS=$save_CXXFLAGS
8006 AC_MSG_RESULT([${can_compile_sse2}])
8007 if test "${can_compile_sse2}" = "yes" ; then
8008     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8011 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8012 AC_LANG_PUSH([C++])
8013 save_CXXFLAGS=$CXXFLAGS
8014 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8015 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8016     #include <tmmintrin.h>
8017     int main () {
8018         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8019         c = _mm_maddubs_epi16 (a, b);
8020         return 0;
8021     }
8022     ])],
8023     [can_compile_ssse3=yes],
8024     [can_compile_ssse3=no])
8025 AC_LANG_POP([C++])
8026 CXXFLAGS=$save_CXXFLAGS
8027 AC_MSG_RESULT([${can_compile_ssse3}])
8028 if test "${can_compile_ssse3}" = "yes" ; then
8029     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8032 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8033 AC_LANG_PUSH([C++])
8034 save_CXXFLAGS=$CXXFLAGS
8035 CXXFLAGS="$CXXFLAGS $flag_sse41"
8036 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8037     #include <smmintrin.h>
8038     int main () {
8039         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8040         c = _mm_cmpeq_epi64 (a, b);
8041         return 0;
8042     }
8043     ])],
8044     [can_compile_sse41=yes],
8045     [can_compile_sse41=no])
8046 AC_LANG_POP([C++])
8047 CXXFLAGS=$save_CXXFLAGS
8048 AC_MSG_RESULT([${can_compile_sse41}])
8049 if test "${can_compile_sse41}" = "yes" ; then
8050     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8053 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8054 AC_LANG_PUSH([C++])
8055 save_CXXFLAGS=$CXXFLAGS
8056 CXXFLAGS="$CXXFLAGS $flag_sse42"
8057 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8058     #include <nmmintrin.h>
8059     int main () {
8060         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8061         c = _mm_cmpgt_epi64 (a, b);
8062         return 0;
8063     }
8064     ])],
8065     [can_compile_sse42=yes],
8066     [can_compile_sse42=no])
8067 AC_LANG_POP([C++])
8068 CXXFLAGS=$save_CXXFLAGS
8069 AC_MSG_RESULT([${can_compile_sse42}])
8070 if test "${can_compile_sse42}" = "yes" ; then
8071     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8074 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8075 AC_LANG_PUSH([C++])
8076 save_CXXFLAGS=$CXXFLAGS
8077 CXXFLAGS="$CXXFLAGS $flag_avx"
8078 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8079     #include <immintrin.h>
8080     int main () {
8081         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8082         c = _mm256_xor_ps(a, b);
8083         return 0;
8084     }
8085     ])],
8086     [can_compile_avx=yes],
8087     [can_compile_avx=no])
8088 AC_LANG_POP([C++])
8089 CXXFLAGS=$save_CXXFLAGS
8090 AC_MSG_RESULT([${can_compile_avx}])
8091 if test "${can_compile_avx}" = "yes" ; then
8092     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8095 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8096 AC_LANG_PUSH([C++])
8097 save_CXXFLAGS=$CXXFLAGS
8098 CXXFLAGS="$CXXFLAGS $flag_avx2"
8099 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8100     #include <immintrin.h>
8101     int main () {
8102         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8103         c = _mm256_maddubs_epi16(a, b);
8104         return 0;
8105     }
8106     ])],
8107     [can_compile_avx2=yes],
8108     [can_compile_avx2=no])
8109 AC_LANG_POP([C++])
8110 CXXFLAGS=$save_CXXFLAGS
8111 AC_MSG_RESULT([${can_compile_avx2}])
8112 if test "${can_compile_avx2}" = "yes" ; then
8113     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8116 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8117 AC_LANG_PUSH([C++])
8118 save_CXXFLAGS=$CXXFLAGS
8119 CXXFLAGS="$CXXFLAGS $flag_avx512"
8120 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8121     #include <immintrin.h>
8122     int main () {
8123         __m512i a = _mm512_loadu_si512(0);
8124         __m512d v1 = _mm512_load_pd(0);
8125         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8126         __m512d v2 = _mm512_abs_pd(v1);
8127         return 0;
8128     }
8129     ])],
8130     [can_compile_avx512=yes],
8131     [can_compile_avx512=no])
8132 AC_LANG_POP([C++])
8133 CXXFLAGS=$save_CXXFLAGS
8134 AC_MSG_RESULT([${can_compile_avx512}])
8135 if test "${can_compile_avx512}" = "yes" ; then
8136     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8137     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8140 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8141 AC_LANG_PUSH([C++])
8142 save_CXXFLAGS=$CXXFLAGS
8143 CXXFLAGS="$CXXFLAGS $flag_f16c"
8144 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8145     #include <immintrin.h>
8146     int main () {
8147         __m128i a = _mm_set1_epi32 (0);
8148         __m128 c;
8149         c = _mm_cvtph_ps(a);
8150         return 0;
8151     }
8152     ])],
8153     [can_compile_f16c=yes],
8154     [can_compile_f16c=no])
8155 AC_LANG_POP([C++])
8156 CXXFLAGS=$save_CXXFLAGS
8157 AC_MSG_RESULT([${can_compile_f16c}])
8158 if test "${can_compile_f16c}" = "yes" ; then
8159     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8162 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8163 AC_LANG_PUSH([C++])
8164 save_CXXFLAGS=$CXXFLAGS
8165 CXXFLAGS="$CXXFLAGS $flag_fma"
8166 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8167     #include <immintrin.h>
8168     int main () {
8169         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8170         d = _mm256_fmadd_ps(a, b, c);
8171         return 0;
8172     }
8173     ])],
8174     [can_compile_fma=yes],
8175     [can_compile_fma=no])
8176 AC_LANG_POP([C++])
8177 CXXFLAGS=$save_CXXFLAGS
8178 AC_MSG_RESULT([${can_compile_fma}])
8179 if test "${can_compile_fma}" = "yes" ; then
8180     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8183 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8184 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8185 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8186 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8187 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8188 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8189 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8190 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8191 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8192 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8194 dnl ===================================================================
8195 dnl system stl sanity tests
8196 dnl ===================================================================
8197 if test "$_os" != "WINNT"; then
8199     AC_LANG_PUSH([C++])
8201     save_CPPFLAGS="$CPPFLAGS"
8202     if test -n "$MACOSX_SDK_PATH"; then
8203         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8204     fi
8206     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8207     # only.
8208     if test "$CPP_LIBRARY" = GLIBCXX; then
8209         dnl gcc#19664, gcc#22482, rhbz#162935
8210         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8211         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8212         AC_MSG_RESULT([$stlvisok])
8213         if test "$stlvisok" = "no"; then
8214             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8215         fi
8216     fi
8218     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8219     # when we don't make any dynamic libraries?
8220     if test "$DISABLE_DYNLOADING" = ""; then
8221         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8222         cat > conftestlib1.cc <<_ACEOF
8223 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8224 struct S2: S1<int> { virtual ~S2(); };
8225 S2::~S2() {}
8226 _ACEOF
8227         cat > conftestlib2.cc <<_ACEOF
8228 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8229 struct S2: S1<int> { virtual ~S2(); };
8230 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8231 _ACEOF
8232         gccvisinlineshiddenok=yes
8233         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8234             gccvisinlineshiddenok=no
8235         else
8236             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8237             dnl known to not work with -z defs (unsetting which makes the test
8238             dnl moot, though):
8239             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8240             if test "$COM_IS_CLANG" = TRUE; then
8241                 for i in $CXX $CXXFLAGS; do
8242                     case $i in
8243                     -fsanitize=*)
8244                         my_linkflagsnoundefs=
8245                         break
8246                         ;;
8247                     esac
8248                 done
8249             fi
8250             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8251                 gccvisinlineshiddenok=no
8252             fi
8253         fi
8255         rm -fr libconftest*
8256         AC_MSG_RESULT([$gccvisinlineshiddenok])
8257         if test "$gccvisinlineshiddenok" = "no"; then
8258             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8259         fi
8260     fi
8262    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8263     cat >visibility.cxx <<_ACEOF
8264 #pragma GCC visibility push(hidden)
8265 struct __attribute__ ((visibility ("default"))) TestStruct {
8266   static void Init();
8268 __attribute__ ((visibility ("default"))) void TestFunc() {
8269   TestStruct::Init();
8271 _ACEOF
8272     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8273         gccvisbroken=yes
8274     else
8275         case "$host_cpu" in
8276         i?86|x86_64)
8277             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8278                 gccvisbroken=no
8279             else
8280                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8281                     gccvisbroken=no
8282                 else
8283                     gccvisbroken=yes
8284                 fi
8285             fi
8286             ;;
8287         *)
8288             gccvisbroken=no
8289             ;;
8290         esac
8291     fi
8292     rm -f visibility.s visibility.cxx
8294     AC_MSG_RESULT([$gccvisbroken])
8295     if test "$gccvisbroken" = "yes"; then
8296         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8297     fi
8299     CPPFLAGS="$save_CPPFLAGS"
8301     AC_MSG_CHECKING([if CET endbranch is recognized])
8302 cat > endbr.s <<_ACEOF
8303 endbr32
8304 _ACEOF
8305     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8306     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8307         AC_MSG_RESULT([yes])
8308         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8309     else
8310         AC_MSG_RESULT([no])
8311     fi
8312     rm -f endbr.s endbr.o
8313     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8315     AC_LANG_POP([C++])
8318 dnl ===================================================================
8319 dnl  Clang++ tests
8320 dnl ===================================================================
8322 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8323 if test "$GCC" = "yes"; then
8324     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8325     AC_LANG_PUSH([C++])
8326     save_CXXFLAGS=$CXXFLAGS
8327     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8328     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8329     CXXFLAGS=$save_CXXFLAGS
8330     AC_LANG_POP([C++])
8331     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8332         AC_MSG_RESULT([yes])
8333     else
8334         AC_MSG_RESULT([no])
8335     fi
8337 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8339 dnl ===================================================================
8340 dnl Compiler plugins
8341 dnl ===================================================================
8343 COMPILER_PLUGINS=
8344 # currently only Clang
8346 if test "$COM_IS_CLANG" != "TRUE"; then
8347     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8348         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8349         enable_compiler_plugins=no
8350     fi
8353 COMPILER_PLUGINS_COM_IS_CLANG=
8354 if test "$COM_IS_CLANG" = "TRUE"; then
8355     if test -n "$enable_compiler_plugins"; then
8356         compiler_plugins="$enable_compiler_plugins"
8357     elif test -n "$ENABLE_DBGUTIL"; then
8358         compiler_plugins=test
8359     else
8360         compiler_plugins=no
8361     fi
8362     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8363         if test "$CLANGVER" -lt 120001; then
8364             if test "$compiler_plugins" = yes; then
8365                 AC_MSG_ERROR(
8366                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8367             else
8368                 compiler_plugins=no
8369             fi
8370         fi
8371     fi
8372     if test "$compiler_plugins" != "no"; then
8373         dnl The prefix where Clang resides, override to where Clang resides if
8374         dnl using a source build:
8375         if test -z "$CLANGDIR"; then
8376             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8377         fi
8378         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8379         if test -z "$COMPILER_PLUGINS_CXX"; then
8380             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8381         fi
8382         clangbindir=$CLANGDIR/bin
8383         if test "$build_os" = "cygwin"; then
8384             clangbindir=$(cygpath -u "$clangbindir")
8385         fi
8386         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8387         if test -n "$LLVM_CONFIG"; then
8388             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8389             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8390             if test -z "$CLANGLIBDIR"; then
8391                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8392             fi
8393             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8394             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8395             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8396                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8397                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8398                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8399                 fi
8400             fi
8401             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8402             clangobjdir=$($LLVM_CONFIG --obj-root)
8403             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8404                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8405             fi
8406         fi
8407         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8408         AC_LANG_PUSH([C++])
8409         save_CXX=$CXX
8410         save_CXXCPP=$CXXCPP
8411         save_CPPFLAGS=$CPPFLAGS
8412         save_CXXFLAGS=$CXXFLAGS
8413         save_LDFLAGS=$LDFLAGS
8414         save_LIBS=$LIBS
8415         CXX=$COMPILER_PLUGINS_CXX
8416         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8417         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8418         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8419         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8420             [COMPILER_PLUGINS=TRUE],
8421             [
8422             if test "$compiler_plugins" = "yes"; then
8423                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8424             else
8425                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8426                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8427             fi
8428             ])
8429         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8430         dnl comment in compilerplugins/Makefile-clang.mk:
8431         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8432             LDFLAGS=""
8433             AC_MSG_CHECKING([for clang libraries to use])
8434             if test -z "$CLANGTOOLLIBS"; then
8435                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8436                 AC_LINK_IFELSE([
8437                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8438                         [[ clang::FullSourceLoc().dump(); ]])
8439                 ],[CLANGTOOLLIBS="$LIBS"],[])
8440             fi
8441             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8442             dnl list of individual -lclang* (but note that that list can become outdated over time,
8443             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8444             dnl needs to include -lclangSupport now"):
8445             if test -z "$CLANGTOOLLIBS"; then
8446                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8447  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8448                 AC_LINK_IFELSE([
8449                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8450                         [[ clang::FullSourceLoc().dump(); ]])
8451                 ],[CLANGTOOLLIBS="$LIBS"],[])
8452             fi
8453             AC_MSG_RESULT([$CLANGTOOLLIBS])
8454             if test -z "$CLANGTOOLLIBS"; then
8455                 if test "$compiler_plugins" = "yes"; then
8456                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8457                 else
8458                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8459                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8460                 fi
8461                 COMPILER_PLUGINS=
8462             fi
8463             if test -n "$COMPILER_PLUGINS"; then
8464                 if test -z "$CLANGSYSINCLUDE"; then
8465                     if test -n "$LLVM_CONFIG"; then
8466                         # Path to the clang system headers (no idea if there's a better way to get it).
8467                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8468                     fi
8469                 fi
8470             fi
8471         fi
8472         CXX=$save_CXX
8473         CXXCPP=$save_CXXCPP
8474         CPPFLAGS=$save_CPPFLAGS
8475         CXXFLAGS=$save_CXXFLAGS
8476         LDFLAGS=$save_LDFLAGS
8477         LIBS="$save_LIBS"
8478         AC_LANG_POP([C++])
8480         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8481         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8482             #ifndef __clang__
8483             you lose
8484             #endif
8485             int foo=42;
8486             ]])],
8487             [AC_MSG_RESULT([yes])
8488              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8489             [AC_MSG_RESULT([no])])
8490         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8491     fi
8492 else
8493     if test "$enable_compiler_plugins" = "yes"; then
8494         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8495     fi
8497 COMPILER_PLUGINS_ANALYZER_PCH=
8498 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8499     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8501 AC_SUBST(COMPILER_PLUGINS)
8502 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8503 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8504 AC_SUBST(COMPILER_PLUGINS_CXX)
8505 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8506 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8507 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8508 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8509 AC_SUBST(CLANGDIR)
8510 AC_SUBST(CLANGLIBDIR)
8511 AC_SUBST(CLANGTOOLLIBS)
8512 AC_SUBST(CLANGSYSINCLUDE)
8514 # Plugin to help linker.
8515 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8516 # This makes --enable-lto build with clang work.
8517 AC_SUBST(LD_PLUGIN)
8519 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8520 AC_SUBST(HAVE_POSIX_FALLOCATE)
8522 JITC_PROCESSOR_TYPE=""
8523 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8524     # IBMs JDK needs this...
8525     JITC_PROCESSOR_TYPE=6
8526     export JITC_PROCESSOR_TYPE
8528 AC_SUBST([JITC_PROCESSOR_TYPE])
8530 # Misc Windows Stuff
8531 AC_ARG_WITH(ucrt-dir,
8532     AS_HELP_STRING([--with-ucrt-dir],
8533         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8534         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8535         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8536             Windows6.1-KB2999226-x64.msu
8537             Windows6.1-KB2999226-x86.msu
8538             Windows8.1-KB2999226-x64.msu
8539             Windows8.1-KB2999226-x86.msu
8540             Windows8-RT-KB2999226-x64.msu
8541             Windows8-RT-KB2999226-x86.msu
8542         A zip archive including those files is available from Microsoft site:
8543         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8546 UCRT_REDISTDIR="$with_ucrt_dir"
8547 if test $_os = "WINNT"; then
8548     find_msvc_x64_dlls
8549     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8550     MSVC_DLLS="$msvcdlls"
8551     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8552         with_redist=143
8553     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8554         with_redist=142
8555     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8556         with_redist=141
8557     fi
8558     for i in $PKGFORMAT; do
8559         if test "$i" = msi; then
8560             find_msms "$with_redist"
8561             if test -n "$msmdir"; then
8562                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8563                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8564             fi
8565             break
8566         fi
8567     done
8569     if test "$UCRT_REDISTDIR" = "no"; then
8570         dnl explicitly disabled
8571         UCRT_REDISTDIR=""
8572     else
8573         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8574                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8575                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8576                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8577                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8578                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8579             UCRT_REDISTDIR=""
8580             if test -n "$PKGFORMAT"; then
8581                for i in $PKGFORMAT; do
8582                    case "$i" in
8583                    msi)
8584                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8585                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8586                        ;;
8587                    esac
8588                done
8589             fi
8590         fi
8591     fi
8594 AC_SUBST(UCRT_REDISTDIR)
8595 AC_SUBST(MSVC_DLL_PATH)
8596 AC_SUBST(MSVC_DLLS)
8597 AC_SUBST(MSM_PATH)
8600 dnl ===================================================================
8601 dnl Checks for Java
8602 dnl ===================================================================
8603 if test "$ENABLE_JAVA" != ""; then
8605     # Windows-specific tests
8606     if test "$build_os" = "cygwin"; then
8607         if test -z "$with_jdk_home"; then
8608             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8609             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8610             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8611             if test -n "$regvalue"; then
8612                 ver=$regvalue
8613                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8614                 with_jdk_home=$regvalue
8615             fi
8616             howfound="found automatically"
8617         else
8618             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8619             howfound="you passed"
8620         fi
8622         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8623             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])
8624         fi
8625     fi
8627     # 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.
8628     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8629     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8630         with_jdk_home=`/usr/libexec/java_home`
8631     fi
8633     JAVA_HOME=; export JAVA_HOME
8634     if test -z "$with_jdk_home"; then
8635         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8636     else
8637         _java_path="$with_jdk_home/bin/$with_java"
8638         dnl Check if there is a Java interpreter at all.
8639         if test -x "$_java_path"; then
8640             JAVAINTERPRETER=$_java_path
8641         else
8642             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8643         fi
8644     fi
8646     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8647     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8648     dnl loaded by java to run JunitTests:
8649     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8650         shortjdkhome=`cygpath -d "$with_jdk_home"`
8651         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
8652             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8653             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8654         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
8655             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8656             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8657         fi
8659         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8660             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8661         fi
8662         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8663     elif test "$cross_compiling" != "yes"; then
8664         case $CPUNAME in
8665             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8666                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8667                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8668                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8669                 fi
8670                 ;;
8671             *) # assumption: everything else 32-bit
8672                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8673                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8674                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8675                 fi
8676                 ;;
8677         esac
8678     fi
8681 dnl ===================================================================
8682 dnl Checks for JDK.
8683 dnl ===================================================================
8685 # Whether all the complexity here actually is needed any more or not, no idea.
8687 JDK_SECURITYMANAGER_DISALLOWED=
8688 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8689     _gij_longver=0
8690     AC_MSG_CHECKING([the installed JDK])
8691     if test -n "$JAVAINTERPRETER"; then
8692         dnl java -version sends output to stderr!
8693         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8694             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8695         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8696             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8697         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8698             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8699         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8700             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8701         else
8702             JDK=sun
8704             dnl Sun JDK specific tests
8705             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8706             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8708             if test "$_jdk_ver" -lt 170000; then
8709                 AC_MSG_ERROR([JDK is too old, you need at least 17 ($_jdk_ver < 170000)])
8710             fi
8711             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8712             dnl completely removed in some Java version > 18 (see
8713             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8714             if test "$_jdk_ver" -ge 180000; then
8715                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8716             fi
8718             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8719             if test "$_os" = "WINNT"; then
8720                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8721             fi
8722             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8724             # set to limit VM usage for JunitTests
8725             JAVAIFLAGS=-Xmx64M
8726             # set to limit VM usage for javac
8727             JAVACFLAGS=-J-Xmx128M
8728         fi
8729     else
8730         AC_MSG_ERROR([Java not found. You need at least JDK 17])
8731     fi
8732 else
8733     if test -z "$ENABLE_JAVA"; then
8734         dnl Java disabled
8735         JAVA_HOME=
8736         export JAVA_HOME
8737     elif test "$cross_compiling" = "yes"; then
8738         # Just assume compatibility of build and host JDK
8739         JDK=$JDK_FOR_BUILD
8740         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8741     fi
8744 dnl ===================================================================
8745 dnl Checks for javac
8746 dnl ===================================================================
8747 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8748     javacompiler="javac"
8749     : ${JAVA_SOURCE_VER=8}
8750     : ${JAVA_TARGET_VER=8}
8751     if test -z "$with_jdk_home"; then
8752         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8753     else
8754         _javac_path="$with_jdk_home/bin/$javacompiler"
8755         dnl Check if there is a Java compiler at all.
8756         if test -x "$_javac_path"; then
8757             JAVACOMPILER=$_javac_path
8758         fi
8759     fi
8760     if test -z "$JAVACOMPILER"; then
8761         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8762     fi
8763     if test "$build_os" = "cygwin"; then
8764         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8765             JAVACOMPILER="${JAVACOMPILER}.exe"
8766         fi
8767         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8768     fi
8771 dnl ===================================================================
8772 dnl Checks for javadoc
8773 dnl ===================================================================
8774 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8775     if test -z "$with_jdk_home"; then
8776         AC_PATH_PROG(JAVADOC, javadoc)
8777     else
8778         _javadoc_path="$with_jdk_home/bin/javadoc"
8779         dnl Check if there is a javadoc at all.
8780         if test -x "$_javadoc_path"; then
8781             JAVADOC=$_javadoc_path
8782         else
8783             AC_PATH_PROG(JAVADOC, javadoc)
8784         fi
8785     fi
8786     if test -z "$JAVADOC"; then
8787         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8788     fi
8789     if test "$build_os" = "cygwin"; then
8790         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8791             JAVADOC="${JAVADOC}.exe"
8792         fi
8793         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8794     fi
8796     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8797     JAVADOCISGJDOC="yes"
8798     fi
8800 AC_SUBST(JAVADOC)
8801 AC_SUBST(JAVADOCISGJDOC)
8803 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8804     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8805     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8806         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8807            # try to recover first by looking whether we have an alternative
8808            # system as in Debian or newer SuSEs where following /usr/bin/javac
8809            # over /etc/alternatives/javac leads to the right bindir where we
8810            # just need to strip a bit away to get a valid JAVA_HOME
8811            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8812         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8813             # maybe only one level of symlink (e.g. on Mac)
8814             JAVA_HOME=$(readlink $JAVACOMPILER)
8815             if test "$(dirname $JAVA_HOME)" = "."; then
8816                 # we've got no path to trim back
8817                 JAVA_HOME=""
8818             fi
8819         else
8820             # else warn
8821             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8822             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8823             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8824             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8825         fi
8826         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8827         if test "$JAVA_HOME" != "/usr"; then
8828             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8829                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8830                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8831                 dnl Tiger already returns a JDK path...
8832                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8833             else
8834                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8835                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8836                 dnl that checks which version to run
8837                 if test -f "$JAVA_HOME"; then
8838                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8839                 fi
8840             fi
8841         fi
8842     fi
8843     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8845     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8846     if test -z "$JAVA_HOME"; then
8847         if test "x$with_jdk_home" = "x"; then
8848             cat > findhome.java <<_ACEOF
8849 [import java.io.File;
8851 class findhome
8853     public static void main(String args[])
8854     {
8855         String jrelocation = System.getProperty("java.home");
8856         File jre = new File(jrelocation);
8857         System.out.println(jre.getParent());
8858     }
8860 _ACEOF
8861             AC_MSG_CHECKING([if javac works])
8862             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8863             AC_TRY_EVAL(javac_cmd)
8864             if test $? = 0 -a -f ./findhome.class; then
8865                 AC_MSG_RESULT([javac works])
8866             else
8867                 echo "configure: javac test failed" >&5
8868                 cat findhome.java >&5
8869                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8870             fi
8871             AC_MSG_CHECKING([if gij knows its java.home])
8872             JAVA_HOME=`$JAVAINTERPRETER findhome`
8873             if test $? = 0 -a "$JAVA_HOME" != ""; then
8874                 AC_MSG_RESULT([$JAVA_HOME])
8875             else
8876                 echo "configure: java test failed" >&5
8877                 cat findhome.java >&5
8878                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8879             fi
8880             # clean-up after ourselves
8881             rm -f ./findhome.java ./findhome.class
8882         else
8883             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8884         fi
8885     fi
8887     # now check if $JAVA_HOME is really valid
8888     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8889         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8890             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8891             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8892             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8893             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8894             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8895             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8896         fi
8897     fi
8898     PathFormat "$JAVA_HOME"
8899     JAVA_HOME="$formatted_path"
8902 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8903     "$_os" != Darwin
8904 then
8905     AC_MSG_CHECKING([for JAWT lib])
8906     if test "$_os" = WINNT; then
8907         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8908         JAWTLIB=jawt.lib
8909     else
8910         case "$host_cpu" in
8911         arm*)
8912             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8913             JAVA_ARCH=$my_java_arch
8914             ;;
8915         i*86)
8916             my_java_arch=i386
8917             ;;
8918         m68k)
8919             my_java_arch=m68k
8920             ;;
8921         powerpc)
8922             my_java_arch=ppc
8923             ;;
8924         powerpc64)
8925             my_java_arch=ppc64
8926             ;;
8927         powerpc64le)
8928             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8929             JAVA_ARCH=$my_java_arch
8930             ;;
8931         sparc64)
8932             my_java_arch=sparcv9
8933             ;;
8934         x86_64)
8935             my_java_arch=amd64
8936             ;;
8937         *)
8938             my_java_arch=$host_cpu
8939             ;;
8940         esac
8941         # This is where JDK9 puts the library
8942         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8943             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8944         else
8945             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8946         fi
8947         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8948     fi
8949     AC_MSG_RESULT([$JAWTLIB])
8951 AC_SUBST(JAWTLIB)
8953 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8954     case "$host_os" in
8956     cygwin*|wsl*)
8957         JAVAINC="-I$JAVA_HOME/include/win32"
8958         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8959         ;;
8961     darwin*)
8962         if test -d "$JAVA_HOME/include/darwin"; then
8963             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8964         else
8965             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8966         fi
8967         ;;
8969     dragonfly*)
8970         JAVAINC="-I$JAVA_HOME/include"
8971         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8972         ;;
8974     freebsd*)
8975         JAVAINC="-I$JAVA_HOME/include"
8976         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8977         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8978         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8979         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8980         ;;
8982     k*bsd*-gnu*)
8983         JAVAINC="-I$JAVA_HOME/include"
8984         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8985         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8986         ;;
8988     linux-gnu*)
8989         JAVAINC="-I$JAVA_HOME/include"
8990         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8991         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8992         ;;
8994     *netbsd*)
8995         JAVAINC="-I$JAVA_HOME/include"
8996         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8997         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8998        ;;
9000     openbsd*)
9001         JAVAINC="-I$JAVA_HOME/include"
9002         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9003         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9004         ;;
9006     solaris*)
9007         JAVAINC="-I$JAVA_HOME/include"
9008         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9009         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9010         ;;
9011     esac
9013 SOLARINC="$SOLARINC $JAVAINC"
9015 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9016     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9017     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9018     JDK_FOR_BUILD=$JDK
9019     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9022 AC_SUBST(JAVACFLAGS)
9023 AC_SUBST(JAVACOMPILER)
9024 AC_SUBST(JAVAINTERPRETER)
9025 AC_SUBST(JAVAIFLAGS)
9026 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9027 AC_SUBST(JAVA_HOME)
9028 AC_SUBST(JAVA_HOME_FOR_BUILD)
9029 AC_SUBST(JDK)
9030 AC_SUBST(JDK_FOR_BUILD)
9031 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9032 AC_SUBST(JAVA_SOURCE_VER)
9033 AC_SUBST(JAVA_TARGET_VER)
9036 dnl ===================================================================
9037 dnl Export file validation
9038 dnl ===================================================================
9039 AC_MSG_CHECKING([whether to enable export file validation])
9040 if test "$with_export_validation" != "no"; then
9041     if test -z "$ENABLE_JAVA"; then
9042         if test "$with_export_validation" = "yes"; then
9043             AC_MSG_ERROR([requested, but Java is disabled])
9044         else
9045             AC_MSG_RESULT([no, as Java is disabled])
9046         fi
9047     elif ! test -d "${SRC_ROOT}/schema"; then
9048         if test "$with_export_validation" = "yes"; then
9049             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9050         else
9051             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9052         fi
9053     else
9054         AC_MSG_RESULT([yes])
9055         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9057         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9058         if test -z "$ODFVALIDATOR"; then
9059             # remember to download the ODF toolkit with validator later
9060             AC_MSG_NOTICE([no odfvalidator found, will download it])
9061             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9062             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9064             # and fetch name of odfvalidator jar name from download.lst
9065             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9066             AC_SUBST(ODFVALIDATOR_JAR)
9068             if test -z "$ODFVALIDATOR_JAR"; then
9069                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9070             fi
9071         fi
9072         if test "$build_os" = "cygwin"; then
9073             # In case of Cygwin it will be executed from Windows,
9074             # so we need to run bash and absolute path to validator
9075             # so instead of "odfvalidator" it will be
9076             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9077             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9078         else
9079             ODFVALIDATOR="sh $ODFVALIDATOR"
9080         fi
9081         AC_SUBST(ODFVALIDATOR)
9084         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9085         if test -z "$OFFICEOTRON"; then
9086             # remember to download the officeotron with validator later
9087             AC_MSG_NOTICE([no officeotron found, will download it])
9088             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9089             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9091             # and fetch name of officeotron jar name from download.lst
9092             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9093             AC_SUBST(OFFICEOTRON_JAR)
9095             if test -z "$OFFICEOTRON_JAR"; then
9096                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9097             fi
9098         else
9099             # check version of existing officeotron
9100             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9101             if test 0"$OFFICEOTRON_VER" -lt 704; then
9102                 AC_MSG_ERROR([officeotron too old])
9103             fi
9104         fi
9105         if test "$build_os" = "cygwin"; then
9106             # In case of Cygwin it will be executed from Windows,
9107             # so we need to run bash and absolute path to validator
9108             # so instead of "odfvalidator" it will be
9109             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9110             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9111         else
9112             OFFICEOTRON="sh $OFFICEOTRON"
9113         fi
9114     fi
9115     AC_SUBST(OFFICEOTRON)
9116 else
9117     AC_MSG_RESULT([no])
9120 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9121 if test "$with_bffvalidator" != "no"; then
9122     AC_DEFINE(HAVE_BFFVALIDATOR)
9124     if test "$with_export_validation" = "no"; then
9125         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9126     fi
9128     if test "$with_bffvalidator" = "yes"; then
9129         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9130     else
9131         BFFVALIDATOR="$with_bffvalidator"
9132     fi
9134     if test "$build_os" = "cygwin"; then
9135         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9136             AC_MSG_RESULT($BFFVALIDATOR)
9137         else
9138             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9139         fi
9140     elif test -n "$BFFVALIDATOR"; then
9141         # We are not in Cygwin but need to run Windows binary with wine
9142         AC_PATH_PROGS(WINE, wine)
9144         # so swap in a shell wrapper that converts paths transparently
9145         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9146         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9147         AC_SUBST(BFFVALIDATOR_EXE)
9148         AC_MSG_RESULT($BFFVALIDATOR)
9149     else
9150         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9151     fi
9152     AC_SUBST(BFFVALIDATOR)
9153 else
9154     AC_MSG_RESULT([no])
9157 dnl ===================================================================
9158 dnl Check for epm (not needed for Windows)
9159 dnl ===================================================================
9160 AC_MSG_CHECKING([whether to enable EPM for packing])
9161 if test "$enable_epm" = "yes"; then
9162     AC_MSG_RESULT([yes])
9163     if test "$_os" != "WINNT"; then
9164         if test $_os = Darwin; then
9165             EPM=internal
9166         elif test -n "$with_epm"; then
9167             EPM=$with_epm
9168         else
9169             AC_PATH_PROG(EPM, epm, no)
9170         fi
9171         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9172             AC_MSG_NOTICE([EPM will be built.])
9173             BUILD_TYPE="$BUILD_TYPE EPM"
9174             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9175         else
9176             # Gentoo has some epm which is something different...
9177             AC_MSG_CHECKING([whether the found epm is the right epm])
9178             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9179                 AC_MSG_RESULT([yes])
9180             else
9181                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9182             fi
9183             AC_MSG_CHECKING([epm version])
9184             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9185             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9186                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9187                 AC_MSG_RESULT([OK, >= 3.7])
9188             else
9189                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9190                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9191             fi
9192         fi
9193     fi
9195     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9196         AC_MSG_CHECKING([for rpm])
9197         for a in "$RPM" rpmbuild rpm; do
9198             $a --usage >/dev/null 2> /dev/null
9199             if test $? -eq 0; then
9200                 RPM=$a
9201                 break
9202             else
9203                 $a --version >/dev/null 2> /dev/null
9204                 if test $? -eq 0; then
9205                     RPM=$a
9206                     break
9207                 fi
9208             fi
9209         done
9210         if test -z "$RPM"; then
9211             AC_MSG_ERROR([not found])
9212         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9213             RPM_PATH=`which $RPM`
9214             AC_MSG_RESULT([$RPM_PATH])
9215             SCPDEFS="$SCPDEFS -DWITH_RPM"
9216         else
9217             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9218         fi
9219     fi
9220     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9221         AC_PATH_PROG(DPKG, dpkg, no)
9222         if test "$DPKG" = "no"; then
9223             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9224         fi
9225     fi
9226     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9227        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9228         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9229             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9230                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9231                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9232                     AC_MSG_RESULT([yes])
9233                 else
9234                     AC_MSG_RESULT([no])
9235                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9236                         _pt="rpm"
9237                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9238                         add_warning "the rpms will need to be installed with --nodeps"
9239                     else
9240                         _pt="pkg"
9241                     fi
9242                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9243                     add_warning "the ${_pt}s will not be relocatable"
9244                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9245                                  relocation will work, you need to patch your epm with the
9246                                  patch in epm/epm-3.7.patch or build with
9247                                  --with-epm=internal which will build a suitable epm])
9248                 fi
9249             fi
9250         fi
9251     fi
9252     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9253         AC_PATH_PROG(PKGMK, pkgmk, no)
9254         if test "$PKGMK" = "no"; then
9255             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9256         fi
9257     fi
9258     AC_SUBST(RPM)
9259     AC_SUBST(DPKG)
9260     AC_SUBST(PKGMK)
9261 else
9262     for i in $PKGFORMAT; do
9263         case "$i" in
9264         bsd | deb | pkg | rpm | native | portable)
9265             AC_MSG_ERROR(
9266                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9267             ;;
9268         esac
9269     done
9270     AC_MSG_RESULT([no])
9271     EPM=NO
9273 AC_SUBST(EPM)
9275 ENABLE_LWP=
9276 if test "$enable_lotuswordpro" = "yes"; then
9277     ENABLE_LWP="TRUE"
9279 AC_SUBST(ENABLE_LWP)
9281 dnl ===================================================================
9282 dnl Check for building ODK
9283 dnl ===================================================================
9284 AC_MSG_CHECKING([whether to build the ODK])
9285 if test "$enable_odk" = yes; then
9286     if test "$DISABLE_DYNLOADING" = TRUE; then
9287         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9288     fi
9289     AC_MSG_RESULT([yes])
9290     BUILD_TYPE="$BUILD_TYPE ODK"
9291 else
9292     AC_MSG_RESULT([no])
9295 if test "$enable_odk" != yes; then
9296     unset DOXYGEN
9297 else
9298     if test "$with_doxygen" = no; then
9299         AC_MSG_CHECKING([for doxygen])
9300         unset DOXYGEN
9301         AC_MSG_RESULT([no])
9302     else
9303         if test "$with_doxygen" = yes; then
9304             AC_PATH_PROG([DOXYGEN], [doxygen])
9305             if test -z "$DOXYGEN"; then
9306                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9307             fi
9308             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9309                 if ! dot -V 2>/dev/null; then
9310                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9311                 fi
9312             fi
9313         else
9314             AC_MSG_CHECKING([for doxygen])
9315             DOXYGEN=$with_doxygen
9316             AC_MSG_RESULT([$DOXYGEN])
9317         fi
9318         if test -n "$DOXYGEN"; then
9319             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9320             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9321             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9322                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9323             fi
9324         fi
9325     fi
9327 AC_SUBST([DOXYGEN])
9329 dnl ==================================================================
9330 dnl libfuzzer
9331 dnl ==================================================================
9332 AC_MSG_CHECKING([whether to enable fuzzers])
9333 if test "$enable_fuzzers" != yes; then
9334     AC_MSG_RESULT([no])
9335 else
9336     if test -z $LIB_FUZZING_ENGINE; then
9337       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9338     fi
9339     AC_MSG_RESULT([yes])
9340     ENABLE_FUZZERS="TRUE"
9341     AC_DEFINE([ENABLE_FUZZERS],1)
9342     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9344 AC_SUBST(LIB_FUZZING_ENGINE)
9346 dnl ===================================================================
9347 dnl Check for system zlib
9348 dnl ===================================================================
9349 if test "$with_system_zlib" = "auto"; then
9350     case "$_os" in
9351     WINNT)
9352         with_system_zlib="$with_system_libs"
9353         ;;
9354     *)
9355         if test "$enable_fuzzers" != "yes"; then
9356             with_system_zlib=yes
9357         else
9358             with_system_zlib=no
9359         fi
9360         ;;
9361     esac
9364 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9365 dnl and has no pkg-config for it at least on some tinderboxes,
9366 dnl so leaving that out for now
9367 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9368 AC_MSG_CHECKING([which zlib to use])
9369 if test "$with_system_zlib" = "yes"; then
9370     AC_MSG_RESULT([external])
9371     SYSTEM_ZLIB=TRUE
9372     AC_CHECK_HEADER(zlib.h, [],
9373         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9374     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9375         [AC_MSG_ERROR(zlib not found or functional)], [])
9376 else
9377     AC_MSG_RESULT([internal])
9378     SYSTEM_ZLIB=
9379     BUILD_TYPE="$BUILD_TYPE ZLIB"
9380     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9381     if test "$COM" = "MSC"; then
9382         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9383     else
9384         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9385     fi
9387 AC_SUBST(ZLIB_CFLAGS)
9388 AC_SUBST(ZLIB_LIBS)
9389 AC_SUBST(SYSTEM_ZLIB)
9391 dnl ===================================================================
9392 dnl Check for system jpeg
9393 dnl ===================================================================
9394 AC_MSG_CHECKING([which libjpeg to use])
9395 if test "$with_system_jpeg" = "yes"; then
9396     AC_MSG_RESULT([external])
9397     SYSTEM_LIBJPEG=TRUE
9398     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9399         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9400     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9401         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9402 else
9403     SYSTEM_LIBJPEG=
9404     AC_MSG_RESULT([internal, libjpeg-turbo])
9405     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9407     case "$host_cpu" in
9408     x86_64 | amd64 | i*86 | x86 | ia32)
9409         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9410         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9411             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9412                 NASM="$LODE_HOME/opt/bin/nasm"
9413             elif test -x "/opt/lo/bin/nasm"; then
9414                 NASM="/opt/lo/bin/nasm"
9415             fi
9416         fi
9418         if test -n "$NASM"; then
9419             AC_MSG_CHECKING([for object file format of host system])
9420             case "$host_os" in
9421               cygwin* | mingw* | pw32* | wsl*)
9422                 case "$host_cpu" in
9423                   x86_64)
9424                     objfmt='Win64-COFF'
9425                     ;;
9426                   *)
9427                     objfmt='Win32-COFF'
9428                     ;;
9429                 esac
9430               ;;
9431               msdosdjgpp* | go32*)
9432                 objfmt='COFF'
9433               ;;
9434               os2-emx*) # not tested
9435                 objfmt='MSOMF' # obj
9436               ;;
9437               linux*coff* | linux*oldld*)
9438                 objfmt='COFF' # ???
9439               ;;
9440               linux*aout*)
9441                 objfmt='a.out'
9442               ;;
9443               linux*)
9444                 case "$host_cpu" in
9445                   x86_64)
9446                     objfmt='ELF64'
9447                     ;;
9448                   *)
9449                     objfmt='ELF'
9450                     ;;
9451                 esac
9452               ;;
9453               kfreebsd* | freebsd* | netbsd* | openbsd*)
9454                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9455                   objfmt='BSD-a.out'
9456                 else
9457                   case "$host_cpu" in
9458                     x86_64 | amd64)
9459                       objfmt='ELF64'
9460                       ;;
9461                     *)
9462                       objfmt='ELF'
9463                       ;;
9464                   esac
9465                 fi
9466               ;;
9467               solaris* | sunos* | sysv* | sco*)
9468                 case "$host_cpu" in
9469                   x86_64)
9470                     objfmt='ELF64'
9471                     ;;
9472                   *)
9473                     objfmt='ELF'
9474                     ;;
9475                 esac
9476               ;;
9477               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9478                 case "$host_cpu" in
9479                   x86_64)
9480                     objfmt='Mach-O64'
9481                     ;;
9482                   *)
9483                     objfmt='Mach-O'
9484                     ;;
9485                 esac
9486               ;;
9487               *)
9488                 objfmt='ELF ?'
9489               ;;
9490             esac
9492             AC_MSG_RESULT([$objfmt])
9493             if test "$objfmt" = 'ELF ?'; then
9494               objfmt='ELF'
9495               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9496             fi
9498             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9499             case "$objfmt" in
9500               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9501               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9502               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9503               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9504               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9505               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9506               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9507               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9508               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9509               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9510               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9511             esac
9512             AC_MSG_RESULT([$NAFLAGS])
9514             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9515             cat > conftest.asm << EOF
9516             [%line __oline__ "configure"
9517                     section .text
9518                     global  _main,main
9519             _main:
9520             main:   xor     eax,eax
9521                     ret
9522             ]
9524             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9525             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9526               AC_MSG_RESULT(yes)
9527             else
9528               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9529               cat conftest.asm >&AS_MESSAGE_LOG_FD
9530               rm -rf conftest*
9531               AC_MSG_RESULT(no)
9532               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9533               NASM=""
9534             fi
9536         fi
9538         if test -z "$NASM"; then
9539 cat << _EOS
9540 ****************************************************************************
9541 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9542 To get one please:
9544 _EOS
9545             if test "$build_os" = "cygwin"; then
9546 cat << _EOS
9547 install a pre-compiled binary for Win32
9549 mkdir -p /opt/lo/bin
9550 cd /opt/lo/bin
9551 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9552 chmod +x nasm
9554 or get and install one from https://www.nasm.us/
9556 Then re-run autogen.sh
9558 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9559 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9561 _EOS
9562             else
9563 cat << _EOS
9564 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9566 _EOS
9567             fi
9568             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9569             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9570         fi
9571       ;;
9572     esac
9575 AC_SUBST(NASM)
9576 AC_SUBST(NAFLAGS)
9577 AC_SUBST(LIBJPEG_CFLAGS)
9578 AC_SUBST(LIBJPEG_LIBS)
9579 AC_SUBST(SYSTEM_LIBJPEG)
9581 dnl ===================================================================
9582 dnl Check for system clucene
9583 dnl ===================================================================
9584 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9585 if test "$SYSTEM_CLUCENE" = TRUE; then
9586     AC_LANG_PUSH([C++])
9587     save_CXXFLAGS=$CXXFLAGS
9588     save_CPPFLAGS=$CPPFLAGS
9589     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9590     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9591     dnl https://sourceforge.net/p/clucene/bugs/200/
9592     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9593     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9594                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9595     CXXFLAGS=$save_CXXFLAGS
9596     CPPFLAGS=$save_CPPFLAGS
9597     AC_LANG_POP([C++])
9598     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9601 dnl ===================================================================
9602 dnl Check for system expat
9603 dnl ===================================================================
9604 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9606 dnl ===================================================================
9607 dnl Check for system xmlsec
9608 dnl ===================================================================
9609 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9611 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9612 if test "$enable_eot" = "yes"; then
9613     ENABLE_EOT="TRUE"
9614     AC_DEFINE([ENABLE_EOT])
9615     AC_MSG_RESULT([yes])
9617     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9618 else
9619     ENABLE_EOT=
9620     AC_MSG_RESULT([no])
9622 AC_SUBST([ENABLE_EOT])
9624 dnl ===================================================================
9625 dnl Check for DLP libs
9626 dnl ===================================================================
9627 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9628 AS_IF([test "$COM" = "MSC"],
9629       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9630       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9632 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9633 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9635 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9637 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9639 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9640 AS_IF([test "$COM" = "MSC"],
9641       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9642       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9644 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9645 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9647 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9649 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9650 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9652 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9654 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9656 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9658 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9659 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9661 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9662 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9664 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9666 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9667 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9669 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9671 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9673 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9675 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9677 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9678 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9680 dnl ===================================================================
9681 dnl Check for system lcms2
9682 dnl ===================================================================
9683 if test "$with_system_lcms2" != "yes"; then
9684     SYSTEM_LCMS2=
9686 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9687 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9688 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9689 if test "$GCC" = "yes"; then
9690     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9692 if test "$COM" = "MSC"; then # override the above
9693     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9696 dnl ===================================================================
9697 dnl Check for system cppunit
9698 dnl ===================================================================
9699 if test "$_os" != "Android" ; then
9700     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9703 dnl ===================================================================
9704 dnl Check whether freetype is available
9706 dnl FreeType has 3 different kinds of versions
9707 dnl * release, like 2.4.10
9708 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9709 dnl * soname
9710 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9712 dnl 9.9.3 is 2.2.0
9713 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9714 dnl ===================================================================
9715 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9716 if test "x$ac_config_site_64bit_host" = xYES; then
9717     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9718 else
9719     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9721 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9723 # ===================================================================
9724 # Check for system libxslt
9725 # to prevent incompatibilities between internal libxml2 and external libxslt,
9726 # or vice versa, use with_system_libxml here
9727 # ===================================================================
9728 if test "$with_system_libxml" = "auto"; then
9729     case "$_os" in
9730     WINNT|iOS|Android)
9731         with_system_libxml="$with_system_libs"
9732         ;;
9733     Emscripten)
9734         with_system_libxml=no
9735         ;;
9736     *)
9737         if test "$enable_fuzzers" != "yes"; then
9738             with_system_libxml=yes
9739         else
9740             with_system_libxml=no
9741         fi
9742         ;;
9743     esac
9746 AC_MSG_CHECKING([which libxslt to use])
9747 if test "$with_system_libxml" = "yes"; then
9748     AC_MSG_RESULT([external])
9749     SYSTEM_LIBXSLT=TRUE
9750     if test "$_os" = "Darwin"; then
9751         dnl make sure to use SDK path
9752         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9753         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9754         dnl omit -L/usr/lib
9755         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9756         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9757     else
9758         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9759         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9760         FilterLibs "${LIBXSLT_LIBS}"
9761         LIBXSLT_LIBS="${filteredlibs}"
9762         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9763         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9764         FilterLibs "${LIBEXSLT_LIBS}"
9765         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9766     fi
9768     dnl Check for xsltproc
9769     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9770     if test "$XSLTPROC" = "no"; then
9771         AC_MSG_ERROR([xsltproc is required])
9772     fi
9773 else
9774     AC_MSG_RESULT([internal])
9775     SYSTEM_LIBXSLT=
9776     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9778 AC_SUBST(SYSTEM_LIBXSLT)
9779 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9780     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9782 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9784 AC_SUBST(LIBEXSLT_CFLAGS)
9785 AC_SUBST(LIBEXSLT_LIBS)
9786 AC_SUBST(LIBXSLT_CFLAGS)
9787 AC_SUBST(LIBXSLT_LIBS)
9788 AC_SUBST(XSLTPROC)
9790 # ===================================================================
9791 # Check for system libxml
9792 # ===================================================================
9793 AC_MSG_CHECKING([which libxml to use])
9794 if test "$with_system_libxml" = "yes"; then
9795     AC_MSG_RESULT([external])
9796     SYSTEM_LIBXML=TRUE
9797     if test "$_os" = "Darwin"; then
9798         dnl make sure to use SDK path
9799         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9800         dnl omit -L/usr/lib
9801         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9802     elif test $_os = iOS; then
9803         dnl make sure to use SDK path
9804         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9805         LIBXML_CFLAGS="-I$usr/include/libxml2"
9806         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9807     else
9808         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9809         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9810         FilterLibs "${LIBXML_LIBS}"
9811         LIBXML_LIBS="${filteredlibs}"
9812     fi
9814     dnl Check for xmllint
9815     AC_PATH_PROG(XMLLINT, xmllint, no)
9816     if test "$XMLLINT" = "no"; then
9817         AC_MSG_ERROR([xmllint is required])
9818     fi
9819 else
9820     AC_MSG_RESULT([internal])
9821     SYSTEM_LIBXML=
9822     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9823     if test "$COM" = "MSC"; then
9824         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9825     fi
9826     if test "$COM" = "MSC"; then
9827         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9828     else
9829         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9830         if test "$DISABLE_DYNLOADING" = TRUE; then
9831             LIBXML_LIBS="$LIBXML_LIBS -lm"
9832         fi
9833     fi
9834     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9836 AC_SUBST(SYSTEM_LIBXML)
9837 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9838     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9840 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9841 AC_SUBST(LIBXML_CFLAGS)
9842 AC_SUBST(LIBXML_LIBS)
9843 AC_SUBST(XMLLINT)
9845 # =====================================================================
9846 # Checking for a Python interpreter with version >= 3.3.
9847 # Optionally user can pass an option to configure, i. e.
9848 # ./configure PYTHON=/usr/bin/python
9849 # =====================================================================
9850 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9851     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9852     # unless PYTHON is defined as above which allows 'system'
9853     enable_python=internal
9855 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9856     if test -n "$PYTHON"; then
9857         PYTHON_FOR_BUILD=$PYTHON
9858     else
9859         # This allows a lack of system python with no error, we use internal one in that case.
9860         AM_PATH_PYTHON([3.3],, [:])
9861         # Clean PYTHON_VERSION checked below if cross-compiling
9862         PYTHON_VERSION=""
9863         if test "$PYTHON" != ":"; then
9864             PYTHON_FOR_BUILD=$PYTHON
9865         fi
9866     fi
9869 # Checks for Python to use for Pyuno
9870 AC_MSG_CHECKING([which Python to use for Pyuno])
9871 case "$enable_python" in
9872 no|disable)
9873     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9874         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9875         # requirement from the choice whether to include Python stuff in the installer, but why
9876         # bother?
9877         AC_MSG_ERROR([Python is required at build time.])
9878     fi
9879     enable_python=no
9880     AC_MSG_RESULT([none])
9881     ;;
9882 ""|yes|auto)
9883     if test "$DISABLE_SCRIPTING" = TRUE; then
9884         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9885             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9886         fi
9887         AC_MSG_RESULT([none, overridden by --disable-scripting])
9888         enable_python=no
9889     elif test $build_os = cygwin -o $build_os = wsl; then
9890         dnl When building on Windows we don't attempt to use any installed
9891         dnl "system"  Python.
9892         AC_MSG_RESULT([fully internal])
9893         enable_python=internal
9894     elif test "$cross_compiling" = yes; then
9895         AC_MSG_RESULT([system])
9896         enable_python=system
9897     else
9898         # Unset variables set by the above AM_PATH_PYTHON so that
9899         # we actually do check anew.
9900         AC_MSG_RESULT([])
9901         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
9902         AM_PATH_PYTHON([3.3],, [:])
9903         AC_MSG_CHECKING([which Python to use for Pyuno])
9904         if test "$PYTHON" = ":"; then
9905             if test -z "$PYTHON_FOR_BUILD"; then
9906                 AC_MSG_RESULT([fully internal])
9907             else
9908                 AC_MSG_RESULT([internal])
9909             fi
9910             enable_python=internal
9911         else
9912             AC_MSG_RESULT([system])
9913             enable_python=system
9914         fi
9915     fi
9916     ;;
9917 internal)
9918     AC_MSG_RESULT([internal])
9919     ;;
9920 fully-internal)
9921     AC_MSG_RESULT([fully internal])
9922     enable_python=internal
9923     ;;
9924 system)
9925     AC_MSG_RESULT([system])
9926     if test "$_os" = Darwin -a -z "$PYTHON"; then
9927         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9928     fi
9929     ;;
9931     AC_MSG_ERROR([Incorrect --enable-python option])
9932     ;;
9933 esac
9935 if test $enable_python != no; then
9936     BUILD_TYPE="$BUILD_TYPE PYUNO"
9939 if test $enable_python = system; then
9940     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9941         # Fallback: Accept these in the environment, or as set above
9942         # for MacOSX.
9943         :
9944     elif test "$cross_compiling" != yes; then
9945         # Unset variables set by the above AM_PATH_PYTHON so that
9946         # we actually do check anew.
9947         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
9948         # This causes an error if no python command is found
9949         AM_PATH_PYTHON([3.3])
9950         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9951         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9952         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9953         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9954         if test -z "$PKG_CONFIG"; then
9955             PYTHON_CFLAGS="-I$python_include"
9956             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9957         elif $PKG_CONFIG --exists python-$python_version-embed; then
9958             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9959             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9960         elif $PKG_CONFIG --exists python-$python_version; then
9961             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9962             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9963         else
9964             PYTHON_CFLAGS="-I$python_include"
9965             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9966         fi
9967         FilterLibs "${PYTHON_LIBS}"
9968         PYTHON_LIBS="${filteredlibs}"
9969     else
9970         dnl How to find out the cross-compilation Python installation path?
9971         AC_MSG_CHECKING([for python version])
9972         AS_IF([test -n "$PYTHON_VERSION"],
9973               [AC_MSG_RESULT([$PYTHON_VERSION])],
9974               [AC_MSG_RESULT([not found])
9975                AC_MSG_ERROR([no usable python found])])
9976         test -n "$PYTHON_CFLAGS" && break
9977     fi
9979     dnl Check if the headers really work
9980     save_CPPFLAGS="$CPPFLAGS"
9981     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9982     AC_CHECK_HEADER(Python.h)
9983     CPPFLAGS="$save_CPPFLAGS"
9985     # let the PYTHON_FOR_BUILD match the same python installation that
9986     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9987     # better for PythonTests.
9988     PYTHON_FOR_BUILD=$PYTHON
9991 if test "$with_lxml" != no; then
9992     if test -z "$PYTHON_FOR_BUILD"; then
9993         case $build_os in
9994             cygwin)
9995                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9996                 ;;
9997             *)
9998                 if test "$cross_compiling" != yes ; then
9999                     BUILD_TYPE="$BUILD_TYPE LXML"
10000                 fi
10001                 ;;
10002         esac
10003     else
10004         AC_MSG_CHECKING([for python lxml])
10005         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10006             AC_MSG_RESULT([yes])
10007         else
10008             case $build_os in
10009                 cygwin)
10010                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10011                     ;;
10012                 *)
10013                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10014                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10015                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10016                         else
10017                             BUILD_TYPE="$BUILD_TYPE LXML"
10018                             AC_MSG_RESULT([no, using internal lxml])
10019                         fi
10020                     else
10021                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10022                     fi
10023                     ;;
10024             esac
10025         fi
10026     fi
10029 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10030     SYSTEM_PYTHON=
10031     PYTHON_VERSION_MAJOR=3
10032     PYTHON_VERSION_MINOR=8
10033     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.18
10034     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10035         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10036     fi
10037     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10039     # Embedded Python dies without Home set
10040     if test "$HOME" = ""; then
10041         export HOME=""
10042     fi
10045 dnl By now enable_python should be "system", "internal" or "no"
10046 case $enable_python in
10047 system)
10048     SYSTEM_PYTHON=TRUE
10050     if test "x$ac_cv_header_Python_h" != "xyes"; then
10051        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10052     fi
10054     AC_LANG_PUSH(C)
10055     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10056     AC_MSG_CHECKING([for correct python library version])
10057        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10058 #include <Python.h>
10060 int main(int argc, char **argv) {
10061    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10062    else return 1;
10064        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10065     AC_LANG_POP(C)
10067     dnl FIXME Check if the Python library can be linked with, too?
10068     ;;
10070 internal)
10071     BUILD_TYPE="$BUILD_TYPE PYTHON"
10072     if test "$OS" = LINUX -o "$OS" = WNT ; then
10073         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10074     fi
10075     ;;
10077     DISABLE_PYTHON=TRUE
10078     SYSTEM_PYTHON=
10079     ;;
10081     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10082     ;;
10083 esac
10085 AC_SUBST(DISABLE_PYTHON)
10086 AC_SUBST(SYSTEM_PYTHON)
10087 AC_SUBST(PYTHON_CFLAGS)
10088 AC_SUBST(PYTHON_FOR_BUILD)
10089 AC_SUBST(PYTHON_LIBS)
10090 AC_SUBST(PYTHON_VERSION)
10091 AC_SUBST(PYTHON_VERSION_MAJOR)
10092 AC_SUBST(PYTHON_VERSION_MINOR)
10094 AC_MSG_CHECKING([whether to build LibreLogo])
10095 case "$enable_python" in
10096 no|disable)
10097     AC_MSG_RESULT([no; Python disabled])
10098     ;;
10100     if test "${enable_librelogo}" = "no"; then
10101         AC_MSG_RESULT([no])
10102     else
10103         AC_MSG_RESULT([yes])
10104         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10105         AC_DEFINE([ENABLE_LIBRELOGO],1)
10106     fi
10107     ;;
10108 esac
10109 AC_SUBST(ENABLE_LIBRELOGO)
10111 ENABLE_MARIADBC=
10112 MARIADBC_MAJOR=1
10113 MARIADBC_MINOR=0
10114 MARIADBC_MICRO=2
10115 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10116 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10117     ENABLE_MARIADBC=TRUE
10118     AC_MSG_RESULT([yes])
10119     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10120 else
10121     AC_MSG_RESULT([no])
10123 AC_SUBST(ENABLE_MARIADBC)
10124 AC_SUBST(MARIADBC_MAJOR)
10125 AC_SUBST(MARIADBC_MINOR)
10126 AC_SUBST(MARIADBC_MICRO)
10128 if test "$ENABLE_MARIADBC" = "TRUE"; then
10129     dnl ===================================================================
10130     dnl Check for system MariaDB
10131     dnl ===================================================================
10132     AC_MSG_CHECKING([which MariaDB to use])
10133     if test "$with_system_mariadb" = "yes"; then
10134         AC_MSG_RESULT([external])
10135         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10136         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10137         if test -z "$MARIADBCONFIG"; then
10138             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10139             if test -z "$MARIADBCONFIG"; then
10140                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10141                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10142             fi
10143         fi
10144         AC_MSG_CHECKING([MariaDB version])
10145         MARIADB_VERSION=`$MARIADBCONFIG --version`
10146         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10147         if test "$MARIADB_MAJOR" -ge "5"; then
10148             AC_MSG_RESULT([OK])
10149         else
10150             AC_MSG_ERROR([too old, use 5.0.x or later])
10151         fi
10152         AC_MSG_CHECKING([for MariaDB Client library])
10153         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10154         if test "$COM_IS_CLANG" = TRUE; then
10155             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10156         fi
10157         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10158         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10159         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10160         dnl linux32:
10161         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10162             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10163             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10164                 | sed -e 's|/lib64/|/lib/|')
10165         fi
10166         FilterLibs "${MARIADB_LIBS}"
10167         MARIADB_LIBS="${filteredlibs}"
10168         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10169         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10170         if test "$enable_bundle_mariadb" = "yes"; then
10171             AC_MSG_RESULT([yes])
10172             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10173             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10175 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10177 /g' | grep -E '(mysqlclient|mariadb)')
10178             if test "$_os" = "Darwin"; then
10179                 LIBMARIADB=${LIBMARIADB}.dylib
10180             elif test "$_os" = "WINNT"; then
10181                 LIBMARIADB=${LIBMARIADB}.dll
10182             else
10183                 LIBMARIADB=${LIBMARIADB}.so
10184             fi
10185             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10186             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10187             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10188                 AC_MSG_RESULT([found.])
10189                 PathFormat "$LIBMARIADB_PATH"
10190                 LIBMARIADB_PATH="$formatted_path"
10191             else
10192                 AC_MSG_ERROR([not found.])
10193             fi
10194         else
10195             AC_MSG_RESULT([no])
10196             BUNDLE_MARIADB_CONNECTOR_C=
10197         fi
10198     else
10199         AC_MSG_RESULT([internal])
10200         SYSTEM_MARIADB_CONNECTOR_C=
10201         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10202         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10203         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10204     fi
10206     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10207     AC_SUBST(MARIADB_CFLAGS)
10208     AC_SUBST(MARIADB_LIBS)
10209     AC_SUBST(LIBMARIADB)
10210     AC_SUBST(LIBMARIADB_PATH)
10211     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10214 dnl ===================================================================
10215 dnl Check for system hsqldb
10216 dnl ===================================================================
10217 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10218     AC_MSG_CHECKING([which hsqldb to use])
10219     if test "$with_system_hsqldb" = "yes"; then
10220         AC_MSG_RESULT([external])
10221         SYSTEM_HSQLDB=TRUE
10222         if test -z $HSQLDB_JAR; then
10223             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10224         fi
10225         if ! test -f $HSQLDB_JAR; then
10226                AC_MSG_ERROR(hsqldb.jar not found.)
10227         fi
10228         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10229         export HSQLDB_JAR
10230         if $PERL -e \
10231            'use Archive::Zip;
10232             my $file = "$ENV{'HSQLDB_JAR'}";
10233             my $zip = Archive::Zip->new( $file );
10234             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10235             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10236             {
10237                 push @l, split(/\n/, $mf);
10238                 foreach my $line (@l)
10239                 {
10240                     if ($line =~ m/Specification-Version:/)
10241                     {
10242                         ($t, $version) = split (/:/,$line);
10243                         $version =~ s/^\s//;
10244                         ($a, $b, $c, $d) = split (/\./,$version);
10245                         if ($c == "0" && $d > "8")
10246                         {
10247                             exit 0;
10248                         }
10249                         else
10250                         {
10251                             exit 1;
10252                         }
10253                     }
10254                 }
10255             }
10256             else
10257             {
10258                 exit 1;
10259             }'; then
10260             AC_MSG_RESULT([yes])
10261         else
10262             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10263         fi
10264     else
10265         AC_MSG_RESULT([internal])
10266         SYSTEM_HSQLDB=
10267         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10268         NEED_ANT=TRUE
10269     fi
10270 else
10271     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10272         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10273     fi
10275 AC_SUBST(SYSTEM_HSQLDB)
10276 AC_SUBST(HSQLDB_JAR)
10278 dnl ===================================================================
10279 dnl Check for PostgreSQL stuff
10280 dnl ===================================================================
10281 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10282 if test "x$enable_postgresql_sdbc" != "xno"; then
10283     AC_MSG_RESULT([yes])
10284     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10286     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10287         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10288     fi
10289     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10290         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10291     fi
10293     postgres_interface=""
10294     if test "$with_system_postgresql" = "yes"; then
10295         postgres_interface="external PostgreSQL"
10296         SYSTEM_POSTGRESQL=TRUE
10297         if test "$_os" = Darwin; then
10298             supp_path=''
10299             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10300                 pg_supp_path="$P_SEP$d$pg_supp_path"
10301             done
10302         fi
10303         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10304         if test -n "$PGCONFIG"; then
10305             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10306             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10307         else
10308             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10309               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10310               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10311             ],[
10312               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10313             ])
10314         fi
10315         FilterLibs "${POSTGRESQL_LIB}"
10316         POSTGRESQL_LIB="${filteredlibs}"
10317     else
10318         # if/when anything else than PostgreSQL uses Kerberos,
10319         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10320         WITH_KRB5=
10321         WITH_GSSAPI=
10322         case "$_os" in
10323         Darwin)
10324             # macOS has system MIT Kerberos 5 since 10.4
10325             if test "$with_krb5" != "no"; then
10326                 WITH_KRB5=TRUE
10327                 save_LIBS=$LIBS
10328                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10329                 # that the libraries where these functions are located on macOS will change, is it?
10330                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10331                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10332                 KRB5_LIBS=$LIBS
10333                 LIBS=$save_LIBS
10334                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10335                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10336                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10337                 LIBS=$save_LIBS
10338             fi
10339             if test "$with_gssapi" != "no"; then
10340                 WITH_GSSAPI=TRUE
10341                 save_LIBS=$LIBS
10342                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10343                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10344                 GSSAPI_LIBS=$LIBS
10345                 LIBS=$save_LIBS
10346             fi
10347             ;;
10348         WINNT)
10349             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10350                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10351             fi
10352             ;;
10353         Linux|GNU|*BSD|DragonFly)
10354             if test "$with_krb5" != "no"; then
10355                 WITH_KRB5=TRUE
10356                 save_LIBS=$LIBS
10357                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10358                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10359                 KRB5_LIBS=$LIBS
10360                 LIBS=$save_LIBS
10361                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10362                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10363                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10364                 LIBS=$save_LIBS
10365             fi
10366             if test "$with_gssapi" != "no"; then
10367                 WITH_GSSAPI=TRUE
10368                 save_LIBS=$LIBS
10369                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10370                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10371                 GSSAPI_LIBS=$LIBS
10372                 LIBS=$save_LIBS
10373             fi
10374             ;;
10375         *)
10376             if test "$with_krb5" = "yes"; then
10377                 WITH_KRB5=TRUE
10378                 save_LIBS=$LIBS
10379                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10380                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10381                 KRB5_LIBS=$LIBS
10382                 LIBS=$save_LIBS
10383                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10384                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10385                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10386                 LIBS=$save_LIBS
10387             fi
10388             if test "$with_gssapi" = "yes"; then
10389                 WITH_GSSAPI=TRUE
10390                 save_LIBS=$LIBS
10391                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10392                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10393                 LIBS=$save_LIBS
10394                 GSSAPI_LIBS=$LIBS
10395             fi
10396         esac
10398         if test -n "$with_libpq_path"; then
10399             SYSTEM_POSTGRESQL=TRUE
10400             postgres_interface="external libpq"
10401             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10402             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10403         else
10404             SYSTEM_POSTGRESQL=
10405             postgres_interface="internal"
10406             POSTGRESQL_LIB=""
10407             POSTGRESQL_INC="%OVERRIDE_ME%"
10408             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10409         fi
10410     fi
10412     AC_MSG_CHECKING([PostgreSQL C interface])
10413     AC_MSG_RESULT([$postgres_interface])
10415     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10416         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10417         save_CFLAGS=$CFLAGS
10418         save_CPPFLAGS=$CPPFLAGS
10419         save_LIBS=$LIBS
10420         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10421         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10422         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10423         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10424             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10425         CFLAGS=$save_CFLAGS
10426         CPPFLAGS=$save_CPPFLAGS
10427         LIBS=$save_LIBS
10428     fi
10429     BUILD_POSTGRESQL_SDBC=TRUE
10430 else
10431     AC_MSG_RESULT([no])
10433 AC_SUBST(WITH_KRB5)
10434 AC_SUBST(WITH_GSSAPI)
10435 AC_SUBST(GSSAPI_LIBS)
10436 AC_SUBST(KRB5_LIBS)
10437 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10438 AC_SUBST(SYSTEM_POSTGRESQL)
10439 AC_SUBST(POSTGRESQL_INC)
10440 AC_SUBST(POSTGRESQL_LIB)
10442 dnl ===================================================================
10443 dnl Check for Firebird stuff
10444 dnl ===================================================================
10445 ENABLE_FIREBIRD_SDBC=
10446 if test "$enable_firebird_sdbc" = "yes" ; then
10447     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10449     dnl ===================================================================
10450     dnl Check for system Firebird
10451     dnl ===================================================================
10452     AC_MSG_CHECKING([which Firebird to use])
10453     if test "$with_system_firebird" = "yes"; then
10454         AC_MSG_RESULT([external])
10455         SYSTEM_FIREBIRD=TRUE
10456         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10457         if test -z "$FIREBIRDCONFIG"; then
10458             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10459             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10460                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10461             ])
10462             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10463         else
10464             AC_MSG_NOTICE([fb_config found])
10465             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10466             AC_MSG_CHECKING([for Firebird Client library])
10467             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10468             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10469             FilterLibs "${FIREBIRD_LIBS}"
10470             FIREBIRD_LIBS="${filteredlibs}"
10471         fi
10472         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10473         AC_MSG_CHECKING([Firebird version])
10474         if test -n "${FIREBIRD_VERSION}"; then
10475             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10476             if test "$FIREBIRD_MAJOR" -ge "3"; then
10477                 AC_MSG_RESULT([OK])
10478             else
10479                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10480             fi
10481         else
10482             save_CFLAGS="${CFLAGS}"
10483             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10484             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10485 #if defined(FB_API_VER) && FB_API_VER == 30
10486 int fb_api_is_30(void) { return 0; }
10487 #else
10488 #error "Wrong Firebird API version"
10489 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10490             CFLAGS="$save_CFLAGS"
10491         fi
10492         ENABLE_FIREBIRD_SDBC=TRUE
10493         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10494     elif test "$enable_database_connectivity" = no; then
10495         AC_MSG_RESULT([none])
10496     elif test "$cross_compiling" = "yes"; then
10497         AC_MSG_RESULT([none])
10498     else
10499         dnl Embedded Firebird has version 3.0
10500         dnl We need libatomic_ops for any non X86/X64 system
10501         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10502             dnl ===================================================================
10503             dnl Check for system libatomic_ops
10504             dnl ===================================================================
10505             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10506             if test "$with_system_libatomic_ops" = "yes"; then
10507                 SYSTEM_LIBATOMIC_OPS=TRUE
10508                 AC_CHECK_HEADERS(atomic_ops.h, [],
10509                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10510             else
10511                 SYSTEM_LIBATOMIC_OPS=
10512                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10513                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10514                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10515             fi
10516         fi
10518         AC_MSG_RESULT([internal])
10519         SYSTEM_FIREBIRD=
10520         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10521         FIREBIRD_LIBS="-lfbclient"
10523         if test "$with_system_libtommath" = "yes"; then
10524             SYSTEM_LIBTOMMATH=TRUE
10525             dnl check for tommath presence
10526             save_LIBS=$LIBS
10527             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10528             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10529             LIBS=$save_LIBS
10530         else
10531             SYSTEM_LIBTOMMATH=
10532             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10533             LIBTOMMATH_LIBS="-ltommath"
10534             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10535         fi
10537         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10538         ENABLE_FIREBIRD_SDBC=TRUE
10539         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10540     fi
10542 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10543 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10544 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10545 AC_SUBST(LIBATOMIC_OPS_LIBS)
10546 AC_SUBST(SYSTEM_FIREBIRD)
10547 AC_SUBST(FIREBIRD_CFLAGS)
10548 AC_SUBST(FIREBIRD_LIBS)
10549 AC_SUBST(SYSTEM_LIBTOMMATH)
10550 AC_SUBST(LIBTOMMATH_CFLAGS)
10551 AC_SUBST(LIBTOMMATH_LIBS)
10553 dnl ===================================================================
10554 dnl Check for system curl
10555 dnl ===================================================================
10556 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10558 dnl ===================================================================
10559 dnl Check for system boost
10560 dnl ===================================================================
10561 AC_MSG_CHECKING([which boost to use])
10562 if test "$with_system_boost" = "yes"; then
10563     AC_MSG_RESULT([external])
10564     SYSTEM_BOOST=TRUE
10565     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10566     AX_BOOST_DATE_TIME
10567     AX_BOOST_FILESYSTEM
10568     AX_BOOST_IOSTREAMS
10569     AX_BOOST_LOCALE
10570     AC_LANG_PUSH([C++])
10571     save_CXXFLAGS=$CXXFLAGS
10572     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10573     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10574        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10575     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10576        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10577     CXXFLAGS=$save_CXXFLAGS
10578     AC_LANG_POP([C++])
10579     # this is in m4/ax_boost_base.m4
10580     FilterLibs "${BOOST_LDFLAGS}"
10581     BOOST_LDFLAGS="${filteredlibs}"
10582 else
10583     AC_MSG_RESULT([internal])
10584     BUILD_TYPE="$BUILD_TYPE BOOST"
10585     SYSTEM_BOOST=
10586     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10587         # use warning-suppressing wrapper headers
10588         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10589     else
10590         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10591     fi
10593 AC_SUBST(SYSTEM_BOOST)
10595 dnl ===================================================================
10596 dnl Check for system mdds
10597 dnl ===================================================================
10598 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10599 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10601 dnl ===================================================================
10602 dnl Check for system dragonbox
10603 dnl ===================================================================
10604 AC_MSG_CHECKING([which dragonbox to use])
10605 if test "$with_system_dragonbox" = "yes"; then
10606     AC_MSG_RESULT([external])
10607     SYSTEM_DRAGONBOX=TRUE
10608     AC_LANG_PUSH([C++])
10609     save_CPPFLAGS=$CPPFLAGS
10610     # This is where upstream installs to, unfortunately no .pc or so...
10611     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10612     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10613     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10614        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10615     AC_LANG_POP([C++])
10616     CPPFLAGS=$save_CPPFLAGS
10617 else
10618     AC_MSG_RESULT([internal])
10619     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10620     SYSTEM_DRAGONBOX=
10622 AC_SUBST([SYSTEM_DRAGONBOX])
10623 AC_SUBST([DRAGONBOX_CFLAGS])
10625 dnl ===================================================================
10626 dnl Check for system frozen
10627 dnl ===================================================================
10628 AC_MSG_CHECKING([which frozen to use])
10629 if test "$with_system_frozen" = "yes"; then
10630     AC_MSG_RESULT([external])
10631     SYSTEM_FROZEN=TRUE
10632     AC_LANG_PUSH([C++])
10633     save_CPPFLAGS=$CPPFLAGS
10634     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10635        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10636     AC_LANG_POP([C++])
10637     CPPFLAGS=$save_CPPFLAGS
10638 else
10639     AC_MSG_RESULT([internal])
10640     BUILD_TYPE="$BUILD_TYPE FROZEN"
10641     SYSTEM_FROZEN=
10643 AC_SUBST([SYSTEM_FROZEN])
10644 AC_SUBST([FROZEN_CFLAGS])
10646 dnl ===================================================================
10647 dnl Check for system libfixmath
10648 dnl ===================================================================
10649 AC_MSG_CHECKING([which libfixmath to use])
10650 if test "$with_system_libfixmath" = "yes"; then
10651     AC_MSG_RESULT([external])
10652     SYSTEM_LIBFIXMATH=TRUE
10653     AC_LANG_PUSH([C++])
10654     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10655        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10656     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10657     AC_LANG_POP([C++])
10658 else
10659     AC_MSG_RESULT([internal])
10660     SYSTEM_LIBFIXMATH=
10662 AC_SUBST([SYSTEM_LIBFIXMATH])
10664 dnl ===================================================================
10665 dnl Check for system glm
10666 dnl ===================================================================
10667 AC_MSG_CHECKING([which glm to use])
10668 if test "$with_system_glm" = "yes"; then
10669     AC_MSG_RESULT([external])
10670     SYSTEM_GLM=TRUE
10671     AC_LANG_PUSH([C++])
10672     AC_CHECK_HEADER([glm/glm.hpp], [],
10673        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10674     AC_LANG_POP([C++])
10675 else
10676     AC_MSG_RESULT([internal])
10677     BUILD_TYPE="$BUILD_TYPE GLM"
10678     SYSTEM_GLM=
10679     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10681 AC_SUBST([GLM_CFLAGS])
10682 AC_SUBST([SYSTEM_GLM])
10684 dnl ===================================================================
10685 dnl Check for system odbc
10686 dnl ===================================================================
10687 AC_MSG_CHECKING([which odbc headers to use])
10688 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
10689     AC_MSG_RESULT([external])
10690     SYSTEM_ODBC_HEADERS=TRUE
10692     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10693         save_CPPFLAGS=$CPPFLAGS
10694         find_winsdk
10695         PathFormat "$winsdktest"
10696         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"
10697         AC_CHECK_HEADER(sqlext.h, [],
10698             [AC_MSG_ERROR(odbc not found. install odbc)],
10699             [#include <windows.h>])
10700         CPPFLAGS=$save_CPPFLAGS
10701     else
10702         AC_CHECK_HEADER(sqlext.h, [],
10703             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10704     fi
10705 elif test "$enable_database_connectivity" = no; then
10706     AC_MSG_RESULT([none])
10707 else
10708     AC_MSG_RESULT([internal])
10709     SYSTEM_ODBC_HEADERS=
10710     BUILD_TYPE="$BUILD_TYPE IODBC"
10712 AC_SUBST(SYSTEM_ODBC_HEADERS)
10714 dnl ===================================================================
10715 dnl Check for system NSS
10716 dnl ===================================================================
10717 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10718     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10719     AC_DEFINE(HAVE_FEATURE_NSS)
10720     ENABLE_NSS=TRUE
10721 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10722     with_tls=openssl
10724 AC_SUBST(ENABLE_NSS)
10726 dnl ===================================================================
10727 dnl Enable LDAP support
10728 dnl ===================================================================
10730 if test "$test_openldap" = yes; then
10731     AC_MSG_CHECKING([whether to enable LDAP support])
10732     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10733         AC_MSG_RESULT([yes])
10734         ENABLE_LDAP=TRUE
10735     else
10736         if test "$enable_ldap" != "yes"; then
10737             AC_MSG_RESULT([no])
10738         else
10739             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10740         fi
10741     fi
10743 dnl ===================================================================
10744 dnl Check for system openldap
10745 dnl ===================================================================
10747     if test "$ENABLE_LDAP" = TRUE; then
10748         AC_MSG_CHECKING([which openldap library to use])
10749         if test "$with_system_openldap" = yes; then
10750             AC_MSG_RESULT([external])
10751             SYSTEM_OPENLDAP=TRUE
10752             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10753             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10754             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10755         else
10756             AC_MSG_RESULT([internal])
10757             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10758         fi
10759     fi
10762 AC_SUBST(ENABLE_LDAP)
10763 AC_SUBST(SYSTEM_OPENLDAP)
10765 dnl ===================================================================
10766 dnl Check for TLS/SSL and cryptographic implementation to use
10767 dnl ===================================================================
10768 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10769 if test -n "$with_tls"; then
10770     case $with_tls in
10771     openssl)
10772         AC_DEFINE(USE_TLS_OPENSSL)
10773         TLS=OPENSSL
10774         AC_MSG_RESULT([$TLS])
10776         if test "$enable_openssl" != "yes"; then
10777             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10778         fi
10780         # warn that OpenSSL has been selected but not all TLS code has this option
10781         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10782         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10783         ;;
10784     nss)
10785         AC_DEFINE(USE_TLS_NSS)
10786         TLS=NSS
10787         AC_MSG_RESULT([$TLS])
10788         ;;
10789     no)
10790         AC_MSG_RESULT([none])
10791         AC_MSG_WARN([Skipping TLS/SSL])
10792         ;;
10793     *)
10794         AC_MSG_RESULT([])
10795         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10796 openssl - OpenSSL
10797 nss - Mozilla's Network Security Services (NSS)
10798     ])
10799         ;;
10800     esac
10801 else
10802     # default to using NSS, it results in smaller oox lib
10803     AC_DEFINE(USE_TLS_NSS)
10804     TLS=NSS
10805     AC_MSG_RESULT([$TLS])
10807 AC_SUBST(TLS)
10809 dnl ===================================================================
10810 dnl Check for system sane
10811 dnl ===================================================================
10812 AC_MSG_CHECKING([which sane header to use])
10813 if test "$with_system_sane" = "yes"; then
10814     AC_MSG_RESULT([external])
10815     AC_CHECK_HEADER(sane/sane.h, [],
10816       [AC_MSG_ERROR(sane not found. install sane)], [])
10817 else
10818     AC_MSG_RESULT([internal])
10819     BUILD_TYPE="$BUILD_TYPE SANE"
10822 dnl ===================================================================
10823 dnl Check for system icu
10824 dnl ===================================================================
10825 ICU_MAJOR=73
10826 ICU_MINOR=2
10827 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10828 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10829 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10830 if test "$SYSTEM_ICU" = TRUE; then
10831     AC_LANG_PUSH([C++])
10832     AC_MSG_CHECKING([for unicode/rbbi.h])
10833     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10834     AC_LANG_POP([C++])
10836     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10837     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10838     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10840     if test "$CROSS_COMPILING" != TRUE; then
10841         # using the system icu tools can lead to version confusion, use the
10842         # ones from the build environment when cross-compiling
10843         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10844         if test -z "$SYSTEM_GENBRK"; then
10845             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10846         fi
10847         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10848         if test -z "$SYSTEM_GENCCODE"; then
10849             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10850         fi
10851         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10852         if test -z "$SYSTEM_GENCMN"; then
10853             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10854         fi
10855     fi
10858 AC_SUBST(SYSTEM_GENBRK)
10859 AC_SUBST(SYSTEM_GENCCODE)
10860 AC_SUBST(SYSTEM_GENCMN)
10861 AC_SUBST(ICU_MAJOR)
10862 AC_SUBST(ICU_MINOR)
10864 dnl ==================================================================
10865 dnl CURL
10866 dnl ==================================================================
10867 if test "$enable_curl" == "yes"; then
10868     AC_DEFINE([HAVE_FEATURE_CURL])
10871 dnl ==================================================================
10872 dnl Breakpad
10873 dnl ==================================================================
10874 DEFAULT_CRASHDUMP_VALUE="true"
10875 AC_MSG_CHECKING([whether to enable breakpad])
10876 if test "$enable_breakpad" != yes; then
10877     AC_MSG_RESULT([no])
10878 else
10879     if test "$enable_curl" != "yes"; then
10880         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10881     fi
10882     AC_MSG_RESULT([yes])
10883     ENABLE_BREAKPAD="TRUE"
10884     AC_DEFINE(ENABLE_BREAKPAD)
10885     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10886     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10888     AC_MSG_CHECKING([for disable crash dump])
10889     if test "$enable_crashdump" = no; then
10890         DEFAULT_CRASHDUMP_VALUE="false"
10891         AC_MSG_RESULT([yes])
10892     else
10893        AC_MSG_RESULT([no])
10894     fi
10896     AC_MSG_CHECKING([for crashreport config])
10897     if test "$with_symbol_config" = "no"; then
10898         BREAKPAD_SYMBOL_CONFIG="invalid"
10899         AC_MSG_RESULT([no])
10900     else
10901         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10902         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10903         AC_MSG_RESULT([yes])
10904     fi
10905     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10907 AC_SUBST(ENABLE_BREAKPAD)
10908 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10910 dnl ==================================================================
10911 dnl libcmis
10912 dnl ==================================================================
10913 if test "$enable_libcmis" == "yes"; then
10914     if test "$enable_curl" != "yes"; then
10915         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10916     fi
10919 dnl ===================================================================
10920 dnl Orcus
10921 dnl ===================================================================
10922 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10923 if test "$with_system_orcus" != "yes"; then
10924     if test "$SYSTEM_BOOST" = "TRUE"; then
10925         dnl Link with Boost.System
10926         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10927         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10928         dnl in documentation has no effect.
10929         AX_BOOST_SYSTEM
10930     fi
10932 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10933 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10934 AC_SUBST([BOOST_SYSTEM_LIB])
10935 AC_SUBST(SYSTEM_LIBORCUS)
10937 dnl ===================================================================
10938 dnl HarfBuzz
10939 dnl ===================================================================
10940 harfbuzz_required_version=5.1.0
10942 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10943 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10944 case "$_os" in
10945     Linux)
10946         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10947         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10948         ;;
10949     *)
10950         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10951         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10952         ;;
10953 esac
10954 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10955 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10957 if test "$COM" = "MSC"; then # override the above
10958     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10959     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10962 if test "$with_system_harfbuzz" = "yes"; then
10963     if test "$with_system_graphite" = "no"; then
10964         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10965     fi
10966     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10967     save_LIBS="$LIBS"
10968     save_CFLAGS="$CFLAGS"
10969     LIBS="$LIBS $HARFBUZZ_LIBS"
10970     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10971     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10972     LIBS="$save_LIBS"
10973     CFLAGS="$save_CFLAGS"
10974 else
10975     if test "$with_system_graphite" = "yes"; then
10976         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10977     fi
10980 if test "$USING_X11" = TRUE; then
10981     AC_PATH_X
10982     AC_PATH_XTRA
10983     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10985     if test -z "$x_includes"; then
10986         x_includes="default_x_includes"
10987     fi
10988     if test -z "$x_libraries"; then
10989         x_libraries="default_x_libraries"
10990     fi
10991     CFLAGS="$CFLAGS $X_CFLAGS"
10992     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10993     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10994 else
10995     x_includes="no_x_includes"
10996     x_libraries="no_x_libraries"
10999 if test "$USING_X11" = TRUE; then
11000     dnl ===================================================================
11001     dnl Check for extension headers
11002     dnl ===================================================================
11003     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11004      [#include <X11/extensions/shape.h>])
11006     # vcl needs ICE and SM
11007     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11008     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11009         [AC_MSG_ERROR(ICE library not found)])
11010     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11011     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11012         [AC_MSG_ERROR(SM library not found)])
11015 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11016     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11017     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11020 dnl ===================================================================
11021 dnl Check for system Xrender
11022 dnl ===================================================================
11023 AC_MSG_CHECKING([whether to use Xrender])
11024 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11025     AC_MSG_RESULT([yes])
11026     PKG_CHECK_MODULES(XRENDER, xrender)
11027     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11028     FilterLibs "${XRENDER_LIBS}"
11029     XRENDER_LIBS="${filteredlibs}"
11030     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11031       [AC_MSG_ERROR(libXrender not found or functional)], [])
11032     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11033       [AC_MSG_ERROR(Xrender not found. install X)], [])
11034 else
11035     AC_MSG_RESULT([no])
11037 AC_SUBST(XRENDER_CFLAGS)
11038 AC_SUBST(XRENDER_LIBS)
11040 dnl ===================================================================
11041 dnl Check for XRandr
11042 dnl ===================================================================
11043 AC_MSG_CHECKING([whether to enable RandR support])
11044 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11045     AC_MSG_RESULT([yes])
11046     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11047     if test "$ENABLE_RANDR" != "TRUE"; then
11048         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11049                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11050         XRANDR_CFLAGS=" "
11051         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11052           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11053         XRANDR_LIBS="-lXrandr "
11054         ENABLE_RANDR="TRUE"
11055     fi
11056     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11057     FilterLibs "${XRANDR_LIBS}"
11058     XRANDR_LIBS="${filteredlibs}"
11059 else
11060     ENABLE_RANDR=""
11061     AC_MSG_RESULT([no])
11063 AC_SUBST(XRANDR_CFLAGS)
11064 AC_SUBST(XRANDR_LIBS)
11065 AC_SUBST(ENABLE_RANDR)
11067 if test -z "$with_webdav"; then
11068     with_webdav=$test_webdav
11071 AC_MSG_CHECKING([for WebDAV support])
11072 case "$with_webdav" in
11074     AC_MSG_RESULT([no])
11075     WITH_WEBDAV=""
11076     ;;
11078     AC_MSG_RESULT([yes])
11079     # curl is already mandatory (almost) and checked elsewhere
11080     if test "$enable_curl" = "no"; then
11081         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11082     fi
11083     WITH_WEBDAV=TRUE
11084     ;;
11085 esac
11086 AC_SUBST(WITH_WEBDAV)
11088 dnl ===================================================================
11089 dnl Check for disabling cve_tests
11090 dnl ===================================================================
11091 AC_MSG_CHECKING([whether to execute CVE tests])
11092 # If not explicitly enabled or disabled, default
11093 if test -z "$enable_cve_tests"; then
11094     case "$OS" in
11095     WNT)
11096         # Default cves off for Windows with its wild and wonderful
11097         # variety of AV software kicking in and panicking
11098         enable_cve_tests=no
11099         ;;
11100     *)
11101         # otherwise yes
11102         enable_cve_tests=yes
11103         ;;
11104     esac
11106 if test "$enable_cve_tests" = "no"; then
11107     AC_MSG_RESULT([no])
11108     DISABLE_CVE_TESTS=TRUE
11109     AC_SUBST(DISABLE_CVE_TESTS)
11110 else
11111     AC_MSG_RESULT([yes])
11114 dnl ===================================================================
11115 dnl Check for system openssl
11116 dnl ===================================================================
11117 ENABLE_OPENSSL=
11118 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11119 if test "$enable_openssl" = "yes"; then
11120     AC_MSG_RESULT([no])
11121     ENABLE_OPENSSL=TRUE
11122     if test "$_os" = Darwin ; then
11123         # OpenSSL is deprecated when building for 10.7 or later.
11124         #
11125         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11126         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11128         with_system_openssl=no
11129         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11130     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11131             && test "$with_system_openssl" != "no"; then
11132         with_system_openssl=yes
11133         SYSTEM_OPENSSL=TRUE
11134         OPENSSL_CFLAGS=
11135         OPENSSL_LIBS="-lssl -lcrypto"
11136     else
11137         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11138         if test -n "${SYSTEM_OPENSSL}"; then
11139             AC_DEFINE([SYSTEM_OPENSSL])
11140         fi
11141     fi
11142     if test "$with_system_openssl" = "yes"; then
11143         AC_MSG_CHECKING([whether openssl supports SHA512])
11144         AC_LANG_PUSH([C])
11145         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11146             SHA512_CTX context;
11147 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11148         AC_LANG_POP(C)
11149     fi
11150 else
11151     AC_MSG_RESULT([yes])
11153     # warn that although OpenSSL is disabled, system libraries may depend on it
11154     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11155     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11158 AC_SUBST([ENABLE_OPENSSL])
11160 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11161     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11162         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11163         enable_cipher_openssl_backend=no
11164     else
11165         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11166     fi
11168 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11169 ENABLE_CIPHER_OPENSSL_BACKEND=
11170 if test "$enable_cipher_openssl_backend" = yes; then
11171     AC_MSG_RESULT([yes])
11172     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11173 else
11174     AC_MSG_RESULT([no])
11176 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11178 dnl ===================================================================
11179 dnl Select the crypto backends used by LO
11180 dnl ===================================================================
11182 if test "$build_crypto" = yes; then
11183     if test "$OS" = WNT; then
11184         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11185         AC_DEFINE([USE_CRYPTO_MSCAPI])
11186     elif test "$ENABLE_NSS" = TRUE; then
11187         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11188         AC_DEFINE([USE_CRYPTO_NSS])
11189     fi
11192 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11193 if test "$COM" = "MSC"; then
11194     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11195 else
11196     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11198 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11200 dnl ===================================================================
11201 dnl Check for system redland
11202 dnl ===================================================================
11203 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11204 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11205 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11206 if test "$with_system_redland" = "yes"; then
11207     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11208             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11209 else
11210     RAPTOR_MAJOR="0"
11211     RASQAL_MAJOR="3"
11212     REDLAND_MAJOR="0"
11214 AC_SUBST(RAPTOR_MAJOR)
11215 AC_SUBST(RASQAL_MAJOR)
11216 AC_SUBST(REDLAND_MAJOR)
11218 dnl ===================================================================
11219 dnl Check for system hunspell
11220 dnl ===================================================================
11221 AC_MSG_CHECKING([which libhunspell to use])
11222 if test "$with_system_hunspell" = "yes"; then
11223     AC_MSG_RESULT([external])
11224     SYSTEM_HUNSPELL=TRUE
11225     AC_LANG_PUSH([C++])
11226     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11227     if test "$HUNSPELL_PC" != "TRUE"; then
11228         AC_CHECK_HEADER(hunspell.hxx, [],
11229             [
11230             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11231             [AC_MSG_ERROR(hunspell headers not found.)], [])
11232             ], [])
11233         AC_CHECK_LIB([hunspell], [main], [:],
11234            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11235         HUNSPELL_LIBS=-lhunspell
11236     fi
11237     AC_LANG_POP([C++])
11238     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11239     FilterLibs "${HUNSPELL_LIBS}"
11240     HUNSPELL_LIBS="${filteredlibs}"
11241 else
11242     AC_MSG_RESULT([internal])
11243     SYSTEM_HUNSPELL=
11244     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11245     if test "$COM" = "MSC"; then
11246         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11247     else
11248         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11249     fi
11250     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11252 AC_SUBST(SYSTEM_HUNSPELL)
11253 AC_SUBST(HUNSPELL_CFLAGS)
11254 AC_SUBST(HUNSPELL_LIBS)
11256 dnl ===================================================================
11257 dnl Check for system zxcvbn
11258 dnl ===================================================================
11259 AC_MSG_CHECKING([which zxcvbn to use])
11260 if test "$with_system_zxcvbn" = "yes"; then
11261     AC_MSG_RESULT([external])
11262     SYSTEM_ZXCVBN=TRUE
11263     AC_CHECK_HEADER(zxcvbn.h, [],
11264        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11265     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11266         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11267 else
11268    AC_MSG_RESULT([internal])
11269    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11270    SYSTEM_ZXCVBN=
11272 AC_SUBST(SYSTEM_ZXCVBN)
11274 dnl ===================================================================
11275 dnl Check for system zxing
11276 dnl ===================================================================
11277 AC_MSG_CHECKING([whether to use zxing])
11278 if test "$enable_zxing" = "no"; then
11279     AC_MSG_RESULT([no])
11280     ENABLE_ZXING=
11281     SYSTEM_ZXING=
11282 else
11283     AC_MSG_RESULT([yes])
11284     ENABLE_ZXING=TRUE
11285     AC_MSG_CHECKING([which libzxing to use])
11286     if test "$with_system_zxing" = "yes"; then
11287         AC_MSG_RESULT([external])
11288         SYSTEM_ZXING=TRUE
11289         ZXING_CFLAGS=
11290         AC_LANG_PUSH([C++])
11291         save_CXXFLAGS=$CXXFLAGS
11292         save_IFS=$IFS
11293         IFS=$P_SEP
11294         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11295             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11296             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11297             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11298             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11299             dnl unsetting IFS."):
11300             IFS=$save_IFS
11301             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11302             dnl ignore them here:
11303             if test -z "$i"; then
11304                 continue
11305             fi
11306             dnl TODO: White space in $i would cause problems:
11307             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11308             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11309                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11310         done
11311         CXXFLAGS=$save_CXXFLAGS
11312         if test -z "$ZXING_CFLAGS"; then
11313             AC_MSG_ERROR(zxing headers not found.)
11314         fi
11315         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11316             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11317             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11318         AC_LANG_POP([C++])
11319         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11320         FilterLibs "${ZXING_LIBS}"
11321         ZXING_LIBS="${filteredlibs}"
11322     else
11323         AC_MSG_RESULT([internal])
11324         SYSTEM_ZXING=
11325         BUILD_TYPE="$BUILD_TYPE ZXING"
11326         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11327     fi
11328     if test "$ENABLE_ZXING" = TRUE; then
11329         AC_DEFINE(ENABLE_ZXING)
11330     fi
11331     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11332     AC_LANG_PUSH([C++])
11333     save_CXXFLAGS=$CXXFLAGS
11334     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11335     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11336             #include <BitMatrix.h>
11337             #include <BitMatrixIO.h>
11338             int main(){
11339                 ZXing::BitMatrix matrix(1, 1);
11340                 matrix.set(0, 0, true);
11341                 ZXing::ToSVG(matrix);
11342                 return 0;
11343             }
11344         ])], [
11345             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11346             AC_MSG_RESULT([yes])
11347         ], [AC_MSG_RESULT([no])])
11348     CXXFLAGS=$save_CXXFLAGS
11349     AC_LANG_POP([C++])
11350     AC_SUBST(HAVE_ZXING_TOSVG)
11352 AC_SUBST(SYSTEM_ZXING)
11353 AC_SUBST(ENABLE_ZXING)
11354 AC_SUBST(ZXING_CFLAGS)
11355 AC_SUBST(ZXING_LIBS)
11357 dnl ===================================================================
11358 dnl Check for system box2d
11359 dnl ===================================================================
11360 AC_MSG_CHECKING([which box2d to use])
11361 if test "$with_system_box2d" = "yes"; then
11362     AC_MSG_RESULT([external])
11363     SYSTEM_BOX2D=TRUE
11364     AC_LANG_PUSH([C++])
11365     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11366         [BOX2D_H_FOUND='FALSE'])
11367     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11368         _BOX2D_LIB=box2d
11369         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11370     else
11371         # fail this. there's no other alternative to check when we are here.
11372         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11373             [AC_MSG_ERROR(box2d headers not found.)])
11374         _BOX2D_LIB=Box2D
11375         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11376     fi
11377     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11378         [ AC_MSG_ERROR(box2d library not found.) ], [])
11379     BOX2D_LIBS=-l$_BOX2D_LIB
11380     AC_LANG_POP([C++])
11381     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11382     FilterLibs "${BOX2D_LIBS}"
11383     BOX2D_LIBS="${filteredlibs}"
11384 else
11385     AC_MSG_RESULT([internal])
11386     SYSTEM_BOX2D=
11387     BUILD_TYPE="$BUILD_TYPE BOX2D"
11389 AC_SUBST(SYSTEM_BOX2D)
11390 AC_SUBST(BOX2D_CFLAGS)
11391 AC_SUBST(BOX2D_LIBS)
11393 dnl ===================================================================
11394 dnl Checking for altlinuxhyph
11395 dnl ===================================================================
11396 AC_MSG_CHECKING([which altlinuxhyph to use])
11397 if test "$with_system_altlinuxhyph" = "yes"; then
11398     AC_MSG_RESULT([external])
11399     SYSTEM_HYPH=TRUE
11400     AC_CHECK_HEADER(hyphen.h, [],
11401        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11402     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11403        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11404        [#include <hyphen.h>])
11405     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11406         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11407     if test -z "$HYPHEN_LIB"; then
11408         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11409            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11410     fi
11411     if test -z "$HYPHEN_LIB"; then
11412         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11413            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11414     fi
11415 else
11416     AC_MSG_RESULT([internal])
11417     SYSTEM_HYPH=
11418     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11419     if test "$COM" = "MSC"; then
11420         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11421     else
11422         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11423     fi
11425 AC_SUBST(SYSTEM_HYPH)
11426 AC_SUBST(HYPHEN_LIB)
11428 dnl ===================================================================
11429 dnl Checking for mythes
11430 dnl ===================================================================
11431 AC_MSG_CHECKING([which mythes to use])
11432 if test "$with_system_mythes" = "yes"; then
11433     AC_MSG_RESULT([external])
11434     SYSTEM_MYTHES=TRUE
11435     AC_LANG_PUSH([C++])
11436     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11437     if test "$MYTHES_PKGCONFIG" = "no"; then
11438         AC_CHECK_HEADER(mythes.hxx, [],
11439             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11440         AC_CHECK_LIB([mythes-1.2], [main], [:],
11441             [ MYTHES_FOUND=no], [])
11442     if test "$MYTHES_FOUND" = "no"; then
11443         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11444                 [ MYTHES_FOUND=no], [])
11445     fi
11446     if test "$MYTHES_FOUND" = "no"; then
11447         AC_MSG_ERROR([mythes library not found!.])
11448     fi
11449     fi
11450     AC_LANG_POP([C++])
11451     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11452     FilterLibs "${MYTHES_LIBS}"
11453     MYTHES_LIBS="${filteredlibs}"
11454 else
11455     AC_MSG_RESULT([internal])
11456     SYSTEM_MYTHES=
11457     BUILD_TYPE="$BUILD_TYPE MYTHES"
11458     if test "$COM" = "MSC"; then
11459         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11460     else
11461         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11462     fi
11464 AC_SUBST(SYSTEM_MYTHES)
11465 AC_SUBST(MYTHES_CFLAGS)
11466 AC_SUBST(MYTHES_LIBS)
11468 dnl ===================================================================
11469 dnl How should we build the linear programming solver ?
11470 dnl ===================================================================
11472 ENABLE_COINMP=
11473 AC_MSG_CHECKING([whether to build with CoinMP])
11474 if test "$enable_coinmp" != "no"; then
11475     ENABLE_COINMP=TRUE
11476     AC_MSG_RESULT([yes])
11477     if test "$with_system_coinmp" = "yes"; then
11478         SYSTEM_COINMP=TRUE
11479         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11480         FilterLibs "${COINMP_LIBS}"
11481         COINMP_LIBS="${filteredlibs}"
11482     else
11483         BUILD_TYPE="$BUILD_TYPE COINMP"
11484     fi
11485 else
11486     AC_MSG_RESULT([no])
11488 AC_SUBST(ENABLE_COINMP)
11489 AC_SUBST(SYSTEM_COINMP)
11490 AC_SUBST(COINMP_CFLAGS)
11491 AC_SUBST(COINMP_LIBS)
11493 ENABLE_LPSOLVE=
11494 AC_MSG_CHECKING([whether to build with lpsolve])
11495 if test "$enable_lpsolve" != "no"; then
11496     ENABLE_LPSOLVE=TRUE
11497     AC_MSG_RESULT([yes])
11498 else
11499     AC_MSG_RESULT([no])
11501 AC_SUBST(ENABLE_LPSOLVE)
11503 if test "$ENABLE_LPSOLVE" = TRUE; then
11504     AC_MSG_CHECKING([which lpsolve to use])
11505     if test "$with_system_lpsolve" = "yes"; then
11506         AC_MSG_RESULT([external])
11507         SYSTEM_LPSOLVE=TRUE
11508         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11509            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11510         save_LIBS=$LIBS
11511         # some systems need this. Like Ubuntu...
11512         AC_CHECK_LIB(m, floor)
11513         AC_CHECK_LIB(dl, dlopen)
11514         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11515             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11516         LIBS=$save_LIBS
11517     else
11518         AC_MSG_RESULT([internal])
11519         SYSTEM_LPSOLVE=
11520         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11521     fi
11523 AC_SUBST(SYSTEM_LPSOLVE)
11525 dnl ===================================================================
11526 dnl Checking for libexttextcat
11527 dnl ===================================================================
11528 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11529 if test "$with_system_libexttextcat" = "yes"; then
11530     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11532 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11534 dnl ===================================================================
11535 dnl Checking for libnumbertext
11536 dnl ===================================================================
11537 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11538 if test "$with_system_libnumbertext" = "yes"; then
11539     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11540     SYSTEM_LIBNUMBERTEXT=YES
11541 else
11542     SYSTEM_LIBNUMBERTEXT=
11544 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11545 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11547 dnl ***************************************
11548 dnl testing libc version for Linux...
11549 dnl ***************************************
11550 if test "$_os" = "Linux"; then
11551     AC_MSG_CHECKING([whether the libc is recent enough])
11552     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11553     #include <features.h>
11554     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11555     #error glibc >= 2.1 is required
11556     #endif
11557     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11560 dnl =========================================
11561 dnl Check for uuidgen
11562 dnl =========================================
11563 if test "$_os" = "WINNT"; then
11564     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11565     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11566     UUIDGEN=uuidgen.exe
11567     AC_SUBST(UUIDGEN)
11568 else
11569     AC_PATH_PROG([UUIDGEN], [uuidgen])
11570     if test -z "$UUIDGEN"; then
11571         AC_MSG_WARN([uuid is needed for building installation sets])
11572     fi
11575 dnl ***************************************
11576 dnl Checking for bison and flex
11577 dnl ***************************************
11578 AC_PATH_PROG(BISON, bison)
11579 if test -z "$BISON"; then
11580     AC_MSG_ERROR([no bison found in \$PATH, install it])
11581 else
11582     AC_MSG_CHECKING([the bison version])
11583     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11584     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11585     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11586     dnl cause
11587     dnl
11588     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]
11589     dnl   typedef union YYSTYPE
11590     dnl           ~~~~~~^~~~~~~
11591     dnl
11592     dnl while at least 3.4.1 is know to be good:
11593     if test "$COMPILER_PLUGINS" = TRUE; then
11594         if test "$_bison_longver" -lt 2004; then
11595             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11596         fi
11597     else
11598         if test "$_bison_longver" -lt 2000; then
11599             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11600         fi
11601     fi
11603 AC_SUBST([BISON])
11605 AC_PATH_PROG(FLEX, flex)
11606 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11607     FLEX=`cygpath -m $FLEX`
11609 if test -z "$FLEX"; then
11610     AC_MSG_ERROR([no flex found in \$PATH, install it])
11611 else
11612     AC_MSG_CHECKING([the flex version])
11613     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11614     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11615         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11616     fi
11618 AC_SUBST([FLEX])
11620 AC_PATH_PROG(DIFF, diff)
11621 if test -z "$DIFF"; then
11622     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11624 AC_SUBST([DIFF])
11626 AC_PATH_PROG(UNIQ, uniq)
11627 if test -z "$UNIQ"; then
11628     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11630 AC_SUBST([UNIQ])
11632 dnl ***************************************
11633 dnl Checking for patch
11634 dnl ***************************************
11635 AC_PATH_PROG(PATCH, patch)
11636 if test -z "$PATCH"; then
11637     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11640 dnl On Solaris or macOS, check if --with-gnu-patch was used
11641 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11642     if test -z "$with_gnu_patch"; then
11643         GNUPATCH=$PATCH
11644     else
11645         if test -x "$with_gnu_patch"; then
11646             GNUPATCH=$with_gnu_patch
11647         else
11648             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11649         fi
11650     fi
11652     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11653     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11654         AC_MSG_RESULT([yes])
11655     else
11656         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11657             AC_MSG_RESULT([no, but accepted (Apple patch)])
11658             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11659         else
11660             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11661         fi
11662     fi
11663 else
11664     GNUPATCH=$PATCH
11667 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11668     GNUPATCH=`cygpath -m $GNUPATCH`
11671 dnl We also need to check for --with-gnu-cp
11673 if test -z "$with_gnu_cp"; then
11674     # check the place where the good stuff is hidden on Solaris...
11675     if test -x /usr/gnu/bin/cp; then
11676         GNUCP=/usr/gnu/bin/cp
11677     else
11678         AC_PATH_PROGS(GNUCP, gnucp cp)
11679     fi
11680     if test -z $GNUCP; then
11681         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11682     fi
11683 else
11684     if test -x "$with_gnu_cp"; then
11685         GNUCP=$with_gnu_cp
11686     else
11687         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11688     fi
11691 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11692     GNUCP=`cygpath -m $GNUCP`
11695 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11696 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11697     AC_MSG_RESULT([yes])
11698 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11699     AC_MSG_RESULT([yes])
11700 else
11701     case "$build_os" in
11702     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11703         x_GNUCP=[\#]
11704         GNUCP=''
11705         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11706         ;;
11707     *)
11708         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11709         ;;
11710     esac
11713 AC_SUBST(GNUPATCH)
11714 AC_SUBST(GNUCP)
11715 AC_SUBST(x_GNUCP)
11717 dnl ***************************************
11718 dnl testing assembler path
11719 dnl ***************************************
11720 ML_EXE=""
11721 if test "$_os" = "WINNT"; then
11722     case "$WIN_HOST_ARCH" in
11723     x86) assembler=ml.exe ;;
11724     x64) assembler=ml64.exe ;;
11725     arm64) assembler=armasm64.exe ;;
11726     esac
11728     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11729     if test -f "$MSVC_HOST_PATH/$assembler"; then
11730         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11731         AC_MSG_RESULT([$ML_EXE])
11732     else
11733         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11734     fi
11737 AC_SUBST(ML_EXE)
11739 dnl ===================================================================
11740 dnl We need zip and unzip
11741 dnl ===================================================================
11742 AC_PATH_PROG(ZIP, zip)
11743 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11744 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11745     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],,)
11748 AC_PATH_PROG(UNZIP, unzip)
11749 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11751 dnl ===================================================================
11752 dnl Zip must be a specific type for different build types.
11753 dnl ===================================================================
11754 if test $build_os = cygwin; then
11755     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11756         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11757     fi
11760 dnl ===================================================================
11761 dnl We need touch with -h option support.
11762 dnl ===================================================================
11763 AC_PATH_PROG(TOUCH, touch)
11764 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11765 touch "$WARNINGS_FILE"
11766 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11767     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],,)
11770 dnl ===================================================================
11771 dnl Check for system epoxy
11772 dnl ===================================================================
11773 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11774 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11776 dnl ===================================================================
11777 dnl Show which vclplugs will be built.
11778 dnl ===================================================================
11779 R=""
11781 libo_ENABLE_VCLPLUG([gen])
11782 libo_ENABLE_VCLPLUG([gtk3])
11783 libo_ENABLE_VCLPLUG([gtk3_kde5])
11784 libo_ENABLE_VCLPLUG([gtk4])
11785 libo_ENABLE_VCLPLUG([kf5])
11786 libo_ENABLE_VCLPLUG([kf6])
11787 libo_ENABLE_VCLPLUG([qt5])
11788 libo_ENABLE_VCLPLUG([qt6])
11790 if test "$_os" = "WINNT"; then
11791     R="$R win"
11792 elif test "$_os" = "Darwin"; then
11793     R="$R osx"
11794 elif test "$_os" = "iOS"; then
11795     R="ios"
11796 elif test "$_os" = Android; then
11797     R="android"
11800 build_vcl_plugins="$R"
11801 if test -z "$build_vcl_plugins"; then
11802     build_vcl_plugins=" none"
11804 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11805 VCL_PLUGIN_INFO=$R
11806 AC_SUBST([VCL_PLUGIN_INFO])
11808 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11809     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11812 dnl ===================================================================
11813 dnl Check for GTK libraries
11814 dnl ===================================================================
11816 GTK3_CFLAGS=""
11817 GTK3_LIBS=""
11818 ENABLE_GTKTILEDVIEWER=""
11819 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11820     if test "$with_system_cairo" = no; then
11821         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.'
11822     fi
11823     : ${with_system_cairo:=yes}
11824     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)
11825     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11826     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11827     FilterLibs "${GTK3_LIBS}"
11828     GTK3_LIBS="${filteredlibs}"
11830     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11831     if test "$with_system_epoxy" != "yes"; then
11832         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11833         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11834                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11835     fi
11836 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11837     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11838     if test "$build_os" = "cygwin"; then
11839         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11840         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11841     fi
11843     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11844     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11845     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11846     FilterLibs "${GTK3_LIBS}"
11847     GTK3_LIBS="${filteredlibs}"
11848     ENABLE_GTKTILEDVIEWER="yes"
11850 AC_SUBST(GTK3_LIBS)
11851 AC_SUBST(GTK3_CFLAGS)
11852 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11854 GTK4_CFLAGS=""
11855 GTK4_LIBS=""
11856 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11857     if test "$with_system_cairo" = no; then
11858         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11859     fi
11860     : ${with_system_cairo:=yes}
11861     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11862     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11863     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11864     FilterLibs "${GTK4_LIBS}"
11865     GTK4_LIBS="${filteredlibs}"
11867     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11868     if test "$with_system_epoxy" != "yes"; then
11869         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11870         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11871                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11872     fi
11874 AC_SUBST(GTK4_LIBS)
11875 AC_SUBST(GTK4_CFLAGS)
11877 if test "$enable_introspection" = yes; then
11878     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11879         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11880     else
11881         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11882     fi
11885 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11886 if ! test "$ENABLE_GTK3" = TRUE; then
11887     if test "$enable_atspi_tests" = yes; then
11888         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11889     fi
11890     enable_atspi_tests=no
11892 if ! test "$enable_atspi_tests" = no; then
11893     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11894     if ! test "$XVFB_RUN" = no; then
11895         dnl make sure the found xvfb-run actually works
11896         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11897         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11898             AC_MSG_RESULT([yes])
11899         else
11900             AC_MSG_RESULT([no])
11901             XVFB_RUN=no
11902         fi
11903     fi
11904     if test "$XVFB_RUN" = no; then
11905         if test "$enable_atspi_tests" = yes; then
11906             AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11907         fi
11908         enable_atspi_tests=no
11909     fi
11911 if ! test "$enable_atspi_tests" = no; then
11912     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11913     if test "$DBUS_LAUNCH" = no; then
11914         if test "$enable_atspi_tests" = yes; then
11915             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11916         fi
11917         enable_atspi_tests=no
11918     fi
11920 if ! test "$enable_atspi_tests" = no; then
11921     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11922                       [if test "$enable_atspi_tests" = yes; then
11923                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11924                        else
11925                            enable_atspi_tests=no
11926                        fi])
11928 if ! test "x$enable_atspi_tests" = xno; then
11929     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11930                       [have_atspi_scroll_to=1],
11931                       [have_atspi_scroll_to=0])
11932     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11933                        [Whether AT-SPI2 has the scrollTo API])
11935 ENABLE_ATSPI_TESTS=
11936 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11937 AC_SUBST([ENABLE_ATSPI_TESTS])
11939 dnl ===================================================================
11940 dnl check for dbus support
11941 dnl ===================================================================
11942 ENABLE_DBUS=""
11943 DBUS_CFLAGS=""
11944 DBUS_LIBS=""
11945 DBUS_GLIB_CFLAGS=""
11946 DBUS_GLIB_LIBS=""
11947 DBUS_HAVE_GLIB=""
11949 if test "$enable_dbus" = "no"; then
11950     test_dbus=no
11953 AC_MSG_CHECKING([whether to enable DBUS support])
11954 if test "$test_dbus" = "yes"; then
11955     ENABLE_DBUS="TRUE"
11956     AC_MSG_RESULT([yes])
11957     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11958     AC_DEFINE(ENABLE_DBUS)
11959     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11960     FilterLibs "${DBUS_LIBS}"
11961     DBUS_LIBS="${filteredlibs}"
11963     # Glib is needed for BluetoothServer
11964     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11965     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11966         [
11967             DBUS_HAVE_GLIB="TRUE"
11968             AC_DEFINE(DBUS_HAVE_GLIB,1)
11969         ],
11970         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11971     )
11972 else
11973     AC_MSG_RESULT([no])
11976 AC_SUBST(ENABLE_DBUS)
11977 AC_SUBST(DBUS_CFLAGS)
11978 AC_SUBST(DBUS_LIBS)
11979 AC_SUBST(DBUS_GLIB_CFLAGS)
11980 AC_SUBST(DBUS_GLIB_LIBS)
11981 AC_SUBST(DBUS_HAVE_GLIB)
11983 AC_MSG_CHECKING([whether to enable Impress remote control])
11984 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11985     AC_MSG_RESULT([yes])
11986     ENABLE_SDREMOTE=TRUE
11987     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11988         <true/>"
11989     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11991     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11992         # The Bluetooth code doesn't compile with macOS SDK 10.15
11993         if test "$enable_sdremote_bluetooth" = yes; then
11994             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11995         fi
11996         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11997         enable_sdremote_bluetooth=no
11998     fi
11999     # If not explicitly enabled or disabled, default
12000     if test -z "$enable_sdremote_bluetooth"; then
12001         case "$OS" in
12002         LINUX|MACOSX|WNT)
12003             # Default to yes for these
12004             enable_sdremote_bluetooth=yes
12005             ;;
12006         *)
12007             # otherwise no
12008             enable_sdremote_bluetooth=no
12009             ;;
12010         esac
12011     fi
12012     # $enable_sdremote_bluetooth is guaranteed non-empty now
12014     if test "$enable_sdremote_bluetooth" != "no"; then
12015         if test "$OS" = "LINUX"; then
12016             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12017                 AC_MSG_RESULT([yes])
12018                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12019                 dnl ===================================================================
12020                 dnl Check for system bluez
12021                 dnl ===================================================================
12022                 AC_MSG_CHECKING([which Bluetooth header to use])
12023                 if test "$with_system_bluez" = "yes"; then
12024                     AC_MSG_RESULT([external])
12025                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12026                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12027                     SYSTEM_BLUEZ=TRUE
12028                 else
12029                     AC_MSG_RESULT([internal])
12030                     SYSTEM_BLUEZ=
12031                 fi
12032             else
12033                 AC_MSG_RESULT([no, dbus disabled])
12034                 ENABLE_SDREMOTE_BLUETOOTH=
12035                 SYSTEM_BLUEZ=
12036             fi
12037         else
12038             AC_MSG_RESULT([yes])
12039             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12040             SYSTEM_BLUEZ=
12041             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12042         <key>com.apple.security.device.bluetooth</key>
12043         <true/>"
12044         fi
12045     else
12046         AC_MSG_RESULT([no])
12047         ENABLE_SDREMOTE_BLUETOOTH=
12048         SYSTEM_BLUEZ=
12049     fi
12050 else
12051     ENABLE_SDREMOTE=
12052     SYSTEM_BLUEZ=
12053     AC_MSG_RESULT([no])
12055 AC_SUBST(ENABLE_SDREMOTE)
12056 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12057 AC_SUBST(SDREMOTE_ENTITLEMENT)
12058 AC_SUBST(SYSTEM_BLUEZ)
12060 dnl ===================================================================
12061 dnl Check whether to enable GIO support
12062 dnl ===================================================================
12063 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12064     AC_MSG_CHECKING([whether to enable GIO support])
12065     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12066         dnl Need at least 2.26 for the dbus support.
12067         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12068                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12069         if test "$ENABLE_GIO" = "TRUE"; then
12070             AC_DEFINE(ENABLE_GIO)
12071             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12072             FilterLibs "${GIO_LIBS}"
12073             GIO_LIBS="${filteredlibs}"
12074         fi
12075     else
12076         AC_MSG_RESULT([no])
12077     fi
12079 AC_SUBST(ENABLE_GIO)
12080 AC_SUBST(GIO_CFLAGS)
12081 AC_SUBST(GIO_LIBS)
12084 dnl ===================================================================
12086 SPLIT_APP_MODULES=""
12087 if test "$enable_split_app_modules" = "yes"; then
12088     SPLIT_APP_MODULES="TRUE"
12090 AC_SUBST(SPLIT_APP_MODULES)
12092 SPLIT_OPT_FEATURES=""
12093 if test "$enable_split_opt_features" = "yes"; then
12094     SPLIT_OPT_FEATURES="TRUE"
12096 AC_SUBST(SPLIT_OPT_FEATURES)
12098 dnl ===================================================================
12099 dnl Check whether the GStreamer libraries are available.
12100 dnl ===================================================================
12102 ENABLE_GSTREAMER_1_0=""
12104 if test "$test_gstreamer_1_0" = yes; then
12106     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12107     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12108         ENABLE_GSTREAMER_1_0="TRUE"
12109         AC_MSG_RESULT([yes])
12110         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12111         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12112         FilterLibs "${GSTREAMER_1_0_LIBS}"
12113         GSTREAMER_1_0_LIBS="${filteredlibs}"
12114         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12115     else
12116         AC_MSG_RESULT([no])
12117     fi
12119 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12120 AC_SUBST(GSTREAMER_1_0_LIBS)
12121 AC_SUBST(ENABLE_GSTREAMER_1_0)
12123 ENABLE_OPENGL_TRANSITIONS=
12124 ENABLE_OPENGL_CANVAS=
12125 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12126    : # disable
12127 elif test "$_os" = "Darwin"; then
12128     # We use frameworks on macOS, no need for detail checks
12129     ENABLE_OPENGL_TRANSITIONS=TRUE
12130     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12131     ENABLE_OPENGL_CANVAS=TRUE
12132 elif test $_os = WINNT; then
12133     ENABLE_OPENGL_TRANSITIONS=TRUE
12134     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12135     ENABLE_OPENGL_CANVAS=TRUE
12136 else
12137     if test "$USING_X11" = TRUE; then
12138         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12139         ENABLE_OPENGL_TRANSITIONS=TRUE
12140         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12141         ENABLE_OPENGL_CANVAS=TRUE
12142     fi
12145 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12146 AC_SUBST(ENABLE_OPENGL_CANVAS)
12148 dnl =================================================
12149 dnl Check whether to build with OpenCL support.
12150 dnl =================================================
12152 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12153     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12154     # platform (optional at run-time, used through clew).
12155     BUILD_TYPE="$BUILD_TYPE OPENCL"
12156     AC_DEFINE(HAVE_FEATURE_OPENCL)
12159 dnl =================================================
12160 dnl Check whether to build with dconf support.
12161 dnl =================================================
12163 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12164     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12165         if test "$enable_dconf" = yes; then
12166             AC_MSG_ERROR([dconf not found])
12167         else
12168             enable_dconf=no
12169         fi])
12171 AC_MSG_CHECKING([whether to enable dconf])
12172 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12173     DCONF_CFLAGS=
12174     DCONF_LIBS=
12175     ENABLE_DCONF=
12176     AC_MSG_RESULT([no])
12177 else
12178     ENABLE_DCONF=TRUE
12179     AC_DEFINE(ENABLE_DCONF)
12180     AC_MSG_RESULT([yes])
12182 AC_SUBST([DCONF_CFLAGS])
12183 AC_SUBST([DCONF_LIBS])
12184 AC_SUBST([ENABLE_DCONF])
12186 # pdf import?
12187 AC_MSG_CHECKING([whether to build the PDF import feature])
12188 ENABLE_PDFIMPORT=
12189 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12190     AC_MSG_RESULT([yes])
12191     ENABLE_PDFIMPORT=TRUE
12192     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12193 else
12194     AC_MSG_RESULT([no])
12197 # Pdfium?
12198 AC_MSG_CHECKING([whether to build PDFium])
12199 ENABLE_PDFIUM=
12200 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12201     AC_MSG_RESULT([yes])
12202     ENABLE_PDFIUM=TRUE
12203     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12204 else
12205     AC_MSG_RESULT([no])
12207 AC_SUBST(ENABLE_PDFIUM)
12209 if test "$ENABLE_PDFIUM" = "TRUE"; then
12210     AC_MSG_CHECKING([which OpenJPEG library to use])
12211     if test "$with_system_openjpeg" = "yes"; then
12212         SYSTEM_OPENJPEG2=TRUE
12213         AC_MSG_RESULT([external])
12214         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12215         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12216         FilterLibs "${OPENJPEG2_LIBS}"
12217         OPENJPEG2_LIBS="${filteredlibs}"
12218     else
12219         SYSTEM_OPENJPEG2=FALSE
12220         AC_MSG_RESULT([internal])
12221     fi
12223     AC_MSG_CHECKING([which Abseil library to use])
12224     if test "$with_system_abseil" = "yes"; then
12225         AC_MSG_RESULT([external])
12226         SYSTEM_ABSEIL=TRUE
12227         AC_LANG_PUSH([C++])
12228         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12229                         [AC_MSG_ERROR(abseil headers not found.)], [])
12230         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12231                         [AC_MSG_ERROR(abseil headers not found.)], [])
12232         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12233                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12234         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12235                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12236         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12237         AC_LANG_POP([C++])
12238         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12239         FilterLibs "${ABSEIL_LIBS}"
12240         ABSEIL_LIBS="${filteredlibs}"
12241     else
12242         AC_MSG_RESULT([internal])
12243     fi
12245 AC_SUBST(SYSTEM_OPENJPEG2)
12246 AC_SUBST(SYSTEM_ABSEIL)
12247 AC_SUBST(ABSEIL_CFLAGS)
12248 AC_SUBST(ABSEIL_LIBS)
12250 dnl ===================================================================
12251 dnl Check for poppler
12252 dnl ===================================================================
12253 ENABLE_POPPLER=
12254 AC_MSG_CHECKING([whether to build Poppler])
12255 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12256     AC_MSG_RESULT([yes])
12257     ENABLE_POPPLER=TRUE
12258     AC_DEFINE(HAVE_FEATURE_POPPLER)
12259 else
12260     AC_MSG_RESULT([no])
12262 AC_SUBST(ENABLE_POPPLER)
12264 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12265     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12268 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12269     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12272 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12273     dnl ===================================================================
12274     dnl Check for system poppler
12275     dnl ===================================================================
12276     AC_MSG_CHECKING([which PDF import poppler to use])
12277     if test "$with_system_poppler" = "yes"; then
12278         AC_MSG_RESULT([external])
12279         SYSTEM_POPPLER=TRUE
12280         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12281         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12282         FilterLibs "${POPPLER_LIBS}"
12283         POPPLER_LIBS="${filteredlibs}"
12284     else
12285         AC_MSG_RESULT([internal])
12286         SYSTEM_POPPLER=
12287         BUILD_TYPE="$BUILD_TYPE POPPLER"
12288     fi
12289     AC_DEFINE([ENABLE_PDFIMPORT],1)
12291 AC_SUBST(ENABLE_PDFIMPORT)
12292 AC_SUBST(SYSTEM_POPPLER)
12293 AC_SUBST(POPPLER_CFLAGS)
12294 AC_SUBST(POPPLER_LIBS)
12296 # Skia?
12297 ENABLE_SKIA=
12298 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12299     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12300     if test "$SYSTEM_FREETYPE" = TRUE; then
12301         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12302             [skia_freetype_ok=yes],
12303             [skia_freetype_ok=no])
12304     else # internal is ok
12305         skia_freetype_ok=yes
12306     fi
12307     AC_MSG_CHECKING([whether to build Skia])
12308     if test "$skia_freetype_ok" = "yes"; then
12309         if test "$enable_skia" = "debug"; then
12310             AC_MSG_RESULT([yes (debug)])
12311             ENABLE_SKIA_DEBUG=TRUE
12312         else
12313             AC_MSG_RESULT([yes])
12314             ENABLE_SKIA_DEBUG=
12315         fi
12316         ENABLE_SKIA=TRUE
12317         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12318             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12319         fi
12321         AC_DEFINE(HAVE_FEATURE_SKIA)
12322         BUILD_TYPE="$BUILD_TYPE SKIA"
12324         if test "$OS" = "MACOSX"; then
12325             AC_DEFINE(SK_GANESH,1)
12326             AC_DEFINE(SK_METAL,1)
12327             SKIA_GPU=METAL
12328             AC_SUBST(SKIA_GPU)
12329         else
12330             AC_DEFINE(SK_GANESH,1)
12331             AC_DEFINE(SK_VULKAN,1)
12332             SKIA_GPU=VULKAN
12333             AC_SUBST(SKIA_GPU)
12334         fi
12335     else
12336         AC_MSG_RESULT([no (freetype too old)])
12337         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12338     fi
12340 else
12341     AC_MSG_CHECKING([whether to build Skia])
12342     AC_MSG_RESULT([no])
12344 AC_SUBST(ENABLE_SKIA)
12345 AC_SUBST(ENABLE_SKIA_DEBUG)
12347 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12348 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12349 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12350 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12351 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12352 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12353 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12354 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12355 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12356 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12357 LO_CLANG_VERSION=
12358 HAVE_LO_CLANG_DLLEXPORTINLINES=
12360 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12361     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12362         AC_MSG_CHECKING([for Clang])
12363         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12364     else
12365         if test "$_os" = "WINNT"; then
12366             AC_MSG_CHECKING([for clang-cl])
12367             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12368                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12369             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12370                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12371             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12372                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12373             fi
12374             if test -n "$LO_CLANG_CC"; then
12375                 dnl explicitly set -m32/-m64
12376                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12377                 LO_CLANG_CXX="$LO_CLANG_CC"
12378                 AC_MSG_RESULT([$LO_CLANG_CC])
12379             else
12380                 AC_MSG_RESULT([no])
12381             fi
12383             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12384             echo "#include <stdlib.h>" > conftest.c
12385             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12386                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12387             rm -f conftest.c conftest.obj
12388             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12389                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12390             else
12391                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12392             fi
12393         else
12394             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12395             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12396         fi
12397     fi
12398     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12399         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12400         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12401         if test "$LO_CLANG_VERSION" -lt 50002; then
12402             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12403             LO_CLANG_CC=
12404             LO_CLANG_CXX=
12405         fi
12406     fi
12407     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12408         save_CXX="$CXX"
12409         CXX="$LO_CLANG_CXX"
12410         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12411         AC_LANG_PUSH([C++])
12412         save_CXXFLAGS=$CXXFLAGS
12413         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12414         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12415                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12416                 AC_MSG_RESULT([yes])
12417             ], [AC_MSG_RESULT([no])])
12418         CXXFLAGS=$save_CXXFLAGS
12419         AC_LANG_POP([C++])
12420         CXX="$save_CXX"
12421         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12422             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.])
12423         fi
12424     fi
12425     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12426         # Skia is the default on Windows and Mac, so hard-require Clang.
12427         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12428         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12429             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12430         else
12431             AC_MSG_WARN([Clang compiler not found.])
12432         fi
12433     else
12435         save_CXX="$CXX"
12436         CXX="$LO_CLANG_CXX"
12437         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12438         flag_sse2=-msse2
12439         flag_ssse3=-mssse3
12440         flag_sse41=-msse4.1
12441         flag_sse42=-msse4.2
12442         flag_avx=-mavx
12443         flag_avx2=-mavx2
12444         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12445         flag_avx512f=-mavx512f
12446         flag_f16c=-mf16c
12447         flag_fma=-mfma
12449         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12450         AC_LANG_PUSH([C++])
12451         save_CXXFLAGS=$CXXFLAGS
12452         CXXFLAGS="$CXXFLAGS $flag_sse2"
12453         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12454             #include <emmintrin.h>
12455             int main () {
12456                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12457                 c = _mm_xor_si128 (a, b);
12458                 return 0;
12459             }
12460             ])],
12461             [can_compile_sse2=yes],
12462             [can_compile_sse2=no])
12463         AC_LANG_POP([C++])
12464         CXXFLAGS=$save_CXXFLAGS
12465         AC_MSG_RESULT([${can_compile_sse2}])
12466         if test "${can_compile_sse2}" = "yes" ; then
12467             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12468         fi
12470         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12471         AC_LANG_PUSH([C++])
12472         save_CXXFLAGS=$CXXFLAGS
12473         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12474         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12475             #include <tmmintrin.h>
12476             int main () {
12477                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12478                 c = _mm_maddubs_epi16 (a, b);
12479                 return 0;
12480             }
12481             ])],
12482             [can_compile_ssse3=yes],
12483             [can_compile_ssse3=no])
12484         AC_LANG_POP([C++])
12485         CXXFLAGS=$save_CXXFLAGS
12486         AC_MSG_RESULT([${can_compile_ssse3}])
12487         if test "${can_compile_ssse3}" = "yes" ; then
12488             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12489         fi
12491         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12492         AC_LANG_PUSH([C++])
12493         save_CXXFLAGS=$CXXFLAGS
12494         CXXFLAGS="$CXXFLAGS $flag_sse41"
12495         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12496             #include <smmintrin.h>
12497             int main () {
12498                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12499                 c = _mm_cmpeq_epi64 (a, b);
12500                 return 0;
12501             }
12502             ])],
12503             [can_compile_sse41=yes],
12504             [can_compile_sse41=no])
12505         AC_LANG_POP([C++])
12506         CXXFLAGS=$save_CXXFLAGS
12507         AC_MSG_RESULT([${can_compile_sse41}])
12508         if test "${can_compile_sse41}" = "yes" ; then
12509             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12510         fi
12512         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12513         AC_LANG_PUSH([C++])
12514         save_CXXFLAGS=$CXXFLAGS
12515         CXXFLAGS="$CXXFLAGS $flag_sse42"
12516         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12517             #include <nmmintrin.h>
12518             int main () {
12519                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12520                 c = _mm_cmpgt_epi64 (a, b);
12521                 return 0;
12522             }
12523             ])],
12524             [can_compile_sse42=yes],
12525             [can_compile_sse42=no])
12526         AC_LANG_POP([C++])
12527         CXXFLAGS=$save_CXXFLAGS
12528         AC_MSG_RESULT([${can_compile_sse42}])
12529         if test "${can_compile_sse42}" = "yes" ; then
12530             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12531         fi
12533         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12534         AC_LANG_PUSH([C++])
12535         save_CXXFLAGS=$CXXFLAGS
12536         CXXFLAGS="$CXXFLAGS $flag_avx"
12537         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12538             #include <immintrin.h>
12539             int main () {
12540                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12541                 c = _mm256_xor_ps(a, b);
12542                 return 0;
12543             }
12544             ])],
12545             [can_compile_avx=yes],
12546             [can_compile_avx=no])
12547         AC_LANG_POP([C++])
12548         CXXFLAGS=$save_CXXFLAGS
12549         AC_MSG_RESULT([${can_compile_avx}])
12550         if test "${can_compile_avx}" = "yes" ; then
12551             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12552         fi
12554         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12555         AC_LANG_PUSH([C++])
12556         save_CXXFLAGS=$CXXFLAGS
12557         CXXFLAGS="$CXXFLAGS $flag_avx2"
12558         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12559             #include <immintrin.h>
12560             int main () {
12561                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12562                 c = _mm256_maddubs_epi16(a, b);
12563                 return 0;
12564             }
12565             ])],
12566             [can_compile_avx2=yes],
12567             [can_compile_avx2=no])
12568         AC_LANG_POP([C++])
12569         CXXFLAGS=$save_CXXFLAGS
12570         AC_MSG_RESULT([${can_compile_avx2}])
12571         if test "${can_compile_avx2}" = "yes" ; then
12572             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12573         fi
12575         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12576         AC_LANG_PUSH([C++])
12577         save_CXXFLAGS=$CXXFLAGS
12578         CXXFLAGS="$CXXFLAGS $flag_avx512"
12579         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12580             #include <immintrin.h>
12581             int main () {
12582                 __m512i a = _mm512_loadu_si512(0);
12583                 __m512d v1 = _mm512_load_pd(0);
12584                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12585                 __m512d v2 = _mm512_abs_pd(v1);
12586                 return 0;
12587             }
12588             ])],
12589             [can_compile_avx512=yes],
12590             [can_compile_avx512=no])
12591         AC_LANG_POP([C++])
12592         CXXFLAGS=$save_CXXFLAGS
12593         AC_MSG_RESULT([${can_compile_avx512}])
12594         if test "${can_compile_avx512}" = "yes" ; then
12595             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12596             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12597         fi
12599         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12600         AC_LANG_PUSH([C++])
12601         save_CXXFLAGS=$CXXFLAGS
12602         CXXFLAGS="$CXXFLAGS $flag_f16c"
12603         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12604             #include <immintrin.h>
12605             int main () {
12606                 __m128i a = _mm_set1_epi32 (0);
12607                 __m128 c;
12608                 c = _mm_cvtph_ps(a);
12609                 return 0;
12610             }
12611             ])],
12612             [can_compile_f16c=yes],
12613             [can_compile_f16c=no])
12614         AC_LANG_POP([C++])
12615         CXXFLAGS=$save_CXXFLAGS
12616         AC_MSG_RESULT([${can_compile_f16c}])
12617         if test "${can_compile_f16c}" = "yes" ; then
12618             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12619         fi
12621         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12622         AC_LANG_PUSH([C++])
12623         save_CXXFLAGS=$CXXFLAGS
12624         CXXFLAGS="$CXXFLAGS $flag_fma"
12625         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12626             #include <immintrin.h>
12627             int main () {
12628                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12629                 d = _mm256_fmadd_ps(a, b, c);
12630                 return 0;
12631             }
12632             ])],
12633             [can_compile_fma=yes],
12634             [can_compile_fma=no])
12635         AC_LANG_POP([C++])
12636         CXXFLAGS=$save_CXXFLAGS
12637         AC_MSG_RESULT([${can_compile_fma}])
12638         if test "${can_compile_fma}" = "yes" ; then
12639             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12640         fi
12642         CXX="$save_CXX"
12643     fi
12646 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12648 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12649     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12650     AC_LANG_PUSH([C])
12651     save_CC="$CC"
12652     CC="$LO_CLANG_CC"
12653     save_CFLAGS=$CFLAGS
12654     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12655     dnl an empty program will do, we're checking the compiler flags
12656     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12657                       [use_ccache=yes], [use_ccache=no])
12658     CFLAGS=$save_CFLAGS
12659     CC=$save_CC
12660     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12661         AC_MSG_RESULT([yes])
12662     else
12663         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12664         AC_MSG_RESULT([no])
12665     fi
12666     AC_LANG_POP([C])
12668     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12669     AC_LANG_PUSH([C++])
12670     save_CXX="$CXX"
12671     CXX="$LO_CLANG_CXX"
12672     save_CXXFLAGS=$CXXFLAGS
12673     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12674     dnl an empty program will do, we're checking the compiler flags
12675     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12676                       [use_ccache=yes], [use_ccache=no])
12677     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12678         AC_MSG_RESULT([yes])
12679     else
12680         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12681         AC_MSG_RESULT([no])
12682     fi
12683     CXXFLAGS=$save_CXXFLAGS
12684     CXX=$save_CXX
12685     AC_LANG_POP([C++])
12688 AC_SUBST(LO_CLANG_CC)
12689 AC_SUBST(LO_CLANG_CXX)
12690 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12691 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12692 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12693 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12694 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12695 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12696 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12697 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12698 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12699 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12700 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12701 AC_SUBST(LO_CLANG_VERSION)
12702 AC_SUBST(CLANG_USE_LD)
12703 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12705 SYSTEM_GPGMEPP=
12707 AC_MSG_CHECKING([whether to enable gpgmepp])
12708 if test "$enable_gpgmepp" = no; then
12709     AC_MSG_RESULT([no])
12710 elif test "$enable_mpl_subset" = "yes"; then
12711     AC_MSG_RESULT([no (MPL only)])
12712 elif test "$enable_fuzzers" = "yes"; then
12713     AC_MSG_RESULT([no (oss-fuzz)])
12714 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12715     AC_MSG_RESULT([yes])
12716     dnl ===================================================================
12717     dnl Check for system gpgme
12718     dnl ===================================================================
12719     AC_MSG_CHECKING([which gpgmepp to use])
12720     if test "$with_system_gpgmepp" = "yes"; then
12721         AC_MSG_RESULT([external])
12722         SYSTEM_GPGMEPP=TRUE
12724         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12725         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12726             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12727         AC_CHECK_HEADER(gpgme.h, [],
12728             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12729         AC_CHECK_LIB(gpgmepp, main, [],
12730             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12731         GPGMEPP_LIBS=-lgpgmepp
12732     else
12733         AC_MSG_RESULT([internal])
12734         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12736         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12737         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12738         if test "$_os" != "WINNT"; then
12739             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12740             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12741         fi
12742     fi
12743     ENABLE_GPGMEPP=TRUE
12744     AC_DEFINE([HAVE_FEATURE_GPGME])
12745     AC_PATH_PROG(GPG, gpg)
12746     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12747     # so let's exclude that manually for the moment
12748     if test -n "$GPG" -a "$_os" != "WINNT"; then
12749         # make sure we not only have a working gpgme, but a full working
12750         # gpg installation to run OpenPGP signature verification
12751         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12752     fi
12753     if test "$_os" = "Linux"; then
12754       uid=`id -u`
12755       AC_MSG_CHECKING([for /run/user/$uid])
12756       if test -d /run/user/$uid; then
12757         AC_MSG_RESULT([yes])
12758         AC_PATH_PROG(GPGCONF, gpgconf)
12760         # Older versions of gpgconf are not working as expected, since
12761         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12762         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12763         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12764         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12765         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12766         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12767         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12768           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12769           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12770           if $GPGCONF --dump-options > /dev/null ; then
12771             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12772               AC_MSG_RESULT([yes])
12773               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12774               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12775             else
12776               AC_MSG_RESULT([no])
12777             fi
12778           else
12779             AC_MSG_RESULT([no. missing or broken gpgconf?])
12780           fi
12781         else
12782           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12783         fi
12784       else
12785         AC_MSG_RESULT([no])
12786      fi
12787    fi
12788 else
12789     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12791 AC_SUBST(ENABLE_GPGMEPP)
12792 AC_SUBST(SYSTEM_GPGMEPP)
12793 AC_SUBST(GPG_ERROR_CFLAGS)
12794 AC_SUBST(GPG_ERROR_LIBS)
12795 AC_SUBST(LIBASSUAN_CFLAGS)
12796 AC_SUBST(LIBASSUAN_LIBS)
12797 AC_SUBST(GPGMEPP_CFLAGS)
12798 AC_SUBST(GPGMEPP_LIBS)
12800 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12801 if test "$with_java" != "no"; then
12802     AC_MSG_RESULT([yes])
12803     ENABLE_JAVA_WEBSOCKET=TRUE
12804     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12805     NEED_ANT=TRUE
12806 else
12807     AC_MSG_RESULT([no])
12808     ENABLE_JAVA_WEBSOCKET=
12810 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12812 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12813 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12814     AC_MSG_RESULT([yes])
12815     ENABLE_MEDIAWIKI=TRUE
12816     BUILD_TYPE="$BUILD_TYPE XSLTML"
12817     if test  "x$with_java" = "xno"; then
12818         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12819     fi
12820 else
12821     AC_MSG_RESULT([no])
12822     ENABLE_MEDIAWIKI=
12823     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12825 AC_SUBST(ENABLE_MEDIAWIKI)
12827 AC_MSG_CHECKING([whether to build the Report Builder])
12828 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12829     AC_MSG_RESULT([yes])
12830     ENABLE_REPORTBUILDER=TRUE
12831     AC_MSG_CHECKING([which jfreereport libs to use])
12832     if test "$with_system_jfreereport" = "yes"; then
12833         SYSTEM_JFREEREPORT=TRUE
12834         AC_MSG_RESULT([external])
12835         if test -z $SAC_JAR; then
12836             SAC_JAR=/usr/share/java/sac.jar
12837         fi
12838         if ! test -f $SAC_JAR; then
12839              AC_MSG_ERROR(sac.jar not found.)
12840         fi
12842         if test -z $LIBXML_JAR; then
12843             if test -f /usr/share/java/libxml-1.0.0.jar; then
12844                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12845             elif test -f /usr/share/java/libxml.jar; then
12846                 LIBXML_JAR=/usr/share/java/libxml.jar
12847             else
12848                 AC_MSG_ERROR(libxml.jar replacement not found.)
12849             fi
12850         elif ! test -f $LIBXML_JAR; then
12851             AC_MSG_ERROR(libxml.jar not found.)
12852         fi
12854         if test -z $FLUTE_JAR; then
12855             if test -f /usr/share/java/flute-1.3.0.jar; then
12856                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12857             elif test -f /usr/share/java/flute.jar; then
12858                 FLUTE_JAR=/usr/share/java/flute.jar
12859             else
12860                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12861             fi
12862         elif ! test -f $FLUTE_JAR; then
12863             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12864         fi
12866         if test -z $JFREEREPORT_JAR; then
12867             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12868                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12869             elif test -f /usr/share/java/flow-engine.jar; then
12870                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12871             else
12872                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12873             fi
12874         elif ! test -f  $JFREEREPORT_JAR; then
12875                 AC_MSG_ERROR(jfreereport.jar not found.)
12876         fi
12878         if test -z $LIBLAYOUT_JAR; then
12879             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12880                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12881             elif test -f /usr/share/java/liblayout.jar; then
12882                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12883             else
12884                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12885             fi
12886         elif ! test -f $LIBLAYOUT_JAR; then
12887                 AC_MSG_ERROR(liblayout.jar not found.)
12888         fi
12890         if test -z $LIBLOADER_JAR; then
12891             if test -f /usr/share/java/libloader-1.0.0.jar; then
12892                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12893             elif test -f /usr/share/java/libloader.jar; then
12894                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12895             else
12896                 AC_MSG_ERROR(libloader.jar replacement not found.)
12897             fi
12898         elif ! test -f  $LIBLOADER_JAR; then
12899             AC_MSG_ERROR(libloader.jar not found.)
12900         fi
12902         if test -z $LIBFORMULA_JAR; then
12903             if test -f /usr/share/java/libformula-0.2.0.jar; then
12904                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12905             elif test -f /usr/share/java/libformula.jar; then
12906                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12907             else
12908                 AC_MSG_ERROR(libformula.jar replacement not found.)
12909             fi
12910         elif ! test -f $LIBFORMULA_JAR; then
12911                 AC_MSG_ERROR(libformula.jar not found.)
12912         fi
12914         if test -z $LIBREPOSITORY_JAR; then
12915             if test -f /usr/share/java/librepository-1.0.0.jar; then
12916                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12917             elif test -f /usr/share/java/librepository.jar; then
12918                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12919             else
12920                 AC_MSG_ERROR(librepository.jar replacement not found.)
12921             fi
12922         elif ! test -f $LIBREPOSITORY_JAR; then
12923             AC_MSG_ERROR(librepository.jar not found.)
12924         fi
12926         if test -z $LIBFONTS_JAR; then
12927             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12928                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12929             elif test -f /usr/share/java/libfonts.jar; then
12930                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12931             else
12932                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12933             fi
12934         elif ! test -f $LIBFONTS_JAR; then
12935                 AC_MSG_ERROR(libfonts.jar not found.)
12936         fi
12938         if test -z $LIBSERIALIZER_JAR; then
12939             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12940                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12941             elif test -f /usr/share/java/libserializer.jar; then
12942                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12943             else
12944                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12945             fi
12946         elif ! test -f $LIBSERIALIZER_JAR; then
12947                 AC_MSG_ERROR(libserializer.jar not found.)
12948         fi
12950         if test -z $LIBBASE_JAR; then
12951             if test -f /usr/share/java/libbase-1.0.0.jar; then
12952                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12953             elif test -f /usr/share/java/libbase.jar; then
12954                 LIBBASE_JAR=/usr/share/java/libbase.jar
12955             else
12956                 AC_MSG_ERROR(libbase.jar replacement not found.)
12957             fi
12958         elif ! test -f $LIBBASE_JAR; then
12959             AC_MSG_ERROR(libbase.jar not found.)
12960         fi
12962     else
12963         AC_MSG_RESULT([internal])
12964         SYSTEM_JFREEREPORT=
12965         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12966         NEED_ANT=TRUE
12967     fi
12968 else
12969     AC_MSG_RESULT([no])
12970     ENABLE_REPORTBUILDER=
12971     SYSTEM_JFREEREPORT=
12973 AC_SUBST(ENABLE_REPORTBUILDER)
12974 AC_SUBST(SYSTEM_JFREEREPORT)
12975 AC_SUBST(SAC_JAR)
12976 AC_SUBST(LIBXML_JAR)
12977 AC_SUBST(FLUTE_JAR)
12978 AC_SUBST(JFREEREPORT_JAR)
12979 AC_SUBST(LIBBASE_JAR)
12980 AC_SUBST(LIBLAYOUT_JAR)
12981 AC_SUBST(LIBLOADER_JAR)
12982 AC_SUBST(LIBFORMULA_JAR)
12983 AC_SUBST(LIBREPOSITORY_JAR)
12984 AC_SUBST(LIBFONTS_JAR)
12985 AC_SUBST(LIBSERIALIZER_JAR)
12987 # scripting provider for BeanShell?
12988 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12989 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12990     AC_MSG_RESULT([yes])
12991     ENABLE_SCRIPTING_BEANSHELL=TRUE
12993     dnl ===================================================================
12994     dnl Check for system beanshell
12995     dnl ===================================================================
12996     AC_MSG_CHECKING([which beanshell to use])
12997     if test "$with_system_beanshell" = "yes"; then
12998         AC_MSG_RESULT([external])
12999         SYSTEM_BSH=TRUE
13000         if test -z $BSH_JAR; then
13001             BSH_JAR=/usr/share/java/bsh.jar
13002         fi
13003         if ! test -f $BSH_JAR; then
13004             AC_MSG_ERROR(bsh.jar not found.)
13005         fi
13006     else
13007         AC_MSG_RESULT([internal])
13008         SYSTEM_BSH=
13009         BUILD_TYPE="$BUILD_TYPE BSH"
13010     fi
13011 else
13012     AC_MSG_RESULT([no])
13013     ENABLE_SCRIPTING_BEANSHELL=
13014     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13016 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13017 AC_SUBST(SYSTEM_BSH)
13018 AC_SUBST(BSH_JAR)
13020 # scripting provider for JavaScript?
13021 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13022 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13023     AC_MSG_RESULT([yes])
13024     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13026     dnl ===================================================================
13027     dnl Check for system rhino
13028     dnl ===================================================================
13029     AC_MSG_CHECKING([which rhino to use])
13030     if test "$with_system_rhino" = "yes"; then
13031         AC_MSG_RESULT([external])
13032         SYSTEM_RHINO=TRUE
13033         if test -z $RHINO_JAR; then
13034             RHINO_JAR=/usr/share/java/js.jar
13035         fi
13036         if ! test -f $RHINO_JAR; then
13037             AC_MSG_ERROR(js.jar not found.)
13038         fi
13039     else
13040         AC_MSG_RESULT([internal])
13041         SYSTEM_RHINO=
13042         BUILD_TYPE="$BUILD_TYPE RHINO"
13043         NEED_ANT=TRUE
13044     fi
13045 else
13046     AC_MSG_RESULT([no])
13047     ENABLE_SCRIPTING_JAVASCRIPT=
13048     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13050 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13051 AC_SUBST(SYSTEM_RHINO)
13052 AC_SUBST(RHINO_JAR)
13054 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13055 # paths should be added to library search path. So lets put all 64-bit
13056 # platforms there.
13057 supports_multilib=
13058 case "$host_cpu" in
13059 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13060     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13061         supports_multilib="yes"
13062     fi
13063     ;;
13065     ;;
13066 esac
13068 dnl ===================================================================
13069 dnl QT5 Integration
13070 dnl ===================================================================
13072 QT5_CFLAGS=""
13073 QT5_LIBS=""
13074 QMAKE5="qmake"
13075 MOC5="moc"
13076 QT5_GOBJECT_CFLAGS=""
13077 QT5_GOBJECT_LIBS=""
13078 QT5_HAVE_GOBJECT=""
13079 QT5_PLATFORMS_SRCDIR=""
13080 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13081         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13082         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13083 then
13084     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13085     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13087     if test -n "$supports_multilib"; then
13088         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13089     fi
13091     qt5_test_include="QtWidgets/qapplication.h"
13092     if test "$_os" = "Emscripten"; then
13093         qt5_test_library="libQt5Widgets.a"
13094     else
13095         qt5_test_library="libQt5Widgets.so"
13096     fi
13098     dnl Check for qmake5
13099     if test -n "$QT5DIR"; then
13100         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13101     else
13102         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13103     fi
13104     if test "$QMAKE5" = "no"; then
13105         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13106     else
13107         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13108         if test -z "$qmake5_test_ver"; then
13109             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13110         fi
13111         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13112         qt5_minimal_minor="15"
13113         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13114             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13115         else
13116             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13117         fi
13118     fi
13120     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13121     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13122     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13123     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13125     AC_MSG_CHECKING([for Qt5 headers])
13126     qt5_incdir="no"
13127     for inc_dir in $qt5_incdirs; do
13128         if test -r "$inc_dir/$qt5_test_include"; then
13129             qt5_incdir="$inc_dir"
13130             break
13131         fi
13132     done
13133     AC_MSG_RESULT([$qt5_incdir])
13134     if test "x$qt5_incdir" = "xno"; then
13135         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13136     fi
13137     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13138     AC_LANG_PUSH([C++])
13139     save_CPPFLAGS=$CPPFLAGS
13140     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13141     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13142         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13143     CPPFLAGS=$save_CPPFLAGS
13144     AC_LANG_POP([C++])
13146     AC_MSG_CHECKING([for Qt5 libraries])
13147     qt5_libdir="no"
13148     for lib_dir in $qt5_libdirs; do
13149         if test -r "$lib_dir/$qt5_test_library"; then
13150             qt5_libdir="$lib_dir"
13151             break
13152         fi
13153     done
13154     AC_MSG_RESULT([$qt5_libdir])
13155     if test "x$qt5_libdir" = "xno"; then
13156         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13157     fi
13159     if test "$_os" = "Emscripten"; then
13160         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13161             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13162         fi
13163         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13164             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13165         fi
13167         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13168         if ! test -x "$EMSDK_LLVM_NM"; then
13169             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13170         fi
13171         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13172             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13173         fi
13174         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13175         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13176             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13177         fi
13178         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13179             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13180         fi
13181     fi
13183     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13184     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13185     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13186     if test "$_os" = "Emscripten"; then
13187         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13188     fi
13190     if test "$USING_X11" = TRUE; then
13191         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13192         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13193         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13194         QT5_USING_X11=1
13195         AC_DEFINE(QT5_USING_X11)
13196     fi
13198     dnl Check for Meta Object Compiler
13200     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13201     if test "$MOC5" = "no"; then
13202         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13203 the root of your Qt installation by exporting QT5DIR before running "configure".])
13204     fi
13206     if test "$test_gstreamer_1_0" = yes; then
13207         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13208                 QT5_HAVE_GOBJECT=1
13209                 AC_DEFINE(QT5_HAVE_GOBJECT)
13210             ],
13211             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13212         )
13213     fi
13215 AC_SUBST(QT5_CFLAGS)
13216 AC_SUBST(QT5_LIBS)
13217 AC_SUBST(MOC5)
13218 AC_SUBST(QT5_GOBJECT_CFLAGS)
13219 AC_SUBST(QT5_GOBJECT_LIBS)
13220 AC_SUBST(QT5_HAVE_GOBJECT)
13221 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13223 dnl ===================================================================
13224 dnl QT6 Integration
13225 dnl ===================================================================
13227 QT6_CFLAGS=""
13228 QT6_LIBS=""
13229 QMAKE6="qmake"
13230 MOC6="moc"
13231 QT6_PLATFORMS_SRCDIR=""
13232 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13233         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13234 then
13235     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13236     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13238     if test -n "$supports_multilib"; then
13239         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13240     fi
13242     qt6_test_include="QtWidgets/qapplication.h"
13243     if test "$_os" = "Emscripten"; then
13244         qt6_test_library="libQt6Widgets.a"
13245     else
13246         qt6_test_library="libQt6Widgets.so"
13247     fi
13249     dnl Check for qmake6
13250     if test -n "$QT6DIR"; then
13251         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13252     else
13253         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13254     fi
13255     if test "$QMAKE6" = "no"; then
13256         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13257     else
13258         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13259         if test -z "$qmake6_test_ver"; then
13260             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13261         fi
13262         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13263     fi
13265     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13266     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13267     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13268     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13270     AC_MSG_CHECKING([for Qt6 headers])
13271     qt6_incdir="no"
13272     for inc_dir in $qt6_incdirs; do
13273         if test -r "$inc_dir/$qt6_test_include"; then
13274             qt6_incdir="$inc_dir"
13275             break
13276         fi
13277     done
13278     AC_MSG_RESULT([$qt6_incdir])
13279     if test "x$qt6_incdir" = "xno"; then
13280         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13281     fi
13282     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13283     AC_LANG_PUSH([C++])
13284     save_CPPFLAGS=$CPPFLAGS
13285     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13286     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13287         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13288     CPPFLAGS=$save_CPPFLAGS
13289     AC_LANG_POP([C++])
13291     AC_MSG_CHECKING([for Qt6 libraries])
13292     qt6_libdir="no"
13293     for lib_dir in $qt6_libdirs; do
13294         if test -r "$lib_dir/$qt6_test_library"; then
13295             qt6_libdir="$lib_dir"
13296             break
13297         fi
13298     done
13299     AC_MSG_RESULT([$qt6_libdir])
13300     if test "x$qt6_libdir" = "xno"; then
13301         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13302     fi
13304     if test "$_os" = "Emscripten"; then
13305         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13306             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13307         fi
13308         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13309             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13310         fi
13311     fi
13313     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13314     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13315     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13316     if test "$_os" = "Emscripten"; then
13317         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13318     fi
13320     if test "$USING_X11" = TRUE; then
13321         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13322         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13323         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13324         QT6_USING_X11=1
13325         AC_DEFINE(QT6_USING_X11)
13326     fi
13328     dnl Check for Meta Object Compiler
13330     for lib_dir in $qt6_libdirs; do
13331         if test -z "$qt6_libexec_dirs"; then
13332             qt6_libexec_dirs="$lib_dir/libexec"
13333         else
13334             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13335         fi
13336     done
13337     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])
13338     if test "$MOC6" = "no"; then
13339         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13340 the root of your Qt installation by exporting QT6DIR before running "configure".])
13341     else
13342         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13343         if test -z "$moc6_test_ver"; then
13344             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13345         fi
13346         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13347     fi
13349 AC_SUBST(QT6_CFLAGS)
13350 AC_SUBST(QT6_LIBS)
13351 AC_SUBST(MOC6)
13352 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13354 dnl ===================================================================
13355 dnl KF5 Integration
13356 dnl ===================================================================
13358 KF5_CFLAGS=""
13359 KF5_LIBS=""
13360 KF5_CONFIG="kf5-config"
13361 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13362         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13363 then
13364     if test "$OS" = "HAIKU"; then
13365         haiku_arch="`echo $RTL_ARCH | tr X x`"
13366         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13367         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13368     fi
13370     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13371     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13372     if test -n "$supports_multilib"; then
13373         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13374     fi
13376     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13377     kf5_test_library="libKF5KIOFileWidgets.so"
13378     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13380     dnl kf5 KDE4 support compatibility installed
13381     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13382     if test "$KF5_CONFIG" != "no"; then
13383         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13384         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13385     fi
13387     dnl Check for KF5 headers
13388     AC_MSG_CHECKING([for KF5 headers])
13389     kf5_incdir="no"
13390     for kf5_check in $kf5_incdirs; do
13391         if test -r "$kf5_check/$kf5_test_include"; then
13392             kf5_incdir="$kf5_check/KF5"
13393             break
13394         fi
13395     done
13396     AC_MSG_RESULT([$kf5_incdir])
13397     if test "x$kf5_incdir" = "xno"; then
13398         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13399     fi
13401     dnl Check for KF5 libraries
13402     AC_MSG_CHECKING([for KF5 libraries])
13403     kf5_libdir="no"
13404     for kf5_check in $kf5_libdirs; do
13405         if test -r "$kf5_check/$kf5_test_library"; then
13406             kf5_libdir="$kf5_check"
13407             break
13408         fi
13409     done
13411     AC_MSG_RESULT([$kf5_libdir])
13412     if test "x$kf5_libdir" = "xno"; then
13413         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13414     fi
13416     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"
13417     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13418     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13420     if test "$USING_X11" = TRUE; then
13421         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13422     fi
13424     AC_LANG_PUSH([C++])
13425     save_CXXFLAGS=$CXXFLAGS
13426     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13427     AC_MSG_CHECKING([whether KDE is >= 5.0])
13428        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13429 #include <kcoreaddons_version.h>
13431 int main(int argc, char **argv) {
13432        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13433        else return 1;
13435        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13436     CXXFLAGS=$save_CXXFLAGS
13437     AC_LANG_POP([C++])
13439 AC_SUBST(KF5_CFLAGS)
13440 AC_SUBST(KF5_LIBS)
13442 dnl ===================================================================
13443 dnl KF6 Integration
13444 dnl ===================================================================
13446 KF6_CFLAGS=""
13447 KF6_LIBS=""
13448 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13449 then
13450     if test "$OS" = "HAIKU"; then
13451         haiku_arch="`echo $RTL_ARCH | tr X x`"
13452         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13453         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13454     fi
13456     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13457     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13458     if test -n "$supports_multilib"; then
13459         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13460     fi
13462     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13463     kf6_test_library="libKF6KIOFileWidgets.so"
13464     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13466     dnl Check for KF6 headers
13467     AC_MSG_CHECKING([for KF6 headers])
13468     kf6_incdir="no"
13469     for kf6_check in $kf6_incdirs; do
13470         if test -r "$kf6_check/$kf6_test_include"; then
13471             kf6_incdir="$kf6_check/KF6"
13472             break
13473         fi
13474     done
13475     AC_MSG_RESULT([$kf6_incdir])
13476     if test "x$kf6_incdir" = "xno"; then
13477         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13478     fi
13480     dnl Check for KF6 libraries
13481     AC_MSG_CHECKING([for KF6 libraries])
13482     kf6_libdir="no"
13483     for kf6_check in $kf6_libdirs; do
13484         if test -r "$kf6_check/$kf6_test_library"; then
13485             kf6_libdir="$kf6_check"
13486             break
13487         fi
13488     done
13490     AC_MSG_RESULT([$kf6_libdir])
13491     if test "x$kf6_libdir" = "xno"; then
13492         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13493     fi
13495     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"
13496     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13497     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13499     AC_LANG_PUSH([C++])
13500     save_CXXFLAGS=$CXXFLAGS
13501     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13502     dnl KF6 development version as of 2023-06 uses version number 5.240
13503     AC_MSG_CHECKING([whether KDE is >= 5.240])
13504        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13505 #include <kcoreaddons_version.h>
13507 int main(int argc, char **argv) {
13508        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13509        else return 1;
13511        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13512     CXXFLAGS=$save_CXXFLAGS
13513     AC_LANG_POP([C++])
13515 AC_SUBST(KF6_CFLAGS)
13516 AC_SUBST(KF6_LIBS)
13518 dnl ===================================================================
13519 dnl Test whether to include Evolution 2 support
13520 dnl ===================================================================
13521 AC_MSG_CHECKING([whether to enable evolution 2 support])
13522 if test "$enable_evolution2" = yes; then
13523     AC_MSG_RESULT([yes])
13524     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13525     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13526     FilterLibs "${GOBJECT_LIBS}"
13527     GOBJECT_LIBS="${filteredlibs}"
13528     ENABLE_EVOAB2="TRUE"
13529 else
13530     AC_MSG_RESULT([no])
13532 AC_SUBST(ENABLE_EVOAB2)
13533 AC_SUBST(GOBJECT_CFLAGS)
13534 AC_SUBST(GOBJECT_LIBS)
13536 dnl ===================================================================
13537 dnl Test which themes to include
13538 dnl ===================================================================
13539 AC_MSG_CHECKING([which themes to include])
13540 # if none given use default subset of available themes
13541 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13542     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"
13545 WITH_THEMES=""
13546 if test "x$with_theme" != "xno"; then
13547     for theme in $with_theme; do
13548         case $theme in
13549         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" ;;
13550         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13551         esac
13552     done
13554 AC_MSG_RESULT([$WITH_THEMES])
13555 AC_SUBST([WITH_THEMES])
13557 ###############################################################################
13558 # Extensions checking
13559 ###############################################################################
13560 AC_MSG_CHECKING([for extensions integration])
13561 if test "x$enable_extension_integration" != "xno"; then
13562     WITH_EXTENSION_INTEGRATION=TRUE
13563     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13564     AC_MSG_RESULT([yes, use integration])
13565 else
13566     WITH_EXTENSION_INTEGRATION=
13567     AC_MSG_RESULT([no, do not integrate])
13569 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13571 dnl Should any extra extensions be included?
13572 dnl There are standalone tests for each of these below.
13573 WITH_EXTRA_EXTENSIONS=
13574 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13576 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13577 if test "x$with_java" != "xno"; then
13578     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13581 AC_MSG_CHECKING([whether to build opens___.ttf])
13582 if test "$enable_build_opensymbol" = "yes"; then
13583     AC_MSG_RESULT([yes])
13584     AC_PATH_PROG(FONTFORGE, fontforge)
13585     if test -z "$FONTFORGE"; then
13586         AC_MSG_ERROR([fontforge not installed])
13587     fi
13588 else
13589     AC_MSG_RESULT([no])
13590     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13592 AC_SUBST(FONTFORGE)
13594 dnl ===================================================================
13595 dnl Test whether to include fonts
13596 dnl ===================================================================
13597 AC_MSG_CHECKING([whether to include third-party fonts])
13598 if test "$with_fonts" != "no"; then
13599     AC_MSG_RESULT([yes])
13600     WITH_FONTS=TRUE
13601     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13602     AC_DEFINE(HAVE_MORE_FONTS)
13603 else
13604     AC_MSG_RESULT([no])
13605     WITH_FONTS=
13606     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13608 AC_SUBST(WITH_FONTS)
13610 dnl Test whether to include more Google Noto fonts
13611 dnl ===================================================================
13612 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13613 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13614     AC_MSG_RESULT([no])
13615     WITH_NOTO_FONT=
13616 else
13617     AC_MSG_RESULT([yes])
13618     WITH_NOTO_FONT=TRUE
13619     BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13620     SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13622 AC_SUBST(WITH_NOTO_FONT)
13624 dnl ===================================================================
13625 dnl Test whether to enable online update service
13626 dnl ===================================================================
13627 AC_MSG_CHECKING([whether to enable online update])
13628 ENABLE_ONLINE_UPDATE=
13629 if test "$enable_online_update" = ""; then
13630     AC_MSG_RESULT([no])
13631 else
13632     if test "$enable_online_update" = "mar"; then
13633         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13634     elif test "$enable_online_update" = "yes"; then
13635         if test "$enable_curl" != "yes"; then
13636             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13637         fi
13638         AC_MSG_RESULT([yes])
13639         ENABLE_ONLINE_UPDATE="TRUE"
13640     else
13641         AC_MSG_RESULT([no])
13642     fi
13644 AC_SUBST(ENABLE_ONLINE_UPDATE)
13647 dnl ===================================================================
13648 dnl Test whether to enable mar online update service
13649 dnl ===================================================================
13650 AC_MSG_CHECKING([whether to enable mar online update])
13651 ENABLE_ONLINE_UPDATE_MAR=
13652 if test "$enable_online_update_mar" = yes; then
13653     AC_MSG_RESULT([yes])
13654     BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13655     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13656     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13657 else
13658     AC_MSG_RESULT([no])
13660 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13662 AC_MSG_CHECKING([for mar online update baseurl])
13663 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13664 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13665     AC_MSG_RESULT([yes])
13666 else
13667     AC_MSG_RESULT([no])
13669 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13671 AC_MSG_CHECKING([for mar online update certificateder])
13672 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13673 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13674     AC_MSG_RESULT([yes])
13675 else
13676     AC_MSG_RESULT([no])
13678 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13680 AC_MSG_CHECKING([for mar online update certificatename])
13681 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13682 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13683     AC_MSG_RESULT([yes])
13684 else
13685     AC_MSG_RESULT([no])
13687 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13689 AC_MSG_CHECKING([for mar online update certificatepath])
13690 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13691 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13692     AC_MSG_RESULT([yes])
13693 else
13694     AC_MSG_RESULT([no])
13696 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13698 AC_MSG_CHECKING([for mar online update uploadurl])
13699 ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl
13700 if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then
13701     AC_MSG_RESULT([yes])
13702 else
13703     AC_MSG_RESULT([no])
13705 AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL)
13708 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13709 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13710     if test "x$with_privacy_policy_url" = "xundefined"; then
13711         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13712     fi
13714 AC_SUBST(PRIVACY_POLICY_URL)
13715 dnl ===================================================================
13716 dnl Test whether we need bzip2
13717 dnl ===================================================================
13718 SYSTEM_BZIP2=
13719 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13720     AC_MSG_CHECKING([whether to use system bzip2])
13721     if test "$with_system_bzip2" = yes; then
13722         SYSTEM_BZIP2=TRUE
13723         AC_MSG_RESULT([yes])
13724         PKG_CHECK_MODULES(BZIP2, bzip2)
13725         FilterLibs "${BZIP2_LIBS}"
13726         BZIP2_LIBS="${filteredlibs}"
13727     else
13728         AC_MSG_RESULT([no])
13729         BUILD_TYPE="$BUILD_TYPE BZIP2"
13730     fi
13732 AC_SUBST(SYSTEM_BZIP2)
13733 AC_SUBST(BZIP2_CFLAGS)
13734 AC_SUBST(BZIP2_LIBS)
13736 dnl ===================================================================
13737 dnl Test whether to enable extension update
13738 dnl ===================================================================
13739 AC_MSG_CHECKING([whether to enable extension update])
13740 ENABLE_EXTENSION_UPDATE=
13741 if test "x$enable_extension_update" = "xno"; then
13742     AC_MSG_RESULT([no])
13743 else
13744     AC_MSG_RESULT([yes])
13745     ENABLE_EXTENSION_UPDATE="TRUE"
13746     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13747     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13749 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13752 dnl ===================================================================
13753 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13754 dnl ===================================================================
13755 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13756 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13757     AC_MSG_RESULT([no])
13758     ENABLE_SILENT_MSI=
13759 else
13760     AC_MSG_RESULT([yes])
13761     ENABLE_SILENT_MSI=TRUE
13762     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13764 AC_SUBST(ENABLE_SILENT_MSI)
13766 dnl ===================================================================
13767 dnl Check for WiX tools.
13768 dnl ===================================================================
13769 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13770     AC_MSG_RESULT([no])
13771     ENABLE_WIX=
13772 else
13773     AC_MSG_RESULT([yes])
13774     # FIXME: this should do proper detection, but the path is currently
13775     # hardcoded in msicreator/createmsi.py
13776     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13777       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13778     fi
13779     ENABLE_WIX=TRUE
13781 AC_SUBST(ENABLE_WIX)
13783 AC_MSG_CHECKING([whether and how to use Xinerama])
13784 if test "$USING_X11" = TRUE; then
13785     if test "$x_libraries" = "default_x_libraries"; then
13786         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13787         if test "x$XINERAMALIB" = x; then
13788            XINERAMALIB="/usr/lib"
13789         fi
13790     else
13791         XINERAMALIB="$x_libraries"
13792     fi
13793     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13794         # we have both versions, let the user decide but use the dynamic one
13795         # per default
13796         USE_XINERAMA=TRUE
13797         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13798             XINERAMA_LINK=dynamic
13799         else
13800             XINERAMA_LINK=static
13801         fi
13802     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13803         # we have only the dynamic version
13804         USE_XINERAMA=TRUE
13805         XINERAMA_LINK=dynamic
13806     elif test -e "$XINERAMALIB/libXinerama.a"; then
13807         # static version
13808         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13809             USE_XINERAMA=TRUE
13810             XINERAMA_LINK=static
13811         else
13812             USE_XINERAMA=
13813             XINERAMA_LINK=none
13814         fi
13815     else
13816         # no Xinerama
13817         USE_XINERAMA=
13818         XINERAMA_LINK=none
13819     fi
13820     if test "$USE_XINERAMA" = "TRUE"; then
13821         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13822         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13823             [AC_MSG_ERROR(Xinerama header not found.)], [])
13824         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13825         if test "x$XEXTLIB" = x; then
13826            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13827         fi
13828         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13829         if test "$_os" = "FreeBSD"; then
13830             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13831         fi
13832         if test "$_os" = "Linux"; then
13833             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13834         fi
13835         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13836             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13837     else
13838         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13839     fi
13840 else
13841     USE_XINERAMA=
13842     XINERAMA_LINK=none
13843     AC_MSG_RESULT([no])
13845 AC_SUBST(XINERAMA_LINK)
13847 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13848 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13849     enable_cairo_rgba=yes
13851 if test "$enable_cairo_rgba" = yes; then
13852     AC_DEFINE(ENABLE_CAIRO_RGBA)
13853     ENABLE_CAIRO_RGBA=TRUE
13854     AC_MSG_RESULT([yes])
13855 else
13856     ENABLE_CAIRO_RGBA=
13857     AC_MSG_RESULT([no])
13859 AC_SUBST(ENABLE_CAIRO_RGBA)
13861 dnl ===================================================================
13862 dnl Test whether to build cairo or rely on the system version
13863 dnl ===================================================================
13865 if test "$test_cairo" = "yes"; then
13866     AC_MSG_CHECKING([whether to use the system cairo])
13868     : ${with_system_cairo:=$with_system_libs}
13869     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13870         SYSTEM_CAIRO=TRUE
13871         AC_MSG_RESULT([yes])
13873         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13874         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13875         FilterLibs "${CAIRO_LIBS}"
13876         CAIRO_LIBS="${filteredlibs}"
13878         if test "$test_xrender" = "yes"; then
13879             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13880             AC_LANG_PUSH([C])
13881             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13882 #ifdef PictStandardA8
13883 #else
13884       return fail;
13885 #endif
13886 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13888             AC_LANG_POP([C])
13889         fi
13890     else
13891         AC_MSG_RESULT([no])
13892         BUILD_TYPE="$BUILD_TYPE CAIRO"
13893     fi
13895     if test "$enable_cairo_canvas" != no; then
13896         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13897         ENABLE_CAIRO_CANVAS=TRUE
13898     fi
13901 AC_SUBST(CAIRO_CFLAGS)
13902 AC_SUBST(CAIRO_LIBS)
13903 AC_SUBST(ENABLE_CAIRO_CANVAS)
13904 AC_SUBST(SYSTEM_CAIRO)
13906 dnl ===================================================================
13907 dnl Test whether to use avahi
13908 dnl ===================================================================
13909 if test "$_os" = "WINNT"; then
13910     # Windows uses bundled mDNSResponder
13911     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13912 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13913     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13914                       [ENABLE_AVAHI="TRUE"])
13915     AC_DEFINE(HAVE_FEATURE_AVAHI)
13916     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13917     FilterLibs "${AVAHI_LIBS}"
13918     AVAHI_LIBS="${filteredlibs}"
13921 AC_SUBST(ENABLE_AVAHI)
13922 AC_SUBST(AVAHI_CFLAGS)
13923 AC_SUBST(AVAHI_LIBS)
13925 dnl ===================================================================
13926 dnl Test whether to use liblangtag
13927 dnl ===================================================================
13928 SYSTEM_LIBLANGTAG=
13929 AC_MSG_CHECKING([whether to use system liblangtag])
13930 if test "$with_system_liblangtag" = yes; then
13931     SYSTEM_LIBLANGTAG=TRUE
13932     AC_MSG_RESULT([yes])
13933     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13934     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13935     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13936     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13937     FilterLibs "${LIBLANGTAG_LIBS}"
13938     LIBLANGTAG_LIBS="${filteredlibs}"
13939 else
13940     SYSTEM_LIBLANGTAG=
13941     AC_MSG_RESULT([no])
13942     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13943     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13944     if test "$COM" = "MSC"; then
13945         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13946     else
13947         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13948     fi
13950 AC_SUBST(SYSTEM_LIBLANGTAG)
13951 AC_SUBST(LIBLANGTAG_CFLAGS)
13952 AC_SUBST(LIBLANGTAG_LIBS)
13954 dnl ===================================================================
13955 dnl Test whether to build libpng or rely on the system version
13956 dnl ===================================================================
13958 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13959 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13960 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13962 dnl ===================================================================
13963 dnl Test whether to build libtiff or rely on the system version
13964 dnl ===================================================================
13966 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13968 dnl ===================================================================
13969 dnl Test whether to build libwebp or rely on the system version
13970 dnl ===================================================================
13972 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13974 dnl ===================================================================
13975 dnl Check for runtime JVM search path
13976 dnl ===================================================================
13977 if test "$ENABLE_JAVA" != ""; then
13978     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13979     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13980         AC_MSG_RESULT([yes])
13981         if ! test -d "$with_jvm_path"; then
13982             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13983         fi
13984         if ! test -d "$with_jvm_path"jvm; then
13985             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13986         fi
13987         JVM_ONE_PATH_CHECK="$with_jvm_path"
13988         AC_SUBST(JVM_ONE_PATH_CHECK)
13989     else
13990         AC_MSG_RESULT([no])
13991     fi
13994 dnl ===================================================================
13995 dnl Test for the presence of Ant and that it works
13996 dnl ===================================================================
13998 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13999 # breaks filename decoding, so for the ant section, set it to LANG
14000 LC_ALL=$LANG
14001 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
14002     ANT_HOME=; export ANT_HOME
14003     WITH_ANT_HOME=; export WITH_ANT_HOME
14004     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14005         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14006             if test "$_os" = "WINNT"; then
14007                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14008             else
14009                 with_ant_home="$LODE_HOME/opt/ant"
14010             fi
14011         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
14012             with_ant_home="$LODE_HOME/opt/ant"
14013         fi
14014     fi
14015     if test -z "$with_ant_home"; then
14016         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14017     else
14018         if test "$_os" = "WINNT"; then
14019             # AC_PATH_PROGS needs unix path
14020             with_ant_home=`cygpath -u "$with_ant_home"`
14021         fi
14022         AbsolutePath "$with_ant_home"
14023         with_ant_home=$absolute_path
14024         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14025         WITH_ANT_HOME=$with_ant_home
14026         ANT_HOME=$with_ant_home
14027     fi
14029     if test -z "$ANT"; then
14030         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14031     else
14032         # resolve relative or absolute symlink
14033         while test -h "$ANT"; do
14034             a_cwd=`pwd`
14035             a_basename=`basename "$ANT"`
14036             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14037             cd "`dirname "$ANT"`"
14038             cd "`dirname "$a_script"`"
14039             ANT="`pwd`"/"`basename "$a_script"`"
14040             cd "$a_cwd"
14041         done
14043         AC_MSG_CHECKING([if $ANT works])
14044         mkdir -p conftest.dir
14045         a_cwd=$(pwd)
14046         cd conftest.dir
14047         cat > conftest.java << EOF
14048         public class conftest {
14049             int testmethod(int a, int b) {
14050                     return a + b;
14051             }
14052         }
14055         cat > conftest.xml << EOF
14056         <project name="conftest" default="conftest">
14057         <target name="conftest">
14058             <javac srcdir="." includes="conftest.java">
14059             </javac>
14060         </target>
14061         </project>
14064         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14065         if test $? = 0 -a -f ./conftest.class; then
14066             AC_MSG_RESULT([Ant works])
14067             if test -z "$WITH_ANT_HOME"; then
14068                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14069                 if test -z "$ANT_HOME"; then
14070                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14071                 fi
14072             else
14073                 ANT_HOME="$WITH_ANT_HOME"
14074             fi
14075         else
14076             echo "configure: Ant test failed" >&5
14077             cat conftest.java >&5
14078             cat conftest.xml >&5
14079             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14080         fi
14081         cd "$a_cwd"
14082         rm -fr conftest.dir
14083     fi
14084     if test -z "$ANT_HOME"; then
14085         ANT_HOME="NO_ANT_HOME"
14086     else
14087         PathFormat "$ANT_HOME"
14088         ANT_HOME="$formatted_path"
14089         PathFormat "$ANT"
14090         ANT="$formatted_path"
14091     fi
14093     dnl Checking for ant.jar
14094     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14095         AC_MSG_CHECKING([Ant lib directory])
14096         if test -f $ANT_HOME/lib/ant.jar; then
14097             ANT_LIB="$ANT_HOME/lib"
14098         else
14099             if test -f $ANT_HOME/ant.jar; then
14100                 ANT_LIB="$ANT_HOME"
14101             else
14102                 if test -f /usr/share/java/ant.jar; then
14103                     ANT_LIB=/usr/share/java
14104                 else
14105                     if test -f /usr/share/ant-core/lib/ant.jar; then
14106                         ANT_LIB=/usr/share/ant-core/lib
14107                     else
14108                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14109                             ANT_LIB="$ANT_HOME/lib/ant"
14110                         else
14111                             if test -f /usr/share/lib/ant/ant.jar; then
14112                                 ANT_LIB=/usr/share/lib/ant
14113                             else
14114                                 AC_MSG_ERROR([Ant libraries not found!])
14115                             fi
14116                         fi
14117                     fi
14118                 fi
14119             fi
14120         fi
14121         PathFormat "$ANT_LIB"
14122         ANT_LIB="$formatted_path"
14123         AC_MSG_RESULT([Ant lib directory found.])
14124     fi
14126     ant_minver=1.6.0
14127     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14129     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14130     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14131     ant_version_major=`echo $ant_version | cut -d. -f1`
14132     ant_version_minor=`echo $ant_version | cut -d. -f2`
14133     echo "configure: ant_version $ant_version " >&5
14134     echo "configure: ant_version_major $ant_version_major " >&5
14135     echo "configure: ant_version_minor $ant_version_minor " >&5
14136     if test "$ant_version_major" -ge "2"; then
14137         AC_MSG_RESULT([yes, $ant_version])
14138     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14139         AC_MSG_RESULT([yes, $ant_version])
14140     else
14141         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14142     fi
14144     rm -f conftest* core core.* *.core
14146 AC_SUBST(ANT)
14147 AC_SUBST(ANT_HOME)
14148 AC_SUBST(ANT_LIB)
14150 OOO_JUNIT_JAR=
14151 HAMCREST_JAR=
14152 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14153     AC_MSG_CHECKING([for JUnit 4])
14154     if test "$with_junit" = "yes"; then
14155         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14156             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14157         elif test -e /usr/share/java/junit4.jar; then
14158             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14159         else
14160            if test -e /usr/share/lib/java/junit.jar; then
14161               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14162            else
14163               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14164            fi
14165         fi
14166     else
14167         OOO_JUNIT_JAR=$with_junit
14168     fi
14169     if test "$_os" = "WINNT"; then
14170         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14171     fi
14172     printf 'import org.junit.Before;' > conftest.java
14173     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14174         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14175     else
14176         AC_MSG_ERROR(
14177 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14178  specify its pathname via --with-junit=..., or disable it via --without-junit])
14179     fi
14180     rm -f conftest.class conftest.java
14181     if test $OOO_JUNIT_JAR != ""; then
14182         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14183     fi
14185     AC_MSG_CHECKING([for included Hamcrest])
14186     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14187     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14188         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14189     else
14190         AC_MSG_RESULT([Not included])
14191         AC_MSG_CHECKING([for standalone hamcrest jar.])
14192         if test "$with_hamcrest" = "yes"; then
14193             if test -e /usr/share/lib/java/hamcrest.jar; then
14194                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14195             elif test -e /usr/share/java/hamcrest/core.jar; then
14196                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14197             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14198                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14199             else
14200                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14201             fi
14202         else
14203             HAMCREST_JAR=$with_hamcrest
14204         fi
14205         if test "$_os" = "WINNT"; then
14206             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14207         fi
14208         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14209             AC_MSG_RESULT([$HAMCREST_JAR])
14210         else
14211             AC_MSG_ERROR([junit does not contain hamcrest; please use a junit jar that includes hamcrest, install a hamcrest jar in the default location (/usr/share/java),
14212                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14213         fi
14214     fi
14215     rm -f conftest.class conftest.java
14217 AC_SUBST(OOO_JUNIT_JAR)
14218 AC_SUBST(HAMCREST_JAR)
14219 # set back LC_ALL to C after the java related tests...
14220 LC_ALL=C
14222 AC_SUBST(SCPDEFS)
14225 # check for wget and curl
14227 WGET=
14228 CURL=
14230 if test "$enable_fetch_external" != "no"; then
14232 CURL=`which curl 2>/dev/null`
14234 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14235     # wget new enough?
14236     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14237     if test $? -eq 0; then
14238         WGET=$i
14239         break
14240     fi
14241 done
14243 if test -z "$WGET" -a -z "$CURL"; then
14244     AC_MSG_ERROR([neither wget nor curl found!])
14249 AC_SUBST(WGET)
14250 AC_SUBST(CURL)
14253 # check for sha256sum
14255 SHA256SUM=
14257 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14258     eval "$i -a 256 --version" > /dev/null 2>&1
14259     ret=$?
14260     if test $ret -eq 0; then
14261         SHA256SUM="$i -a 256"
14262         break
14263     fi
14264 done
14266 if test -z "$SHA256SUM"; then
14267     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14268         eval "$i --version" > /dev/null 2>&1
14269         ret=$?
14270         if test $ret -eq 0; then
14271             SHA256SUM=$i
14272             break
14273         fi
14274     done
14277 if test -z "$SHA256SUM"; then
14278     AC_MSG_ERROR([no sha256sum found!])
14281 AC_SUBST(SHA256SUM)
14283 dnl ===================================================================
14284 dnl Dealing with l10n options
14285 dnl ===================================================================
14286 AC_MSG_CHECKING([which languages to be built])
14287 # get list of all languages
14288 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14289 # the sed command does the following:
14290 #   + if a line ends with a backslash, append the next line to it
14291 #   + adds " on the beginning of the value (after =)
14292 #   + adds " at the end of the value
14293 #   + removes en-US; we want to put it on the beginning
14294 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14295 [eval $(sed -e :a -e '/\\$/N; s/\\\n//; ta' -n -e 's/=/="/;s/\([^\\]\)$/\1"/;s/en-US//;/^completelangiso/p' $SRC_ROOT/solenv/inc/langlist.mk)]
14296 ALL_LANGS="en-US $completelangiso"
14297 # check the configured localizations
14298 WITH_LANG="$with_lang"
14300 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14301 # (Norwegian is "nb" and "nn".)
14302 if test "$WITH_LANG" = "no"; then
14303     WITH_LANG=
14306 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14307     AC_MSG_RESULT([en-US])
14308 else
14309     AC_MSG_RESULT([$WITH_LANG])
14310     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14311     if test -z "$MSGFMT"; then
14312         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14313             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14314         elif test -x "/opt/lo/bin/msgfmt"; then
14315             MSGFMT="/opt/lo/bin/msgfmt"
14316         else
14317             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14318             if test -z "$MSGFMT"; then
14319                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14320             fi
14321         fi
14322     fi
14323     if test -z "$MSGUNIQ"; then
14324         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14325             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14326         elif test -x "/opt/lo/bin/msguniq"; then
14327             MSGUNIQ="/opt/lo/bin/msguniq"
14328         else
14329             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14330             if test -z "$MSGUNIQ"; then
14331                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14332             fi
14333         fi
14334     fi
14336 AC_SUBST(MSGFMT)
14337 AC_SUBST(MSGUNIQ)
14338 # check that the list is valid
14339 for lang in $WITH_LANG; do
14340     test "$lang" = "ALL" && continue
14341     # need to check for the exact string, so add space before and after the list of all languages
14342     for vl in $ALL_LANGS; do
14343         if test "$vl" = "$lang"; then
14344            break
14345         fi
14346     done
14347     if test "$vl" != "$lang"; then
14348         # if you're reading this - you prolly quoted your languages remove the quotes ...
14349         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14350     fi
14351 done
14352 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14353     echo $WITH_LANG | grep -q en-US
14354     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14356 # list with substituted ALL
14357 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14358 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14359 test "$WITH_LANG" = "en-US" && WITH_LANG=
14360 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14361     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14362     ALL_LANGS=`echo $ALL_LANGS qtz`
14364 AC_SUBST(ALL_LANGS)
14365 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14366 AC_SUBST(WITH_LANG)
14367 AC_SUBST(WITH_LANG_LIST)
14368 AC_SUBST(GIT_NEEDED_SUBMODULES)
14370 WITH_POOR_HELP_LOCALIZATIONS=
14371 if test -d "$SRC_ROOT/translations/source"; then
14372     for l in `ls -1 $SRC_ROOT/translations/source`; do
14373         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14374             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14375         fi
14376     done
14378 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14380 if test -n "$with_locales" -a "$with_locales" != ALL; then
14381     WITH_LOCALES="$with_locales"
14383     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14384     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14385     # config_host/config_locales.h.in
14386     for locale in $WITH_LOCALES; do
14387         lang=${locale%_*}
14389         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14391         case $lang in
14392         hi|mr*ne)
14393             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14394             ;;
14395         bg|ru)
14396             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14397             ;;
14398         esac
14399     done
14400 else
14401     AC_DEFINE(WITH_LOCALE_ALL)
14403 AC_SUBST(WITH_LOCALES)
14405 dnl git submodule update --reference
14406 dnl ===================================================================
14407 if test -n "${GIT_REFERENCE_SRC}"; then
14408     for repo in ${GIT_NEEDED_SUBMODULES}; do
14409         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14410             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14411         fi
14412     done
14414 AC_SUBST(GIT_REFERENCE_SRC)
14416 dnl git submodules linked dirs
14417 dnl ===================================================================
14418 if test -n "${GIT_LINK_SRC}"; then
14419     for repo in ${GIT_NEEDED_SUBMODULES}; do
14420         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14421             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14422         fi
14423     done
14425 AC_SUBST(GIT_LINK_SRC)
14427 dnl branding
14428 dnl ===================================================================
14429 AC_MSG_CHECKING([for alternative branding images directory])
14430 # initialize mapped arrays
14431 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14432 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14434 if test -z "$with_branding" -o "$with_branding" = "no"; then
14435     AC_MSG_RESULT([none])
14436     DEFAULT_BRAND_IMAGES="$brand_files"
14437 else
14438     if ! test -d $with_branding ; then
14439         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14440     else
14441         AC_MSG_RESULT([$with_branding])
14442         CUSTOM_BRAND_DIR="$with_branding"
14443         for lfile in $brand_files
14444         do
14445             if ! test -f $with_branding/$lfile ; then
14446                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14447                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14448             else
14449                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14450             fi
14451         done
14452         check_for_progress="yes"
14453     fi
14455 AC_SUBST([BRAND_INTRO_IMAGES])
14456 AC_SUBST([CUSTOM_BRAND_DIR])
14457 AC_SUBST([CUSTOM_BRAND_IMAGES])
14458 AC_SUBST([DEFAULT_BRAND_IMAGES])
14461 AC_MSG_CHECKING([for 'intro' progress settings])
14462 PROGRESSBARCOLOR=
14463 PROGRESSSIZE=
14464 PROGRESSPOSITION=
14465 PROGRESSFRAMECOLOR=
14466 PROGRESSTEXTCOLOR=
14467 PROGRESSTEXTBASELINE=
14469 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14470     source "$with_branding/progress.conf"
14471     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14472 else
14473     AC_MSG_RESULT([none])
14476 AC_SUBST(PROGRESSBARCOLOR)
14477 AC_SUBST(PROGRESSSIZE)
14478 AC_SUBST(PROGRESSPOSITION)
14479 AC_SUBST(PROGRESSFRAMECOLOR)
14480 AC_SUBST(PROGRESSTEXTCOLOR)
14481 AC_SUBST(PROGRESSTEXTBASELINE)
14484 dnl ===================================================================
14485 dnl Custom build version
14486 dnl ===================================================================
14487 AC_MSG_CHECKING([for extra build ID])
14488 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14489     EXTRA_BUILDID="$with_extra_buildid"
14491 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14492 if test -n "$EXTRA_BUILDID" ; then
14493     AC_MSG_RESULT([$EXTRA_BUILDID])
14494 else
14495     AC_MSG_RESULT([not set])
14497 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14499 OOO_VENDOR=
14500 AC_MSG_CHECKING([for vendor])
14501 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14502     OOO_VENDOR="$USERNAME"
14504     if test -z "$OOO_VENDOR"; then
14505         OOO_VENDOR="$USER"
14506     fi
14508     if test -z "$OOO_VENDOR"; then
14509         OOO_VENDOR="`id -u -n`"
14510     fi
14512     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14513 else
14514     OOO_VENDOR="$with_vendor"
14515     AC_MSG_RESULT([$OOO_VENDOR])
14517 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14518 AC_SUBST(OOO_VENDOR)
14520 if test "$_os" = "Android" ; then
14521     ANDROID_PACKAGE_NAME=
14522     AC_MSG_CHECKING([for Android package name])
14523     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14524         if test -n "$ENABLE_DEBUG"; then
14525             # Default to the package name that makes ndk-gdb happy.
14526             ANDROID_PACKAGE_NAME="org.libreoffice"
14527         else
14528             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14529         fi
14531         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14532     else
14533         ANDROID_PACKAGE_NAME="$with_android_package_name"
14534         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14535     fi
14536     AC_SUBST(ANDROID_PACKAGE_NAME)
14539 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14540 if test "$with_compat_oowrappers" = "yes"; then
14541     WITH_COMPAT_OOWRAPPERS=TRUE
14542     AC_MSG_RESULT(yes)
14543 else
14544     WITH_COMPAT_OOWRAPPERS=
14545     AC_MSG_RESULT(no)
14547 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14549 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14550 AC_MSG_CHECKING([for install dirname])
14551 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14552     INSTALLDIRNAME="$with_install_dirname"
14554 AC_MSG_RESULT([$INSTALLDIRNAME])
14555 AC_SUBST(INSTALLDIRNAME)
14557 AC_MSG_CHECKING([for prefix])
14558 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14559 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14560 PREFIXDIR="$prefix"
14561 AC_MSG_RESULT([$PREFIXDIR])
14562 AC_SUBST(PREFIXDIR)
14564 LIBDIR=[$(eval echo $(eval echo $libdir))]
14565 AC_SUBST(LIBDIR)
14567 DATADIR=[$(eval echo $(eval echo $datadir))]
14568 AC_SUBST(DATADIR)
14570 MANDIR=[$(eval echo $(eval echo $mandir))]
14571 AC_SUBST(MANDIR)
14573 DOCDIR=[$(eval echo $(eval echo $docdir))]
14574 AC_SUBST(DOCDIR)
14576 BINDIR=[$(eval echo $(eval echo $bindir))]
14577 AC_SUBST(BINDIR)
14579 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14580 AC_SUBST(INSTALLDIR)
14582 TESTINSTALLDIR="${BUILDDIR}/test-install"
14583 AC_SUBST(TESTINSTALLDIR)
14586 # ===================================================================
14587 # OAuth2 id and secrets
14588 # ===================================================================
14590 AC_MSG_CHECKING([for Google Drive client id and secret])
14591 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14592     AC_MSG_RESULT([not set])
14593     GDRIVE_CLIENT_ID="\"\""
14594     GDRIVE_CLIENT_SECRET="\"\""
14595 else
14596     AC_MSG_RESULT([set])
14597     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14598     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14600 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14601 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14603 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14604 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14605     AC_MSG_RESULT([not set])
14606     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14607     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14608 else
14609     AC_MSG_RESULT([set])
14610     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14611     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14613 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14614 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14616 AC_MSG_CHECKING([for OneDrive client id and secret])
14617 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14618     AC_MSG_RESULT([not set])
14619     ONEDRIVE_CLIENT_ID="\"\""
14620     ONEDRIVE_CLIENT_SECRET="\"\""
14621 else
14622     AC_MSG_RESULT([set])
14623     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14624     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14626 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14627 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14630 dnl ===================================================================
14631 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14632 dnl --enable-dependency-tracking configure option
14633 dnl ===================================================================
14634 AC_MSG_CHECKING([whether to enable dependency tracking])
14635 if test "$enable_dependency_tracking" = "no"; then
14636     nodep=TRUE
14637     AC_MSG_RESULT([no])
14638 else
14639     AC_MSG_RESULT([yes])
14641 AC_SUBST(nodep)
14643 dnl ===================================================================
14644 dnl Number of CPUs to use during the build
14645 dnl ===================================================================
14646 AC_MSG_CHECKING([for number of processors to use])
14647 # plain --with-parallelism is just the default
14648 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14649     if test "$with_parallelism" = "no"; then
14650         PARALLELISM=0
14651     else
14652         PARALLELISM=$with_parallelism
14653     fi
14654 else
14655     if test "$enable_icecream" = "yes"; then
14656         PARALLELISM="40"
14657     else
14658         case `uname -s` in
14660         Darwin|FreeBSD|NetBSD|OpenBSD)
14661             PARALLELISM=`sysctl -n hw.ncpu`
14662             ;;
14664         Linux)
14665             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14666         ;;
14667         # what else than above does profit here *and* has /proc?
14668         *)
14669             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14670             ;;
14671         esac
14673         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14674         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14675     fi
14678 if test $PARALLELISM -eq 0; then
14679     AC_MSG_RESULT([explicit make -j option needed])
14680 else
14681     AC_MSG_RESULT([$PARALLELISM])
14683 AC_SUBST(PARALLELISM)
14686 # Set up ILIB for MSVC build
14688 ILIB1=
14689 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14690     ILIB="."
14691     if test -n "$JAVA_HOME"; then
14692         ILIB="$ILIB;$JAVA_HOME/lib"
14693     fi
14694     ILIB1=-link
14695     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14696     ILIB="$ILIB;$formatted_path"
14697     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14698     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14699     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14700     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14701         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14702         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14703     fi
14704     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14705     ucrtlibpath_formatted=$formatted_path
14706     ILIB="$ILIB;$ucrtlibpath_formatted"
14707     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14708     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14709         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14710         ILIB="$ILIB;$formatted_path"
14711     else
14712         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14713         ILIB="$ILIB;$formatted_path"
14714     fi
14716     if test "$cross_compiling" != "yes"; then
14717         ILIB_FOR_BUILD="$ILIB"
14718     fi
14720 AC_SUBST(ILIB)
14721 AC_SUBST(ILIB_FOR_BUILD)
14723 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14724 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14725 dnl from consteval constructor initializing const variable",
14726 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14727 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14728 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14729 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14730 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14731 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)", or
14732 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14733 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14734 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14735 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17):
14736 AC_LANG_PUSH([C++])
14737 save_CXX=$CXX
14738 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14739     CXX="env LIB=$ILIB $CXX"
14741 save_CXXFLAGS=$CXXFLAGS
14742 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14743 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14744         struct S {
14745             consteval S() { i = 1; }
14746             int i = 0;
14747         };
14748         S const s;
14750         struct S1 {
14751              int a;
14752              consteval S1(int n): a(n) {}
14753         };
14754         struct S2 {
14755             S1 x;
14756             S2(): x(0) {}
14757         };
14759         struct S3 {
14760             consteval S3() {}
14761             union {
14762                 int a;
14763                 unsigned b = 0;
14764             };
14765         };
14766         void f() { S3(); }
14768         struct S4 { consteval S4() = default; };
14769         void f4(bool b) { b ? S4() : S4(); }
14771         struct S5 {
14772             consteval S5() { c = 0; }
14773             char * f() { return &c; }
14774             union {
14775                 char c;
14776                 int i;
14777             };
14778         };
14779         auto s5 = S5().f();
14780     ], [
14781         return (s.i == 1) ? 0 : 1;
14782     ])], [
14783         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14784         AC_MSG_RESULT([yes])
14785     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14786 CXX=$save_CXX
14787 CXXFLAGS=$save_CXXFLAGS
14788 AC_LANG_POP([C++])
14790 # ===================================================================
14791 # Creating bigger shared library to link against
14792 # ===================================================================
14793 AC_MSG_CHECKING([whether to create huge library])
14794 MERGELIBS=
14796 if test $_os = iOS -o $_os = Android; then
14797     # Never any point in mergelibs for these as we build just static
14798     # libraries anyway...
14799     enable_mergelibs=no
14802 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14803     if test $_os != Linux -a $_os != WINNT; then
14804         add_warning "--enable-mergelibs is not tested for this platform"
14805     fi
14806     MERGELIBS="TRUE"
14807     AC_MSG_RESULT([yes])
14808     AC_DEFINE(ENABLE_MERGELIBS)
14809 else
14810     AC_MSG_RESULT([no])
14812 AC_SUBST([MERGELIBS])
14814 dnl ===================================================================
14815 dnl icerun is a wrapper that stops us spawning tens of processes
14816 dnl locally - for tools that can't be executed on the compile cluster
14817 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14818 dnl ===================================================================
14819 AC_MSG_CHECKING([whether to use icerun wrapper])
14820 ICECREAM_RUN=
14821 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14822     ICECREAM_RUN=icerun
14823     AC_MSG_RESULT([yes])
14824 else
14825     AC_MSG_RESULT([no])
14827 AC_SUBST(ICECREAM_RUN)
14829 dnl ===================================================================
14830 dnl Setup the ICECC_VERSION for the build the same way it was set for
14831 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14832 dnl ===================================================================
14833 x_ICECC_VERSION=[\#]
14834 if test -n "$ICECC_VERSION" ; then
14835     x_ICECC_VERSION=
14837 AC_SUBST(x_ICECC_VERSION)
14838 AC_SUBST(ICECC_VERSION)
14840 dnl ===================================================================
14842 AC_MSG_CHECKING([MPL subset])
14843 MPL_SUBSET=
14844 LICENSE="LGPL"
14846 if test "$enable_mpl_subset" = "yes"; then
14847     mpl_error_string=
14848     newline=$'\n    *'
14849     warn_report=false
14850     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14851         warn_report=true
14852     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14853         warn_report=true
14854     fi
14855     if test "$warn_report" = "true"; then
14856         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14857     fi
14858     if test "x$enable_postgresql_sdbc" != "xno"; then
14859         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14860     fi
14861     if test "$enable_lotuswordpro" = "yes"; then
14862         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14863     fi
14864     if test -n "$ENABLE_POPPLER"; then
14865         if test "x$SYSTEM_POPPLER" = "x"; then
14866             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14867         fi
14868     fi
14869     # cf. m4/libo_check_extension.m4
14870     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14871         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14872     fi
14873     denied_themes=
14874     filtered_themes=
14875     for theme in $WITH_THEMES; do
14876         case $theme in
14877         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14878             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14879         *)
14880             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14881         esac
14882     done
14883     if test "x$denied_themes" != "x"; then
14884         if test "x$filtered_themes" == "x"; then
14885             filtered_themes="colibre"
14886         fi
14887         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14888     fi
14890     ENABLE_OPENGL_TRANSITIONS=
14892     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14893         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14894     fi
14896     if test "x$mpl_error_string" != "x"; then
14897         AC_MSG_ERROR([$mpl_error_string])
14898     fi
14900     MPL_SUBSET="TRUE"
14901     LICENSE="MPL-2.0"
14902     AC_DEFINE(MPL_HAVE_SUBSET)
14903     AC_MSG_RESULT([only])
14904 else
14905     AC_MSG_RESULT([no restrictions])
14907 AC_SUBST(MPL_SUBSET)
14908 AC_SUBST(LICENSE)
14910 dnl ===================================================================
14912 AC_MSG_CHECKING([formula logger])
14913 ENABLE_FORMULA_LOGGER=
14915 if test "x$enable_formula_logger" = "xyes"; then
14916     AC_MSG_RESULT([yes])
14917     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14918     ENABLE_FORMULA_LOGGER=TRUE
14919 elif test -n "$ENABLE_DBGUTIL" ; then
14920     AC_MSG_RESULT([yes])
14921     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14922     ENABLE_FORMULA_LOGGER=TRUE
14923 else
14924     AC_MSG_RESULT([no])
14927 AC_SUBST(ENABLE_FORMULA_LOGGER)
14929 dnl ===================================================================
14930 dnl Checking for active Antivirus software.
14931 dnl ===================================================================
14933 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14934     AC_MSG_CHECKING([for active Antivirus software])
14935     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14936     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14937     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14938         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14939             AC_MSG_RESULT([found])
14940             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14941             echo $EICAR_STRING > $SRC_ROOT/eicar
14942             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14943             rm $SRC_ROOT/eicar
14944             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14945                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14946             fi
14947             echo $EICAR_STRING > $BUILDDIR/eicar
14948             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14949             rm $BUILDDIR/eicar
14950             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14951                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14952             fi
14953             add_warning "To speed up builds and avoid failures in unit tests, it is highly recommended that you exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST"
14954         else
14955             AC_MSG_RESULT([not found])
14956         fi
14957     else
14958         AC_MSG_RESULT([n/a])
14959     fi
14962 dnl ===================================================================
14964 AC_MSG_CHECKING([for coredumpctl support])
14965 if test -z "$with_coredumpctl" && test $_os != Linux; then
14966     with_coredumpctl=no
14968 if test "$with_coredumpctl" = no; then
14969     WITH_COREDUMPCTL=
14970 else
14971     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
14972     AC_PATH_PROG(JQ, jq)
14973     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
14974     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
14975     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
14976         || test -z "$SYSTEMD_RUN"
14977     then
14978         if test -z "$with_coredumpctl"; then
14979             WITH_COREDUMPCTL=
14980         else
14981             if test -z "$COREDUMPCTL"; then
14982                 AC_MSG_ERROR([coredumpctl not found])
14983             fi
14984             if test -z "$JQ"; then
14985                 AC_MSG_ERROR([jq not found])
14986             fi
14987             if test -z "$SYSTEMD_ESCAPE"; then
14988                 AC_MSG_ERROR([systemd-escape not found])
14989             fi
14990             if test -z "$SYSTEMD_RUN"; then
14991                 AC_MSG_ERROR([systemd-run not found])
14992             fi
14993         fi
14994     else
14995         WITH_COREDUMPCTL=TRUE
14996     fi
14998 if test -z "$WITH_COREDUMPCTL"; then
14999     AC_MSG_RESULT([no])
15000 else
15001     AC_MSG_RESULT([yes])
15003 AC_SUBST(COREDUMPCTL)
15004 AC_SUBST(JQ)
15005 AC_SUBST(SYSTEMD_ESCAPE)
15006 AC_SUBST(SYSTEMD_RUN)
15007 AC_SUBST(WITH_COREDUMPCTL)
15009 dnl ===================================================================
15010 dnl Setting up the environment.
15011 dnl ===================================================================
15012 AC_MSG_NOTICE([setting up the build environment variables...])
15014 AC_SUBST(COMPATH)
15016 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15017     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15018         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15019         ATL_INCLUDE="$COMPATH/atlmfc/include"
15020     elif test -d "$COMPATH/atlmfc/lib"; then
15021         ATL_LIB="$COMPATH/atlmfc/lib"
15022         ATL_INCLUDE="$COMPATH/atlmfc/include"
15023     else
15024         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15025         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15026     fi
15027     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15028     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15029     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15032 if test "$build_os" = "cygwin"; then
15033     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15034     PathFormat "/usr/bin/find.exe"
15035     FIND="$formatted_path"
15036     PathFormat "/usr/bin/sort.exe"
15037     SORT="$formatted_path"
15038     PathFormat "/usr/bin/grep.exe"
15039     WIN_GREP="$formatted_path"
15040     PathFormat "/usr/bin/ls.exe"
15041     WIN_LS="$formatted_path"
15042     PathFormat "/usr/bin/touch.exe"
15043     WIN_TOUCH="$formatted_path"
15044 else
15045     FIND=find
15046     SORT=sort
15049 AC_SUBST(ATL_INCLUDE)
15050 AC_SUBST(ATL_LIB)
15051 AC_SUBST(FIND)
15052 AC_SUBST(SORT)
15053 AC_SUBST(WIN_GREP)
15054 AC_SUBST(WIN_LS)
15055 AC_SUBST(WIN_TOUCH)
15057 AC_SUBST(BUILD_TYPE)
15059 AC_SUBST(SOLARINC)
15061 PathFormat "$PERL"
15062 PERL="$formatted_path"
15063 AC_SUBST(PERL)
15065 if test -n "$TMPDIR"; then
15066     TEMP_DIRECTORY="$TMPDIR"
15067 else
15068     TEMP_DIRECTORY="/tmp"
15070 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15071 if test "$build_os" = "cygwin"; then
15072     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15073     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15075 AC_SUBST(TEMP_DIRECTORY)
15076 AC_SUBST(CYGWIN_BASH)
15078 # setup the PATH for the environment
15079 if test -n "$LO_PATH_FOR_BUILD"; then
15080     LO_PATH="$LO_PATH_FOR_BUILD"
15081     case "$host_os" in
15082     cygwin*|wsl*)
15083         pathmunge "$MSVC_HOST_PATH" "before"
15084         ;;
15085     esac
15086 else
15087     LO_PATH="$PATH"
15089     case "$host_os" in
15091     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15092         if test "$ENABLE_JAVA" != ""; then
15093             pathmunge "$JAVA_HOME/bin" "after"
15094         fi
15095         ;;
15097     cygwin*|wsl*)
15098         # Win32 make needs native paths
15099         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15100             LO_PATH=`cygpath -p -m "$PATH"`
15101         fi
15102         if test "$WIN_BUILD_ARCH" = "x64"; then
15103             # needed for msi packaging
15104             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15105         fi
15106         if test "$WIN_BUILD_ARCH" = "arm64"; then
15107             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15108             # the x86 ones probably would work just as well...
15109             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15110         fi
15111         # .NET 4.6 and higher don't have bin directory
15112         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15113             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15114         fi
15115         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15116         pathmunge "$CSC_PATH" "before"
15117         pathmunge "$MIDL_PATH" "before"
15118         pathmunge "$AL_PATH" "before"
15119         pathmunge "$MSVC_MULTI_PATH" "before"
15120         pathmunge "$MSVC_BUILD_PATH" "before"
15121         if test -n "$MSBUILD_PATH" ; then
15122             pathmunge "$MSBUILD_PATH" "before"
15123         fi
15124         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15125         if test "$ENABLE_JAVA" != ""; then
15126             if test -d "$JAVA_HOME/jre/bin/client"; then
15127                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15128             fi
15129             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15130                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15131             fi
15132             pathmunge "$JAVA_HOME/bin" "before"
15133         fi
15134         pathmunge "$MSVC_HOST_PATH" "before"
15135         ;;
15137     solaris*)
15138         pathmunge "/usr/css/bin" "before"
15139         if test "$ENABLE_JAVA" != ""; then
15140             pathmunge "$JAVA_HOME/bin" "after"
15141         fi
15142         ;;
15143     esac
15146 AC_SUBST(LO_PATH)
15148 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15149 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15150     x_LO_ELFCHECK_ALLOWLIST=
15151 else
15152     x_LO_ELFCHECK_ALLOWLIST=[\#]
15154 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15155 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15157 libo_FUZZ_SUMMARY
15159 # Generate a configuration sha256 we can use for deps
15160 if test -f config_host.mk; then
15161     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15163 if test -f config_host_lang.mk; then
15164     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15167 CFLAGS=$my_original_CFLAGS
15168 CXXFLAGS=$my_original_CXXFLAGS
15169 CPPFLAGS=$my_original_CPPFLAGS
15171 AC_CONFIG_LINKS([include:include])
15173 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15174 # BUILD platform configuration] - otherwise breaks cross building
15175 AC_CONFIG_FILES([config_host.mk
15176                  config_host_lang.mk
15177                  Makefile
15178                  bin/bffvalidator.sh
15179                  bin/odfvalidator.sh
15180                  bin/officeotron.sh
15181                  instsetoo_native/util/openoffice.lst
15182                  sysui/desktop/macosx/Info.plist
15183                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15184                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15185                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15187 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15188 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15189 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15190 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15191 AC_CONFIG_HEADERS([config_host/config_clang.h])
15192 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15193 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15194 AC_CONFIG_HEADERS([config_host/config_eot.h])
15195 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15196 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15197 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15198 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15199 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15200 AC_CONFIG_HEADERS([config_host/config_features.h])
15201 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15202 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15203 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15204 AC_CONFIG_HEADERS([config_host/config_folders.h])
15205 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15206 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15207 AC_CONFIG_HEADERS([config_host/config_gio.h])
15208 AC_CONFIG_HEADERS([config_host/config_global.h])
15209 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15210 AC_CONFIG_HEADERS([config_host/config_java.h])
15211 AC_CONFIG_HEADERS([config_host/config_langs.h])
15212 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15213 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15214 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15215 AC_CONFIG_HEADERS([config_host/config_locales.h])
15216 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15217 AC_CONFIG_HEADERS([config_host/config_oox.h])
15218 AC_CONFIG_HEADERS([config_host/config_options.h])
15219 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15220 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15221 AC_CONFIG_HEADERS([config_host/config_skia.h])
15222 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15223 AC_CONFIG_HEADERS([config_host/config_validation.h])
15224 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15225 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15226 AC_CONFIG_HEADERS([config_host/config_version.h])
15227 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15228 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15229 AC_CONFIG_HEADERS([config_host/config_python.h])
15230 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15231 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15232 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15233 AC_OUTPUT
15235 if test "$CROSS_COMPILING" = TRUE; then
15236     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15239 # touch the config timestamp file
15240 if test ! -f config_host.mk.stamp; then
15241     echo > config_host.mk.stamp
15242 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15243     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15244 else
15245     echo > config_host.mk.stamp
15248 # touch the config lang timestamp file
15249 if test ! -f config_host_lang.mk.stamp; then
15250     echo > config_host_lang.mk.stamp
15251 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15252     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15253 else
15254     echo > config_host_lang.mk.stamp
15258 if test \( "$STALE_MAKE" = "TRUE" \) \
15259         -a "$build_os" = "cygwin"; then
15261 cat << _EOS
15262 ****************************************************************************
15263 WARNING:
15264 Your make version is known to be horribly slow, and hard to debug
15265 problems with. To get a reasonably functional make please do:
15267 to install a pre-compiled binary make for Win32
15269  mkdir -p /opt/lo/bin
15270  cd /opt/lo/bin
15271  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15272  cp make-4.2.1-msvc.exe make
15273  chmod +x make
15275 to install from source:
15276 place yourself in a working directory of you choice.
15278  git clone git://git.savannah.gnu.org/make.git
15280  [go to Start menu, open "Visual Studio 2019" or "Visual Studio 2022", and then click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
15281  set PATH=%PATH%;C:\Cygwin\bin
15282  [or Cygwin64, if that is what you have]
15283  cd path-to-make-repo-you-cloned-above
15284  build_w32.bat --without-guile
15286 should result in a WinRel/gnumake.exe.
15287 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15289 Then re-run autogen.sh
15291 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15292 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
15294 _EOS
15298 cat << _EOF
15299 ****************************************************************************
15301 To show information on various make targets and make flags, run:
15302 $GNUMAKE help
15304 To just build, run:
15305 $GNUMAKE
15307 _EOF
15309 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15310     cat << _EOF
15311 After the build has finished successfully, you can immediately run what you built using the command:
15312 _EOF
15314     if test $_os = Darwin; then
15315         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15316     else
15317         echo instdir/program/soffice
15318     fi
15319     cat << _EOF
15321 If you want to run the unit tests, run:
15322 $GNUMAKE check
15324 _EOF
15327 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15328     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15329     cat "$WARNINGS_FILE_FOR_BUILD"
15330     echo
15333 if test -s "$WARNINGS_FILE"; then
15334     echo "HOST config ($WARNINGS_FILE)"
15335     cat "$WARNINGS_FILE"
15338 # Remove unneeded emconfigure artifacts
15339 rm -f a.out a.wasm a.out.js a.out.wasm
15341 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: